Author-driven structural changes

 

Fast, cheap, and out of control

 
 --Kevin Kelly

Most publishing systems use slow moving schema and stylesheets to ensure consistency of authoring. Semantic authoring is intended to be fast moving. Allowing ideas to be quickly captured and different approaches tested. Creating ecosystems of markup alternatives, driven by personal and small-group imperatives.

 

Running off to a DTD file? Too far away, too slow, too impactful. I'm the authority here. Let me extend structures in the document.

 
 --Test subject
 

Respect my authoritah

 
 --Eric Cartman

This example of enabling SGML Internal Declaration Subset extensions comes from h1.dtd, a training doctype. An updated oXml framework will be released on June 10th, 2023.

Elements are organized into four non-overlapping groups: %divs;, %blocks;, %heads;, and %spans;, so that they can be easily extended and combined, at will. This is the example of the definitions for %divs;

Figure 9. %divs; declarations includes the %sa.divs; extension mechanism for use in documents

<!-- __________________________________________________________________________
. . {
. . {         %divs; - infinitely-nesting wrapper elements
. -->
<!-- ..........................................................................
. . :                 %h1.divs;         . baseline hierarchical divisions
. -->
 <!ENTITY % h1.divs           " div|
                                h1|
                                hsa|
                                hsg|
                                prodoc" >
<!-- ..........................................................................
. . :                 %sa.divs;         . semantic authoring interface
. -->
 <!ENTITY % sa.divs           "" >
<!-- ..........................................................................
. . :                 %divs;            . (roll-up)
. -->
 <!ENTITY % divs              " %h1.divs;
                                %sa.divs;" >

Figure 10. Document header, where new elements are added through the %sa.divs; interface

<!DOCTYPE div PUBLIC "-//SG//DTD h1//EN" "../h1.dtd"[
<!ENTITY    h1                "h1" >
<!ENTITY  % sa.divs           "" ><!-- e.g., "| ename" -->
<!ENTITY  % sa.blocks         "" >
<!ENTITY  % sa.heads          "" >
<!ENTITY  % sa.spans          "" >
<!ENTITY  % sa.atl            "" >
<!ELEMENT   ename             (#PCDATA) >
<!ATTLIST   ename
              aname           CDATA                                 #IMPLIED >
]>

A common reason for adding spans to a document is to customize tables. <tr/> contains %spans;, and the set of %spans; includes <td/> and <th/>. Adding any element to the set of %spans; adds them to table rows.