| <!-- ............................................................... --> | |
| <!-- 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 “ and ”. | |
| # 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 "&#60;"> | |
| <!ENTITY gt ">"> | |
| <!ENTITY amp "&#38;"> | |
| <!ENTITY apos "'"> | |
| <!ENTITY quot """> | |
| <!ENTITY nbsp " "> | |
| <!-- | |
| <!ENTITY mdash "—"> | |
| <!ENTITY ldquo "“"> | |
| <!ENTITY rdquo "”"> | |
| --> | |
| <!-- ............................................................... --> | |
| <!-- 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 .................................. --> | |
| <!-- ............................................................... --> |