Home | History | Annotate | Download | only in dtds
      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 (a] 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 <!-- ............................................................... -->