summaryrefslogtreecommitdiffstats
path: root/htdocs/sgml-lib/Specification
diff options
context:
space:
mode:
authorville <ville@localhost>2009-11-08 20:28:30 +0000
committerville <ville@localhost>2009-11-08 20:28:30 +0000
commit5d2379ba6740083570ac82b94beea8617d995464 (patch)
treee06421430f5d0973c7d30fcffa0a78d0dcb64511 /htdocs/sgml-lib/Specification
parent8f04988c52edea41a4bf6377daa8e6fb26b978cd (diff)
downloadmarkup-validator-5d2379ba6740083570ac82b94beea8617d995464.zip
markup-validator-5d2379ba6740083570ac82b94beea8617d995464.tar.gz
markup-validator-5d2379ba6740083570ac82b94beea8617d995464.tar.bz2
Use local copy of Spec 2.0 DTD, add Spec 2.1 and 2.10.
Diffstat (limited to 'htdocs/sgml-lib/Specification')
-rw-r--r--htdocs/sgml-lib/Specification/xmlspec-v20.dtd1553
-rw-r--r--htdocs/sgml-lib/Specification/xmlspec-v21.dtd1734
-rw-r--r--htdocs/sgml-lib/Specification/xmlspec.dtd2778
3 files changed, 6065 insertions, 0 deletions
diff --git a/htdocs/sgml-lib/Specification/xmlspec-v20.dtd b/htdocs/sgml-lib/Specification/xmlspec-v20.dtd
new file mode 100644
index 0000000..06da7e6
--- /dev/null
+++ b/htdocs/sgml-lib/Specification/xmlspec-v20.dtd
@@ -0,0 +1,1553 @@
+<!-- ............................................................... -->
+<!-- XML specification DTD ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+TYPICAL INVOCATION:
+# <!DOCTYPE spec PUBLIC
+# "-//W3C//DTD Specification V2.0//EN"
+# "http://www.w3.org/XML/1998/06/xmlspec-v20.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/NOTE-xmlspec-v20.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 529 1012
+ fax: +1 781 529 1099
+-->
+
+<!-- ............................................................... -->
+<!-- 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.
+#1998-12-03: maler: Escaped the leading ampersands.
+-->
+
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+<!ENTITY nbsp "&#160;">
+<!ENTITY mdash "&#38;#x2014;">
+<!ENTITY ldquo "&#38;#x201C;">
+<!ENTITY rdquo "&#38;#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;.
+#1998-08-22: maler: Changed htable to table in %illus.class;.
+# Added definitions to %illus.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|table|definitions
+ %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;.
+#1999-07-02: maler: Added %loc.class; to %head.pcd.mix;,
+# %label.pcd.mix;, %eg.pcd.mix;, %termdef.pcd.mix;,
+# %tech.pcd.mix; (net: all PCD mixes have it).
+# Removed unused %loc.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;
+ |%loc.class;|%ednote.class;">
+<!ENTITY % label.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % eg.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%loc.class;
+ |%ednote.class;|constraint">
+<!ENTITY % termdef.pcd.mix
+ "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
+ |%loc.class;|%ednote.class;">
+<!ENTITY % bibl.pcd.mix
+ "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
+<!ENTITY % tech.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.
+#1999-07-02: maler: Made version optional; added copyright element.
+-->
+
+<!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, copyright?, 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.
+#1998-08-22: maler: Used new xlink:form and #IMPLIED features.
+#1999-07-02: maler: Reorganized XLink-related entities completely;
+# added xmlns:xlink attribute to the mix.
+-->
+
+<!-- xmlns:xlink and xlink:form attributes:
+ xmlns:xlink declares the association of the xlink prefix
+ with the namespace created by the XLink specification.
+ xlink:form potentially identifies an element as an XLink
+ "simple" linking element. When a value for href is supplied,
+ xlink:form should be understood to have the value "simple".
+ When a value for href is not supplied, xlink:form should be
+ understood to have the value "none". -->
+<!ENTITY % simple-xlink.att
+ 'xmlns:xlink CDATA #FIXED
+ "http://www.w3.org/TR/WD-xlink"
+ xlink:form CDATA #IMPLIED '>
+
+<!-- href attributes:
+ The href attribute is required to have a value when xlink:form
+ has the (implicit or explicit) value "simple". Some elements
+ are links only if the authors chooses to make them so. -->
+<!ENTITY % href.att
+ 'href CDATA #IMPLIED '>
+<!ENTITY % href-req.att
+ 'href CDATA #REQUIRED '>
+
+<!-- show and actuate attributes:
+ These attributes offer hints to the display engine about how to
+ handle traversal to a link end indicated by an href locator. The
+ auto-embed combination should have the effect of an HTML IMG SRC=.
+ The user-replace combination should have the effect of an HTML
+ A HREF=. The user-new combination should have the effect of an
+ HTML A HREF= TARGET=NEW.
+ -->
+<!ENTITY % auto-embed.att
+ 'show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto" '>
+<!ENTITY % user-replace.att
+ 'show CDATA #FIXED "replace"
+ actuate CDATA #FIXED "user" '>
+<!ENTITY % user-new.att
+ 'show CDATA #FIXED "new"
+ actuate CDATA #FIXED "user" '>
+
+<!-- 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.
+#1999-07-02: maler: Added doctype atts and status att.
+-->
+
+<!ELEMENT spec (%spec.mdl;)>
+<!-- doctype attributes:
+ Indicates the type of document, so that the appropriate
+ stylesheet or workflow routing can be applied. Should
+ *not* generate any text (such as the "REC-" or "NOTE-"
+ prefix on the W3C designation content). No default. If
+ w3c-doctype is "other", other-doctype should be filled in.
+ status attribute:
+ Indicates the stage of review of the document. May affect
+ the stylesheet's treatment of ednotes (e.g., whether to
+ output them). No default. -->
+
+<!ATTLIST spec
+ %common.att;
+ w3c-doctype (rec
+ |pr
+ |wd
+ |note
+ |other) #IMPLIED
+ other-doctype CDATA #IMPLIED
+ status (int-review
+ |ext-review
+ |final) #IMPLIED
+>
+
+<!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;>
+
+<!--
+#1999-07-02: maler: Declared copyright element.
+-->
+
+<!ELEMENT copyright (%hdr.mix;)+>
+<!ATTLIST copyright %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;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+
+<!ELEMENT email (#PCDATA)>
+<!-- href attribute:
+ email functions as a hypertext reference through this
+ required attribute. Typically the reference would use
+ the mailto: scheme. E.g.:
+
+<email href="mailto:elm@arbortext.com">elm@arbortext.com</email>
+ -->
+
+<!ATTLIST email
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.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;>
+
+<!-- ............................................................... -->
+<!-- Paragraph ..................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#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;>
+
+<!-- ............................................................... -->
+<!-- Regular lists ................................................. -->
+<!-- ............................................................... -->
+
+<!-- ulist: Unordered list, typically bulleted. -->
+<!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>
+
+<!-- olist: Ordered list, typically numbered. -->
+<!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;>
+
+<!-- slist: Simple list, typically with no mark. -->
+<!ELEMENT slist (sitem+)>
+<!ATTLIST slist %common.att;>
+
+<!ELEMENT sitem (%p.pcd.mix;)*>
+<!ATTLIST sitem %common.att;>
+
+<!-- glist: Glossary list, typically two-column. -->
+<!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 ................................................. -->
+<!-- ............................................................... -->
+
+<!-- blist: Bibliography list. -->
+<!ELEMENT blist (bibl+)>
+<!ATTLIST blist %common.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!ELEMENT bibl (%bibl.pcd.mix;)*>
+<!-- href attribute:
+ bibl optionally functions as a hypertext reference to the
+ referred-to resource through this attribute. E.g.:
+
+ <bibl href="http://www.my.com/doc.htm">My Document</bibl>
+ -->
+<!ATTLIST bibl
+ %common.att;
+ %simple-xlink.att;
+ %href.att;
+ %user-replace.att;
+ %key.att;>
+
+<!-- orglist: Organization member list. -->
+<!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;>
+
+<!-- wfcnote: Well-formedness constraint note. -->
+<!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;>
+
+<!-- vcnote: Validity constraint note. -->
+<!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.
+-->
+
+<!-- constraintnote: Generic constraint note. -->
+<!ELEMENT constraintnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ constraintnote must have an ID so that it can be
+ pointed to from a constraint element in a production. -->
+<!-- type attribute:
+ constraintnote must have a type value keyword so that
+ it can be correctly characterized in the specification. -->
+<!ATTLIST constraintnote
+ %common-idreq.att;
+ type NMTOKEN #REQUIRED>
+
+<!-- ............................................................... -->
+<!-- Basic display elements ........................................ -->
+<!-- ............................................................... -->
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- eg: Example element, with whitespace respected. -->
+<!ELEMENT eg (%eg.pcd.mix;)*>
+<!ATTLIST eg
+ %common.att;
+ %xmlspace.att;>
+
+<!-- graphic: Displayed graphic. Graphic data should be
+ displayed at the point where it is referenced. -->
+<!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;
+ %simple-xlink.att;
+ xml:attributes NMTOKENS #FIXED "href source"
+ source CDATA #REQUIRED
+ %auto-embed.att;
+ alt CDATA #IMPLIED>
+
+<!-- ............................................................... -->
+<!-- EBNF .......................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#1997-11-28: maler: Added prodgroup to scrap and defined it.
+#1998-05-21: maler: Added constraint to prod.
+#1999-07-02: maler: Added prodrecap to scrap; broadened scrap model.
+# Added headstyle attribute to scrap.
+-->
+
+<!-- scrap: Collection of EBNF language productions. -->
+<!ELEMENT scrap (head, (prodgroup | prod | bnf | prodrecap)+)>
+<!-- lang attribute:
+ The scrap can link to a description of the language used,
+ found in a language element in the header.
+ headstyle attribute:
+ Allows a scrap title to be suppressed from output. To be
+ used only when a scrap title directly next to a section
+ title is distracting or repetetive. -->
+<!ATTLIST scrap
+ %common.att;
+ lang IDREF #IMPLIED
+ headstyle (show|suppress) "show"
+>
+
+<!-- prodgroup: Sub-collection of productions, needed for
+ formatting reasons. -->
+<!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
+>
+
+<!-- prod: EBNF language production. -->
+<!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;>
+
+<!-- lhs: Left-hand side of production. -->
+<!ELEMENT lhs (#PCDATA)>
+<!ATTLIST lhs %common.att;>
+
+<!-- rhs: Right-hand side of production; may have many
+ "right-hand sides," one to a line. -->
+<!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.
+-->
+
+<!-- com: Production comment. -->
+<!ELEMENT com (#PCDATA|loc|bibref)*>
+<!ATTLIST com %common.att;>
+
+<!-- wfc: Reference to a well-formedness constraint; 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: Reference to a validity constraint; 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: Reference to a generic 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 EBNF production, with whitespace
+ respected. -->
+<!ELEMENT bnf (%eg.pcd.mix;)*>
+<!ATTLIST bnf
+ %common.att;
+ %xmlspace.att;>
+
+<!--
+#1999-07-02: maler: Declared prodrecap.
+-->
+
+<!-- prodrecap: Reference to production or bnf that appears
+ in its "normative" form elsewhere in the spec; should
+ generate a copy of the original production, without
+ a production number next to it. -->
+<!ELEMENT prodrecap EMPTY>
+<!ATTLIST prodrecap
+ %common.att;
+ %ref-req.att;>
+
+<!-- ............................................................... -->
+<!-- Table ......................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#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"'>
+
+<!-- table: HTML-based geometric table model. -->
+<!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;>
+
+<!-- ............................................................... -->
+<!-- IDL structures for DOM specifications ......................... -->
+<!-- ............................................................... -->
+
+<!-- ............................................................... -->
+<!-- Specialized entities for classes .............................. -->
+
+<!ENTITY % idl-desc.class
+ "p|note">
+
+<!ENTITY % idl-tdef.class
+ "typedef|constant|exception|reference|group">
+
+<!ENTITY % idl-mod.class
+ "module|interface">
+
+<!ENTITY % idl-struct.class
+ "struct|enum|sequence|union|typename">
+
+<!ENTITY % idl-meth.class
+ "method|attribute">
+
+<!-- ............................................................... -->
+<!-- Specialized entities for mixtures ............................. -->
+
+<!-- Quick reference to content model mixtures:
+
+ desc tdef mod struct meth
+group x x x x x
+definitions, module x x x
+interface x x x
+typedef, case, component x
+-->
+
+<!ENTITY % idl-grp.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;
+ |%idl-struct.class;|%idl-meth.class;">
+
+<!ENTITY % idl-defn.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;">
+
+<!ENTITY % idl-intfc.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-meth.class;">
+
+<!ENTITY % idl-type.mix
+ "%idl-struct.class;">
+
+<!-- ............................................................... -->
+<!-- Specialized entities for common attributes .................... -->
+
+<!-- name attribute:
+ Provides a name. Required. -->
+<!ENTITY % idl-name.att
+ 'name CDATA #REQUIRED'>
+
+<!-- type attribute:
+ Provides a type. Required. -->
+<!ENTITY % idl-type.att
+ 'type CDATA #REQUIRED'>
+
+<!-- ............................................................... -->
+<!-- Common IDL element ............................................ -->
+
+<!ELEMENT descr ((%obj.mix;)*)>
+<!ATTLIST descr %common.att;>
+
+<!-- ............................................................... -->
+<!-- IDL definition elements ....................................... -->
+
+<!-- definitions: Top-level element for definitions. -->
+<!ELEMENT definitions (%idl-defn.mix;)+>
+<!ATTLIST definitions %common.att;>
+
+<!-- group: Element used to group a set of definitions. -->
+
+<!ELEMENT group (descr, (%idl-grp.mix;)*)>
+<!ATTLIST group
+ %common.att;
+ %idl-name.att;>
+
+<!-- interface: Definition of an interface. -->
+<!ELEMENT interface (descr, (%idl-intfc.mix;)*)>
+<!ATTLIST interface
+ %common.att;
+ %idl-name.att;
+ inherits CDATA #IMPLIED>
+
+<!-- module: Definition of a module. -->
+<!ELEMENT module (descr, (%idl-defn.mix;)*)>
+<!ATTLIST module
+ %common.att;
+ %idl-name.att;>
+
+<!-- reference: Reference to some other declaration. -->
+<!ELEMENT reference EMPTY>
+<!ATTLIST reference
+ %common.att;
+ declaration IDREF #REQUIRED>
+
+<!-- typedef: Definition of a named type. -->
+<!ELEMENT typedef (descr, (%idl-type.mix;))>
+<!ATTLIST typedef
+ %common.att;
+ %idl-name.att;
+ array.size NMTOKEN #IMPLIED>
+
+<!-- struct: Declaration of a struct type. -->
+<!ELEMENT struct (descr, component+)>
+<!ATTLIST struct
+ %common.att;
+ %idl-name.att;>
+
+<!-- component: Declaration of a structural member. -->
+<!ELEMENT component (%idl-type.mix;)>
+<!ATTLIST component
+ %common.att;
+ %idl-name.att;>
+
+<!-- union: Declaration of a union type. -->
+<!ELEMENT union (descr, case+)>
+<!ATTLIST union
+ %common.att;
+ %idl-name.att;
+ switch.type CDATA #REQUIRED>
+
+<!ELEMENT case (descr, (%idl-type.mix;))>
+<!ATTLIST case
+ %common.att;
+ labels CDATA #REQUIRED>
+
+<!-- enum: Declaration of an enum type. -->
+<!ELEMENT enum (descr, enumerator+)>
+<!ATTLIST enum
+ %common.att;
+ %idl-name.att;>
+
+<!ELEMENT enumerator (descr)>
+<!ATTLIST enumerator
+ %common.att;
+ %idl-name.att;>
+
+<!-- sequence: Declaration of a sequence type (not named). -->
+<!ELEMENT sequence (sequence*)>
+<!ATTLIST sequence
+ %common.att;
+ %idl-type.att;
+ size NMTOKEN #IMPLIED>
+
+<!-- constant: Declaration of a named constant. -->
+<!ELEMENT constant (descr)>
+<!ATTLIST constant
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ value CDATA #REQUIRED>
+
+<!-- exception: Declaration of an exception. -->
+<!ELEMENT exception (descr, component*)>
+<!ATTLIST exception
+ %common.att;
+ %idl-name.att;>
+<!-- component (defined under struct, above)-->
+
+<!-- attribute: Declaration of an attribute (data member). -->
+<!ELEMENT attribute (descr)>
+<!ATTLIST attribute
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ readonly (yes
+ |no) "no">
+
+<!-- method: Declaration of a method. -->
+<!ELEMENT method (descr, parameters, returns, raises)>
+<!ATTLIST method
+ %common.att;
+ %idl-name.att;>
+
+<!ELEMENT parameters (param*)>
+<!ATTLIST parameters %common.att;>
+
+<!ELEMENT param (descr)>
+<!ATTLIST param
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ attr (in
+ |out
+ |inout) "inout">
+
+<!ELEMENT returns (descr)>
+<!ATTLIST returns
+ %common.att;
+ %idl-type.att;>
+
+<!ELEMENT raises (exception*)>
+<!-- exception (defined under constant, above)-->
+
+<!ELEMENT typename (#PCDATA)>
+<!ATTLIST typename %common.att;>
+
+<!-- ............................................................... -->
+<!-- Phrase-level elements ......................................... -->
+<!-- ............................................................... -->
+
+<!-- bibref: Reference to a bibliography list entry; 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.
+#1999-07-02: maler: Changed edtext content from #PCDATA to %p.pcd.mix;.
+-->
+
+<!-- ednote: Editorial note for communication among editors. -->
+<!ELEMENT ednote (name?, date?, edtext)>
+<!ATTLIST ednote %common.att;>
+
+<!ELEMENT date (#PCDATA)>
+<!ATTLIST date %common.att;>
+
+<!ELEMENT edtext (%p.pcd.mix;)*>
+<!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;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- loc: Generic link to a Web resource, similar to HTML's A. -->
+<!ELEMENT loc (#PCDATA)>
+<!-- href attribute:
+ The purpose of a loc element is to function as a A-like
+ 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.) E.g.:
+
+<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
+ -->
+<!ATTLIST loc
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-replace.att;>
+
+<!-- nt: Mention of a nonterminal in text, along with a link to
+ the production in the current document that defines it. -->
+<!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: Reference to a div, olist item, prod, or issue
+ in the current document; 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;>
+
+<!-- term: The term in text that is being defined in text. -->
+<!ELEMENT term (#PCDATA)>
+<!ATTLIST term %common.att;>
+
+<!-- termdef: Definition of a term in text. -->
+<!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>
+
+<!-- termref: Mention of a term, along with a link to the
+ definition in the current document. -->
+<!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;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- titleref: Citation of another document, which can also
+ link to that document if it is a Web resource. -->
+<!ELEMENT titleref (#PCDATA)>
+<!-- href attribute:
+ A title reference can optionally function as a hypertext
+ link to the resource with this title. E.g.:
+
+<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
+ -->
+
+<!ATTLIST titleref
+ %common.att;
+ %simple-xlink.att;
+ %href.att;
+ %user-new.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- nt: Mention of a nonterminal in text, along with a link to
+ the production in another document that defines it. -->
+<!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). E.g.:
+
+<xnt href="http://www.w3.org/TR/spec.htm#prod3">Name</xnt>
+ -->
+
+<!ATTLIST xnt
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+
+<!--
+#1997-12-29: maler: Declared xspecref.
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- specref: Reference to a div, olist item, prod, or issue
+ in a related specification document; should generate
+ no special text. -->
+<!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). E.g.:
+
+<xspecref href="http://www.w3.org/TR/spec.htm#sec2">
+the section on constraints</xspecref>
+ -->
+
+<!ATTLIST xspecref
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- termref: Mention of a term, along with a link to the
+ definition in a related document. -->
+<!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). E.g.:
+
+<xtermref href="http://www.w3.org/TR/spec.htm#term5">
+entity
+</xtermref>
+ -->
+
+<!ATTLIST xtermref
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.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.
+#1998-11-30: maler: Added para, listitem, itemizedlist, and orderedlist.
+-->
+
+<!-- The following elements are purposely declared but never
+ referenced. Declaring them allows them to be pasted from
+ an HTML document, an earlier version of an XMLspec document,
+ or a DocBook 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;)*>
+
+<!ELEMENT itemizedlist (listitem*)>
+<!ELEMENT orderedlist (listitem*)>
+<!ELEMENT listitem (para*)>
+<!ELEMENT para (#PCDATA)>
+
+<!-- ............................................................... -->
+<!-- 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.
+#1998-08-22: maler
+#- Fixed %illus.class; to mention table instead of htable.
+#- Added definitions to %illus.class; for DOM model.
+#- Added DOM definitions element and its substructure.
+#- Updated XLink usage in %href.att; to use xlink:form and #IMPLIED.
+#- Added clarifying comments to href-using elements.
+#1998-11-30: maler
+#- Added new unused elements to support DocBook translation.
+#- Updated maler phone numbers.
+#1998-12-3: maler
+#- Fixed character entities with respect to escaping of ampersands.
+#- Added many more explanatory comments.
+#1999-07-02: maler
+#- Added %loc.class; to all PCD mixes that didn't already have it.
+#- Removed unused %loc.pcd.mix;.
+#- Made version in spec header optional.
+#- Added three new attributes to spec.
+#- Broadened content of edtext.
+#- Added optional copyright element to header.
+#- Reorganized XLink-related parameter entities; added xmlns:xlink.
+#- Changed edtext content from #PCDATA to %p.pcd.mix;.
+#- Added show/actuate atts and default values to all href elements.
+#- Changed versioning scheme from 8-digit dates to version numbers.
+#- Added w3c-doctype, other-doctype, status atts to spec element.
+#- Added prodrecap element inside scrap.
+#- Added headstyle attribute to scrap.
+-->
+
+<!-- ............................................................... -->
+<!-- End of XML specification DTD .................................. -->
+<!-- ............................................................... -->
diff --git a/htdocs/sgml-lib/Specification/xmlspec-v21.dtd b/htdocs/sgml-lib/Specification/xmlspec-v21.dtd
new file mode 100644
index 0000000..b70fd69
--- /dev/null
+++ b/htdocs/sgml-lib/Specification/xmlspec-v21.dtd
@@ -0,0 +1,1734 @@
+<!-- ............................................................... -->
+<!-- XML specification DTD ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+TYPICAL INVOCATION:
+# <!DOCTYPE spec PUBLIC
+# "-//W3C//DTD Specification V2.1//EN"
+# "http://www.w3.org/XML/1998/06/xmlspec-v21.dtd">
+
+PURPOSE:
+ This XML DTD is for W3C specifications and other technical reports.
+ It is 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-v21.htm>
+
+ Search this file for "#" in the first column to see change history
+ comments. To find changes made this time, search for "2000-03-07".
+
+MAINTAINER:
+ Eve Maler
+ Sun Microsystems, Inc.
+ elm@east.sun.com
+ voice: +1 781 442 3190
+ fax: +1 781 442 1437
+-->
+
+<!-- ............................................................... -->
+<!-- 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.
+#1998-12-03: maler: Escaped the leading ampersands.
+-->
+
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+<!ENTITY nbsp "&#160;">
+<!ENTITY mdash "&#38;#x2014;">
+<!ENTITY ldquo "&#38;#x201C;">
+<!ENTITY rdquo "&#38;#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;.
+#1998-08-22: maler: Changed htable to table in %illus.class;.
+# Added definitions to %illus.class;.
+#2000-03-07: maler: Added proto and example to %illus.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|table|definitions
+ |proto|example
+ %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.
+#2000-03-07: maler: Added function, var, el, att, and attval to
+# %tech.class;.
+# Added sub, sup, and phrase to %emph.class;.
+-->
+
+<!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|phrase|quote|sub|sup
+ %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|function|var
+ |el|att|attval
+ %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;.
+#1999-07-02: maler: Added %loc.class; to %head.pcd.mix;,
+# %label.pcd.mix;, %eg.pcd.mix;, %termdef.pcd.mix;,
+# %tech.pcd.mix; (net: all PCD mixes have it).
+# Removed unused %loc.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;
+ |%loc.class;|%ednote.class;">
+<!ENTITY % label.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % eg.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%loc.class;
+ |%ednote.class;|constraint">
+<!ENTITY % termdef.pcd.mix
+ "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
+ |%loc.class;|%ednote.class;">
+<!ENTITY % bibl.pcd.mix
+ "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
+<!ENTITY % tech.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.
+#1999-07-02: maler: Made version optional; added copyright element.
+#2000-03-07: maler: Allowed status and abstract in opposite 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, copyright?,
+ ((status, abstract) | (abstract, status)), pubstmt?,
+ sourcedesc?, langusage, revisiondesc">
+
+<!ENTITY % pubdate.mdl
+ "day?, month, year">
+
+<!-- ............................................................... -->
+<!-- Entities for common attributes ................................ -->
+<!-- ............................................................... -->
+
+<!--
+#2000-03-07: maler: Added %argtypes;.
+-->
+
+<!-- argtypes:
+ Values for function prototype argument datatypes. -->
+<!ENTITY % argtypes
+ '(boolean
+ |expression
+ |location-set
+ |node-set
+ |number
+ |object
+ |point
+ |range
+ |string)'>
+
+<!-- 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.
+#1998-08-22: maler: Used new xlink:form and #IMPLIED features.
+#1999-07-02: maler: Reorganized XLink-related entities completely;
+# added xmlns:xlink attribute to the mix.
+#2000-03-07: maler: Updated XLink usage to February 2000 draft,
+# except that href still has no namespace prefix.
+-->
+
+<!-- xmlns:xlink and xlink:type attributes:
+ xmlns:xlink declares the association of the xlink prefix
+ with the namespace created by the XLink specification.
+ xlink:type identifies an element as an XLink "simple" linking
+ element. -->
+<!ENTITY % simple-xlink.att
+ 'xmlns:xlink CDATA #FIXED
+ "http://www.w3.org/1999/xlink"
+ xlink:type CDATA #FIXED "simple" '>
+
+<!-- href attributes:
+ The href attribute locates the remote-resource half of a
+ simple link; the element on which the href appears is the
+ local-resource half. Some elements are usable links only if
+ the author chooses to supply a functional href. The attribute
+ name should really be xlink:href, but is kept without the
+ prefix for now in order to be backwards-compatible. -->
+
+<!ENTITY % href.att
+ 'href CDATA #IMPLIED '>
+<!ENTITY % href-req.att
+ 'href CDATA #REQUIRED '>
+
+<!-- xlink:show and xlink:actuate attributes:
+ These attributes offer instructions to the display engine
+ about how to handle traversal to resource indicated by an
+ href locator. -->
+<!ENTITY % auto-embed.att
+ 'xlink:show CDATA #FIXED "embed"
+ xlink:actuate CDATA #FIXED "onLoad" '>
+<!ENTITY % user-replace.att
+ 'xlink:show CDATA #FIXED "replace"
+ xlink:actuate CDATA #FIXED "onRequest" '>
+<!ENTITY % user-new.att
+ 'xlink:show CDATA #FIXED "new"
+ xlink:actuate CDATA #FIXED "onRequest" '>
+
+<!-- xml:space attribute:
+ Indicates that the element contains whitespace that the
+ formatter or other application should retain, as appropriate
+ to its function. -->
+<!ENTITY % xmlspace.att
+ 'xml:space (default
+ |preserve) #FIXED "preserve" '>
+
+<!--
+#2000-03-07: maler: Added common diff attribute. Made %role.att;.
+-->
+
+<!-- diff attribute:
+ Indicates in what way the element has changed. When a value
+ is not provided, that subelement should inherit a value from
+ its parent. If the root element has no value supplied,
+ assume "off". -->
+<!ENTITY % diff.att
+ 'diff (chg
+ |add
+ |del
+ |off) #IMPLIED'>
+
+<!-- role attribute:
+ Extends the useful life of the DTD by allowing authors to
+ make a subtype of any element. No default. -->
+<!ENTITY % role.att
+ 'role NMTOKEN #IMPLIED'>
+
+<!-- Common attributes:
+ Every element has an ID attribute for links, a role
+ attribute, and a diff attribute. %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.att;
+ %diff.att;'>
+<!ENTITY % common-idreq.att
+ 'id ID #REQUIRED
+ %role.att;
+ %diff.att;'>
+
+<!-- ............................................................... -->
+<!-- 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.
+#1999-07-02: maler: Added doctype atts and status att.
+#2000-03-07: maler: Added cr, issues, and dispcmts to w3c-doctype.
+-->
+
+<!ELEMENT spec (%spec.mdl;)>
+<!-- w3c-doctype attributes:
+ Indicates the type of document, so that the appropriate
+ stylesheet or workflow routing can be applied. Should
+ *not* generate any text (such as the "REC-" or "NOTE-"
+ prefix on the W3C designation content). No default. If
+ w3c-doctype is "other", other-doctype should be filled in.
+
+ status attribute:
+ Indicates the stage of review of the document. May affect
+ the stylesheet's treatment of ednotes (e.g., whether to
+ output them). No default. -->
+
+<!ATTLIST spec
+ %common.att;
+ w3c-doctype (cr
+ |dispcmts
+ |issues
+ |note
+ |other
+ |pr
+ |rec
+ |wd) #IMPLIED
+ other-doctype CDATA #IMPLIED
+ status (int-review
+ |ext-review
+ |final) #IMPLIED
+>
+
+<!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.
+#2000-03-07: maler: Added div5 level.
+-->
+
+<!-- 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;)*, div5*)>
+<!ATTLIST div4 %common.att;>
+
+<!ELEMENT div5 (head, (%div.mix;)*)>
+<!ATTLIST div5 %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: "W3C 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;>
+
+<!--
+#1999-07-02: maler: Declared copyright element.
+-->
+
+<!ELEMENT copyright (%hdr.mix;)+>
+<!ATTLIST copyright %common.att;>
+
+<!-- Example of notice: "This draft is for public comment..." -->
+<!ELEMENT notice (%hdr.mix;)+>
+<!ATTLIST notice %common.att;>
+
+<!--
+#2000-03-07: maler: Broadened models of *loc to %p.pcd.mix;.
+-->
+
+<!ELEMENT publoc (%p.pcd.mix;)*>
+<!ATTLIST publoc %common.att;>
+
+<!ELEMENT prevlocs (%p.pcd.mix;)*>
+<!ATTLIST prevlocs %common.att;>
+
+<!ELEMENT latestloc (%p.pcd.mix;)*>
+<!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;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+
+<!ELEMENT email (#PCDATA)>
+<!-- href attribute:
+ email functions as a hypertext reference through this
+ required attribute. Typically the reference would use
+ the mailto: scheme. E.g.:
+
+<email href="mailto:elm@arbortext.com">elm@arbortext.com</email>
+ -->
+
+<!ATTLIST email
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.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;>
+
+<!-- ............................................................... -->
+<!-- Paragraph ..................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#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;>
+
+<!-- ............................................................... -->
+<!-- Regular lists ................................................. -->
+<!-- ............................................................... -->
+
+<!-- ulist: Unordered list, typically bulleted. -->
+<!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>
+
+<!-- olist: Ordered list, typically numbered. -->
+<!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;>
+
+<!-- slist: Simple list, typically with no mark. -->
+<!ELEMENT slist (sitem+)>
+<!ATTLIST slist %common.att;>
+
+<!ELEMENT sitem (%p.pcd.mix;)*>
+<!ATTLIST sitem %common.att;>
+
+<!-- glist: Glossary list, typically two-column. -->
+<!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 ................................................. -->
+<!-- ............................................................... -->
+
+<!-- blist: Bibliography list. -->
+<!ELEMENT blist (bibl+)>
+<!ATTLIST blist %common.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!ELEMENT bibl (%bibl.pcd.mix;)*>
+<!-- href attribute:
+ bibl optionally functions as a hypertext reference to the
+ referred-to resource through this attribute. E.g.:
+
+ <bibl href="http://www.my.com/doc.htm">My Document</bibl>
+ -->
+<!ATTLIST bibl
+ %common.att;
+ %simple-xlink.att;
+ %href.att;
+ %user-replace.att;
+ %key.att;>
+
+<!-- orglist: Organization member list. -->
+<!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.
+#2000-03-07: maler: Added head, source, resolution, and status.
+-->
+
+<!ELEMENT issue (head?, source*, (%obj.mix;)+, resolution?)>
+<!-- status attribute:
+ Indicates whether the issue is open or closed. Note that
+ the lack of a resolution element does not necessarily mean
+ that the issue is still open. -->
+<!ATTLIST issue
+ id ID #REQUIRED
+ %role.att;
+ %diff.att;
+ status (open
+ |closed) "open"
+>
+
+<!ELEMENT source (%p.pcd.mix;)*>
+<!ATTLIST source
+ %common.att;>
+
+<!ELEMENT resolution (%obj.mix;)+>
+<!ATTLIST resolution %common.att;>
+
+<!-- wfcnote: Well-formedness constraint note. -->
+<!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;>
+
+<!-- vcnote: Validity constraint note. -->
+<!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.
+-->
+
+<!-- constraintnote: Generic constraint note. -->
+<!ELEMENT constraintnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ constraintnote must have an ID so that it can be
+ pointed to from a constraint element in a production. -->
+<!-- type attribute:
+ constraintnote must have a type value keyword so that
+ it can be correctly characterized in the specification. -->
+<!ATTLIST constraintnote
+ %common-idreq.att;
+ type NMTOKEN #REQUIRED>
+
+<!-- ............................................................... -->
+<!-- Basic display elements ........................................ -->
+<!-- ............................................................... -->
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- eg: Example element, with whitespace respected. -->
+<!ELEMENT eg (%eg.pcd.mix;)*>
+<!ATTLIST eg
+ %common.att;
+ %xmlspace.att;>
+
+<!--
+#2000-03-07: maler: Removed the xml:attributes attribute.
+# Added %local.graphic.att;.
+-->
+
+<!-- graphic: Displayed graphic. Graphic data should be
+ displayed at the point where it is referenced. Not
+ actually conforming to XLink right now. -->
+<!ELEMENT graphic EMPTY>
+<!-- source attribute:
+ The graphic data must reside at the location pointed to. -->
+<!ENTITY % local.graphic.att "">
+<!ATTLIST graphic
+ %common.att;
+ %simple-xlink.att;
+ source CDATA #REQUIRED
+ %auto-embed.att;
+ alt CDATA #IMPLIED
+ %local.graphic.att;>
+
+<!--
+#2000-03-07: maler: Added proto element structure.
+-->
+
+<!-- proto: Function prototype, in the XPath/XPointer style. -->
+<!ELEMENT proto (arg*)>
+<!ATTLIST proto
+ %common.att;
+ name NMTOKEN #REQUIRED
+ return-type %argtypes; #REQUIRED
+>
+
+<!ELEMENT arg EMPTY>
+<!ATTLIST arg
+ %common.att;
+ type %argtypes; #REQUIRED
+ occur (opt|req) #IMPLIED
+>
+
+<!--
+#2000-03-07: maler: Added example element.
+-->
+
+<!ELEMENT example (head?, (%obj.mix;)+)>
+<!ATTLIST example %common.att;>
+
+<!-- ............................................................... -->
+<!-- EBNF .......................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#1997-11-28: maler: Added prodgroup to scrap and defined it.
+#1998-05-21: maler: Added constraint to prod.
+#1999-07-02: maler: Added prodrecap to scrap; broadened scrap model.
+# Added headstyle attribute to scrap.
+-->
+
+<!-- scrap: Collection of EBNF language productions. -->
+<!ELEMENT scrap (head, (prodgroup | prod | bnf | prodrecap)+)>
+<!-- lang attribute:
+ The scrap can link to a description of the language used,
+ found in a language element in the header.
+ headstyle attribute:
+ Allows a scrap title to be suppressed from output. To be
+ used only when a scrap title directly next to a section
+ title is distracting or repetetive. -->
+<!ATTLIST scrap
+ %common.att;
+ lang IDREF #IMPLIED
+ headstyle (show|suppress) "show"
+>
+
+<!-- prodgroup: Sub-collection of productions, needed for
+ formatting reasons. -->
+<!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
+>
+
+<!-- prod: EBNF language production. -->
+<!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;>
+
+<!-- lhs: Left-hand side of production. -->
+<!ELEMENT lhs (#PCDATA)>
+<!ATTLIST lhs %common.att;>
+
+<!-- rhs: Right-hand side of production; may have many
+ "right-hand sides," one to a line. -->
+<!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.
+-->
+
+<!-- com: Production comment. -->
+<!ELEMENT com (#PCDATA|loc|bibref)*>
+<!ATTLIST com %common.att;>
+
+<!-- wfc: Reference to a well-formedness constraint; 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: Reference to a validity constraint; 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: Reference to a generic 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 EBNF production, with whitespace
+ respected. -->
+<!ELEMENT bnf (%eg.pcd.mix;)*>
+<!ATTLIST bnf
+ %common.att;
+ %xmlspace.att;>
+
+<!--
+#1999-07-02: maler: Declared prodrecap.
+-->
+
+<!-- prodrecap: Reference to production or bnf that appears
+ in its "normative" form elsewhere in the spec; should
+ generate a copy of the original production, without
+ a production number next to it. -->
+<!ELEMENT prodrecap EMPTY>
+<!ATTLIST prodrecap
+ %common.att;
+ %ref-req.att;>
+
+<!-- ............................................................... -->
+<!-- Table ......................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#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"'>
+
+<!-- table: HTML-based geometric table model. -->
+<!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;>
+
+<!-- ............................................................... -->
+<!-- IDL structures for DOM specifications ......................... -->
+<!-- ............................................................... -->
+
+<!-- ............................................................... -->
+<!-- Specialized entities for classes .............................. -->
+
+<!ENTITY % idl-desc.class
+ "p|note">
+
+<!ENTITY % idl-tdef.class
+ "typedef|constant|exception|reference|group">
+
+<!ENTITY % idl-mod.class
+ "module|interface">
+
+<!ENTITY % idl-struct.class
+ "struct|enum|sequence|union|typename">
+
+<!ENTITY % idl-meth.class
+ "method|attribute">
+
+<!-- ............................................................... -->
+<!-- Specialized entities for mixtures ............................. -->
+
+<!-- Quick reference to content model mixtures:
+
+ desc tdef mod struct meth
+group x x x x x
+definitions, module x x x
+interface x x x
+typedef, case, component x
+-->
+
+<!ENTITY % idl-grp.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;
+ |%idl-struct.class;|%idl-meth.class;">
+
+<!ENTITY % idl-defn.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;">
+
+<!ENTITY % idl-intfc.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-meth.class;">
+
+<!ENTITY % idl-type.mix
+ "%idl-struct.class;">
+
+<!-- ............................................................... -->
+<!-- Specialized entities for common attributes .................... -->
+
+<!-- name attribute:
+ Provides a name. Required. -->
+<!ENTITY % idl-name.att
+ 'name CDATA #REQUIRED'>
+
+<!-- type attribute:
+ Provides a type. Required. -->
+<!ENTITY % idl-type.att
+ 'type CDATA #REQUIRED'>
+
+<!-- ............................................................... -->
+<!-- Common IDL element ............................................ -->
+
+<!ELEMENT descr ((%obj.mix;)*)>
+<!ATTLIST descr %common.att;>
+
+<!-- ............................................................... -->
+<!-- IDL definition elements ....................................... -->
+
+<!-- definitions: Top-level element for definitions. -->
+<!ELEMENT definitions (%idl-defn.mix;)+>
+<!ATTLIST definitions %common.att;>
+
+<!-- group: Element used to group a set of definitions. -->
+
+<!ELEMENT group (descr, (%idl-grp.mix;)*)>
+<!ATTLIST group
+ %common.att;
+ %idl-name.att;>
+
+<!-- interface: Definition of an interface. -->
+<!ELEMENT interface (descr, (%idl-intfc.mix;)*)>
+<!ATTLIST interface
+ %common.att;
+ %idl-name.att;
+ inherits CDATA #IMPLIED>
+
+<!-- module: Definition of a module. -->
+<!ELEMENT module (descr, (%idl-defn.mix;)*)>
+<!ATTLIST module
+ %common.att;
+ %idl-name.att;>
+
+<!-- reference: Reference to some other declaration. -->
+<!ELEMENT reference EMPTY>
+<!ATTLIST reference
+ %common.att;
+ declaration IDREF #REQUIRED>
+
+<!-- typedef: Definition of a named type. -->
+<!ELEMENT typedef (descr, (%idl-type.mix;))>
+<!ATTLIST typedef
+ %common.att;
+ %idl-name.att;
+ array.size NMTOKEN #IMPLIED>
+
+<!-- struct: Declaration of a struct type. -->
+<!ELEMENT struct (descr, component+)>
+<!ATTLIST struct
+ %common.att;
+ %idl-name.att;>
+
+<!-- component: Declaration of a structural member. -->
+<!ELEMENT component (%idl-type.mix;)>
+<!ATTLIST component
+ %common.att;
+ %idl-name.att;>
+
+<!-- union: Declaration of a union type. -->
+<!ELEMENT union (descr, case+)>
+<!ATTLIST union
+ %common.att;
+ %idl-name.att;
+ switch.type CDATA #REQUIRED>
+
+<!ELEMENT case (descr, (%idl-type.mix;))>
+<!ATTLIST case
+ %common.att;
+ labels CDATA #REQUIRED>
+
+<!-- enum: Declaration of an enum type. -->
+<!ELEMENT enum (descr, enumerator+)>
+<!ATTLIST enum
+ %common.att;
+ %idl-name.att;>
+
+<!ELEMENT enumerator (descr)>
+<!ATTLIST enumerator
+ %common.att;
+ %idl-name.att;>
+
+<!-- sequence: Declaration of a sequence type (not named). -->
+<!ELEMENT sequence (sequence*)>
+<!ATTLIST sequence
+ %common.att;
+ %idl-type.att;
+ size NMTOKEN #IMPLIED>
+
+<!-- constant: Declaration of a named constant. -->
+<!ELEMENT constant (descr)>
+<!ATTLIST constant
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ value CDATA #REQUIRED>
+
+<!-- exception: Declaration of an exception. -->
+<!ELEMENT exception (descr, component*)>
+<!ATTLIST exception
+ %common.att;
+ %idl-name.att;>
+<!-- component (defined under struct, above)-->
+
+<!-- attribute: Declaration of an attribute (data member). -->
+<!ELEMENT attribute (descr)>
+<!ATTLIST attribute
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ readonly (yes
+ |no) "no">
+
+<!-- method: Declaration of a method. -->
+<!ELEMENT method (descr, parameters, returns, raises)>
+<!ATTLIST method
+ %common.att;
+ %idl-name.att;>
+
+<!ELEMENT parameters (param*)>
+<!ATTLIST parameters %common.att;>
+
+<!ELEMENT param (descr)>
+<!ATTLIST param
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ attr (in
+ |out
+ |inout) "inout">
+
+<!ELEMENT returns (descr)>
+<!ATTLIST returns
+ %common.att;
+ %idl-type.att;>
+
+<!ELEMENT raises (exception*)>
+<!-- exception (defined under constant, above)-->
+
+<!ELEMENT typename (#PCDATA)>
+<!ATTLIST typename %common.att;>
+
+<!-- ............................................................... -->
+<!-- Phrase-level elements ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+#2000-03-07: maler: Added att and attval elements.
+-->
+
+<!-- att: Attribute name. -->
+<!ELEMENT att (%tech.pcd.mix;)*>
+<!ATTLIST att %common.att;>
+
+<!-- attval: Attribute value. -->
+<!ELEMENT attval (%tech.pcd.mix;)*>
+<!ATTLIST attval %common.att;>
+
+<!-- bibref: Reference to a bibliography list entry; 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.
+#1999-07-02: maler: Changed edtext content from #PCDATA to %p.pcd.mix;.
+-->
+
+<!-- ednote: Editorial note for communication among editors. -->
+<!ELEMENT ednote (name?, date?, edtext)>
+<!ATTLIST ednote %common.att;>
+
+<!ELEMENT date (#PCDATA)>
+<!ATTLIST date %common.att;>
+
+<!ELEMENT edtext (%p.pcd.mix;)*>
+<!ATTLIST edtext %common.att;>
+
+<!--
+#2000-03-07: maler: Added el element.
+-->
+
+<!-- el: Element type name (GI). -->
+<!ELEMENT el (%tech.pcd.mix;)*>
+<!ATTLIST el %common.att;>
+
+<!--
+#2000-03-07: maler: Expanded emph to %p.pcd.mix;.
+-->
+
+<!ELEMENT emph (%p.pcd.mix;)*>
+<!ATTLIST emph %common.att;>
+
+<!-- footnote: Both footnote content and call to footnote. -->
+<!ELEMENT footnote (%obj.mix;)+>
+<!ATTLIST footnote %common.att;>
+
+<!--
+#2000-03-07: maler: Added function and gave it content of
+# %tech.pcd.mix; instead of XPath's #PCDATA.
+-->
+
+<!ELEMENT function (%tech.pcd.mix;)*>
+<!ATTLIST function %common.att;>
+
+<!ELEMENT kw (%tech.pcd.mix;)*>
+<!ATTLIST kw %common.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- loc: Generic link to a Web resource, similar to HTML's A. -->
+<!ELEMENT loc (#PCDATA)>
+<!-- href attribute:
+ The purpose of a loc element is to function as a A-like
+ 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.) E.g.:
+
+<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
+ -->
+<!ATTLIST loc
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-replace.att;>
+
+<!-- nt: Mention of a nonterminal in text, along with a link to
+ the production in the current document that defines it. -->
+<!ELEMENT nt (#PCDATA)>
+<!-- def attribute:
+ The nonterminal must link to the production that defines
+ it. -->
+<!ATTLIST nt
+ %common.att;
+ %def-req.att;>
+
+<!--
+#2000-03-07: maler: Declared phrase.
+-->
+
+<!-- phrase: "Attribute hanger" for small bits of (e.g.) differenced
+ text in a paragraph or similar, when another element isn't handy.
+ Beware that its content model may allow more nested elements than
+ would normally be allowed in some contexts. -->
+<!ELEMENT phrase (%p.pcd.mix;)*>
+<!ATTLIST phrase %common.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: Reference to a div, olist item, prod, or issue
+ in the current document; should generate italic "[n.n],
+ Section Title" for div, "n" for numbered item, "[n]" for
+ production, or "Issue id" 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;>
+
+<!--
+#2000-03-07: maler: Added sub and sup.
+-->
+
+<!-- sub: Subscript. -->
+<!ELEMENT sub (#PCDATA)>
+<!ATTLIST sub %common.att;>
+
+<!-- sup: Superscript. -->
+<!ELEMENT sup (#PCDATA)>
+<!ATTLIST sup %common.att;>
+
+<!-- term: The term in text that is being defined in text. -->
+<!ELEMENT term (#PCDATA)>
+<!ATTLIST term %common.att;>
+
+<!-- termdef: Definition of a term in text. -->
+<!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>
+
+<!-- termref: Mention of a term, along with a link to the
+ definition in the current document. -->
+<!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;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- titleref: Citation of another document, which can also
+ link to that document if it is a Web resource. -->
+<!ELEMENT titleref (#PCDATA)>
+<!-- href attribute:
+ A title reference can optionally function as a hypertext
+ link to the resource with this title. E.g.:
+
+<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
+ -->
+
+<!ATTLIST titleref
+ %common.att;
+ %simple-xlink.att;
+ %href.att;
+ %user-new.att;>
+
+<!--
+#2000-03-07: maler: Added var.
+-->
+
+<!-- var: String standing for a variable value that the user
+ or system will supply. For example: "For each node
+ <var>x</var> in this node-set..." -->
+<!ELEMENT var (%tech.pcd.mix;)*>
+<!ATTLIST var %common.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- xnt: Mention of a nonterminal in text, along with a link to
+ the production in another document that defines it. -->
+<!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). E.g.:
+
+<xnt href="http://www.w3.org/TR/spec.htm#prod3">Name</xnt>
+ -->
+
+<!ATTLIST xnt
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+
+<!--
+#1997-12-29: maler: Declared xspecref.
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- xspecref: Reference to a div, olist item, prod, or issue
+ in a related specification document; should generate
+ no special text. -->
+<!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). E.g.:
+
+<xspecref href="http://www.w3.org/TR/spec.htm#sec2">
+the section on constraints</xspecref>
+ -->
+
+<!ATTLIST xspecref
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- termref: Mention of a term, along with a link to the
+ definition in a related document. -->
+<!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). E.g.:
+
+<xtermref href="http://www.w3.org/TR/spec.htm#term5">
+entity
+</xtermref>
+ -->
+
+<!ATTLIST xtermref
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.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.
+#1998-11-30: maler: Added para, listitem, itemizedlist, and orderedlist.
+-->
+
+<!-- The following elements are purposely declared but never
+ referenced. Declaring them allows them to be pasted from
+ an HTML document, an earlier version of an XMLspec document,
+ or a DocBook 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;)*>
+
+<!ELEMENT itemizedlist (listitem*)>
+<!ELEMENT orderedlist (listitem*)>
+<!ELEMENT listitem (para*)>
+<!ELEMENT para (#PCDATA)>
+
+<!-- ............................................................... -->
+<!-- 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.
+#1998-08-22: maler
+#- Fixed %illus.class; to mention table instead of htable.
+#- Added definitions to %illus.class; for DOM model.
+#- Added DOM definitions element and its substructure.
+#- Updated XLink usage in %href.att; to use xlink:form and #IMPLIED.
+#- Added clarifying comments to href-using elements.
+#1998-11-30: maler
+#- Added new unused elements to support DocBook translation.
+#- Updated maler phone numbers.
+#1998-12-3: maler
+#- Fixed character entities with respect to escaping of ampersands.
+#- Added many more explanatory comments.
+#1999-07-02: maler
+#- Added %loc.class; to all PCD mixes that didn't already have it.
+#- Removed unused %loc.pcd.mix;.
+#- Made version in spec header optional.
+#- Added three new attributes to spec.
+#- Broadened content of edtext.
+#- Added optional copyright element to header.
+#- Reorganized XLink-related parameter entities; added xmlns:xlink.
+#- Changed edtext content from #PCDATA to %p.pcd.mix;.
+#- Added show/actuate atts and default values to all href elements.
+#- Changed versioning scheme from 8-digit dates to version numbers.
+#- Added w3c-doctype, other-doctype, status atts to spec element.
+#- Added prodrecap element inside scrap.
+#- Added headstyle attribute to scrap.
+#2000-03-07: maler
+#- Added proto element, its arg subelement, and the %argtypes; entity.
+#- Added function, var, sub, sup, phrase, el, att, attval elements.
+#- Expanded emph to %p.pcd.mix;.
+#- Allowed status and abstract to appear in the opposite order.
+#- Updated XLink usage to the latest WD, except for href and source.
+#- Removed the xml:attributes attribute from graphic.
+#- Added %local.graphic.att; to graphic.
+#- Added common diff attribute.
+#- Added div5 element.
+#- Broadened content models of publoc, prevlocs, and latestloc.
+#- Added head, source, resolution, and status attribute to issue.
+#- Added cr, issues, and dispcmts to w3c-doctype attribute on spec.
+#- Added example element.
+-->
+
+<!-- ............................................................... -->
+<!-- End of XML specification DTD .................................. -->
+<!-- ............................................................... -->
diff --git a/htdocs/sgml-lib/Specification/xmlspec.dtd b/htdocs/sgml-lib/Specification/xmlspec.dtd
new file mode 100644
index 0000000..f720913
--- /dev/null
+++ b/htdocs/sgml-lib/Specification/xmlspec.dtd
@@ -0,0 +1,2778 @@
+<!-- ............................................................... -->
+<!-- XML specification DTD ......................................... -->
+<!-- ............................................................... -->
+
+<!-- $Id: xmlspec.dtd,v 1.20 2005/10/13 15:30:39 NormanWalsh Exp $ -->
+
+<!--
+TYPICAL INVOCATION:
+# <!DOCTYPE spec PUBLIC
+# "-//W3C//DTD Specification V2.10//EN"
+# "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
+
+PURPOSE:
+ This XML DTD is for W3C specifications and other technical reports.
+ It is based in part on the TEI Lite and Sweb DTDs.
+
+COPYRIGHT:
+
+ Copyright (C) 2000, 2001, 2002, 2003 Sun Microsystems, Inc. All Rights Reserved.
+ This document is governed by the W3C Software License[3] as
+ described in the FAQ[4].
+
+ [1] http://www.w3.org/TR/xslt
+ [2] http://www.w3.org/XML/1998/06/xmlspec-report-v21.htm
+ [3] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ [4] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+
+DEPENDENCIES:
+ None.
+
+CHANGE HISTORY:
+ The list of historical changes is at the end of the DTD. For recent changes,
+ see the CVS log.
+
+ For all details, see the design report at:
+
+ <http://www.w3.org/XML/1998/06/xmlspec-report-v21.htm>
+
+ This report is now out-of-date, but no more recent report has been prepared.
+
+#2003-06-25: nwalsh: Added translationloc, preverrataloc, rfc2119
+
+#2003-05-28: nwalsh: Added errataloc, fixed IE bug. Added @num to prod.
+
+ Published V2.4
+
+#2003-03-12: nwalsh: Added local.* PEs to a number of additional
+ places to make customization layers easier.
+
+ Published V2.3
+
+#2002-09-04: nwalsh: Added 'phrase' to title, subtitle, version,
+ w3c-designation, w3c-doctype, day, month, year, name,
+ affiliation, email, language, role, lhs, rhs, com,
+ typename, date, loc, nt, sub, sup, term, termref,
+ titleref, xnt, xspecref, xtermref
+
+ This is *solely* to support automated diffing. Users
+ are explicitly forbidden from using this as an escape
+ hatch to get extra markup in these contexts.
+
+#2001-10-08: nwalsh: Added local.arg.att and local.proto.att
+
+#2002-08-14: nwalsh: Published V2.2
+
+ Added marked sections around element and attlist declarations and
+ added the altlocs element
+
+MAINTAINERS:
+ Norman Walsh
+ Sun Microsystems, Inc.
+ Norman.Walsh@Sun.COM
+ voice: +1 413 256 6985
+ fax: +1 413 256 6985
+
+ Eve Maler
+ Sun Microsystems, Inc.
+ elm@east.sun.com
+ voice: +1 781 442 3190
+ fax: +1 781 442 1437
+-->
+
+<!-- ............................................................... -->
+<!-- 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.
+#1998-12-03: maler: Escaped the leading ampersands.
+-->
+
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+<!ENTITY nbsp "&#160;">
+<!ENTITY mdash "&#38;#x2014;">
+<!ENTITY ldquo "&#38;#x201C;">
+<!ENTITY rdquo "&#38;#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;.
+#1998-08-22: maler: Changed htable to table in %illus.class;.
+# Added definitions to %illus.class;.
+#2000-03-07: maler: Added proto and example to %illus.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|table|definitions
+ |proto|example
+ %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.
+#2000-03-07: maler: Added function, var, el, att, and attval to
+# %tech.class;.
+# Added sub, sup, and phrase to %emph.class;.
+-->
+
+<!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|phrase|rfc2119|quote|sub|sup
+ %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|function|var
+ |el|att|attval
+ %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 % local.div.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % div.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;%local.div.mix;">
+
+<!ENTITY % local.obj.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % obj.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;%local.obj.mix;">
+
+<!ENTITY % local.p.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % p.mix
+ "%list.class;|%speclist.class;|%note.class;|%illus.class;%local.p.mix;">
+
+<!ENTITY % local.entry.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % entry.mix
+ "%list.class;|note|eg|graphic|%ednote.class;%local.entry.mix;">
+
+<!ENTITY % local.hdr.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % hdr.mix
+ "%p.class;|%list.class;|%ednote.class;%local.hdr.mix;">
+
+<!ENTITY % local.termdef.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % termdef.mix
+ "%note.class;|%illus.class;%local.termdef.mix;">
+
+<!-- ............................................................... -->
+<!-- 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;.
+#1999-07-02: maler: Added %loc.class; to %head.pcd.mix;,
+# %label.pcd.mix;, %eg.pcd.mix;, %termdef.pcd.mix;,
+# %tech.pcd.mix; (net: all PCD mixes have it).
+# Removed unused %loc.pcd.mix;.
+-->
+
+<!ENTITY % local.p.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % p.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%ref.class;|%tech.class;|%loc.class;|%ednote.class;%local.p.pcd.mix;">
+
+<!ENTITY % local.head.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % head.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%tech.class;
+ |%loc.class;|%ednote.class;%local.head.pcd.mix;">
+
+<!ENTITY % local.label.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % label.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%tech.class;|%loc.class;|%ednote.class;%local.label.pcd.mix;">
+
+<!ENTITY % local.eg.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % eg.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%loc.class;
+ |%ednote.class;|constraint %local.eg.pcd.mix;">
+
+<!ENTITY % local.termdef.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % termdef.pcd.mix
+ "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
+ |%loc.class;|%ednote.class;%local.termdef.pcd.mix;">
+
+<!ENTITY % local.bibl.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % bibl.pcd.mix
+ "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;%local.bibl.pcd.mix;">
+
+<!ENTITY % local.tech.pcd.mix " "> <!-- compensate for IE bug; suggested by ht -->
+<!ENTITY % tech.pcd.mix
+ "#PCDATA|%loc.class;|%ednote.class;|phrase|rfc2119 %local.tech.pcd.mix;">
+
+<!-- ............................................................... -->
+<!-- Entities for customizable content models ...................... -->
+<!-- ............................................................... -->
+
+<!--
+#1998-03-10: maler: Added customization entities.
+#1998-05-14: maler: Allowed prevlocs and latestloc in either order.
+#1999-07-02: maler: Made version optional; added copyright element.
+#2000-03-07: maler: Allowed status and abstract in opposite order.
+-->
+
+<!ENTITY % spec.mdl
+ "header, front?, body, back?">
+
+<!ENTITY % header.mdl
+ "title, subtitle?, version?, w3c-designation, w3c-doctype,
+ pubdate, notice*, publoc, altlocs?, ((prevlocs, latestloc?) |
+ (latestloc, prevlocs?))?, authlist, errataloc?, preverrataloc?,
+ translationloc?, copyright?,
+ ((status, abstract) | (abstract, status)), pubstmt?,
+ sourcedesc?, langusage, revisiondesc">
+
+<!ENTITY % pubdate.mdl
+ "day?, month, year">
+
+<!-- ............................................................... -->
+<!-- Entities for common attributes ................................ -->
+<!-- ............................................................... -->
+
+<!--
+#2000-03-07: maler: Added %argtypes;.
+-->
+
+<!-- argtypes:
+ Values for function prototype argument datatypes. -->
+<!ENTITY % argtypes
+ '(boolean
+ |expression
+ |location-set
+ |node-set
+ |number
+ |object
+ |point
+ |range
+ |string)'>
+
+<!-- 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.
+#1998-08-22: maler: Used new xlink:form and #IMPLIED features.
+#1999-07-02: maler: Reorganized XLink-related entities completely;
+# added xmlns:xlink attribute to the mix.
+#2000-03-07: maler: Updated XLink usage to February 2000 draft,
+# except that href still has no namespace prefix.
+-->
+
+<!-- xmlns:xlink and xlink:type attributes:
+ xmlns:xlink declares the association of the xlink prefix
+ with the namespace created by the XLink specification.
+ xlink:type identifies an element as an XLink "simple" linking
+ element. -->
+<!ENTITY % simple-xlink.att
+ 'xmlns:xlink CDATA #FIXED
+ "http://www.w3.org/1999/xlink"
+ xlink:type CDATA #FIXED "simple" '>
+
+<!-- href attributes:
+ The href attribute locates the remote-resource half of a
+ simple link; the element on which the href appears is the
+ local-resource half. Some elements are usable links only if
+ the author chooses to supply a functional href. The attribute
+ name should really be xlink:href, but is kept without the
+ prefix for now in order to be backwards-compatible. -->
+
+<!ENTITY % href.att
+ 'href CDATA #IMPLIED '>
+<!ENTITY % href-req.att
+ 'href CDATA #REQUIRED '>
+
+<!-- xlink:show and xlink:actuate attributes:
+ These attributes offer instructions to the display engine
+ about how to handle traversal to resource indicated by an
+ href locator. -->
+<!ENTITY % auto-embed.att
+ 'xlink:show CDATA #FIXED "embed"
+ xlink:actuate CDATA #FIXED "onLoad" '>
+<!ENTITY % user-replace.att
+ 'xlink:show CDATA #FIXED "replace"
+ xlink:actuate CDATA #FIXED "onRequest" '>
+<!ENTITY % user-new.att
+ 'xlink:show CDATA #FIXED "new"
+ xlink:actuate CDATA #FIXED "onRequest" '>
+
+<!-- xml:space attribute:
+ Indicates that the element contains whitespace that the
+ formatter or other application should retain, as appropriate
+ to its function. -->
+<!ENTITY % xmlspace.att
+ 'xml:space (default
+ |preserve) #FIXED "preserve" '>
+
+<!--
+#2000-03-07: maler: Added common diff attribute. Made %role.att;.
+-->
+
+<!-- diff attribute:
+ Indicates in what way the element has changed. When a value
+ is not provided, that subelement should inherit a value from
+ its parent. If the root element has no value supplied,
+ assume "off". -->
+<!ENTITY % diff.att
+ 'diff (chg
+ |add
+ |del
+ |off) #IMPLIED'>
+
+<!-- role attribute:
+ Extends the useful life of the DTD by allowing authors to
+ make a subtype of any element. No default. -->
+<!ENTITY % role.att
+ 'role NMTOKEN #IMPLIED'>
+
+<!-- Common attributes:
+ Every element has an ID attribute for links, a role
+ attribute, and a diff attribute. %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 % local.common.att " ">
+<!ENTITY % common.att
+ 'id ID #IMPLIED
+ %role.att;
+ %diff.att;
+ %local.common.att;'>
+
+<!ENTITY % local.common-idreq.att " ">
+<!ENTITY % common-idreq.att
+ 'id ID #REQUIRED
+ %role.att;
+ %diff.att;
+ %local.common-idreq.att;'>
+
+<!-- ............................................................... -->
+<!-- Common elements ............................................... -->
+<!-- ............................................................... -->
+
+<!-- head: Title on divisions, productions, and the like -->
+<!ENTITY % head.element "INCLUDE">
+<![%head.element;[
+<!ELEMENT head (%head.pcd.mix;)*>
+]]>
+<!ENTITY % head.attlist "INCLUDE">
+<![%head.attlist;[
+<!ATTLIST head %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Major specification structure ................................. -->
+<!-- ............................................................... -->
+
+<!--
+#1998-03-10: maler: Made spec content model easily customizable.
+#1999-07-02: maler: Added doctype atts and status att.
+#2000-03-07: maler: Added cr, issues, and dispcmts to w3c-doctype.
+-->
+
+<!ENTITY % spec.element "INCLUDE">
+<![%spec.element;[
+<!ELEMENT spec (%spec.mdl;)>
+]]>
+<!-- w3c-doctype attributes:
+ Indicates the type of document, so that the appropriate
+ stylesheet or workflow routing can be applied. Should
+ *not* generate any text (such as the "REC-" or "NOTE-"
+ prefix on the W3C designation content). No default. If
+ w3c-doctype is "other", other-doctype should be filled in.
+
+ status attribute:
+ Indicates the stage of review of the document. May affect
+ the stylesheet's treatment of ednotes (e.g., whether to
+ output them). No default. -->
+
+<!ENTITY % local.spec.att " ">
+<!ENTITY % spec.attlist "INCLUDE">
+<![%spec.attlist;[
+<!ATTLIST spec
+ %common.att;
+ %local.spec.att;
+ w3c-doctype (cr
+ |dispcmts
+ |issues
+ |wgnote
+ |memsub
+ |teamsub
+ |note
+ |other
+ |pr
+ |per
+ |rec
+ |wd
+ |review) #IMPLIED
+ other-doctype CDATA #IMPLIED
+ status (int-review
+ |ext-review
+ |final) #IMPLIED
+>
+]]>
+
+<!ENTITY % front.element "INCLUDE">
+<![%front.element;[
+<!ELEMENT front (div1+)>
+]]>
+<!ENTITY % front.attlist "INCLUDE">
+<![%front.attlist;[
+<!ATTLIST front %common.att;>
+]]>
+
+<!ENTITY % body.element "INCLUDE">
+<![%body.element;[
+<!ELEMENT body (div1+)>
+]]>
+<!ENTITY % body.attlist "INCLUDE">
+<![%body.attlist;[
+<!ATTLIST body %common.att;>
+]]>
+
+<!--
+#1997-09-30: maler: Added inform-div1 to back content.
+-->
+
+<!ENTITY % back.element "INCLUDE">
+<![%back.element;[
+<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
+]]>
+<!ENTITY % back.attlist "INCLUDE">
+<![%back.attlist;[
+<!ATTLIST back %common.att;>
+]]>
+
+<!ENTITY % div1.element "INCLUDE">
+<![%div1.element;[
+<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
+]]>
+<!ENTITY % div1.attlist "INCLUDE">
+<![%div1.attlist;[
+<!ATTLIST div1 %common.att;>
+]]>
+
+<!--
+#1997-09-30: maler: Added inform-div1 declarations.
+#2000-03-07: maler: Added div5 level.
+-->
+
+<!-- inform-div1: Non-normative division in back matter -->
+<!ENTITY % inform-div1.element "INCLUDE">
+<![%inform-div1.element;[
+<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
+]]>
+<!ENTITY % inform-div1.attlist "INCLUDE">
+<![%inform-div1.attlist;[
+<!ATTLIST inform-div1 %common.att;>
+]]>
+
+<!ENTITY % div2.element "INCLUDE">
+<![%div2.element;[
+<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
+]]>
+<!ENTITY % div2.attlist "INCLUDE">
+<![%div2.attlist;[
+<!ATTLIST div2 %common.att;>
+]]>
+
+<!ENTITY % div3.element "INCLUDE">
+<![%div3.element;[
+<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
+]]>
+<!ENTITY % div3.attlist "INCLUDE">
+<![%div3.attlist;[
+<!ATTLIST div3 %common.att;>
+]]>
+
+<!ENTITY % div4.element "INCLUDE">
+<![%div4.element;[
+<!ELEMENT div4 (head, (%div.mix;)*, div5*)>
+]]>
+<!ENTITY % div4.attlist "INCLUDE">
+<![%div4.attlist;[
+<!ATTLIST div4 %common.att;>
+]]>
+
+<!ENTITY % div5.element "INCLUDE">
+<![%div5.element;[
+<!ELEMENT div5 (head, (%div.mix;)*)>
+]]>
+<!ENTITY % div5.attlist "INCLUDE">
+<![%div5.attlist;[
+<!ATTLIST div5 %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Specification header .......................................... -->
+<!-- ............................................................... -->
+
+<!--
+#1998-03-10: maler: Made header content model easily customizable.
+-->
+
+<!ENTITY % header.element "INCLUDE">
+<![%header.element;[
+<!ELEMENT header (%header.mdl;)>
+]]>
+<!ENTITY % header.attlist "INCLUDE">
+<![%header.attlist;[
+<!ATTLIST header %common.att;>
+]]>
+
+<!-- Example of title: "Extensible Cheese Language (XCL)" -->
+<!ENTITY % title.element "INCLUDE">
+<![%title.element;[
+<!ELEMENT title (#PCDATA|phrase)*>
+]]>
+<!ENTITY % title.attlist "INCLUDE">
+<![%title.attlist;[
+<!ATTLIST title %common.att;>
+]]>
+
+<!-- Example of subtitle: "A Cheesy Specification" -->
+<!ENTITY % subtitle.element "INCLUDE">
+<![%subtitle.element;[
+<!ELEMENT subtitle (#PCDATA|phrase)*>
+]]>
+<!ENTITY % subtitle.attlist "INCLUDE">
+<![%subtitle.attlist;[
+<!ATTLIST subtitle %common.att;>
+]]>
+
+<!-- Example of version: "Version 666.0" -->
+<!ENTITY % version.element "INCLUDE">
+<![%version.element;[
+<!ELEMENT version (#PCDATA|phrase)*>
+]]>
+<!ENTITY % version.attlist "INCLUDE">
+<![%version.attlist;[
+<!ATTLIST version %common.att;>
+]]>
+
+<!-- Example of w3c-designation: "WD-xcl-19991231" -->
+<!ENTITY % w3c-designation.element "INCLUDE">
+<![%w3c-designation.element;[
+<!ELEMENT w3c-designation (#PCDATA|phrase)*>
+]]>
+<!ENTITY % w3c-designation.attlist "INCLUDE">
+<![%w3c-designation.attlist;[
+<!ATTLIST w3c-designation %common.att;>
+]]>
+
+<!-- Example of w3c-doctype: "W3C Working Draft" -->
+<!ENTITY % w3c-doctype.element "INCLUDE">
+<![%w3c-doctype.element;[
+<!ELEMENT w3c-doctype (#PCDATA|phrase)*>
+]]>
+<!ENTITY % w3c-doctype.attlist "INCLUDE">
+<![%w3c-doctype.attlist;[
+<!ATTLIST w3c-doctype %common.att;>
+]]>
+
+<!--
+#1998-03-10: maler: Made pubdate content model easily customizable.
+-->
+
+<!ENTITY % pubdate.element "INCLUDE">
+<![%pubdate.element;[
+<!ELEMENT pubdate (%pubdate.mdl;)>
+]]>
+<!ENTITY % pubdate.attlist "INCLUDE">
+<![%pubdate.attlist;[
+<!ATTLIST pubdate %common.att;>
+]]>
+
+<!ENTITY % day.element "INCLUDE">
+<![%day.element;[
+<!ELEMENT day (#PCDATA|phrase)*>
+]]>
+<!ENTITY % day.attlist "INCLUDE">
+<![%day.attlist;[
+<!ATTLIST day %common.att;>
+]]>
+
+<!ENTITY % month.element "INCLUDE">
+<![%month.element;[
+<!ELEMENT month (#PCDATA|phrase)*>
+]]>
+<!ENTITY % month.attlist "INCLUDE">
+<![%month.attlist;[
+<!ATTLIST month %common.att;>
+]]>
+
+<!ENTITY % year.element "INCLUDE">
+<![%year.element;[
+<!ELEMENT year (#PCDATA|phrase)*>
+]]>
+<!ENTITY % year.attlist "INCLUDE">
+<![%year.attlist;[
+<!ATTLIST year %common.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Declared copyright element.
+-->
+
+<!ENTITY % copyright.element "INCLUDE">
+<![%copyright.element;[
+<!ELEMENT copyright (%hdr.mix;)+>
+]]>
+<!ENTITY % copyright.attlist "INCLUDE">
+<![%copyright.attlist;[
+<!ATTLIST copyright %common.att;>
+]]>
+
+<!-- Example of notice: "This draft is for public comment..." -->
+<!ENTITY % notice.element "INCLUDE">
+<![%notice.element;[
+<!ELEMENT notice (%hdr.mix;)+>
+]]>
+<!ENTITY % notice.attlist "INCLUDE">
+<![%notice.attlist;[
+<!ATTLIST notice %common.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Broadened models of *loc to %p.pcd.mix;.
+-->
+
+<!ENTITY % publoc.element "INCLUDE">
+<![%publoc.element;[
+<!ELEMENT publoc (%p.pcd.mix;)*>
+]]>
+<!ENTITY % publoc.attlist "INCLUDE">
+<![%publoc.attlist;[
+<!ATTLIST publoc %common.att;>
+]]>
+
+<!--
+#2002-08-15: nwalsh: Added altlocs element.
+ The semantics of the altlocs are equivalent to the Dublin Core relation element
+ with type="hasVersion". Each of the loc elements inside altlocs should identify
+ an alternate version of the resource described by the document, for example
+ HTML, XML, and PDF forms.
+-->
+<!ENTITY % altlocs.element "INCLUDE">
+<![%altlocs.element;[
+<!ELEMENT altlocs (loc+)>
+]]>
+<!ENTITY % altlocs.attlist "INCLUDE">
+<![%altlocs.attlist;[
+<!ATTLIST altlocs %common.att;>
+]]>
+
+<!ENTITY % prevlocs.element "INCLUDE">
+<![%prevlocs.element;[
+<!ELEMENT prevlocs (%p.pcd.mix;)*>
+]]>
+<!ENTITY % prevlocs.attlist "INCLUDE">
+<![%prevlocs.attlist;[
+<!ATTLIST prevlocs %common.att;>
+]]>
+
+<!--
+#2005-10-13: nwalsh: restrict latestloc content model.
+ New pubrules allows for multiple latestlocs. For some reason, this element
+ used to allow PCDATA. Now it allows only loc elements. If this causes
+ trouble, tell Norm.
+-->
+<!ENTITY % latestloc.element "INCLUDE">
+<![%latestloc.element;[
+<!ELEMENT latestloc (loc+)>
+]]>
+<!ENTITY % latestloc.attlist "INCLUDE">
+<![%latestloc.attlist;[
+<!ATTLIST latestloc %common.att;>
+]]>
+
+<!ENTITY % errataloc.element "INCLUDE">
+<![%errataloc.element;[
+<!ELEMENT errataloc EMPTY>
+]]>
+<!ENTITY % errataloc.attlist "INCLUDE">
+<![%errataloc.attlist;[
+<!ATTLIST errataloc
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+>
+]]>
+
+<!ENTITY % preverrataloc.element "INCLUDE">
+<![%preverrataloc.element;[
+<!ELEMENT preverrataloc EMPTY>
+]]>
+<!ENTITY % preverrataloc.attlist "INCLUDE">
+<![%preverrataloc.attlist;[
+<!ATTLIST preverrataloc
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+>
+]]>
+
+<!ENTITY % translationloc.element "INCLUDE">
+<![%translationloc.element;[
+<!ELEMENT translationloc EMPTY>
+]]>
+<!ENTITY % translationloc.attlist "INCLUDE">
+<![%translationloc.attlist;[
+<!ATTLIST translationloc
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+>
+]]>
+
+<!-- loc (defined in "Phrase-level elements" below) -->
+
+<!ENTITY % authlist.element "INCLUDE">
+<![%authlist.element;[
+<!ELEMENT authlist (author+)>
+]]>
+<!ENTITY % authlist.attlist "INCLUDE">
+<![%authlist.attlist;[
+<!ATTLIST authlist %common.att;>
+]]>
+
+<!--
+#1997-09-30: maler: Made affiliation optional.
+#1998-03-10: maler: Made email optional.
+-->
+
+<!ENTITY % author.element "INCLUDE">
+<![%author.element;[
+<!ELEMENT author (name, affiliation?, email?)>
+]]>
+<!ENTITY % author.attlist "INCLUDE">
+<![%author.attlist;[
+<!ATTLIST author %common.att;>
+]]>
+
+<!ENTITY % name.element "INCLUDE">
+<![%name.element;[
+<!ELEMENT name (#PCDATA|phrase)*>
+]]>
+<!ENTITY % name.attlist "INCLUDE">
+<![%name.attlist;[
+<!ATTLIST name
+ %common.att;
+ %key.att;>
+]]>
+
+<!ENTITY % affiliation.element "INCLUDE">
+<![%affiliation.element;[
+<!ELEMENT affiliation (#PCDATA|phrase)*>
+]]>
+<!ENTITY % affiliation.attlist "INCLUDE">
+<![%affiliation.attlist;[
+<!ATTLIST affiliation %common.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+
+<!ENTITY % email.element "INCLUDE">
+<![%email.element;[
+<!ELEMENT email (#PCDATA|phrase)*>
+]]>
+<!-- href attribute:
+ email functions as a hypertext reference through this
+ required attribute. Typically the reference would use
+ the mailto: scheme. E.g.:
+
+<email href="mailto:elm@arbortext.com">elm@arbortext.com</email>
+ -->
+
+<!ENTITY % email.attlist "INCLUDE">
+<![%email.attlist;[
+<!ATTLIST email
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+]]>
+
+<!--
+#1998-05-15: maler: Changed status content from %statusobj.mix;
+# to plain %obj.mix;. statusp is obsolete.
+-->
+
+<!ENTITY % status.element "INCLUDE">
+<![%status.element;[
+<!ELEMENT status (%obj.mix;)+>
+]]>
+<!ENTITY % status.attlist "INCLUDE">
+<![%status.attlist;[
+<!ATTLIST status %common.att;>
+]]>
+
+<!ENTITY % abstract.element "INCLUDE">
+<![%abstract.element;[
+<!ELEMENT abstract (%hdr.mix;)*>
+]]>
+<!ENTITY % abstract.attlist "INCLUDE">
+<![%abstract.attlist;[
+<!ATTLIST abstract %common.att;>
+]]>
+
+<!ENTITY % pubstmt.element "INCLUDE">
+<![%pubstmt.element;[
+<!ELEMENT pubstmt (%hdr.mix;)+>
+]]>
+<!ENTITY % pubstmt.attlist "INCLUDE">
+<![%pubstmt.attlist;[
+<!ATTLIST pubstmt %common.att;>
+]]>
+
+<!ENTITY % sourcedesc.element "INCLUDE">
+<![%sourcedesc.element;[
+<!ELEMENT sourcedesc (%hdr.mix;)+>
+]]>
+<!ENTITY % sourcedesc.attlist "INCLUDE">
+<![%sourcedesc.attlist;[
+<!ATTLIST sourcedesc %common.att;>
+]]>
+
+<!ENTITY % langusage.element "INCLUDE">
+<![%langusage.element;[
+<!ELEMENT langusage (language+)>
+]]>
+<!ENTITY % langusage.attlist "INCLUDE">
+<![%langusage.attlist;[
+<!ATTLIST langusage %common.att;>
+]]>
+
+<!ENTITY % language.element "INCLUDE">
+<![%language.element;[
+<!ELEMENT language (#PCDATA|phrase)*>
+]]>
+<!ENTITY % language.attlist "INCLUDE">
+<![%language.attlist;[
+<!ATTLIST language %common.att;>
+]]>
+
+<!ENTITY % revisiondesc.element "INCLUDE">
+<![%revisiondesc.element;[
+<!ELEMENT revisiondesc (%hdr.mix;)+>
+]]>
+<!ENTITY % revisiondesc.attlist "INCLUDE">
+<![%revisiondesc.attlist;[
+<!ATTLIST revisiondesc %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Paragraph ..................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#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.
+-->
+
+<!ENTITY % p.element "INCLUDE">
+<![%p.element;[
+<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
+]]>
+<!ENTITY % p.attlist "INCLUDE">
+<![%p.attlist;[
+<!ATTLIST p %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Regular lists ................................................. -->
+<!-- ............................................................... -->
+
+<!-- ulist: Unordered list, typically bulleted. -->
+<!ENTITY % ulist.element "INCLUDE">
+<![%ulist.element;[
+<!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. -->
+<!ENTITY % ulist.attlist "INCLUDE">
+<![%ulist.attlist;[
+<!ATTLIST ulist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+]]>
+
+<!-- olist: Ordered list, typically numbered. -->
+<!ENTITY % olist.element "INCLUDE">
+<![%olist.element;[
+<!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. -->
+<!ENTITY % olist.attlist "INCLUDE">
+<![%olist.attlist;[
+<!ATTLIST olist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+]]>
+
+<!ENTITY % item.element "INCLUDE">
+<![%item.element;[
+<!ELEMENT item (%obj.mix;)+>
+]]>
+<!ENTITY % item.attlist "INCLUDE">
+<![%item.attlist;[
+<!ATTLIST item %common.att;>
+]]>
+
+<!-- slist: Simple list, typically with no mark. -->
+<!ENTITY % slist.element "INCLUDE">
+<![%slist.element;[
+<!ELEMENT slist (sitem+)>
+]]>
+<!ENTITY % slist.attlist "INCLUDE">
+<![%slist.attlist;[
+<!ATTLIST slist %common.att;>
+]]>
+
+<!ENTITY % sitem.element "INCLUDE">
+<![%sitem.element;[
+<!ELEMENT sitem (%p.pcd.mix;)*>
+]]>
+<!ENTITY % sitem.attlist "INCLUDE">
+<![%sitem.attlist;[
+<!ATTLIST sitem %common.att;>
+]]>
+
+<!-- glist: Glossary list, typically two-column. -->
+<!ENTITY % glist.element "INCLUDE">
+<![%glist.element;[
+<!ELEMENT glist (gitem+)>
+]]>
+<!ENTITY % glist.attlist "INCLUDE">
+<![%glist.attlist;[
+<!ATTLIST glist %common.att;>
+]]>
+
+<!ENTITY % gitem.element "INCLUDE">
+<![%gitem.element;[
+<!ELEMENT gitem (label, def)>
+]]>
+<!ENTITY % gitem.attlist "INCLUDE">
+<![%gitem.attlist;[
+<!ATTLIST gitem %common.att;>
+]]>
+
+<!ENTITY % label.element "INCLUDE">
+<![%label.element;[
+<!ELEMENT label (%label.pcd.mix;)*>
+]]>
+<!ENTITY % label.attlist "INCLUDE">
+<![%label.attlist;[
+<!ATTLIST label %common.att;>
+]]>
+
+<!ENTITY % def.element "INCLUDE">
+<![%def.element;[
+<!ELEMENT def (%obj.mix;)*>
+]]>
+<!ENTITY % def.attlist "INCLUDE">
+<![%def.attlist;[
+<!ATTLIST def %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Special lists ................................................. -->
+<!-- ............................................................... -->
+
+<!-- blist: Bibliography list. -->
+<!ENTITY % blist.element "INCLUDE">
+<![%blist.element;[
+<!ELEMENT blist (bibl+)>
+]]>
+<!ENTITY % blist.attlist "INCLUDE">
+<![%blist.attlist;[
+<!ATTLIST blist %common.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!ENTITY % bibl.element "INCLUDE">
+<![%bibl.element;[
+<!ELEMENT bibl (%bibl.pcd.mix;)*>
+]]>
+<!-- href attribute:
+ bibl optionally functions as a hypertext reference to the
+ referred-to resource through this attribute. E.g.:
+
+ <bibl href="http://www.my.com/doc.htm">My Document</bibl>
+ -->
+<!ENTITY % bibl.attlist "INCLUDE">
+<![%bibl.attlist;[
+<!ATTLIST bibl
+ %common.att;
+ %simple-xlink.att;
+ %href.att;
+ %user-replace.att;
+ %key.att;>
+]]>
+
+<!-- orglist: Organization member list. -->
+<!ENTITY % orglist.element "INCLUDE">
+<![%orglist.element;[
+<!ELEMENT orglist (member+)>
+]]>
+<!ENTITY % orglist.attlist "INCLUDE">
+<![%orglist.attlist;[
+<!ATTLIST orglist %common.att;>
+]]>
+
+<!--
+#1997-09-30: maler: Added optional affiliation.
+-->
+
+<!ENTITY % member.element "INCLUDE">
+<![%member.element;[
+<!ELEMENT member (name, affiliation?, role?)>
+]]>
+<!ENTITY % member.attlist "INCLUDE">
+<![%member.attlist;[
+<!ATTLIST member %common.att;>
+]]>
+
+<!-- name (defined in "Specification header" above) -->
+<!-- affiliation (defined in "Specification header" above) -->
+
+<!ENTITY % role.element "INCLUDE">
+<![%role.element;[
+<!ELEMENT role (#PCDATA|phrase)*>
+]]>
+<!ENTITY % role.attlist "INCLUDE">
+<![%role.attlist;[
+<!ATTLIST role %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Notes ......................................................... -->
+<!-- ............................................................... -->
+
+<!ENTITY % note.element "INCLUDE">
+<![%note.element;[
+<!ELEMENT note (%obj.mix;)+>
+]]>
+<!ENTITY % note.attlist "INCLUDE">
+<![%note.attlist;[
+<!ATTLIST note %common.att;>
+]]>
+
+<!--
+#1998-05-14: maler: Declared issue element.
+#2000-03-07: maler: Added head, source, resolution, and status.
+-->
+
+<!ENTITY % issue.element "INCLUDE">
+<![%issue.element;[
+<!ELEMENT issue (head?, source*, (%obj.mix;)+, resolution?)>
+]]>
+<!-- status attribute:
+ Indicates whether the issue is open or closed. Note that
+ the lack of a resolution element does not necessarily mean
+ that the issue is still open. -->
+<!ENTITY % issue.attlist "INCLUDE">
+<![%issue.attlist;[
+<!ATTLIST issue
+ id ID #REQUIRED
+ %role.att;
+ %diff.att;
+ status (open
+ |closed) "open"
+>
+]]>
+
+<!ENTITY % source.element "INCLUDE">
+<![%source.element;[
+<!ELEMENT source (%p.pcd.mix;)*>
+]]>
+<!ENTITY % source.attlist "INCLUDE">
+<![%source.attlist;[
+<!ATTLIST source
+ %common.att;>
+]]>
+
+<!ENTITY % resolution.element "INCLUDE">
+<![%resolution.element;[
+<!ELEMENT resolution (%obj.mix;)+>
+]]>
+<!ENTITY % resolution.attlist "INCLUDE">
+<![%resolution.attlist;[
+<!ATTLIST resolution %common.att;>
+]]>
+
+<!-- wfcnote: Well-formedness constraint note. -->
+<!ENTITY % wfcnote.element "INCLUDE">
+<![%wfcnote.element;[
+<!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. -->
+<!ENTITY % wfcnote.attlist "INCLUDE">
+<![%wfcnote.attlist;[
+<!ATTLIST wfcnote
+ %common-idreq.att;>
+]]>
+
+<!-- vcnote: Validity constraint note. -->
+<!ENTITY % vcnote.element "INCLUDE">
+<![%vcnote.element;[
+<!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. -->
+<!ENTITY % vcnote.attlist "INCLUDE">
+<![%vcnote.attlist;[
+<!ATTLIST vcnote
+ %common-idreq.att;>
+]]>
+
+<!--
+#1998-05-21: maler: Declared generic constraintnote element.
+-->
+
+<!-- constraintnote: Generic constraint note. -->
+<!ENTITY % constraintnote.element "INCLUDE">
+<![%constraintnote.element;[
+<!ELEMENT constraintnote (head, (%obj.mix;)+)>
+]]>
+<!-- ID attribute:
+ constraintnote must have an ID so that it can be
+ pointed to from a constraint element in a production. -->
+<!-- type attribute:
+ constraintnote must have a type value keyword so that
+ it can be correctly characterized in the specification. -->
+<!ENTITY % constraintnote.attlist "INCLUDE">
+<![%constraintnote.attlist;[
+<!ATTLIST constraintnote
+ %common-idreq.att;
+ type NMTOKEN #REQUIRED>
+]]>
+
+<!-- ............................................................... -->
+<!-- Basic display elements ........................................ -->
+<!-- ............................................................... -->
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- eg: Example element, with whitespace respected. -->
+<!ENTITY % eg.element "INCLUDE">
+<![%eg.element;[
+<!ELEMENT eg (%eg.pcd.mix;)*>
+]]>
+<!ENTITY % eg.attlist "INCLUDE">
+<![%eg.attlist;[
+<!ATTLIST eg
+ %common.att;
+ %xmlspace.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Removed the xml:attributes attribute.
+# Added %local.graphic.att;.
+-->
+
+<!-- graphic: Displayed graphic. Graphic data should be
+ displayed at the point where it is referenced. Not
+ actually conforming to XLink right now. -->
+<!ENTITY % graphic.element "INCLUDE">
+<![%graphic.element;[
+<!ELEMENT graphic EMPTY>
+]]>
+<!-- source attribute:
+ The graphic data must reside at the location pointed to. -->
+<!ENTITY % local.graphic.att " ">
+<!ENTITY % graphic.attlist "INCLUDE">
+<![%graphic.attlist;[
+<!ATTLIST graphic
+ %common.att;
+ %simple-xlink.att;
+ source CDATA #REQUIRED
+ %auto-embed.att;
+ alt CDATA #IMPLIED
+ %local.graphic.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Added proto element structure.
+-->
+
+<!-- proto: Function prototype, in the XPath/XPointer style. -->
+<!ENTITY % proto.element "INCLUDE">
+<![%proto.element;[
+<!ELEMENT proto (arg*)>
+]]>
+
+<!ENTITY % local.proto.att " ">
+<!ENTITY % proto.attlist "INCLUDE">
+<![%proto.attlist;[
+<!ATTLIST proto
+ %common.att;
+ %local.proto.att;
+ name NMTOKEN #REQUIRED
+ return-type %argtypes; #REQUIRED
+>
+]]>
+
+<!ENTITY % local.arg.att " ">
+<!ENTITY % arg.element "INCLUDE">
+<![%arg.element;[
+<!ELEMENT arg EMPTY>
+]]>
+<!ENTITY % arg.attlist "INCLUDE">
+<![%arg.attlist;[
+<!ATTLIST arg
+ %common.att;
+ %local.arg.att;
+ type %argtypes; #REQUIRED
+ occur (opt|req) #IMPLIED
+>
+]]>
+
+<!--
+#2000-03-07: maler: Added example element.
+-->
+
+<!ENTITY % example.element "INCLUDE">
+<![%example.element;[
+<!ELEMENT example (head?, (%obj.mix;)+)>
+]]>
+<!ENTITY % example.attlist "INCLUDE">
+<![%example.attlist;[
+<!ATTLIST example %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- EBNF .......................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#1997-11-28: maler: Added prodgroup to scrap and defined it.
+#1998-05-21: maler: Added constraint to prod.
+#1999-07-02: maler: Added prodrecap to scrap; broadened scrap model.
+# Added headstyle attribute to scrap.
+-->
+
+<!-- scrap: Collection of EBNF language productions. -->
+<!ENTITY % scrap.element "INCLUDE">
+<![%scrap.element;[
+<!ELEMENT scrap (head, (prodgroup | prod | bnf | prodrecap)+)>
+]]>
+<!-- lang attribute:
+ The scrap can link to a description of the language used,
+ found in a language element in the header.
+ headstyle attribute:
+ Allows a scrap title to be suppressed from output. To be
+ used only when a scrap title directly next to a section
+ title is distracting or repetetive. -->
+<!ENTITY % scrap.attlist "INCLUDE">
+<![%scrap.attlist;[
+<!ATTLIST scrap
+ %common.att;
+ lang IDREF #IMPLIED
+ headstyle (show|suppress) "show"
+>
+]]>
+
+<!-- prodgroup: Sub-collection of productions, needed for
+ formatting reasons. -->
+<!ENTITY % prodgroup.element "INCLUDE">
+<![%prodgroup.element;[
+<!ELEMENT prodgroup (prod+)>
+]]>
+<!-- pcw<n> attributes:
+ Presentational attributes to control the width
+ of the "pseudo-table" columns used to output
+ groups of productions. -->
+<!ENTITY % prodgroup.attlist "INCLUDE">
+<![%prodgroup.attlist;[
+<!ATTLIST prodgroup
+ %common.att;
+ pcw1 CDATA #IMPLIED
+ pcw2 CDATA #IMPLIED
+ pcw3 CDATA #IMPLIED
+ pcw4 CDATA #IMPLIED
+ pcw5 CDATA #IMPLIED
+>
+]]>
+
+<!-- prod: EBNF language production. -->
+<!ENTITY % prod.element "INCLUDE">
+<![%prod.element;[
+<!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. -->
+<!ENTITY % prod.attlist "INCLUDE">
+<![%prod.attlist;[
+<!ATTLIST prod
+ %common-idreq.att;
+ num CDATA #IMPLIED>
+]]>
+
+<!-- lhs: Left-hand side of production. -->
+<!ENTITY % lhs.element "INCLUDE">
+<![%lhs.element;[
+<!ELEMENT lhs (#PCDATA|phrase)*>
+]]>
+<!ENTITY % lhs.attlist "INCLUDE">
+<![%lhs.attlist;[
+<!ATTLIST lhs %common.att;>
+]]>
+
+<!-- rhs: Right-hand side of production; may have many
+ "right-hand sides," one to a line. -->
+<!ENTITY % rhs.element "INCLUDE">
+<![%rhs.element;[
+<!ELEMENT rhs (#PCDATA|phrase|nt|xnt|com)*>
+]]>
+<!ENTITY % rhs.attlist "INCLUDE">
+<![%rhs.attlist;[
+<!ATTLIST rhs %common.att;>
+]]>
+
+<!-- nt and xnt (defined in "Phrase-level elements" below) -->
+
+<!--
+#1997-11-28: maler: Added loc and bibref to com content.
+-->
+
+<!-- com: Production comment. -->
+<!ENTITY % com.element "INCLUDE">
+<![%com.element;[
+<!ELEMENT com (#PCDATA|phrase|loc|bibref)*>
+]]>
+<!ENTITY % com.attlist "INCLUDE">
+<![%com.attlist;[
+<!ATTLIST com %common.att;>
+]]>
+
+<!-- wfc: Reference to a well-formedness constraint; should
+ generate the head of the wfcnote pointed to. -->
+<!ENTITY % wfc.element "INCLUDE">
+<![%wfc.element;[
+<!ELEMENT wfc EMPTY>
+]]>
+<!-- def attribute:
+ Each well formedness tagline in a production must link to the
+ wfcnote that defines it. -->
+<!ENTITY % wfc.attlist "INCLUDE">
+<![%wfc.attlist;[
+<!ATTLIST wfc
+ %def-req.att;
+ %common.att;>
+]]>
+
+<!-- vc: Reference to a validity constraint; should generate
+ the head of the vcnote pointed to. -->
+<!ENTITY % vc.element "INCLUDE">
+<![%vc.element;[
+<!ELEMENT vc EMPTY>
+]]>
+<!-- def attribute:
+ Each validity tagline in a production must link to the vcnote
+ that defines it. -->
+<!ENTITY % vc.attlist "INCLUDE">
+<![%vc.attlist;[
+<!ATTLIST vc
+ %def-req.att;
+ %common.att;>
+]]>
+
+<!--
+#1998-05-21: maler: Declared generic constraint element.
+-->
+
+<!-- constraint: Reference to a generic constraint; should
+ generate the head of the constraintnote pointed to. -->
+<!ENTITY % constraint.element "INCLUDE">
+<![%constraint.element;[
+<!ELEMENT constraint EMPTY>
+]]>
+<!-- def attribute:
+ Each constraint tagline in a production must link to the
+ constraint note that defines it. -->
+<!ENTITY % constraint.attlist "INCLUDE">
+<![%constraint.attlist;[
+<!ATTLIST constraint
+ %def-req.att;
+ %common.att;>
+]]>
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- bnf: Un-marked-up EBNF production, with whitespace
+ respected. -->
+<!ENTITY % bnf.element "INCLUDE">
+<![%bnf.element;[
+<!ELEMENT bnf (%eg.pcd.mix;)*>
+]]>
+<!ENTITY % bnf.attlist "INCLUDE">
+<![%bnf.attlist;[
+<!ATTLIST bnf
+ %common.att;
+ %xmlspace.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Declared prodrecap.
+-->
+
+<!-- prodrecap: Reference to production or bnf that appears
+ in its "normative" form elsewhere in the spec; should
+ generate a copy of the original production, without
+ a production number next to it. -->
+<!ENTITY % prodrecap.element "INCLUDE">
+<![%prodrecap.element;[
+<!ELEMENT prodrecap EMPTY>
+]]>
+<!ENTITY % prodrecap.attlist "INCLUDE">
+<![%prodrecap.attlist;[
+<!ATTLIST prodrecap
+ %common.att;
+ %ref-req.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Table ......................................................... -->
+<!-- ............................................................... -->
+
+<!--
+#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"'>
+
+<!-- table: HTML-based geometric table model. -->
+<!ENTITY % table.element "INCLUDE">
+<![%table.element;[
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
+]]>
+<!ENTITY % table.attlist "INCLUDE">
+<![%table.attlist;[
+<!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>
+]]>
+
+<!ENTITY % caption.element "INCLUDE">
+<![%caption.element;[
+<!ELEMENT caption (%p.pcd.mix;)*>
+]]>
+<!ENTITY % caption.attlist "INCLUDE">
+<![%caption.attlist;[
+<!ATTLIST caption %common.att;>
+]]>
+
+<!ENTITY % col.element "INCLUDE">
+<![%col.element;[
+<!ELEMENT col EMPTY>
+]]>
+<!ENTITY % col.attlist "INCLUDE">
+<![%col.attlist;[
+<!ATTLIST col
+ %common.att;
+ %span.att;
+ %width.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % colgroup.element "INCLUDE">
+<![%colgroup.element;[
+<!ELEMENT colgroup (col)*>
+]]>
+<!ENTITY % colgroup.attlist "INCLUDE">
+<![%colgroup.attlist;[
+<!ATTLIST colgroup
+ %common.att;
+ %span.att;
+ %width.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % thead.element "INCLUDE">
+<![%thead.element;[
+<!ELEMENT thead (tr)+>
+]]>
+<!ENTITY % thead.attlist "INCLUDE">
+<![%thead.attlist;[
+<!ATTLIST thead
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % tfoot.element "INCLUDE">
+<![%tfoot.element;[
+<!ELEMENT tfoot (tr)+>
+]]>
+<!ENTITY % tfoot.attlist "INCLUDE">
+<![%tfoot.attlist;[
+<!ATTLIST tfoot
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % tbody.element "INCLUDE">
+<![%tbody.element;[
+<!ELEMENT tbody (tr)+>
+]]>
+<!ENTITY % tbody.attlist "INCLUDE">
+<![%tbody.attlist;[
+<!ATTLIST tbody
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % tr.element "INCLUDE">
+<![%tr.element;[
+<!ELEMENT tr (th|td)+>
+]]>
+<!ENTITY % tr.attlist "INCLUDE">
+<![%tr.attlist;[
+<!ATTLIST tr
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % th.element "INCLUDE">
+<![%th.element;[
+<!ELEMENT th (%p.pcd.mix;|%p.mix;)*>
+]]>
+<!ENTITY % th.attlist "INCLUDE">
+<![%th.attlist;[
+<!ATTLIST th
+ %common.att;
+ %thtd.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!ENTITY % td.element "INCLUDE">
+<![%td.element;[
+<!ELEMENT td (%p.pcd.mix;|%p.mix;)*>
+]]>
+<!ENTITY % td.attlist "INCLUDE">
+<![%td.attlist;[
+<!ATTLIST td
+ %common.att;
+ %thtd.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- IDL structures for DOM specifications ......................... -->
+<!-- ............................................................... -->
+
+<!-- ............................................................... -->
+<!-- Specialized entities for classes .............................. -->
+
+<!ENTITY % idl-desc.class
+ "p|note">
+
+<!ENTITY % idl-tdef.class
+ "typedef|constant|exception|reference|group">
+
+<!ENTITY % idl-mod.class
+ "module|interface">
+
+<!ENTITY % idl-struct.class
+ "struct|enum|sequence|union|typename">
+
+<!ENTITY % idl-meth.class
+ "method|attribute">
+
+<!-- ............................................................... -->
+<!-- Specialized entities for mixtures ............................. -->
+
+<!-- Quick reference to content model mixtures:
+
+ desc tdef mod struct meth
+group x x x x x
+definitions, module x x x
+interface x x x
+typedef, case, component x
+-->
+
+<!ENTITY % idl-grp.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;
+ |%idl-struct.class;|%idl-meth.class;">
+
+<!ENTITY % idl-defn.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;">
+
+<!ENTITY % idl-intfc.mix
+ "%idl-desc.class;|%idl-tdef.class;|%idl-meth.class;">
+
+<!ENTITY % idl-type.mix
+ "%idl-struct.class;">
+
+<!-- ............................................................... -->
+<!-- Specialized entities for common attributes .................... -->
+
+<!-- name attribute:
+ Provides a name. Required. -->
+<!ENTITY % idl-name.att
+ 'name CDATA #REQUIRED'>
+
+<!-- type attribute:
+ Provides a type. Required. -->
+<!ENTITY % idl-type.att
+ 'type CDATA #REQUIRED'>
+
+<!-- ............................................................... -->
+<!-- Common IDL element ............................................ -->
+
+<!ENTITY % descr.element "INCLUDE">
+<![%descr.element;[
+<!ELEMENT descr ((%obj.mix;)*)>
+]]>
+<!ENTITY % descr.attlist "INCLUDE">
+<![%descr.attlist;[
+<!ATTLIST descr %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- IDL definition elements ....................................... -->
+
+<!-- definitions: Top-level element for definitions. -->
+<!ENTITY % definitions.element "INCLUDE">
+<![%definitions.element;[
+<!ELEMENT definitions (%idl-defn.mix;)+>
+]]>
+<!ENTITY % definitions.attlist "INCLUDE">
+<![%definitions.attlist;[
+<!ATTLIST definitions %common.att;>
+]]>
+
+<!-- group: Element used to group a set of definitions. -->
+
+<!ENTITY % group.element "INCLUDE">
+<![%group.element;[
+<!ELEMENT group (descr, (%idl-grp.mix;)*)>
+]]>
+<!ENTITY % group.attlist "INCLUDE">
+<![%group.attlist;[
+<!ATTLIST group
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!-- interface: Definition of an interface. -->
+<!ENTITY % interface.element "INCLUDE">
+<![%interface.element;[
+<!ELEMENT interface (descr, (%idl-intfc.mix;)*)>
+]]>
+<!ENTITY % interface.attlist "INCLUDE">
+<![%interface.attlist;[
+<!ATTLIST interface
+ %common.att;
+ %idl-name.att;
+ inherits CDATA #IMPLIED>
+]]>
+
+<!-- module: Definition of a module. -->
+<!ENTITY % module.element "INCLUDE">
+<![%module.element;[
+<!ELEMENT module (descr, (%idl-defn.mix;)*)>
+]]>
+<!ENTITY % module.attlist "INCLUDE">
+<![%module.attlist;[
+<!ATTLIST module
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!-- reference: Reference to some other declaration. -->
+<!ENTITY % reference.element "INCLUDE">
+<![%reference.element;[
+<!ELEMENT reference EMPTY>
+]]>
+<!ENTITY % reference.attlist "INCLUDE">
+<![%reference.attlist;[
+<!ATTLIST reference
+ %common.att;
+ declaration IDREF #REQUIRED>
+]]>
+
+<!-- typedef: Definition of a named type. -->
+<!ENTITY % typedef.element "INCLUDE">
+<![%typedef.element;[
+<!ELEMENT typedef (descr, (%idl-type.mix;))>
+]]>
+<!ENTITY % typedef.attlist "INCLUDE">
+<![%typedef.attlist;[
+<!ATTLIST typedef
+ %common.att;
+ %idl-name.att;
+ array.size NMTOKEN #IMPLIED>
+]]>
+
+<!-- struct: Declaration of a struct type. -->
+<!ENTITY % struct.element "INCLUDE">
+<![%struct.element;[
+<!ELEMENT struct (descr, component+)>
+]]>
+<!ENTITY % struct.attlist "INCLUDE">
+<![%struct.attlist;[
+<!ATTLIST struct
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!-- component: Declaration of a structural member. -->
+<!ENTITY % component.element "INCLUDE">
+<![%component.element;[
+<!ELEMENT component (%idl-type.mix;)>
+]]>
+<!ENTITY % component.attlist "INCLUDE">
+<![%component.attlist;[
+<!ATTLIST component
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!-- union: Declaration of a union type. -->
+<!ENTITY % union.element "INCLUDE">
+<![%union.element;[
+<!ELEMENT union (descr, case+)>
+]]>
+<!ENTITY % union.attlist "INCLUDE">
+<![%union.attlist;[
+<!ATTLIST union
+ %common.att;
+ %idl-name.att;
+ switch.type CDATA #REQUIRED>
+]]>
+
+<!ENTITY % case.element "INCLUDE">
+<![%case.element;[
+<!ELEMENT case (descr, (%idl-type.mix;))>
+]]>
+<!ENTITY % case.attlist "INCLUDE">
+<![%case.attlist;[
+<!ATTLIST case
+ %common.att;
+ labels CDATA #REQUIRED>
+]]>
+
+<!-- enum: Declaration of an enum type. -->
+<!ENTITY % enum.element "INCLUDE">
+<![%enum.element;[
+<!ELEMENT enum (descr, enumerator+)>
+]]>
+<!ENTITY % enum.attlist "INCLUDE">
+<![%enum.attlist;[
+<!ATTLIST enum
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!ENTITY % enumerator.element "INCLUDE">
+<![%enumerator.element;[
+<!ELEMENT enumerator (descr)>
+]]>
+<!ENTITY % enumerator.attlist "INCLUDE">
+<![%enumerator.attlist;[
+<!ATTLIST enumerator
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!-- sequence: Declaration of a sequence type (not named). -->
+<!ENTITY % sequence.element "INCLUDE">
+<![%sequence.element;[
+<!ELEMENT sequence (sequence*)>
+]]>
+<!ENTITY % sequence.attlist "INCLUDE">
+<![%sequence.attlist;[
+<!ATTLIST sequence
+ %common.att;
+ %idl-type.att;
+ size NMTOKEN #IMPLIED>
+]]>
+
+<!-- constant: Declaration of a named constant. -->
+<!ENTITY % constant.element "INCLUDE">
+<![%constant.element;[
+<!ELEMENT constant (descr)>
+]]>
+<!ENTITY % constant.attlist "INCLUDE">
+<![%constant.attlist;[
+<!ATTLIST constant
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ value CDATA #REQUIRED>
+]]>
+
+<!-- exception: Declaration of an exception. -->
+<!ENTITY % exception.element "INCLUDE">
+<![%exception.element;[
+<!ELEMENT exception (descr, component*)>
+]]>
+<!ENTITY % exception.attlist "INCLUDE">
+<![%exception.attlist;[
+<!ATTLIST exception
+ %common.att;
+ %idl-name.att;>
+]]>
+<!-- component (defined under struct, above)-->
+
+<!-- attribute: Declaration of an attribute (data member). -->
+<!ENTITY % attribute.element "INCLUDE">
+<![%attribute.element;[
+<!ELEMENT attribute (descr)>
+]]>
+<!ENTITY % attribute.attlist "INCLUDE">
+<![%attribute.attlist;[
+<!ATTLIST attribute
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ readonly (yes
+ |no) "no">
+]]>
+
+<!-- method: Declaration of a method. -->
+<!ENTITY % method.element "INCLUDE">
+<![%method.element;[
+<!ELEMENT method (descr, parameters, returns, raises)>
+]]>
+<!ENTITY % method.attlist "INCLUDE">
+<![%method.attlist;[
+<!ATTLIST method
+ %common.att;
+ %idl-name.att;>
+]]>
+
+<!ENTITY % parameters.element "INCLUDE">
+<![%parameters.element;[
+<!ELEMENT parameters (param*)>
+]]>
+<!ENTITY % parameters.attlist "INCLUDE">
+<![%parameters.attlist;[
+<!ATTLIST parameters %common.att;>
+]]>
+
+<!ENTITY % param.element "INCLUDE">
+<![%param.element;[
+<!ELEMENT param (descr)>
+]]>
+<!ENTITY % param.attlist "INCLUDE">
+<![%param.attlist;[
+<!ATTLIST param
+ %common.att;
+ %idl-name.att;
+ %idl-type.att;
+ attr (in
+ |out
+ |inout) "inout">
+]]>
+
+<!ENTITY % returns.element "INCLUDE">
+<![%returns.element;[
+<!ELEMENT returns (descr)>
+]]>
+<!ENTITY % returns.attlist "INCLUDE">
+<![%returns.attlist;[
+<!ATTLIST returns
+ %common.att;
+ %idl-type.att;>
+]]>
+
+<!ENTITY % raises.element "INCLUDE">
+<![%raises.element;[
+<!ELEMENT raises (exception*)>
+]]>
+<!-- exception (defined under constant, above)-->
+
+<!ENTITY % typename.element "INCLUDE">
+<![%typename.element;[
+<!ELEMENT typename (#PCDATA|phrase)*>
+]]>
+<!ENTITY % typename.attlist "INCLUDE">
+<![%typename.attlist;[
+<!ATTLIST typename %common.att;>
+]]>
+
+<!-- ............................................................... -->
+<!-- Phrase-level elements ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+#2000-03-07: maler: Added att and attval elements.
+-->
+
+<!-- att: Attribute name. -->
+<!ENTITY % att.element "INCLUDE">
+<![%att.element;[
+<!ELEMENT att (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % att.attlist "INCLUDE">
+<![%att.attlist;[
+<!ATTLIST att %common.att;>
+]]>
+
+<!-- attval: Attribute value. -->
+<!ENTITY % attval.element "INCLUDE">
+<![%attval.element;[
+<!ELEMENT attval (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % attval.attlist "INCLUDE">
+<![%attval.attlist;[
+<!ATTLIST attval %common.att;>
+]]>
+
+<!-- bibref: Reference to a bibliography list entry; should
+ generate, in square brackets, "key" on bibl. -->
+<!ENTITY % bibref.element "INCLUDE">
+<![%bibref.element;[
+<!ELEMENT bibref EMPTY>
+]]>
+<!-- ref attribute:
+ A bibliography reference must link to the bibl element that
+ describes the resource. -->
+<!ENTITY % bibref.attlist "INCLUDE">
+<![%bibref.attlist;[
+<!ATTLIST bibref
+ %common.att;
+ %ref-req.att;>
+]]>
+
+<!ENTITY % code.element "INCLUDE">
+<![%code.element;[
+<!ELEMENT code (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % code.attlist "INCLUDE">
+<![%code.attlist;[
+<!ATTLIST code %common.att;>
+]]>
+
+<!--
+#1998-03-10: maler: Declared ednote and related elements.
+#1999-07-02: maler: Changed edtext content from #PCDATA to %p.pcd.mix;.
+-->
+
+<!-- ednote: Editorial note for communication among editors. -->
+<!ENTITY % ednote.element "INCLUDE">
+<![%ednote.element;[
+<!ELEMENT ednote (name?, date?, edtext)>
+]]>
+<!ENTITY % ednote.attlist "INCLUDE">
+<![%ednote.attlist;[
+<!ATTLIST ednote %common.att;>
+]]>
+
+<!ENTITY % date.element "INCLUDE">
+<![%date.element;[
+<!ELEMENT date (#PCDATA|phrase)*>
+]]>
+<!ENTITY % date.attlist "INCLUDE">
+<![%date.attlist;[
+<!ATTLIST date %common.att;>
+]]>
+
+<!ENTITY % edtext.element "INCLUDE">
+<![%edtext.element;[
+<!ELEMENT edtext (%p.pcd.mix;)*>
+]]>
+<!ENTITY % edtext.attlist "INCLUDE">
+<![%edtext.attlist;[
+<!ATTLIST edtext %common.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Added el element.
+-->
+
+<!-- el: Element type name (GI). -->
+<!ENTITY % el.element "INCLUDE">
+<![%el.element;[
+<!ELEMENT el (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % el.attlist "INCLUDE">
+<![%el.attlist;[
+<!ATTLIST el %common.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Expanded emph to %p.pcd.mix;.
+-->
+
+<!ENTITY % emph.element "INCLUDE">
+<![%emph.element;[
+<!ELEMENT emph (%p.pcd.mix;)*>
+]]>
+<!ENTITY % emph.attlist "INCLUDE">
+<![%emph.attlist;[
+<!ATTLIST emph %common.att;>
+]]>
+
+<!-- footnote: Both footnote content and call to footnote. -->
+<!ENTITY % footnote.element "INCLUDE">
+<![%footnote.element;[
+<!ELEMENT footnote (%obj.mix;)+>
+]]>
+<!ENTITY % footnote.attlist "INCLUDE">
+<![%footnote.attlist;[
+<!ATTLIST footnote %common.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Added function and gave it content of
+# %tech.pcd.mix; instead of XPath's #PCDATA.
+-->
+
+<!ENTITY % function.element "INCLUDE">
+<![%function.element;[
+<!ELEMENT function (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % function.attlist "INCLUDE">
+<![%function.attlist;[
+<!ATTLIST function %common.att;>
+]]>
+
+<!ENTITY % kw.element "INCLUDE">
+<![%kw.element;[
+<!ELEMENT kw (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % kw.attlist "INCLUDE">
+<![%kw.attlist;[
+<!ATTLIST kw %common.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- loc: Generic link to a Web resource, similar to HTML's A. -->
+<!ENTITY % loc.element "INCLUDE">
+<![%loc.element;[
+<!ELEMENT loc (#PCDATA|phrase)*>
+]]>
+<!-- href attribute:
+ The purpose of a loc element is to function as a A-like
+ 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.) E.g.:
+
+<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
+ -->
+<!ENTITY % loc.attlist "INCLUDE">
+<![%loc.attlist;[
+<!ATTLIST loc
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-replace.att;>
+]]>
+
+<!-- nt: Mention of a nonterminal in text, along with a link to
+ the production in the current document that defines it. -->
+<!ENTITY % nt.element "INCLUDE">
+<![%nt.element;[
+<!ELEMENT nt (#PCDATA|phrase)*>
+]]>
+<!-- def attribute:
+ The nonterminal must link to the production that defines
+ it. -->
+<!ENTITY % nt.attlist "INCLUDE">
+<![%nt.attlist;[
+<!ATTLIST nt
+ %common.att;
+ %def-req.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Declared phrase.
+-->
+
+<!-- phrase: "Attribute hanger" for small bits of (e.g.) differenced
+ text in a paragraph or similar, when another element isn't handy.
+ Beware that its content model may allow more nested elements than
+ would normally be allowed in some contexts. -->
+<!ENTITY % phrase.element "INCLUDE">
+<![%phrase.element;[
+<!ELEMENT phrase (%p.pcd.mix;)*>
+]]>
+<!ENTITY % phrase.attlist "INCLUDE">
+<![%phrase.attlist;[
+<!ATTLIST phrase %common.att;>
+]]>
+
+<!--
+#2003-06-25: nwalsh: RFC2119 elements
+-->
+
+<!ENTITY % rfc2119.element "INCLUDE">
+<![%rfc2119.element;[
+<!ELEMENT rfc2119 (#PCDATA|phrase)*>
+]]>
+<!ENTITY % rfc2119.attlist "INCLUDE">
+<![%rfc2119.attlist;[
+<!ATTLIST rfc2119 %common.att;>
+]]>
+
+<!--
+#1998-03-10: maler: Declared quote.
+-->
+
+<!-- quote: Scare quotes and other purely presentational quotes. -->
+<!ENTITY % quote.element "INCLUDE">
+<![%quote.element;[
+<!ELEMENT quote (%p.pcd.mix;)*>
+]]>
+<!ENTITY % quote.attlist "INCLUDE">
+<![%quote.attlist;[
+<!ATTLIST quote %common.att;>
+]]>
+
+<!-- specref: Reference to a div, olist item, prod, or issue
+ in the current document; should generate italic "[n.n],
+ Section Title" for div, "n" for numbered item, "[n]" for
+ production, or "Issue id" for issue. -->
+<!ENTITY % specref.element "INCLUDE">
+<![%specref.element;[
+<!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. -->
+<!ENTITY % specref.attlist "INCLUDE">
+<![%specref.attlist;[
+<!ATTLIST specref
+ %common.att;
+ %ref-req.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Added sub and sup.
+-->
+
+<!-- sub: Subscript. -->
+<!ENTITY % sub.element "INCLUDE">
+<![%sub.element;[
+<!ELEMENT sub (#PCDATA|phrase)*>
+]]>
+<!ENTITY % sub.attlist "INCLUDE">
+<![%sub.attlist;[
+<!ATTLIST sub %common.att;>
+]]>
+
+<!-- sup: Superscript. -->
+<!ENTITY % sup.element "INCLUDE">
+<![%sup.element;[
+<!ELEMENT sup (#PCDATA|phrase)*>
+]]>
+<!ENTITY % sup.attlist "INCLUDE">
+<![%sup.attlist;[
+<!ATTLIST sup %common.att;>
+]]>
+
+<!-- term: The term in text that is being defined in text. -->
+<!ENTITY % term.element "INCLUDE">
+<![%term.element;[
+<!ELEMENT term (#PCDATA|phrase)*>
+]]>
+<!ENTITY % term.attlist "INCLUDE">
+<![%term.attlist;[
+<!ATTLIST term %common.att;>
+]]>
+
+<!-- termdef: Definition of a term in text. -->
+<!ENTITY % termdef.element "INCLUDE">
+<![%termdef.element;[
+<!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). -->
+<!ENTITY % termdef.attlist "INCLUDE">
+<![%termdef.attlist;[
+<!ATTLIST termdef
+ %common-idreq.att;
+ term CDATA #REQUIRED>
+]]>
+
+<!-- termref: Mention of a term, along with a link to the
+ definition in the current document. -->
+<!ENTITY % termref.element "INCLUDE">
+<![%termref.element;[
+<!ELEMENT termref (#PCDATA|phrase)*>
+]]>
+<!-- ref attribute:
+ A term reference must link to the termdef element that
+ defines the term. -->
+<!ENTITY % termref.attlist "INCLUDE">
+<![%termref.attlist;[
+<!ATTLIST termref
+ %common.att;
+ %def-req.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- titleref: Citation of another document, which can also
+ link to that document if it is a Web resource. -->
+<!ENTITY % titleref.element "INCLUDE">
+<![%titleref.element;[
+<!ELEMENT titleref (#PCDATA|phrase)*>
+]]>
+<!-- href attribute:
+ A title reference can optionally function as a hypertext
+ link to the resource with this title. E.g.:
+
+<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
+ -->
+
+<!ENTITY % titleref.attlist "INCLUDE">
+<![%titleref.attlist;[
+<!ATTLIST titleref
+ %common.att;
+ %simple-xlink.att;
+ %href.att;
+ %user-new.att;>
+]]>
+
+<!--
+#2000-03-07: maler: Added var.
+-->
+
+<!-- var: String standing for a variable value that the user
+ or system will supply. For example: "For each node
+ <var>x</var> in this node-set..." -->
+<!ENTITY % var.element "INCLUDE">
+<![%var.element;[
+<!ELEMENT var (%tech.pcd.mix;)*>
+]]>
+<!ENTITY % var.attlist "INCLUDE">
+<![%var.attlist;[
+<!ATTLIST var %common.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- xnt: Mention of a nonterminal in text, along with a link to
+ the production in another document that defines it. -->
+<!ENTITY % xnt.element "INCLUDE">
+<![%xnt.element;[
+<!ELEMENT xnt (#PCDATA|phrase)*>
+]]>
+<!-- href attribute:
+ The nonterminal must hyperlink to a resource that serves
+ to define it (e.g., a production in a related XML
+ specification). E.g.:
+
+<xnt href="http://www.w3.org/TR/spec.htm#prod3">Name</xnt>
+ -->
+
+<!ENTITY % xnt.attlist "INCLUDE">
+<![%xnt.attlist;[
+<!ATTLIST xnt
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+]]>
+
+<!--
+#1997-12-29: maler: Declared xspecref.
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- xspecref: Reference to a div, olist item, prod, or issue
+ in a related specification document; should generate
+ no special text. -->
+<!ENTITY % xspecref.element "INCLUDE">
+<![%xspecref.element;[
+<!ELEMENT xspecref (#PCDATA|phrase)*>
+]]>
+<!-- href attribute:
+ The spec reference must hyperlink to the resource to
+ cross-refer to (e.g., a section in a related XML
+ specification). E.g.:
+
+<xspecref href="http://www.w3.org/TR/spec.htm#sec2">
+the section on constraints</xspecref>
+ -->
+
+<!ENTITY % xspecref.attlist "INCLUDE">
+<![%xspecref.attlist;[
+<!ATTLIST xspecref
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.att;>
+]]>
+
+<!--
+#1999-07-02: maler: Added show/actuate attributes and default values.
+-->
+
+<!-- termref: Mention of a term, along with a link to the
+ definition in a related document. -->
+<!ENTITY % xtermref.element "INCLUDE">
+<![%xtermref.element;[
+<!ELEMENT xtermref (#PCDATA|phrase)*>
+]]>
+<!-- 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). E.g.:
+
+<xtermref href="http://www.w3.org/TR/spec.htm#term5">
+entity
+</xtermref>
+ -->
+
+<!ENTITY % xtermref.attlist "INCLUDE">
+<![%xtermref.attlist;[
+<!ATTLIST xtermref
+ %common.att;
+ %simple-xlink.att;
+ %href-req.att;
+ %user-new.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.
+#1998-11-30: maler: Added para, listitem, itemizedlist, and orderedlist.
+-->
+
+<!-- The following elements are purposely declared but never
+ referenced. Declaring them allows them to be pasted from
+ an HTML document, an earlier version of an XMLspec document,
+ or a DocBook 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. -->
+
+<!ENTITY % div.element "INCLUDE">
+<![%div.element;[
+<!ELEMENT div
+ (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
+]]>
+<!ENTITY % h1.element "INCLUDE">
+<![%h1.element;[
+<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
+]]>
+<!ENTITY % h2.element "INCLUDE">
+<![%h2.element;[
+<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
+]]>
+<!ENTITY % h3.element "INCLUDE">
+<![%h3.element;[
+<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
+]]>
+<!ENTITY % h4.element "INCLUDE">
+<![%h4.element;[
+<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
+]]>
+<!ENTITY % h5.element "INCLUDE">
+<![%h5.element;[
+<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
+]]>
+<!ENTITY % h6.element "INCLUDE">
+<![%h6.element;[
+<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
+]]>
+<!ENTITY % pre.element "INCLUDE">
+<![%pre.element;[
+<!ELEMENT pre (%eg.pcd.mix;|em)*>
+]]>
+<!ENTITY % ul.element "INCLUDE">
+<![%ul.element;[
+<!ELEMENT ul (item|li)*>
+]]>
+<!ENTITY % ol.element "INCLUDE">
+<![%ol.element;[
+<!ELEMENT ol (item|li)*>
+]]>
+<!ENTITY % li.element "INCLUDE">
+<![%li.element;[
+<!ELEMENT li (#PCDATA|%obj.mix;)*>
+]]>
+<!ENTITY % em.element "INCLUDE">
+<![%em.element;[
+<!ELEMENT em (#PCDATA)*>
+]]>
+<!ENTITY % a.element "INCLUDE">
+<![%a.element;[
+<!ELEMENT a (#PCDATA)*>
+]]>
+
+<!ENTITY % key-term.element "INCLUDE">
+<![%key-term.element;[
+<!ELEMENT key-term (#PCDATA)*>
+]]>
+<!ENTITY % htable.element "INCLUDE">
+<![%htable.element;[
+<!ELEMENT htable
+ (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
+]]>
+<!ENTITY % htbody.element "INCLUDE">
+<![%htbody.element;[
+<!ELEMENT htbody (tr)+>
+]]>
+<!ENTITY % statusp.element "INCLUDE">
+<![%statusp.element;[
+<!ELEMENT statusp (%p.pcd.mix;|%p.mix;)*>
+]]>
+
+<!ENTITY % itemizedlist.element "INCLUDE">
+<![%itemizedlist.element;[
+<!ELEMENT itemizedlist (listitem*)>
+]]>
+<!ENTITY % orderedlist.element "INCLUDE">
+<![%orderedlist.element;[
+<!ELEMENT orderedlist (listitem*)>
+]]>
+<!ENTITY % listitem.element "INCLUDE">
+<![%listitem.element;[
+<!ELEMENT listitem (para*)>
+]]>
+<!ENTITY % para.element "INCLUDE">
+<![%para.element;[
+<!ELEMENT para (#PCDATA)*>
+]]>
+
+<!-- ............................................................... -->
+<!-- Change history ................................................ -->
+<!-- ............................................................... -->
+
+<!--
+#This revision history is no longer being maintained. See the CVS log
+#for detailed revisions 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.
+#1998-08-22: maler
+#- Fixed %illus.class; to mention table instead of htable.
+#- Added definitions to %illus.class; for DOM model.
+#- Added DOM definitions element and its substructure.
+#- Updated XLink usage in %href.att; to use xlink:form and #IMPLIED.
+#- Added clarifying comments to href-using elements.
+#1998-11-30: maler
+#- Added new unused elements to support DocBook translation.
+#- Updated maler phone numbers.
+#1998-12-3: maler
+#- Fixed character entities with respect to escaping of ampersands.
+#- Added many more explanatory comments.
+#1999-07-02: maler
+#- Added %loc.class; to all PCD mixes that didn't already have it.
+#- Removed unused %loc.pcd.mix;.
+#- Made version in spec header optional.
+#- Added three new attributes to spec.
+#- Broadened content of edtext.
+#- Added optional copyright element to header.
+#- Reorganized XLink-related parameter entities; added xmlns:xlink.
+#- Changed edtext content from #PCDATA to %p.pcd.mix;.
+#- Added show/actuate atts and default values to all href elements.
+#- Changed versioning scheme from 8-digit dates to version numbers.
+#- Added w3c-doctype, other-doctype, status atts to spec element.
+#- Added prodrecap element inside scrap.
+#- Added headstyle attribute to scrap.
+#2000-03-07: maler
+#- Added proto element, its arg subelement, and the %argtypes; entity.
+#- Added function, var, sub, sup, phrase, el, att, attval elements.
+#- Expanded emph to %p.pcd.mix;.
+#- Allowed status and abstract to appear in the opposite order.
+#- Updated XLink usage to the latest WD, except for href and source.
+#- Removed the xml:attributes attribute from graphic.
+#- Added %local.graphic.att; to graphic.
+#- Added common diff attribute.
+#- Added div5 element.
+#- Broadened content models of publoc, prevlocs, and latestloc.
+#- Added head, source, resolution, and status attribute to issue.
+#- Added cr, issues, and dispcmts to w3c-doctype attribute on spec.
+#- Added example element.
+-->
+
+<!-- ............................................................... -->
+<!-- End of XML specification DTD .................................. -->
+<!-- ............................................................... -->