<!-- ............................................................... -->
<!-- XML specification DTD ......................................... -->
<!-- ............................................................... -->

<!--
TYPICAL INVOCATION:
#  <!DOCTYPE spec PUBLIC
#       "-//W3C//DTD Specification::19980521//EN"
#       "http://www.w3.org/XML/1998/06/xmlspec-19980521.dtd">

PURPOSE:
  This DTD was developed for use with the XML family of W3C
  specifications.  It is an XML-compliant DTD based in part on
  the TEI Lite and Sweb DTDs.

DEPENDENCIES:
  None.

CHANGE HISTORY:
  The list of changes is at the end of the DTD.

  For all details, see the design report at:

#   <http://www.w3.org/XML/1998/06/xmlspec-report-19980521.htm>

  The "typical invocation" FPI always gets updated to reflect the
  date of the most recent changes.

  Search this file for "#" in the first column to see change history
  comments.

MAINTAINER:
  Eve Maler
  ArborText Inc.
  elm@arbortext.com
  voice: +1 781 270 5750
  fax:   +1 781 273 3760
-->

<!-- ............................................................... -->
<!-- Entities for characters and symbols ........................... -->

<!--
#1998-03-10: maler: Added &ldquo; and &rdquo;.
#                   Used 8879:1986-compatible decimal character
#                   references.
#                   Merged charent.mod file back into main file.
#1998-05-14: maler: Fixed ldquo and rdquo.  Gave mdash a real number.
-->

<!ENTITY lt     "&#38;#60;">
<!ENTITY gt     "&#62;">
<!ENTITY amp    "&#38;#38;">
<!ENTITY apos   "&#39;">
<!ENTITY quot   "&#34;">
<!ENTITY nbsp   "&#160;">
<!--
<!ENTITY mdash  "&#x2014;">
<!ENTITY ldquo  "&#x201C;">
<!ENTITY rdquo  "&#x201D;">
-->

<!-- ............................................................... -->
<!-- Entities for classes of standalone elements ................... -->

<!--
#1997-10-16: maler: Added table to %illus.class;.
#1997-11-28: maler: Added htable to %illus.class;.
#1997-12-29: maler: IGNOREd table.
#1998-03-10: maler: Removed SGML Open-specific %illus.class;.
#                   Added "local" entities for customization.
#1998-05-14: maler: Added issue to %note.class;.
#                   Removed %[local.]statusp.class;.
#1998-05-21: maler: Added constraintnote to %note.class;.
-->

<!ENTITY % local.p.class        "">
<!ENTITY % p.class              "p
                                %local.p.class;">

<!ENTITY % local.list.class     "">
<!ENTITY % list.class           "ulist|olist|slist|glist
                                %local.list.class;">

<!ENTITY % local.speclist.class "">
<!ENTITY % speclist.class       "orglist|blist
                                %local.speclist.class;">

<!ENTITY % local.note.class     "">
<!ENTITY % note.class           "note|issue|wfcnote|vcnote
                                |constraintnote %local.note.class;">

<!ENTITY % local.illus.class    "">
<!ENTITY % illus.class          "eg|graphic|scrap|htable
                                %local.illus.class;">

<!-- ............................................................... -->
<!-- Entities for classes of phrase-level elements ................. -->

<!--
#1997-12-29: maler: Added xspecref to %ref.class;.
#1998-03-10: maler: Added %ednote.class;.
#                   Added "local" entities for customization.
-->

<!ENTITY % local.annot.class    "">
<!ENTITY % annot.class          "footnote
                                %local.annot.class;">

<!ENTITY % local.termdef.class    "">
<!ENTITY % termdef.class        "termdef|term
                                %local.termdef.class;">

<!ENTITY % local.emph.class    "">
<!ENTITY % emph.class           "emph|quote
                                %local.emph.class;">

<!ENTITY % local.ref.class    "">
<!ENTITY % ref.class            "bibref|specref|termref|titleref
                                |xspecref|xtermref
                                %local.ref.class;">

<!ENTITY % local.loc.class    "">
<!ENTITY % loc.class            "loc
                                %local.loc.class;">

<!ENTITY % local.tech.class    "">
<!ENTITY % tech.class           "kw|nt|xnt|code
                                %local.tech.class;">

<!ENTITY % local.ednote.class    "">
<!ENTITY % ednote.class         "ednote
                                %local.ednote.class;">

<!-- ............................................................... -->
<!-- Entities for mixtures of standalone elements .................. -->

<!--
#1997-09-30: maler: Created %p.mix; to eliminate p from self.
#1997-09-30: maler: Added %speclist.class; to %obj.mix; and %p.mix;.
#1997-09-30: maler: Added %note.class; to %obj.mix; and %p.mix;.
#1997-10-16: maler: Created %entry.mix;.  Note that some elements
#                   left out here are still allowed in termdef,
#                   which entry can contain through %p.pcd.mix;.
#1997-11-28: maler: Added %p.class; to %statusobj.mix;.
#1998-03-10: maler: Added %ednote.class; to all mixtures, except
#                   %p.mix; and %statusobj.mix;, because paragraphs
#                   and status paragraphs will contain ednote
#                   through %p.pcd.mix;.
#1998-03-23: maler: Added %termdef.mix; (broken out from
#                    %termdef.pcd.mix;).
#1998-05-14: maler: Removed %statusobj.mix; and all mentions of
#                   %statusp.mix;.
-->

<!ENTITY % div.mix
        "%p.class;|%list.class;|%speclist.class;|%note.class;
        |%illus.class;|%ednote.class;">
<!ENTITY % obj.mix
        "%p.class;|%list.class;|%speclist.class;|%note.class;
        |%illus.class;|%ednote.class;">
<!ENTITY % p.mix
        "%list.class;|%speclist.class;|%note.class;|%illus.class;">
<!ENTITY % entry.mix
        "%list.class;|note|eg|graphic|%ednote.class;">
<!ENTITY % hdr.mix
        "%p.class;|%list.class;|%ednote.class;">
<!ENTITY % termdef.mix
        "%note.class;|%illus.class;">

<!-- ............................................................... -->
<!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->

<!--    Note that %termdef.pcd.mix contains %note.class;
        and %illus.class;, considered standalone elements. -->

<!--
#1997-09-30: maler: Added scrap and %note.class; to %termdef.pcd.mix;.
#1997-11-28: maler: Added %loc.class; to %p.pcd.mix;.
#1998-03-10: maler: Added %ednote.class; to all mixtures.
#1998-03-23: maler: Moved some %termdef.pcd.mix; stuff out to
#                   %termdef.mix;.
#1998-05-14: maler: Removed %statusp.pcd.mix;.
#1998-05-21: maler: Added constraint element to %eg.pcd.mix;.
-->

<!ENTITY % p.pcd.mix
        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
        |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
<!ENTITY % head.pcd.mix
        "#PCDATA|%annot.class;|%emph.class;|%tech.class;|%ednote.class;">
<!ENTITY % label.pcd.mix
        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;|%tech.class;
        |%ednote.class;">
<!ENTITY % eg.pcd.mix
        "#PCDATA|%annot.class;|%emph.class;|%ednote.class;|constraint">
<!ENTITY % termdef.pcd.mix
        "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
        |%ednote.class;">
<!ENTITY % bibl.pcd.mix
        "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
<!ENTITY % tech.pcd.mix
        "#PCDATA|%ednote.class;">
<!ENTITY % loc.pcd.mix
        "#PCDATA|%loc.class;|%ednote.class;">

<!-- ............................................................... -->
<!-- Entities for customizable content models ...................... -->

<!--
#1998-03-10: maler: Added customization entities.
#1998-05-14: maler: Allowed prevlocs and latestloc in either order.
-->

<!ENTITY % spec.mdl
        "header, front?, body, back?">

<!ENTITY % header.mdl
        "title, subtitle?, version, w3c-designation, w3c-doctype,
        pubdate, notice*, publoc, ((prevlocs, latestloc?) |
        (latestloc, prevlocs?))?, authlist, status, abstract,
        pubstmt?, sourcedesc?, langusage, revisiondesc">

<!ENTITY % pubdate.mdl
        "day?, month, year">

<!-- ............................................................... -->
<!-- Entities for common attributes ................................ -->

<!--    key attribute:
        Optionally provides a sorting or indexing key, for cases when
        the element content is inappropriate for this purpose. -->
<!ENTITY % key.att
        'key                    CDATA           #IMPLIED'>

<!--    def attribute:
        Points to the element where the relevant definition can be
        found, using the IDREF mechanism.  %def.att; is for optional
        def attributes, and %def-req.att; is for required def
        attributes. -->
<!ENTITY % def.att
        'def                    IDREF           #IMPLIED'>
<!ENTITY % def-req.att
        'def                    IDREF           #REQUIRED'>

<!--    ref attribute:
        Points to the element where more information can be found,
        using the IDREF mechanism.  %ref.att; is for optional
        ref attributes, and %ref-req.att; is for required ref
        attributes. -->
<!ENTITY % ref.att
        'ref                    IDREF           #IMPLIED'>
<!ENTITY % ref-req.att
        'ref                    IDREF           #REQUIRED'>

<!--
#1998-03-23: maler: Added show and actuate attributes to href.
#                   Added semi-common xml:space attribute.
-->

<!--    HREF and source attributes:
        Points to the element where more information or source data
        can be found, using the URL (XLL simple link) mechanism.
        For some purposes, is associated with additional XLL
        attributes. %href.att; is for optional HREF attributes,
        and %href-req.att; is for required HREF attributes.
        %source-req.att; is for the source attribute, which
        is always required. -->
<!ENTITY % href.att
        'xml:link               CDATA           #FIXED "simple"
        href                    CDATA           #IMPLIED
        show                    CDATA           #FIXED "embed"
        actuate                 CDATA           #FIXED "auto"'>

<!ENTITY % href-req.att
        'xml:link               CDATA           #FIXED "simple"
        href                    CDATA           #REQUIRED
        show                    CDATA           #FIXED "embed"
        actuate                 CDATA           #FIXED "auto"'>

<!ENTITY % source-req.att
        'xml:link               CDATA           #FIXED "simple"
        xml:attributes          NMTOKENS        #FIXED "href source"
        source                  CDATA           #REQUIRED
        show                    CDATA           #FIXED "embed"
        actuate                 CDATA           #FIXED "auto"'>

<!--    xml:space attribute:
        Indicates that the element contains white space
        that the formatter or other application should retain,
        as appropriate to its function. -->
<!ENTITY % xmlspace.att
        'xml:space              (default
                                |preserve)      #FIXED "preserve"'>

<!--    Common attributes:
        Every element has an ID attribute (sometimes required,
        but usually optional) for links, and a Role attribute
        for extending the useful life of the DTD by allowing
        authors to make subclasses for any element. %common.att;
        is for common attributes where the ID is optional, and
        %common-idreq.att; is for common attributes where the
        ID is required. -->
<!ENTITY % common.att
        'id                     ID              #IMPLIED
        role                    NMTOKEN         #IMPLIED'>
<!ENTITY % common-idreq.att
        'id                     ID              #REQUIRED
        role                    NMTOKEN         #IMPLIED'>

<!-- ............................................................... -->
<!-- Common elements ............................................... -->

<!--    head: Title on divisions, productions, and the like -->
<!ELEMENT head (%head.pcd.mix;)*>
<!ATTLIST head %common.att;>

<!-- ............................................................... -->
<!-- Major specification structure ................................. -->

<!--
#1998-03-10: maler: Made spec content model easily customizable.
-->

<!ELEMENT spec (%spec.mdl;)>
<!ATTLIST spec %common.att;>

<!ELEMENT front (div1+)>
<!ATTLIST front %common.att;>

<!ELEMENT body (div1+)>
<!ATTLIST body %common.att;>

<!--
#1997-09-30: maler: Added inform-div1 to back content.
-->

<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
<!ATTLIST back %common.att;>

<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
<!ATTLIST div1 %common.att;>

<!--
#1997-09-30: maler: Added inform-div1 declarations.
-->

<!--    inform-div1: Non-normative division in back matter -->
<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
<!ATTLIST inform-div1 %common.att;>

<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
<!ATTLIST div2 %common.att;>

<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
<!ATTLIST div3 %common.att;>

<!ELEMENT div4 (head, (%div.mix;)*)>
<!ATTLIST div4 %common.att;>

<!-- Specification header .......... -->

<!--
#1998-03-10: maler: Made header content model easily customizable.
-->

<!ELEMENT header (%header.mdl;)>
<!ATTLIST header %common.att;>

<!--    Example of title: "Extensible Cheese Language (XCL)" -->
<!ELEMENT title (#PCDATA)>
<!ATTLIST title %common.att;>

<!--    Example of subtitle: "A Cheesy Specification" -->
<!ELEMENT subtitle (#PCDATA)>
<!ATTLIST subtitle %common.att;>

<!--    Example of version: "Version 666.0" -->
<!ELEMENT version (#PCDATA)>
<!ATTLIST version %common.att;>

<!--    Example of w3c-designation: "WD-xcl-19991231" -->
<!ELEMENT w3c-designation (#PCDATA)>
<!ATTLIST w3c-designation %common.att;>

<!--    Example of w3c-doctype: "World Wide Web Consortium Working
        Draft" -->
<!ELEMENT w3c-doctype (#PCDATA)>
<!ATTLIST w3c-doctype %common.att;>

<!--
#1998-03-10: maler: Made pubdate content model easily customizable.
-->

<!ELEMENT pubdate (%pubdate.mdl;)>
<!ATTLIST pubdate %common.att;>

<!ELEMENT day (#PCDATA)>
<!ATTLIST day %common.att;>

<!ELEMENT month (#PCDATA)>
<!ATTLIST month %common.att;>

<!ELEMENT year (#PCDATA)>
<!ATTLIST year %common.att;>

<!--    Example of notice: "This draft is for public comment..." -->
<!ELEMENT notice (%hdr.mix;)+>
<!ATTLIST notice %common.att;>

<!ELEMENT publoc (loc+)>
<!ATTLIST publoc %common.att;>

<!ELEMENT prevlocs (loc+)>
<!ATTLIST prevlocs %common.att;>

<!ELEMENT latestloc (loc+)>
<!ATTLIST latestloc %common.att;>

<!--      loc (defined in "Phrase-level elements" below) -->

<!ELEMENT authlist (author+)>
<!ATTLIST authlist %common.att;>

<!--
#1997-09-30: maler: Made affiliation optional.
#1998-03-10: maler: Made email optional.
-->

<!ELEMENT author (name, affiliation?, email?)>
<!ATTLIST author %common.att;>

<!ELEMENT name (#PCDATA)>
<!ATTLIST name
        %common.att;
        %key.att;>

<!ELEMENT affiliation (#PCDATA)>
<!ATTLIST affiliation %common.att;>

<!ELEMENT email (#PCDATA)>
<!--    HREF attribute:
        email functions as a hypertext reference through this
        required attribute.  Typically the reference would use
        the mailto: scheme. -->
<!ATTLIST email
        %common.att;
        %href-req.att;>

<!--
#1998-05-15: maler: Changed status content from %statusobj.mix;
#                   to plain %obj.mix;.  statusp is obsolete.
-->

<!ELEMENT status (%obj.mix;)+>
<!ATTLIST status %common.att;>

<!ELEMENT abstract (%hdr.mix;)*>
<!ATTLIST abstract %common.att;>

<!ELEMENT pubstmt (%hdr.mix;)+>
<!ATTLIST pubstmt %common.att;>

<!ELEMENT sourcedesc (%hdr.mix;)+>
<!ATTLIST sourcedesc %common.att;>

<!ELEMENT langusage (language+)>
<!ATTLIST langusage %common.att;>

<!ELEMENT language (#PCDATA)>
<!ATTLIST language %common.att;>

<!ELEMENT revisiondesc (%hdr.mix;)+>
<!ATTLIST revisiondesc %common.att;>

<!-- ............................................................... -->
<!-- Standalone elements ........................................... -->

<!-- Paragraphs .................... -->

<!--
#1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
#1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix;
#                   references.
#1997-12-29: maler: Changed order of %statusobj.mix; and
#                   %statusp.pcd.mix; references.
#1998-05-14: maler: Removed statusp declarations.
-->

<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
<!ATTLIST p %common.att;>

<!-- Lists ......................... -->

<!ELEMENT ulist (item+)>
<!--    spacing attribute:
        Use "normal" to get normal vertical spacing for items;
        use "compact" to get less spacing.  The default is dependent
        on the stylesheet. -->
<!ATTLIST ulist
        %common.att;
        spacing         (normal|compact)        #IMPLIED>

<!ELEMENT olist (item+)>
<!--    spacing attribute:
        Use "normal" to get normal vertical spacing for items;
        use "compact" to get less spacing.  The default is dependent
        on the stylesheet. -->
<!ATTLIST olist
        %common.att;
        spacing         (normal|compact)        #IMPLIED>

<!ELEMENT item (%obj.mix;)+>
<!ATTLIST item %common.att;>

<!ELEMENT slist (sitem+)>
<!ATTLIST slist %common.att;>

<!ELEMENT sitem (%p.pcd.mix;)*>
<!ATTLIST sitem %common.att;>

<!ELEMENT glist (gitem+)>
<!ATTLIST glist %common.att;>

<!ELEMENT gitem (label, def)>
<!ATTLIST gitem %common.att;>

<!ELEMENT label (%label.pcd.mix;)*>
<!ATTLIST label %common.att;>

<!ELEMENT def (%obj.mix;)*>
<!ATTLIST def %common.att;>

<!-- Special lists ................. -->

<!ELEMENT blist (bibl+)>
<!ATTLIST blist %common.att;>

<!ELEMENT bibl (%bibl.pcd.mix;)*>
<!--    HREF attribute:
        bibl optionally functions as a hypertext reference to the
        referred-to resource through this attribute. -->
<!ATTLIST bibl
        %common.att;
        %href.att;
        %key.att;>

<!ELEMENT orglist (member+)>
<!ATTLIST orglist %common.att;>

<!--
#1997-09-30: maler: Added optional affiliation.
-->

<!ELEMENT member (name, affiliation?, role?)>
<!ATTLIST member %common.att;>

<!--      name (defined in "Specification header" above) -->
<!--      affiliation (defined in "Specification header" above) -->

<!ELEMENT role (#PCDATA)>
<!ATTLIST role %common.att;>

<!-- Notes ......................... -->

<!ELEMENT note (%obj.mix;)+>
<!ATTLIST note %common.att;>

<!--
#1998-05-14: maler: Declared issue element.
-->

<!ELEMENT issue (%obj.mix;)+>
<!ATTLIST issue %common-idreq.att;>

<!ELEMENT wfcnote (head, (%obj.mix;)+)>
<!--    ID attribute:
        wfcnote must have an ID so that it can be pointed to
        from a wfc element in a production. -->
<!ATTLIST wfcnote
        %common-idreq.att;>

<!ELEMENT vcnote (head, (%obj.mix;)+)>
<!--    ID attribute:
        vcnote must have an ID so that it can be pointed to
        from a vc element in a production. -->
<!ATTLIST vcnote
        %common-idreq.att;>

<!--
#1998-05-21: maler: Declared generic constraintnote element.
-->

<!ELEMENT constraintnote (head, (%obj.mix;)+)>
<!--    ID attribute:
        cnote must have an ID so that it can be pointed to
        from a constraint element in a production. -->
<!--    type attribute:
        cnote must have a type value keyword so that it can be
        correctly characterized in the specification. -->
<!ATTLIST constraintnote
        %common-idreq.att;
        type            NMTOKEN         #REQUIRED>

<!-- Illustrations ................. -->

<!--
#1998-03-23: maler: Added xml:space attribute.
-->

<!ELEMENT eg (%eg.pcd.mix;)*>
<!ATTLIST eg
        %common.att;
        %xmlspace.att;>

<!ELEMENT graphic EMPTY>
<!--    source attribute:
        The graphic data must reside at the location pointed to.
        This is a hypertext reference, but for practical purposes,
        for now it should just be a pathname. -->
<!ATTLIST graphic
        %common.att;
        %source-req.att;
        alt             CDATA           #IMPLIED>

<!--
#1997-11-28: maler: Added prodgroup to scrap and defined it.
#1998-05-21: maler: Added constraint to prod.
-->

<!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
<!--    lang attribute:
        The scrap can link to a description of the language used,
        found in a language element in the header. -->
<!ATTLIST scrap
        %common.att;
        lang            IDREF           #IMPLIED>

<!ELEMENT prodgroup (prod+)>
<!--    pcw<n> attributes:
        Presentational attributes to control the width
        of the "pseudo-table" columns used to output
        groups of productions. -->
<!ATTLIST prodgroup
        %common.att;
        pcw1            CDATA           #IMPLIED
        pcw2            CDATA           #IMPLIED
        pcw3            CDATA           #IMPLIED
        pcw4            CDATA           #IMPLIED
        pcw5            CDATA           #IMPLIED
>

<!ELEMENT prod (lhs, (rhs, (com|wfc|vc|constraint)*)+)>
<!--    ID attribute:
        The production must have an ID so that cross-references
        (specref) and mentions of nonterminals (nt) can link to
        it. -->
<!ATTLIST prod
        %common-idreq.att;>

<!ELEMENT lhs (#PCDATA)>
<!ATTLIST lhs %common.att;>

<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
<!ATTLIST rhs %common.att;>

<!--      nt and xnt (defined in "Phrase-level elements" below) -->

<!--
#1997-11-28: maler: Added loc and bibref to com content.
-->

<!ELEMENT com (#PCDATA|loc|bibref)*>
<!ATTLIST com %common.att;>

<!--    wfc: Should generate the head of the wfcnote pointed to -->
<!ELEMENT wfc EMPTY>
<!--    def attribute:
        Each well formedness tagline in a production must link to the
        wfcnote that defines it. -->
<!ATTLIST wfc
        %def-req.att;
        %common.att;>

<!--    vc: Should generate the head of the vcnote pointed to -->
<!ELEMENT vc EMPTY>
<!--    def attribute:
        Each validity tagline in a production must link to the vcnote
        that defines it. -->
<!ATTLIST vc
        %def-req.att;
        %common.att;>

<!--
#1998-05-21: maler: Declared generic constraint element.
-->

<!--    constraint: Should generate the head of the constraintnote
        pointed to -->
<!ELEMENT constraint EMPTY>
<!--    def attribute:
        Each constraint tagline in a production must link to the
        constraint note that defines it. -->
<!ATTLIST constraint
        %def-req.att;
        %common.att;>

<!--
#1998-03-23: maler: Added xml:space attribute.
-->

<!--    bnf: Un-marked-up production -->
<!ELEMENT bnf (%eg.pcd.mix;)*>
<!ATTLIST bnf
        %common.att;
        %xmlspace.att;>

<!--
#1997-10-16: maler: Added table mechanism.
#1997-11-28: maler: Added non-null system ID to entity declaration.
#                   Added HTML table module.
#1997-12-29: maler: IGNOREd SGML Open table model.
#1998-03-10: maler: Removed SGML Open table model.
#                   Merged html-tbl.mod file into main file.
#                   Added %common.att; to all HTML table elements.
#1998-05-14: maler: Replaced table model with full HTML 4.0 model.
#                   Removed htable in favor of table.
#                   Removed htbody in favor of tbody.
-->

<!ENTITY % cellhalign.att
        'align          (left|center
                        |right|justify
                        |char)          #IMPLIED
        char            CDATA           #IMPLIED
        charoff         CDATA           #IMPLIED'>

<!ENTITY % cellvalign.att
        'valign         (top|middle
                        |bottom
                        |baseline)      #IMPLIED'>

<!ENTITY % thtd.att
        'abbr           CDATA           #IMPLIED
        axis            CDATA           #IMPLIED
        headers         IDREFS          #IMPLIED
        scope           (row
                        |col
                        |rowgroup
                        |colgroup)      #IMPLIED
        rowspan         NMTOKEN         "1"
        colspan         NMTOKEN         "1"'>

<!ENTITY % width.att
        'width          CDATA           #IMPLIED'>

<!ENTITY % span.att
        'span           NMTOKEN         "1"'>

<!ELEMENT table
        (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
<!ATTLIST table
        %common.att;
        %width.att;
        summary         CDATA           #IMPLIED
        border          CDATA           #IMPLIED
        frame           (void|above
                        |below|hsides
                        |lhs|rhs
                        |vsides|box
                        |border)        #IMPLIED
        rules           (none|groups
                        |rows|cols
                        |all)           #IMPLIED
        cellspacing     CDATA           #IMPLIED
        cellpadding     CDATA           #IMPLIED>

<!ELEMENT caption (%p.pcd.mix;)*>
<!ATTLIST caption %common.att;>

<!ELEMENT col EMPTY>
<!ATTLIST col
        %common.att;
        %span.att;
        %width.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT colgroup (col)*>
<!ATTLIST colgroup
        %common.att;
        %span.att;
        %width.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT thead (tr)+>
<!ATTLIST thead
        %common.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT tfoot (tr)+>
<!ATTLIST tfoot
        %common.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT tbody (tr)+>
<!ATTLIST tbody
        %common.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT tr (th|td)+>
<!ATTLIST tr
        %common.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT th (%p.pcd.mix;|%p.mix;)*>
<!ATTLIST th
        %common.att;
        %thtd.att;
        %cellhalign.att;
        %cellvalign.att;>

<!ELEMENT td (%p.pcd.mix;|%p.mix;)*>
<!ATTLIST td
        %common.att;
        %thtd.att;
        %cellhalign.att;
        %cellvalign.att;>

<!-- ............................................................... -->
<!-- Phrase-level elements ......................................... -->

<!--    bibref: Should generate, in square brackets, "key" on bibl -->
<!ELEMENT bibref EMPTY>
<!--    ref attribute:
        A bibliography reference must link to the bibl element that
        describes the resource. -->
<!ATTLIST bibref
        %common.att;
        %ref-req.att;>

<!ELEMENT code (%tech.pcd.mix;)*>
<!ATTLIST code %common.att;>

<!--
#1998-03-10: maler: Declared ednote and related elements.
-->

<!ELEMENT ednote (name?, date?, edtext)>
<!ATTLIST ednote %common.att;>

<!ELEMENT date (#PCDATA)>
<!ATTLIST date %common.att;>

<!ELEMENT edtext (#PCDATA)>
<!ATTLIST edtext %common.att;>

<!ELEMENT emph (#PCDATA)>
<!ATTLIST emph %common.att;>

<!--    footnote: Both footnote content and call to footnote -->
<!ELEMENT footnote (%obj.mix;)+>
<!ATTLIST footnote %common.att;>

<!ELEMENT kw (%tech.pcd.mix;)*>
<!ATTLIST kw %common.att;>

<!ELEMENT loc (#PCDATA)>
<!--    HREF attribute:
        The purpose of a loc element is to function as a hypertext
        link to a resource.  (Ideally, the content of loc will also
        mention the URI of the resource, so that readers of the
        printed version will be able to locate the resource.) -->
<!ATTLIST loc
        %common.att;
        %href-req.att;>

<!ELEMENT nt (#PCDATA)>
<!--    def attribute:
        The nonterminal must link to the production that defines
        it. -->
<!ATTLIST nt
        %common.att;
        %def-req.att;>

<!--
#1998-03-10: maler: Declared quote.
-->

<!--    quote: Scare quotes and other purely presentational quotes -->
<!ELEMENT quote (%p.pcd.mix;)*>
<!ATTLIST quote %common.att;>

<!--    specref: Should generate italic "[n.n], Section Title" for
        div, "n" for numbered item, "[n]" for production, or
        "Issue n" for issue -->
<!ELEMENT specref EMPTY>
<!--    ref attribute:
        The purpose of a specref element is to link to a div, item
        in an olist, or production in the current spec. -->
<!ATTLIST specref
        %common.att;
        %ref-req.att;>

<!ELEMENT term (#PCDATA)>
<!ATTLIST term %common.att;>

<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
<!--    ID attribute:
        A term definition must have an ID so that it can be linked
        to from termref elements. -->
<!--    term attribute:
        The canonical form of the term or phrase being defined must
        appear in this attribute, even if the term or phrase also
        appears in the element content in identical form (e.g., in
        the term element). -->
<!ATTLIST termdef
        %common-idreq.att;
        term            CDATA           #REQUIRED>

<!ELEMENT termref (#PCDATA)>
<!--    ref attribute:
        A term reference must link to the termdef element that
        defines the term. -->
<!ATTLIST termref
        %common.att;
        %def-req.att;>

<!ELEMENT titleref (#PCDATA)>
<!--    HREF attribute:
        A title reference can optionally function as a hypertext
        link to the resource with this title. -->
<!ATTLIST titleref
        %common.att;
        %href.att;>

<!ELEMENT xnt (#PCDATA)>
<!--    HREF attribute:
        The nonterminal must hyperlink to a resource that serves
        to define it (e.g., a production in a related XML
        specification). -->
<!ATTLIST xnt
        %common.att;
        %href-req.att;>

<!--
#1997-12-29: maler: Declared xspecref.
-->

<!ELEMENT xspecref (#PCDATA)>
<!--    HREF attribute:
        The spec reference must hyperlink to the resource to
        cross-refer to (e.g., a section in a related XML
        specification). -->
<!ATTLIST xspecref
        %common.att;
        %href-req.att;>

<!ELEMENT xtermref (#PCDATA)>
<!--    HREF attribute:
        The term reference must hyperlink to the resource that
        serves to define the term (e.g., a term definition in
        a related XML specification). -->
<!ATTLIST xtermref
        %common.att;
        %href-req.att;>

<!-- ............................................................... -->
<!-- Unused elements for ADEPT ..................................... -->

<!--
#1997-09-30: maler: Added unusued elements.
#1997-10-14: maler: Fixed div to move nested div to the mixture.
#1998-05-14: maler: Added key-term, htable, and htbody.
-->

<!--    The following elements are purposely declared but never
        referenced.  Declaring them allows them to be pasted from
        an HTML document or an earlier version of an XML spec document
        into a document using this DTD in ADEPT.  The ATD Context
        Transformation mechanism will try to convert them to the
        appropriate element for this DTD.  While this conversion
        will not work for all fragments, it does allow many cases
        to work reasonably well. -->

<!ELEMENT div
        (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
<!ELEMENT pre (%eg.pcd.mix;|em)*>
<!ELEMENT ul (item|li)*>
<!ELEMENT ol (item|li)*>
<!ELEMENT li (#PCDATA|%obj.mix;)*>
<!ELEMENT em (#PCDATA)>
<!ELEMENT a (#PCDATA)>

<!ELEMENT key-term (#PCDATA)>
<!ELEMENT htable
        (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
<!ELEMENT htbody (tr)+>
<!ELEMENT statusp (%p.pcd.mix;|%p.mix;)*>

<!-- ............................................................... -->
<!-- Change history ................................................ -->

<!--
#1997-08-18: maler
#- Did a major revision.
#1997-09-10: maler
#- Updated FPI.
#- Removed namekey element and put key attribute on name element.
#- Made statusp element and supporting entities.
#- Added slist element with sitem+ content.
#- Required head on scrap and added new bnf subelement.
#- Added an xnt element and allowed it and nt in regular text and rhs.
#- Removed the ntref element.
#- Added back the com element to the content of rhs.
#- Added a key attribute to bibl.
#- Removed the ident element.
#- Added a term element to be used inside termdef.
#- Added an xtermref element parallel to termref.
#- Beefed up DTD comments.
#1997-09-12: maler
#- Allowed term element in general text.
#- Changed bibref to EMPTY.
#- Added ref.class to termdef.pcd.mix.
#1997-09-14: maler
#- Changed main attribute of xtermref from def to href.
#- Added termdef.class to label contents.
#1997-09-30: maler
#- Added character entity module and added new entities.
#- Removed p from appearing directly in self; created %p.mix;.
#- Added inform-div (non-normative division) element.
#- Fixed xtermref comment to mention HREF, not ref.
#- Extended orglist model to allow optional affiliation.
#- Modified author to make affiliation optional.
#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
#- Added unused HTML elements.
#- Put empty system ID next to public ID in entity declarations.
#1997-10-14: maler
#- Fixed "unused" div content model to move nested div to mixture.
#1997-10-16: maler
#- Added SGML Open Exchange tables.
#1997-11-28: maler
#- Added support for prodgroup and its attributes.
#- Added support for HTML tables.
#- Added loc and bibref to content of com.
#- Added loc to general p content models.
#- Allowed p as alternative to statusp in status.
#- Added non-null system IDs to external parameter entity declarations.
#- (Modified the SGML Open table module to make it XML-compliant.)
#- (Modified the character entity module.)
#1997-12-29: maler
#- Moved #PCDATA occurrences to come before GIs in content models.
#- Removed use of the SGML Open table module.
#- Added xspecref element.
#- Ensured that all FPIs contain 4-digit year.
#- (Modified the character entity module.)
#1998-03-10: maler
#- Merged the character entity and table modules into the main file.
#- Added ldquo and rdquo entities.
#- Added common attributes to prodgroup.
#- Made the email element in header optional.
#- Removed reference to the SGML Open table model.
#- Added ednote element.
#- Added quote element.
#- Updated XLink usage to reflect 3 March 1998 WD.
#- Added "local" entities to the class entities for customization.
#- Parameterized several content models to allow for customization.
#1998-03-23: maler
#- Cleaned up some comments and removed some others.
#- Added xml:space semi-common attribute to eg and bnf elements.
#- Added show and embed attributes on all the uses of href.
#- Added %common.att; to all HTML table elements.
#- Added a real URI to the "typical invocation" comment.
#1998-05-14: maler
#- Fixed mdash, ldquo, and rdquo character entities.
#- Switched to the full HTML 4.0 table model.
#- Removed htable/htbody elements and replaced them with table/tbody.
#- Added issue element to %note.class; and declared it.
#- Allowed prevlocs and latestloc in either order.
#- Added key-term, htable, htbody, and statusp as unused elements.
#- Removed real statusp element in favor of plain p.
#1998-05-21: maler
#- Declared generic constraint and constraintnote elements.
#- Added constraintnote to %note.class;.
#- Added constraint to %eg.pcd.mix; and prod content model.
-->

<!-- ............................................................... -->
<!-- End of XML specification DTD .................................. -->
<!-- ............................................................... -->