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::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 (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 -->
     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 <!-- ............................................................... -->
    973