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

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