File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / test / valid / dtds / spec.dtd
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:38:00 2012 UTC (12 years, 6 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, v2_8_0p0, v2_8_0, v2_7_8, HEAD
libxml2

    1: <!-- ............................................................... -->
    2: <!-- XML specification DTD ......................................... -->
    3: <!-- ............................................................... -->
    4: 
    5: <!--
    6: TYPICAL INVOCATION:
    7: #  <!DOCTYPE spec PUBLIC
    8: #       "-//W3C//DTD Specification::19980323//EN"
    9: #       "http://www.w3.org/XML/Group/DTD/xmlspec.dtd">
   10: 
   11: PURPOSE:
   12:   This DTD was developed for use with the XML family of W3C
   13:   specifications.  It is an XML-compliant DTD based in part on
   14:   the TEI Lite and Sweb DTDs.
   15: 
   16: DEPENDENCIES:
   17:   None.
   18: 
   19: CHANGE HISTORY:
   20:   The list of changes is at the end of the DTD.
   21: 
   22:   For all details, see the design report at:
   23: 
   24:     <http://www.w3.org/XML/Group/DTD/xmlspec-report.htm>
   25: 
   26:   The "typical invocation" FPI always gets updated to reflect the
   27:   date of the most recent changes.
   28: 
   29:   Search this file for "#" in the first column to see change history
   30:   comments.
   31: 
   32: MAINTAINER:
   33:   Eve Maler
   34:   ArborText Inc.
   35:   elm@arbortext.com
   36:   voice: +1 781 270 5750
   37:   fax:   +1 781 273 3760
   38: -->
   39: 
   40: <!-- ............................................................... -->
   41: <!-- Entities for characters and symbols ........................... -->
   42: 
   43: <!--
   44: #1998-03-10: maler: Added &ldquo; and &rdquo;.
   45: #                   Used 8879:1986-compatible decimal character
   46: #                   references.
   47: #                   Merged charent.mod file back into main file.
   48: -->
   49: 
   50: <!ENTITY lt     "&#38;#60;">
   51: <!ENTITY gt     "&#62;">
   52: <!ENTITY amp    "&#38;#38;">
   53: <!ENTITY apos   "&#39;">
   54: <!ENTITY quot   "&#34;">
   55: <!ENTITY mdash  "--">
   56: <!ENTITY nbsp   "&#160;">
   57: <!ENTITY ldquo  "#x201C;">
   58: <!ENTITY rdquo  "#x201D;">
   59: 
   60: <!-- ............................................................... -->
   61: <!-- Entities for classes of standalone elements ................... -->
   62: 
   63: <!--
   64: #1997-10-16: maler: Added table to %illus.class;.
   65: #1997-11-28: maler: Added htable to %illus.class;.
   66: #1997-12-29: maler: IGNOREd table.
   67: #1998-03-10: maler: Removed SGML Open-specific %illus.class;.
   68: #                   Added "local" entities for customization.
   69: -->
   70: 
   71: <!ENTITY % local.p.class        "">
   72: <!ENTITY % p.class              "p
   73:                                 %local.p.class;">
   74: 
   75: <!ENTITY % local.statusp.class  "">
   76: <!ENTITY % statusp.class        "statusp
   77:                                 %local.statusp.class;">
   78: 
   79: <!ENTITY % local.list.class     "">
   80: <!ENTITY % list.class           "ulist|olist|slist|glist
   81:                                 %local.list.class;">
   82: 
   83: <!ENTITY % local.speclist.class "">
   84: <!ENTITY % speclist.class       "orglist|blist
   85:                                 %local.speclist.class;">
   86: 
   87: <!ENTITY % local.note.class     "">
   88: <!ENTITY % note.class           "note|wfcnote|vcnote
   89:                                 %local.note.class;">
   90: 
   91: <!ENTITY % local.illus.class    "">
   92: <!ENTITY % illus.class          "eg|graphic|scrap|htable
   93:                                 %local.illus.class;">
   94: 
   95: <!-- ............................................................... -->
   96: <!-- Entities for classes of phrase-level elements ................. -->
   97: 
   98: <!--
   99: #1997-12-29: maler: Added xspecref to %ref.class;.
  100: #1998-03-10: maler: Added %ednote.class;.
  101: #                   Added "local" entities for customization.
  102: -->
  103: 
  104: <!ENTITY % local.annot.class    "">
  105: <!ENTITY % annot.class          "footnote
  106:                                 %local.annot.class;">
  107: 
  108: <!ENTITY % local.termdef.class    "">
  109: <!ENTITY % termdef.class        "termdef|term
  110:                                 %local.termdef.class;">
  111: 
  112: <!ENTITY % local.emph.class    "">
  113: <!ENTITY % emph.class           "emph|quote
  114:                                 %local.emph.class;">
  115: 
  116: <!ENTITY % local.ref.class    "">
  117: <!ENTITY % ref.class            "bibref|specref|termref|titleref
  118:                                 |xspecref|xtermref
  119:                                 %local.ref.class;">
  120: 
  121: <!ENTITY % local.loc.class    "">
  122: <!ENTITY % loc.class            "loc
  123:                                 %local.loc.class;">
  124: 
  125: <!ENTITY % local.tech.class    "">
  126: <!ENTITY % tech.class           "kw|nt|xnt|code
  127:                                 %local.tech.class;">
  128: 
  129: <!ENTITY % local.ednote.class    "">
  130: <!ENTITY % ednote.class         "ednote
  131:                                 %local.ednote.class;">
  132: 
  133: <!-- ............................................................... -->
  134: <!-- Entities for mixtures of standalone elements .................. -->
  135: 
  136: <!--
  137: #1997-09-30: maler: Created %p.mix; to eliminate p from self.
  138: #1997-09-30: maler: Added %speclist.class; to %obj.mix; and %p.mix;.
  139: #1997-09-30: maler: Added %note.class; to %obj.mix; and %p.mix;.
  140: #1997-10-16: maler: Created %entry.mix;.  Note that some elements
  141: #                   left out here are still allowed in termdef,
  142: #                   which entry can contain through %p.pcd.mix;.
  143: #1997-11-28: maler: Added %p.class; to %statusobj.mix;.
  144: #1998-03-10: maler: Added %ednote.class; to all mixtures, except
  145: #                   %p.mix; and %statusobj.mix;, because paragraphs
  146: #                   and status paragraphs will contain ednote
  147: #                   through %p.pcd.mix;.
  148: #1998-03-123: maler: Added %termdef.mix; (broken out from
  149: #                    %termdef.pcd.mix;).
  150: -->
  151: 
  152: <!ENTITY % div.mix
  153:         "%p.class;|%list.class;|%speclist.class;|%note.class;
  154:         |%illus.class;|%ednote.class;">
  155: <!ENTITY % obj.mix
  156:         "%p.class;|%list.class;|%speclist.class;|%note.class;
  157:         |%illus.class;|%ednote.class;">
  158: <!ENTITY % p.mix
  159:         "%list.class;|%speclist.class;|%note.class;|%illus.class;">
  160: <!ENTITY % entry.mix
  161:         "%list.class;|note|eg|graphic|%ednote.class;">
  162: <!ENTITY % statusobj.mix
  163:         "%p.class;|%statusp.class;|%list.class;">
  164: <!ENTITY % hdr.mix
  165:         "%p.class;|%list.class;|%ednote.class;">
  166: <!ENTITY % termdef.mix
  167:         "%note.class;|%illus.class;">
  168: 
  169: <!-- ............................................................... -->
  170: <!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->
  171: 
  172: <!--    Note that %termdef.pcd.mix contains %note.class;
  173:         and %illus.class;, considered standalone elements. -->
  174: 
  175: <!--
  176: #1997-09-30: maler: Added scrap and %note.class; to %termdef.pcd.mix;.
  177: #1997-11-28: maler: Added %loc.class; to %p.pcd.mix;.
  178: #1998-03-10: maler: Added %ednote.class; to all mixtures.
  179: #1998-03-23: maler: Moved some %termdef.pcd.mix; stuff out to
  180: #                   %termdef.mix;.
  181: -->
  182: 
  183: <!ENTITY % p.pcd.mix
  184:         "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
  185:         |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
  186: <!ENTITY % statusp.pcd.mix
  187:         "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
  188:         |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
  189: <!ENTITY % head.pcd.mix
  190:         "#PCDATA|%annot.class;|%emph.class;|%tech.class;|%ednote.class;">
  191: <!ENTITY % label.pcd.mix
  192:         "#PCDATA|%annot.class;|%termdef.class;|%emph.class;|%tech.class;
  193:         |%ednote.class;">
  194: <!ENTITY % eg.pcd.mix
  195:         "#PCDATA|%annot.class;|%emph.class;|%ednote.class;">
  196: <!ENTITY % termdef.pcd.mix
  197:         "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
  198:         |%ednote.class;">
  199: <!ENTITY % bibl.pcd.mix
  200:         "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
  201: <!ENTITY % tech.pcd.mix
  202:         "#PCDATA|%ednote.class;">
  203: <!ENTITY % loc.pcd.mix
  204:         "#PCDATA|%loc.class;|%ednote.class;">
  205: 
  206: <!-- ............................................................... -->
  207: <!-- Entities for customizable content models ...................... -->
  208: 
  209: <!--
  210: #1998-03-10: maler: Added customization entities.
  211: -->
  212: 
  213: <!ENTITY % spec.mdl
  214:         "header, front?, body, back?">
  215: 
  216: <!ENTITY % header.mdl
  217:         "title, subtitle?, version, w3c-designation, w3c-doctype,
  218:         pubdate, notice*, publoc, latestloc?, prevlocs?, authlist,
  219:         abstract, status, pubstmt?, sourcedesc?, langusage,
  220:         revisiondesc">
  221: 
  222: <!ENTITY % pubdate.mdl
  223:         "day?, month, year">
  224: 
  225: <!-- ............................................................... -->
  226: <!-- Entities for common attributes ................................ -->
  227: 
  228: <!--    key attribute:
  229:         Optionally provides a sorting or indexing key, for cases when
  230:         the element content is inappropriate for this purpose. -->
  231: <!ENTITY % key.att
  232:         'key                    CDATA           #IMPLIED'>
  233: 
  234: <!--    def attribute:
  235:         Points to the element where the relevant definition can be
  236:         found, using the IDREF mechanism.  %def.att; is for optional
  237:         def attributes, and %def-req.att; is for required def
  238:         attributes. -->
  239: <!ENTITY % def.att
  240:         'def                    IDREF           #IMPLIED'>
  241: <!ENTITY % def-req.att
  242:         'def                    IDREF           #REQUIRED'>
  243: 
  244: <!--    ref attribute:
  245:         Points to the element where more information can be found,
  246:         using the IDREF mechanism.  %ref.att; is for optional
  247:         ref attributes, and %ref-req.att; is for required ref
  248:         attributes. -->
  249: <!ENTITY % ref.att
  250:         'ref                    IDREF           #IMPLIED'>
  251: <!ENTITY % ref-req.att
  252:         'ref                    IDREF           #REQUIRED'>
  253: 
  254: <!--
  255: #1998-03-23: maler: Added show and actuate attributes to href.
  256: #                   Added semi-common xml:space attribute.
  257: -->
  258: 
  259: <!--    HREF and source attributes:
  260:         Points to the element where more information or source data
  261:         can be found, using the URL (XLL simple link) mechanism.
  262:         For some purposes, is associated with additional XLL
  263:         attributes. %href.att; is for optional HREF attributes,
  264:         and %href-req.att; is for required HREF attributes.
  265:         %source-req.att; is for the source attribute, which
  266:         is always required. -->
  267: <!ENTITY % href.att
  268:         'xml-link               CDATA           #FIXED "simple"
  269:         href                    CDATA           #IMPLIED
  270:         show                    CDATA           #FIXED "embed"
  271:         actuate                 CDATA           #FIXED "auto"'>
  272: 
  273: <!ENTITY % href-req.att
  274:         'xml-link               CDATA           #FIXED "simple"
  275:         href                    CDATA           #REQUIRED
  276:         show                    CDATA           #FIXED "embed"
  277:         actuate                 CDATA           #FIXED "auto"'>
  278: 
  279: <!ENTITY % source-req.att
  280:         'xml-link               CDATA           #FIXED "simple"
  281:         xml:attributes          NMTOKENS        #FIXED "href source"
  282:         source                  CDATA           #REQUIRED
  283:         show                    CDATA           #FIXED "embed"
  284:         actuate                 CDATA           #FIXED "auto"'>
  285: 
  286: <!--    xml:space attribute:
  287:         Indicates that the element contains white space
  288:         that the formatter or other application should retain,
  289:         as appropriate to its function. -->
  290: <!ENTITY % xmlspace.att
  291:         'xml:space              (default
  292:                                 |preserve)      #FIXED "preserve"'>
  293: 
  294: <!--    Common attributes:
  295:         Every element has an ID attribute (sometimes required,
  296:         but usually optional) for links, and a Role attribute
  297:         for extending the useful life of the DTD by allowing
  298:         authors to make subclasses for any element. %common.att;
  299:         is for common attributes where the ID is optional, and
  300:         %common-idreq.att; is for common attributes where the
  301:         ID is required. -->
  302: <!ENTITY % common.att
  303:         'id                     ID              #IMPLIED
  304:         role                    NMTOKEN         #IMPLIED'>
  305: <!ENTITY % common-idreq.att
  306:         'id                     ID              #REQUIRED
  307:         role                    NMTOKEN         #IMPLIED'>
  308: 
  309: <!-- ............................................................... -->
  310: <!-- Common elements ............................................... -->
  311: 
  312: <!--    head: Title on divisions, productions, and the like -->
  313: <!ELEMENT head (%head.pcd.mix;)*>
  314: <!ATTLIST head %common.att;>
  315: 
  316: <!-- ............................................................... -->
  317: <!-- Major specification structure ................................. -->
  318: 
  319: <!--
  320: #1998-03-10: maler: Made spec content model easily customizable.
  321: -->
  322: 
  323: <!ELEMENT spec (%spec.mdl;)>
  324: <!ATTLIST spec %common.att;>
  325: 
  326: <!ELEMENT front (div1+)>
  327: <!ATTLIST front %common.att;>
  328: 
  329: <!ELEMENT body (div1+)>
  330: <!ATTLIST body %common.att;>
  331: 
  332: <!--
  333: #1997-09-30: maler: Added inform-div1 to back content.
  334: -->
  335: 
  336: <!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
  337: <!ATTLIST back %common.att;>
  338: 
  339: <!ELEMENT div1 (head, (%div.mix;)*, div2*)>
  340: <!ATTLIST div1 %common.att;>
  341: 
  342: <!--
  343: #1997-09-30: maler: Added inform-div1 declarations.
  344: -->
  345: 
  346: <!--    inform-div1: Non-normative division in back matter -->
  347: <!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
  348: <!ATTLIST inform-div1 %common.att;>
  349: 
  350: <!ELEMENT div2 (head, (%div.mix;)*, div3*)>
  351: <!ATTLIST div2 %common.att;>
  352: 
  353: <!ELEMENT div3 (head, (%div.mix;)*, div4*)>
  354: <!ATTLIST div3 %common.att;>
  355: 
  356: <!ELEMENT div4 (head, (%div.mix;)*)>
  357: <!ATTLIST div4 %common.att;>
  358: 
  359: <!-- Specification header .......... -->
  360: 
  361: <!--
  362: #1998-03-10: maler: Made header content model easily customizable.
  363: -->
  364: 
  365: <!ELEMENT header (%header.mdl;)>
  366: <!ATTLIST header %common.att;>
  367: 
  368: <!--    Example of title: "Extensible Cheese Language (XCL)" -->
  369: <!ELEMENT title (#PCDATA)>
  370: <!ATTLIST title %common.att;>
  371: 
  372: <!--    Example of subtitle: "A Cheesy Specification" -->
  373: <!ELEMENT subtitle (#PCDATA)>
  374: <!ATTLIST subtitle %common.att;>
  375: 
  376: <!--    Example of version: "Version 666.0" -->
  377: <!ELEMENT version (#PCDATA)>
  378: <!ATTLIST version %common.att;>
  379: 
  380: <!--    Example of w3c-designation: "WD-xcl-19991231" -->
  381: <!ELEMENT w3c-designation (#PCDATA)>
  382: <!ATTLIST w3c-designation %common.att;>
  383: 
  384: <!--    Example of w3c-doctype: "World Wide Web Consortium Working
  385:         Draft" -->
  386: <!ELEMENT w3c-doctype (#PCDATA)>
  387: <!ATTLIST w3c-doctype %common.att;>
  388: 
  389: <!--
  390: #1998-03-10: maler: Made pubdate content model easily customizable.
  391: -->
  392: 
  393: <!ELEMENT pubdate (%pubdate.mdl;)>
  394: <!ATTLIST pubdate %common.att;>
  395: 
  396: <!ELEMENT day (#PCDATA)>
  397: <!ATTLIST day %common.att;>
  398: 
  399: <!ELEMENT month (#PCDATA)>
  400: <!ATTLIST month %common.att;>
  401: 
  402: <!ELEMENT year (#PCDATA)>
  403: <!ATTLIST year %common.att;>
  404: 
  405: <!--    Example of notice: "This draft is for public comment..." -->
  406: <!ELEMENT notice (%hdr.mix;)+>
  407: <!ATTLIST notice %common.att;>
  408: 
  409: <!ELEMENT publoc (loc+)>
  410: <!ATTLIST publoc %common.att;>
  411: 
  412: <!ELEMENT prevlocs (loc+)>
  413: <!ATTLIST prevlocs %common.att;>
  414: 
  415: <!ELEMENT latestloc (loc+)>
  416: <!ATTLIST latestloc %common.att;>
  417: 
  418: <!--      loc (defined in "Phrase-level elements" below) -->
  419: 
  420: <!ELEMENT authlist (author+)>
  421: <!ATTLIST authlist %common.att;>
  422: 
  423: <!--
  424: #1997-09-30: maler: Made affiliation optional.
  425: #1998-03-10: maler: Made email optional.
  426: -->
  427: 
  428: <!ELEMENT author (name, affiliation?, email?)>
  429: <!ATTLIST author %common.att;>
  430: 
  431: <!ELEMENT name (#PCDATA)>
  432: <!ATTLIST name
  433:         %common.att;
  434:         %key.att;>
  435: 
  436: <!ELEMENT affiliation (#PCDATA)>
  437: <!ATTLIST affiliation %common.att;>
  438: 
  439: <!ELEMENT email (#PCDATA)>
  440: <!--    HREF attribute:
  441:         email functions as a hypertext reference through this
  442:         required attribute.  Typically the reference would use
  443:         the mailto: scheme. -->
  444: <!ATTLIST email
  445:         %common.att;
  446:         %href-req.att;>
  447: 
  448: <!--    The status element now contains both statusp and p, and
  449:         the latter now allows loc.  Use p; statusp will be removed
  450:         eventually. -->
  451: <!ELEMENT status (%statusobj.mix;)+>
  452: <!ATTLIST status %common.att;>
  453: 
  454: <!ELEMENT abstract (%hdr.mix;)*>
  455: <!ATTLIST abstract %common.att;>
  456: 
  457: <!ELEMENT pubstmt (%hdr.mix;)+>
  458: <!ATTLIST pubstmt %common.att;>
  459: 
  460: <!ELEMENT sourcedesc (%hdr.mix;)+>
  461: <!ATTLIST sourcedesc %common.att;>
  462: 
  463: <!ELEMENT langusage (language+)>
  464: <!ATTLIST langusage %common.att;>
  465: 
  466: <!ELEMENT language (#PCDATA)>
  467: <!ATTLIST language %common.att;>
  468: 
  469: <!ELEMENT revisiondesc (%hdr.mix;)+>
  470: <!ATTLIST revisiondesc %common.att;>
  471: 
  472: <!-- ............................................................... -->
  473: <!-- Standalone elements ........................................... -->
  474: 
  475: <!-- Paragraphs .................... -->
  476: 
  477: <!--
  478: #1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
  479: #1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix; references.
  480: #1997-12-29: maler: Changed order of %statusobj.mix; and %statusp.pcd.mix;
  481: #                   references.
  482: -->
  483: 
  484: <!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
  485: <!ATTLIST p %common.att;>
  486: 
  487: <!--    statusp: Special paragraph that allows loc inside it (note that
  488:         p now also allows loc) -->
  489: <!ELEMENT statusp (%statusp.pcd.mix;|%statusobj.mix;)*>
  490: <!ATTLIST statusp %common.att;>
  491: 
  492: <!-- Lists ......................... -->
  493: 
  494: <!ELEMENT ulist (item+)>
  495: <!--    spacing attribute:
  496:         Use "normal" to get normal vertical spacing for items;
  497:         use "compact" to get less spacing.  The default is dependent
  498:         on the stylesheet. -->
  499: <!ATTLIST ulist
  500:         %common.att;
  501:         spacing         (normal|compact)        #IMPLIED>
  502: 
  503: <!ELEMENT olist (item+)>
  504: <!--    spacing attribute:
  505:         Use "normal" to get normal vertical spacing for items;
  506:         use "compact" to get less spacing.  The default is dependent
  507:         on the stylesheet. -->
  508: <!ATTLIST olist
  509:         %common.att;
  510:         spacing         (normal|compact)        #IMPLIED>
  511: 
  512: <!ELEMENT item (%obj.mix;)+>
  513: <!ATTLIST item %common.att;>
  514: 
  515: <!ELEMENT slist (sitem+)>
  516: <!ATTLIST slist %common.att;>
  517: 
  518: <!ELEMENT sitem (%p.pcd.mix;)*>
  519: <!ATTLIST sitem %common.att;>
  520: 
  521: <!ELEMENT glist (gitem+)>
  522: <!ATTLIST glist %common.att;>
  523: 
  524: <!ELEMENT gitem (label, def)>
  525: <!ATTLIST gitem %common.att;>
  526: 
  527: <!ELEMENT label (%label.pcd.mix;)*>
  528: <!ATTLIST label %common.att;>
  529: 
  530: <!ELEMENT def (%obj.mix;)*>
  531: <!ATTLIST def %common.att;>
  532: 
  533: <!-- Special lists ................. -->
  534: 
  535: <!ELEMENT blist (bibl+)>
  536: <!ATTLIST blist %common.att;>
  537: 
  538: <!ELEMENT bibl (%bibl.pcd.mix;)*>
  539: 
  540: <!--    HREF attribute:
  541:         bibl optionally functions as a hypertext reference to the
  542:         referred-to resource through this attribute. -->
  543: 
  544: <!ATTLIST bibl
  545:         %common.att;
  546:         %href.att;
  547:         %key.att;>
  548: 
  549: <!ELEMENT orglist (member+)>
  550: <!ATTLIST orglist %common.att;>
  551: 
  552: <!--
  553: #1997-09-30: maler: Added optional affiliation.
  554: -->
  555: 
  556: <!ELEMENT member (name, affiliation?, role?)>
  557: <!ATTLIST member %common.att;>
  558: 
  559: <!--      name (defined in "Specification header" above) -->
  560: <!--      affiliation (defined in "Specification header" above) -->
  561: 
  562: <!ELEMENT role (#PCDATA)>
  563: <!ATTLIST role %common.att;>
  564: 
  565: <!-- Notes ......................... -->
  566: 
  567: <!ELEMENT note (%obj.mix;)+>
  568: <!ATTLIST note %common.att;>
  569: 
  570: <!ELEMENT wfcnote (head, (%obj.mix;)+)>
  571: <!--    ID attribute:
  572:         wfcnote must have an ID so that it can be pointed to
  573:         from a wfc element in a production. -->
  574: <!ATTLIST wfcnote
  575:         %common-idreq.att;>
  576: 
  577: <!ELEMENT vcnote (head, (%obj.mix;)+)>
  578: <!--    ID attribute:
  579:         vcnote must have an ID so that it can be pointed to
  580:         from a vc element in a production. -->
  581: <!ATTLIST vcnote
  582:         %common-idreq.att;>
  583: 
  584: <!-- Illustrations ................. -->
  585: 
  586: <!--
  587: #1998-03-23: maler: Added xml:space attribute.
  588: -->
  589: 
  590: <!ELEMENT eg (%eg.pcd.mix;)*>
  591: <!ATTLIST eg
  592:         %common.att;
  593:         %xmlspace.att;>
  594: 
  595: <!ELEMENT graphic EMPTY>
  596: <!--    source attribute:
  597:         The graphic data must reside at the location pointed to.
  598:         This is a hypertext reference, but for practical purposes,
  599:         for now it should just be a pathname. -->
  600: <!ATTLIST graphic
  601:         %common.att;
  602:         %source-req.att;
  603:         alt             CDATA           #IMPLIED>
  604: 
  605: <!--
  606: #1997-11-28: maler: Added prodgroup to scrap and defined it.
  607: -->
  608: 
  609: <!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
  610: <!--    lang attribute:
  611:         The scrap can link to a description of the language used,
  612:         found in a language element in the header. -->
  613: <!ATTLIST scrap
  614:         %common.att;
  615:         lang            IDREF           #IMPLIED>
  616: 
  617: <!ELEMENT prodgroup (prod+)>
  618: <!--    pcw<n> attributes:
  619:         Presentational attributes to control the width
  620:         of the "pseudo-table" columns used to output
  621:         groups of productions. -->
  622: <!ATTLIST prodgroup
  623:         %common.att;
  624:         pcw1            CDATA           #IMPLIED
  625:         pcw2            CDATA           #IMPLIED
  626:         pcw3            CDATA           #IMPLIED
  627:         pcw4            CDATA           #IMPLIED
  628:         pcw5            CDATA           #IMPLIED
  629: >
  630: 
  631: <!ELEMENT prod (lhs, (rhs, (com|wfc|vc)*)+)>
  632: <!--    ID attribute:
  633:         The production must have an ID so that cross-references
  634:         (specref) and mentions of nonterminals (nt) can link to
  635:         it. -->
  636: <!ATTLIST prod
  637:         %common-idreq.att;>
  638: 
  639: <!ELEMENT lhs (#PCDATA)>
  640: <!ATTLIST lhs %common.att;>
  641: 
  642: <!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
  643: <!ATTLIST rhs %common.att;>
  644: 
  645: <!--      nt and xnt (defined in "Phrase-level elements" below) -->
  646: 
  647: <!--
  648: #1997-11-28: maler: Added loc and bibref to com content.
  649: -->
  650: 
  651: <!ELEMENT com (#PCDATA|loc|bibref)*>
  652: <!ATTLIST com %common.att;>
  653: 
  654: <!--    wfc: Should generate the head of the wfcnote pointed to -->
  655: <!ELEMENT wfc EMPTY>
  656: <!--    def attribute:
  657:         Each well formedness tagline in a production must link to the
  658:         wfcnote that defines it. -->
  659: <!ATTLIST wfc
  660:         %def-req.att;
  661:         %common.att;>
  662: 
  663: <!--    vc: Should generate the head of the vcnote pointed to -->
  664: <!ELEMENT vc EMPTY>
  665: <!--    def attribute:
  666:         Each validity tagline in a production must link to the vcnote
  667:         that defines it. -->
  668: <!ATTLIST vc
  669:         %def-req.att;
  670:         %common.att;>
  671: 
  672: <!--
  673: #1998-03-23: maler: Added xml:space attribute.
  674: -->
  675: 
  676: <!--    bnf: Un-marked-up production -->
  677: <!ELEMENT bnf (%eg.pcd.mix;)*>
  678: <!ATTLIST bnf
  679:         %common.att;
  680:         %xmlspace.att;>
  681: 
  682: <!--
  683: #1997-10-16: maler: Added table mechanism.
  684: #1997-11-28: maler: Added non-null system ID to entity declaration.
  685: #                   Added HTML table module.
  686: #1997-12-29: maler: IGNOREd SGML Open table model.
  687: #1998-03-10: maler: Removed SGML Open table model.
  688: #                   Merged html-tbl.mod file into main file.
  689: #                   Added %common.att; to all HTML table elements.
  690: -->
  691: 
  692: <!--    TR and TD attributes:
  693:         Alignment attributes.  No default. -->
  694: <!ENTITY % trtd.att
  695:         "align          (left
  696:                         |center
  697:                         |right)         #IMPLIED
  698:         valign          (top
  699:                         |middle
  700:                         |bottom)        #IMPLIED">
  701: 
  702: <!ELEMENT htable (htbody+)>
  703: <!ATTLIST htable
  704:           border        CDATA           "0"
  705:           cellpadding   CDATA           "0"
  706:           align         (left
  707:                         |center
  708:                         |right)         "left">
  709: 
  710: <!ELEMENT htbody (tr+)>
  711: <!ATTLIST htbody %common.att;>
  712: 
  713: <!ELEMENT tr     (td+)>
  714: <!ATTLIST tr
  715:         %common.att;
  716:         %trtd.att;>
  717: 
  718: <!ELEMENT td     (%p.pcd.mix;)*>
  719: <!ATTLIST td
  720:         %common.att;
  721:         %trtd.att;
  722:         bgcolor         CDATA           #IMPLIED
  723:         rowspan         CDATA           "1"
  724:         colspan         CDATA           "1">
  725: 
  726: <!-- ............................................................... -->
  727: <!-- Phrase-level elements ......................................... -->
  728: 
  729: <!--    bibref: Should generate, in square brackets, "key" on bibl -->
  730: <!ELEMENT bibref EMPTY>
  731: <!--    ref attribute:
  732:         A bibliography reference must link to the bibl element that
  733:         describes the resource. -->
  734: <!ATTLIST bibref
  735:         %common.att;
  736:         %ref-req.att;>
  737: 
  738: <!ELEMENT code (%tech.pcd.mix;)*>
  739: <!ATTLIST code %common.att;>
  740: 
  741: <!--
  742: #1998-03-10: maler: Declared ednote and related elements.
  743: -->
  744: 
  745: <!ELEMENT ednote (name?, date?, edtext)>
  746: <!ATTLIST ednote %common.att;>
  747: 
  748: <!ELEMENT date (#PCDATA)>
  749: <!ATTLIST date %common.att;>
  750: 
  751: <!ELEMENT edtext (#PCDATA)>
  752: <!ATTLIST edtext %common.att;>
  753: 
  754: <!ELEMENT emph (#PCDATA)>
  755: <!ATTLIST emph %common.att;>
  756: 
  757: <!--    footnote: Both footnote content and call to footnote -->
  758: <!ELEMENT footnote (%obj.mix;)+>
  759: <!ATTLIST footnote %common.att;>
  760: 
  761: <!ELEMENT kw (%tech.pcd.mix;)*>
  762: <!ATTLIST kw %common.att;>
  763: 
  764: <!ELEMENT loc (#PCDATA)>
  765: <!--    HREF attribute:
  766:         The purpose of a loc element is to function as a hypertext
  767:         link to a resource.  (Ideally, the content of loc will also
  768:         mention the URI of the resource, so that readers of the
  769:         printed version will be able to locate the resource.) -->
  770: <!ATTLIST loc
  771:         %common.att;
  772:         %href-req.att;>
  773: 
  774: <!ELEMENT nt (#PCDATA)>
  775: <!--    def attribute:
  776:         The nonterminal must link to the production that defines
  777:         it. -->
  778: <!ATTLIST nt
  779:         %common.att;
  780:         %def-req.att;>
  781: 
  782: <!--
  783: #1998-03-10: maler: Declared quote.
  784: -->
  785: 
  786: <!--    quote: Scare quotes and other purely presentational quotes -->
  787: <!ELEMENT quote (%p.pcd.mix;)*>
  788: <!ATTLIST quote %common.att;>
  789: 
  790: <!--    specref: Should generate italic "[n.n], Section Title" for
  791:         div, "n" for numbered item, or "[n]" for production -->
  792: <!ELEMENT specref EMPTY>
  793: <!--    ref attribute:
  794:         The purpose of a specref element is to link to a div, item
  795:         in an olist, or production in the current spec. -->
  796: <!ATTLIST specref
  797:         %common.att;
  798:         %ref-req.att;>
  799: 
  800: <!ELEMENT term (#PCDATA)>
  801: <!ATTLIST term %common.att;>
  802: 
  803: <!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
  804: <!--    ID attribute:
  805:         A term definition must have an ID so that it can be linked
  806:         to from termref elements. -->
  807: <!--    term attribute:
  808:         The canonical form of the term or phrase being defined must
  809:         appear in this attribute, even if the term or phrase also
  810:         appears in the element content in identical form (e.g., in
  811:         the term element). -->
  812: <!ATTLIST termdef
  813:         %common-idreq.att;
  814:         term            CDATA           #REQUIRED>
  815: 
  816: <!ELEMENT termref (#PCDATA)>
  817: <!--    ref attribute:
  818:         A term reference must link to the termdef element that
  819:         defines the term. -->
  820: <!ATTLIST termref
  821:         %common.att;
  822:         %def-req.att;>
  823: 
  824: <!ELEMENT titleref (#PCDATA)>
  825: <!--    HREF attribute:
  826:         A title reference can optionally function as a hypertext
  827:         link to the resource with this title. -->
  828: <!ATTLIST titleref
  829:         %common.att;
  830:         %href.att;>
  831: 
  832: <!ELEMENT xnt (#PCDATA)>
  833: <!--    HREF attribute:
  834:         The nonterminal must hyperlink to a resource that serves
  835:         to define it (e.g., a production in a related XML
  836:         specification). -->
  837: <!ATTLIST xnt
  838:         %common.att;
  839:         %href-req.att;>
  840: 
  841: <!--
  842: #1997-12-29: maler: Declared xspecref.
  843: -->
  844: 
  845: <!ELEMENT xspecref (#PCDATA)>
  846: <!--    HREF attribute:
  847:         The spec reference must hyperlink to the resource to
  848:         cross-refer to (e.g., a section in a related XML
  849:         specification). -->
  850: <!ATTLIST xspecref
  851:         %common.att;
  852:         %href-req.att;>
  853: 
  854: <!ELEMENT xtermref (#PCDATA)>
  855: <!--    HREF attribute:
  856:         The term reference must hyperlink to the resource that
  857:         serves to define the term (e.g., a term definition in
  858:         a related XML specification). -->
  859: <!ATTLIST xtermref
  860:         %common.att;
  861:         %href-req.att;>
  862: 
  863: <!-- ............................................................... -->
  864: <!-- Unused elements for ADEPT ..................................... -->
  865: 
  866: <!--
  867: #1997-09-30: maler: Added unusued elements.
  868: #1997-10-14: maler: Fixed div to move nested div to the mixture.
  869: -->
  870: 
  871: <!--    The following elements are purposely declared but never
  872:         referenced.  Declaring them allows them to be pasted from
  873:         an HTML document into a document using this DTD in ADEPT.
  874:         The ATD Context Transformation mechanism will try to convert
  875:         them to the appropriate element for this DTD.  While this
  876:         conversion will not work for all fragments, it does allow
  877:         many cases to work reasonably well. -->
  878: 
  879: <!ELEMENT div
  880:         (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
  881: <!ELEMENT h1 (%head.pcd.mix;|em|a)*>
  882: <!ELEMENT h2 (%head.pcd.mix;|em|a)*>
  883: <!ELEMENT h3 (%head.pcd.mix;|em|a)*>
  884: <!ELEMENT h4 (%head.pcd.mix;|em|a)*>
  885: <!ELEMENT h5 (%head.pcd.mix;|em|a)*>
  886: <!ELEMENT h6 (%head.pcd.mix;|em|a)*>
  887: <!ELEMENT pre (%eg.pcd.mix;|em)*>
  888: <!ELEMENT ul (item|li)*>
  889: <!ELEMENT ol (item|li)*>
  890: <!ELEMENT li (#PCDATA|%obj.mix;)*>
  891: <!ELEMENT em (#PCDATA)>
  892: <!ELEMENT a (#PCDATA)>
  893: 
  894: <!-- ............................................................... -->
  895: <!-- Change history ................................................ -->
  896: 
  897: <!--
  898: #1997-08-18: maler
  899: #- Did a major revision.
  900: #1997-09-10: maler
  901: #- Updated FPI.
  902: #- Removed namekey element and put key attribute on name element.
  903: #- Made statusp element and supporting entities.
  904: #- Added slist element with sitem+ content.
  905: #- Required head on scrap and added new bnf subelement.
  906: #- Added an xnt element and allowed it and nt in regular text and rhs.
  907: #- Removed the ntref element.
  908: #- Added back the com element to the content of rhs.
  909: #- Added a key attribute to bibl.
  910: #- Removed the ident element.
  911: #- Added a term element to be used inside termdef.
  912: #- Added an xtermref element parallel to termref.
  913: #- Beefed up DTD comments.
  914: #1997-09-12: maler
  915: #- Allowed term element in general text.
  916: #- Changed bibref to EMPTY.
  917: #- Added ref.class to termdef.pcd.mix.
  918: #1997-09-14: maler
  919: #- Changed main attribute of xtermref from def to href.
  920: #- Added termdef.class to label contents.
  921: #1997-09-30: maler
  922: #- Added character entity module and added new entities.
  923: #- Removed p from appearing directly in self; created %p.mix;.
  924: #- Added inform-div (non-normative division) element.
  925: #- Fixed xtermref comment to mention HREF, not ref.
  926: #- Extended orglist model to allow optional affiliation.
  927: #- Modified author to make affiliation optional.
  928: #- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
  929: #- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
  930: #- Added unused HTML elements.
  931: #- Put empty system ID next to public ID in entity declarations.
  932: #1997-10-14: maler
  933: #- Fixed "unused" div content model to move nested div to mixture.
  934: #1997-10-16: maler
  935: #- Added SGML Open Exchange tables.
  936: #1997-11-28: maler
  937: #- Added support for prodgroup and its attributes.
  938: #- Added support for HTML tables.
  939: #- Added loc and bibref to content of com.
  940: #- Added loc to general p content models.
  941: #- Allowed p as alternative to statusp in status.
  942: #- Added non-null system IDs to external parameter entity declarations.
  943: #- (Modified the SGML Open table module to make it XML-compliant.)
  944: #- (Modified the character entity module.)
  945: #1997-12-29: maler
  946: #- Moved #PCDATA occurrences to come before GIs in content models.
  947: #- Removed use of the SGML Open table module.
  948: #- Added xspecref element.
  949: #- Ensured that all FPIs contain 4-digit year.
  950: #- (Modified the character entity module.)
  951: #1997-03-10: maler
  952: #- Merged the character entity and table modules into the main file.
  953: #- Added ldquo and rdquo entities.
  954: #- Added common attributes to prodgroup.
  955: #- Made the email element in header optional.
  956: #- Removed reference to the SGML Open table model.
  957: #- Added ednote element.
  958: #- Added quote element.
  959: #- Updated XLink usage to reflect 3 March 1998 WD.
  960: #- Added "local" entities to the class entities for customization.
  961: #- Parameterized several content models to allow for customization.
  962: #1997-03-23: maler
  963: #- Cleaned up some comments and removed some others.
  964: #- Added xml:space semi-common attribute to eg and bnf elements.
  965: #- Added show and embed attributes on all the uses of href.
  966: #- Added %common.att; to all HTML table elements.
  967: #- Added a real URI to the "typical invocation" comment.
  968: -->
  969: 
  970: <!-- ............................................................... -->
  971: <!-- End of XML specification DTD .................................. -->
  972: <!-- ............................................................... -->

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>