]> granicus.if.org Git - docbook-dsssl/commitdiff
First stab at RelaxNG schema
authorNorman Walsh <ndw@nwalsh.com>
Thu, 16 Jan 2003 14:57:49 +0000 (14:57 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Thu, 16 Jan 2003 14:57:49 +0000 (14:57 +0000)
website/schema/relaxng/.cvsignore [new file with mode: 0644]
website/schema/relaxng/Makefile [new file with mode: 0644]
website/schema/relaxng/autolayout.rng [new file with mode: 0644]
website/schema/relaxng/extensions.rng [new file with mode: 0644]
website/schema/relaxng/forms.rng [new file with mode: 0644]
website/schema/relaxng/layout.rng [new file with mode: 0644]
website/schema/relaxng/rddl.rng [new file with mode: 0644]
website/schema/relaxng/union.xml [new file with mode: 0644]
website/schema/relaxng/website-full.rng [new file with mode: 0644]
website/schema/relaxng/website.rng [new file with mode: 0644]
website/schema/relaxng/websitedb.rng [new file with mode: 0644]

diff --git a/website/schema/relaxng/.cvsignore b/website/schema/relaxng/.cvsignore
new file mode 100644 (file)
index 0000000..759ed31
--- /dev/null
@@ -0,0 +1 @@
+elements.xml
diff --git a/website/schema/relaxng/Makefile b/website/schema/relaxng/Makefile
new file mode 100644 (file)
index 0000000..f5bdf83
--- /dev/null
@@ -0,0 +1,15 @@
+include ../../../cvstools/Makefile.incl
+
+SCHEMADIR=../../../schema
+RELAXNG=$(SCHEMADIR)/relaxng
+
+all: websitedb.rng
+
+elements.xml: union.xml
+       $(XSLT) $(RELAXNG)/simple/elements.xml $(RELAXNG)/tools/union-elements.xsl $@ \
+                union.xml=/sourceforge/docbook/website/schema/relaxng/union.xml
+
+websitedb.rng: elements.xml
+       $(XSLT) $(RELAXNG)/docbook.rng $(RELAXNG)/tools/subset.xsl $@ \
+                elements=/sourceforge/docbook/website/schema/relaxng/$< \
+                remove.start=1
diff --git a/website/schema/relaxng/autolayout.rng b/website/schema/relaxng/autolayout.rng
new file mode 100644 (file)
index 0000000..0a1ee02
--- /dev/null
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website Autolayout Schema</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">autolayout</releaseinfo>
+<copyright>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the autolayout schema for Website.
+Please use the following formal public identifier to identify it:</para>
+
+<screen>"-//Norman Walsh//DTD Website Autolayout V2.4.0//EN"</screen>
+
+<para>For example:</para>
+
+<programlisting><![CDATA[<!DOCTYPE autolayout PUBLIC "-//Norman Walsh//DTD Website Autolayout V2.4.0//EN"
+               "http://docbook.sourceforge.net/release/website/2.4.0/autolayout.dtd">
+               [...]>]]></programlisting>
+
+<para>Please direct all questions and comments about this DTD to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+  <define name="autolayout">
+    <element name="autolayout">
+      <ref name="attlist.autolayout"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="copyright"/>
+          <ref name="style"/>
+          <ref name="script"/>
+          <ref name="headlink"/>
+          <ref name="config"/>
+        </choice>
+      </zeroOrMore>
+      <oneOrMore>
+        <ref name="toc"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="notoc"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.autolayout" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="autolayout"/>
+  </define>
+
+  <define name="toc">
+    <element name="toc">
+      <ref name="attlist.toc"/>
+      <ref name="title"/>
+      <optional>
+        <ref name="titleabbrev"/>
+      </optional>
+      <optional>
+        <ref name="summary"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="tocentry"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="toc"/>
+  </define>
+
+  <define name="attlist.toc" combine="interleave">
+    <attribute name="id">
+      <data type="ID"/>
+    </attribute>
+    <attribute name="page"/>
+    <optional>
+      <attribute name="dir"/>
+    </optional>
+    <attribute name="filename"/>
+  </define>
+
+  <define name="title">
+    <element name="title">
+      <ref name="attlist.title"/>
+      <zeroOrMore>
+        <ref name="any"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.title" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="title"/>
+  </define>
+
+  <define name="titleabbrev">
+    <element name="titleabbrev">
+      <ref name="attlist.titleabbrev"/>
+      <zeroOrMore>
+        <ref name="any"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.titleabbrev" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="titleabbrev"/>
+  </define>
+
+  <define name="summary">
+    <element name="summary">
+      <ref name="attlist.summary"/>
+      <zeroOrMore>
+        <text/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.summary" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="summary"/>
+  </define>
+
+  <define name="config">
+    <element name="config">
+      <ref name="attlist.config"/>
+      <empty/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="config"/>
+  </define>
+
+  <define name="attlist.config" combine="interleave">
+    <attribute name="param"/>
+    <attribute name="value"/>
+    <optional>
+      <attribute name="altval"/>
+    </optional>
+  </define>
+
+  <define name="style">
+    <element name="style">
+      <ref name="attlist.style"/>
+      <text/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="style"/>
+  </define>
+
+  <define name="attlist.style" combine="interleave">
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+  </define>
+
+  <define name="script">
+    <element name="script">
+      <ref name="attlist.script"/>
+      <text/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="script"/>
+  </define>
+
+  <define name="attlist.script" combine="interleave">
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="language"/>
+    </optional>
+  </define>
+
+  <define name="headlink">
+    <element name="headlink">
+      <ref name="attlist.headlink"/>
+      <empty/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="headlink"/>
+  </define>
+
+  <define name="attlist.headlink" combine="interleave">
+    <optional>
+      <attribute name="href"/>
+    </optional>
+    <optional>
+      <attribute name="media"/>
+    </optional>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <optional>
+      <attribute name="rel"/>
+    </optional>
+    <optional>
+      <attribute name="rev"/>
+    </optional>
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="title"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+  </define>
+
+  <define name="copyright">
+    <element name="copyright">
+      <ref name="attlist.copyright"/>
+      <oneOrMore>
+        <ref name="year"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="holder"/>
+      </oneOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.copyright" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="copyright"/>
+  </define>
+
+  <define name="year">
+    <element name="year">
+      <ref name="attlist.year"/>
+      <zeroOrMore>
+        <text/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.year" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="year"/>
+  </define>
+
+  <define name="holder">
+    <element name="holder">
+      <ref name="attlist.holder"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="ulink"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="holder"/>
+  </define>
+
+  <define name="attlist.holder" combine="interleave">
+    <optional>
+      <attribute name="role"/>
+    </optional>
+  </define>
+
+  <define name="ulink">
+    <element name="ulink">
+      <ref name="attlist.ulink"/>
+      <zeroOrMore>
+        <text/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="ulink"/>
+  </define>
+
+  <define name="attlist.ulink" combine="interleave">
+    <attribute name="url"/>
+  </define>
+
+  <define name="tocentry">
+    <element name="tocentry">
+      <ref name="attlist.tocentry"/>
+      <ref name="title"/>
+      <optional>
+        <ref name="titleabbrev"/>
+      </optional>
+      <optional>
+        <ref name="summary"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="tocentry"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="tocentry"/>
+  </define>
+
+  <define name="attlist.tocentry" combine="interleave">
+    <attribute name="id">
+      <data type="ID"/>
+    </attribute>
+    <optional>
+      <attribute name="page"/>
+    </optional>
+    <optional>
+      <attribute name="href"/>
+    </optional>
+    <optional>
+      <attribute name="dir"/>
+    </optional>
+    <optional>
+      <attribute name="filename"/>
+    </optional>
+    <optional>
+      <attribute name="revisionflag">
+        <choice>
+          <value>added</value>
+          <value>changed</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="tocskip" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+
+  <define name="notoc">
+    <element name="notoc">
+      <ref name="attlist.notoc"/>
+      <ref name="title"/>
+      <optional>
+        <ref name="titleabbrev"/>
+      </optional>
+      <optional>
+        <ref name="summary"/>
+      </optional>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="notoc"/>
+  </define>
+
+  <define name="attlist.notoc" combine="interleave">
+    <attribute name="id">
+      <data type="ID"/>
+    </attribute>
+    <attribute name="page"/>
+    <optional>
+      <attribute name="dir"/>
+    </optional>
+    <attribute name="filename"/>
+  </define>
+
+  <start>
+    <choice>
+      <ref name="autolayout"/>
+    </choice>
+  </start>
+
+  <define name="any" combine="choice">
+    <text/>
+  </define>
+</grammar>
diff --git a/website/schema/relaxng/extensions.rng b/website/schema/relaxng/extensions.rng
new file mode 100644 (file)
index 0000000..48a85d2
--- /dev/null
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:s="http://www.ascc.net/xml/schematron"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website Extensions</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">extensions</releaseinfo>
+<copyright>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the extensions module for Website.</para>
+
+<para>Please direct all questions and comments about this schema to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+<define name="local.para.class" combine="choice">
+  <choice>
+    <ref name="webtoc"/>
+    <ref name="rss"/>
+  </choice>
+</define>
+
+<define name="head">
+  <element name="head">
+    <ref name="title"/>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+    <optional>
+      <ref name="subtitle"/>
+    </optional>
+    <optional>
+      <ref name="summary"/>
+    </optional>
+    <optional>
+      <ref name="base"/>
+    </optional>
+    <optional>
+      <ref name="keywords"/>
+    </optional>
+    <zeroOrMore>
+      <choice>
+        <ref name="copyright"/>
+        <ref name="author"/>
+        <ref name="edition"/>
+        <ref name="meta"/>
+        <ref name="headlink"/>
+        <ref name="script"/>
+        <ref name="style"/>
+        <ref name="abstract"/>
+        <ref name="revhistory"/>
+        <ref name="rddl-resource"/>
+      </choice>
+    </zeroOrMore>
+  </element>
+</define>
+
+<define name="meta">
+  <element name="meta">
+    <optional>
+      <attribute name="http-equiv"/>
+    </optional>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <attribute name="content"/>
+    <empty/>
+  </element>
+</define>
+
+<define name="headlink">
+  <element name="headlink">
+    <optional>
+      <attribute name="href"/>
+    </optional>
+    <optional>
+      <attribute name="media"/>
+    </optional>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <optional>
+      <attribute name="rel"/>
+    </optional>
+    <optional>
+      <attribute name="rev"/>
+    </optional>
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="title"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+    <empty/>
+  </element>
+</define>
+
+<define name="script">
+  <element name="script">
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <text/>
+  </element>
+</define>
+
+<define name="style">
+  <element name="style">
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+    <text/>
+  </element>
+</define>
+
+<define name="config">
+  <element name="config">
+    <ref name="common.attrib"/>
+    <attribute name="param"/>
+    <attribute name="value"/>
+    <optional>
+      <attribute name="altval"/>
+    </optional>
+    <empty/>
+  </element>
+</define>
+
+<define name="summary">
+  <element name="summary">
+    <ref name="common.attrib"/>
+    <ref name="word.char.mix"/>
+  </element>
+</define>
+
+<define name="base">
+  <element name="base">
+    <attribute name="href"/>
+    <optional>
+      <attribute name="target"/>
+    </optional>
+    <empty/>
+  </element>
+</define>
+
+<define name="keywords">
+  <element name="keywords">
+    <ref name="common.attrib"/>
+    <text/>
+  </element>
+</define>
+
+<define name="webpage">
+  <element name="webpage">
+    <ref name="common.attrib"/>
+    <optional>
+      <attribute name="navto" a:defaultValue="yes">
+        <choice>
+          <value>yes</value>
+          <value>no</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="webpage.mix"/>
+  </element>
+</define>
+
+<define name="webtoc">
+  <element name="webtoc">
+    <ref name="common.attrib"/>
+    <empty/>
+  </element>
+</define>
+
+<define name="rss">
+  <element name="rss">
+    <ref name="common.attrib"/>
+    <attribute name="feed"/>
+    <empty/>
+  </element>
+</define>
+
+<include href="rddl.rng"/>
+
+<include href="forms.rng"/>
+
+<define name="local.notation.class" combine="choice">
+  <choice>
+    <value>XML</value>
+  </choice>
+</define>
+
+</grammar>
diff --git a/website/schema/relaxng/forms.rng b/website/schema/relaxng/forms.rng
new file mode 100644 (file)
index 0000000..d8ec523
--- /dev/null
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:s="http://www.ascc.net/xml/schematron"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
+         xmlns:html="http://www.w3.org/1999/xhtml"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website HTML Forms Module</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">forms</releaseinfo>
+<copyright>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the HTML Forms module for Website.</para>
+
+<para>Please direct all questions and comments about this schema to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+<define name="local.para.char.mix" combine="choice">
+  <choice>
+    <ref name="html-input"/>
+    <ref name="html-button"/>
+    <ref name="html-label"/>
+    <ref name="html-select"/>
+    <ref name="html-textarea"/>
+  </choice>
+</define>
+
+<define name="local.divcomponent.mix" combine="choice">
+  <choice>
+    <ref name="html-form"/>
+  </choice>
+</define>
+
+<define name="events.attrib">
+  <optional>
+    <attribute name="onclick"/>
+  </optional>
+  <optional>
+    <attribute name="ondblclick"/>
+  </optional>
+  <optional>
+    <attribute name="onmousedown"/>
+  </optional>
+  <optional>
+    <attribute name="onmouseup"/>
+  </optional>
+  <optional>
+    <attribute name="onmouseover"/>
+  </optional>
+  <optional>
+    <attribute name="onmousemove"/>
+  </optional>
+  <optional>
+    <attribute name="onmouseout"/>
+  </optional>
+  <optional>
+    <attribute name="onkeypress"/>
+  </optional>
+  <optional>
+    <attribute name="onkeydown"/>
+  </optional>
+  <optional>
+    <attribute name="onkeyup"/>
+  </optional>
+</define>
+
+<define name="html-form">
+  <element name="html:form">
+    <oneOrMore>
+      <choice>
+        <ref name="component.mix"/>
+        <ref name="html-input"/>
+        <ref name="html-button"/>
+        <ref name="html-label"/>
+        <ref name="html-select"/>
+        <ref name="html-textarea"/>
+      </choice>
+    </oneOrMore>
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <attribute name="action"/>
+    <optional>
+      <attribute name="method" a:defaultValue="GET">
+        <choice>
+          <value>GET</value>
+          <value>POST</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="onsubmit"/>
+    </optional>
+    <optional>
+      <attribute name="onreset"/>
+    </optional>
+  </element>
+</define>
+
+<define name="inputtype">
+  <choice>
+    <value>text</value>
+    <value>password</value>
+    <value>checkbox</value>
+    <value>radio</value>
+    <value>submit</value>
+    <value>reset</value>
+    <value>file</value>
+    <value>hidden</value>
+    <value>image</value>
+    <value>button</value>
+  </choice>
+</define>
+
+<define name="html-input">
+  <element name="html:input">
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <optional>
+      <attribute name="type" a:defaultValue="text">
+        <ref name="inputtype"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <optional>
+      <attribute name="value"/>
+    </optional>
+    <optional>
+      <attribute name="checked">
+        <choice>
+          <value>checked</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="disabled">
+        <choice>
+          <value>disabled</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="readonly">
+        <choice>
+          <value>readonly</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="size"/>
+    </optional>
+    <optional>
+      <attribute name="maxlength"/>
+    </optional>
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="alt"/>
+    </optional>
+    <optional>
+      <attribute name="usemap"/>
+    </optional>
+    <optional>
+      <attribute name="tabindex"/>
+    </optional>
+    <optional>
+      <attribute name="accesskey"/>
+    </optional>
+    <optional>
+      <attribute name="onfocus"/>
+    </optional>
+    <optional>
+      <attribute name="onblur"/>
+    </optional>
+    <optional>
+      <attribute name="onselect"/>
+    </optional>
+    <optional>
+      <attribute name="onchange"/>
+    </optional>
+    <empty/>
+  </element>
+</define>
+
+<define name="html-button">
+  <element name="html:button">
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <optional>
+      <attribute name="type" a:defaultValue="submit">
+        <choice>
+          <value>button</value>
+          <value>submit</value>
+          <value>reset</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <optional>
+      <attribute name="value"/>
+    </optional>
+    <optional>
+      <attribute name="disabled">
+        <choice>
+          <value>disabled</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="tabindex"/>
+    </optional>
+    <optional>
+      <attribute name="accesskey"/>
+    </optional>
+    <optional>
+      <attribute name="onfocus"/>
+    </optional>
+    <optional>
+      <attribute name="onblur"/>
+    </optional>
+    <zeroOrMore>
+      <ref name="para.char.mix"/>
+    </zeroOrMore>
+  </element>
+</define>
+
+<define name="html-label">
+  <element name="html:label">
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <optional>
+      <attribute name="for">
+        <data type="IDREF"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="accesskey"/>
+    </optional>
+    <optional>
+      <attribute name="onfocus"/>
+    </optional>
+    <optional>
+      <attribute name="onblur"/>
+    </optional>
+    <ref name="para.char.mix"/>
+  </element>
+</define>
+
+<define name="html-select">
+  <element name="html:select">
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <optional>
+      <attribute name="size"/>
+    </optional>
+    <optional>
+      <attribute name="multiple">
+        <choice>
+          <value>multiple</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="disabled">
+        <choice>
+          <value>disabled</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="tabindex"/>
+    </optional>
+    <optional>
+      <attribute name="onfocus"/>
+    </optional>
+    <optional>
+      <attribute name="onblur"/>
+    </optional>
+    <optional>
+      <attribute name="onchange"/>
+    </optional>
+    <oneOrMore>
+      <ref name="html-option"/>
+    </oneOrMore>
+  </element>
+</define>
+
+<define name="html-option">
+  <element name="html:option">
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <optional>
+      <attribute name="selected">
+        <choice>
+          <value>selected</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="disabled">
+        <choice>
+          <value>disabled</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="value"/>
+    </optional>
+    <text/>
+  </element>
+</define>
+
+<define name="html-textarea">
+  <element name="html:textarea">
+    <ref name="common.attrib"/>
+    <ref name="events.attrib"/>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <attribute name="rows"/>
+    <attribute name="cols"/>
+    <optional>
+      <attribute name="disabled">
+        <choice>
+          <value>disabled</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="readonly">
+        <choice>
+          <value>readonly</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="tabindex"/>
+    </optional>
+    <optional>
+      <attribute name="accesskey"/>
+    </optional>
+    <optional>
+      <attribute name="onfocus"/>
+    </optional>
+    <optional>
+      <attribute name="onblur"/>
+    </optional>
+    <optional>
+      <attribute name="onselect"/>
+    </optional>
+    <optional>
+      <attribute name="onchange"/>
+    </optional>
+    <text/>
+  </element>
+</define>
+
+</grammar>
diff --git a/website/schema/relaxng/layout.rng b/website/schema/relaxng/layout.rng
new file mode 100644 (file)
index 0000000..eb1d232
--- /dev/null
@@ -0,0 +1,402 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website Layout Schema</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">layout</releaseinfo>
+<copyright>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the layout schema for Website.
+Please use the following formal public identifier to identify it:</para>
+
+<screen>"-//Norman Walsh//DTD Website Layout V2.4.0//EN"</screen>
+
+<para>For example:</para>
+
+<programlisting><![CDATA[<!DOCTYPE Layout PUBLIC "-//Norman Walsh//DTD Website Layout V2.4.0//EN"
+               "http://docbook.sourceforge.net/release/website/2.4.0/layout.dtd">
+               [...]>]]></programlisting>
+
+<para>Please direct all questions and comments about this DTD to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+  <define name="layout">
+    <element name="layout">
+      <ref name="attlist.layout"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="config"/>
+          <ref name="style"/>
+          <ref name="script"/>
+          <ref name="headlink"/>
+          <ref name="copyright"/>
+        </choice>
+      </zeroOrMore>
+      <oneOrMore>
+        <ref name="toc"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="notoc"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.layout" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="layout"/>
+  </define>
+
+  <define name="config">
+    <element name="config">
+      <ref name="attlist.config"/>
+      <empty/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="config"/>
+  </define>
+
+  <define name="attlist.config" combine="interleave">
+    <attribute name="param"/>
+    <attribute name="value"/>
+    <optional>
+      <attribute name="altval"/>
+    </optional>
+  </define>
+
+  <define name="style">
+    <element name="style">
+      <ref name="attlist.style"/>
+      <text/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="style"/>
+  </define>
+
+  <define name="attlist.style" combine="interleave">
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+  </define>
+
+  <define name="script">
+    <element name="script">
+      <ref name="attlist.script"/>
+      <text/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="script"/>
+  </define>
+
+  <define name="attlist.script" combine="interleave">
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="language"/>
+    </optional>
+  </define>
+
+  <define name="headlink">
+    <element name="headlink">
+      <ref name="attlist.headlink"/>
+      <empty/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="headlink"/>
+  </define>
+
+  <define name="attlist.headlink" combine="interleave">
+    <optional>
+      <attribute name="href"/>
+    </optional>
+    <optional>
+      <attribute name="media"/>
+    </optional>
+    <optional>
+      <attribute name="name"/>
+    </optional>
+    <optional>
+      <attribute name="rel"/>
+    </optional>
+    <optional>
+      <attribute name="rev"/>
+    </optional>
+    <optional>
+      <attribute name="src"/>
+    </optional>
+    <optional>
+      <attribute name="title"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+  </define>
+
+  <define name="copyright">
+    <element name="copyright">
+      <ref name="attlist.copyright"/>
+      <oneOrMore>
+        <ref name="year"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="holder"/>
+      </oneOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.copyright" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="copyright"/>
+  </define>
+
+  <define name="year">
+    <element name="year">
+      <ref name="attlist.year"/>
+      <zeroOrMore>
+        <text/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.year" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="year"/>
+  </define>
+
+  <define name="holder">
+    <element name="holder">
+      <ref name="attlist.holder"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="ulink"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="holder"/>
+  </define>
+
+  <define name="attlist.holder" combine="interleave">
+    <optional>
+      <attribute name="role"/>
+    </optional>
+  </define>
+
+  <define name="ulink">
+    <element name="ulink">
+      <ref name="attlist.ulink"/>
+      <zeroOrMore>
+        <text/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="ulink"/>
+  </define>
+
+  <define name="attlist.ulink" combine="interleave">
+    <attribute name="url"/>
+  </define>
+
+  <define name="toc">
+    <element name="toc">
+      <ref name="attlist.toc"/>
+      <zeroOrMore>
+        <ref name="tocentry"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="toc"/>
+  </define>
+
+  <define name="attlist.toc" combine="interleave">
+    <attribute name="page"/>
+    <optional>
+      <attribute name="dir"/>
+    </optional>
+    <optional>
+      <attribute name="filename"/>
+    </optional>
+  </define>
+
+  <define name="tocentry">
+    <element name="tocentry">
+      <ref name="attlist.tocentry"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="title"/>
+          <ref name="titleabbrev"/>
+          <ref name="summary"/>
+        </choice>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="tocentry"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="tocentry"/>
+  </define>
+
+  <define name="attlist.tocentry" combine="interleave">
+    <optional>
+      <attribute name="id">
+        <data type="ID"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="page"/>
+    </optional>
+    <optional>
+      <attribute name="href"/>
+    </optional>
+    <optional>
+      <attribute name="dir"/>
+    </optional>
+    <optional>
+      <attribute name="filename"/>
+    </optional>
+    <optional>
+      <attribute name="revisionflag">
+        <choice>
+          <value>added</value>
+          <value>changed</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="tocskip" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+
+  <define name="notoc">
+    <element name="notoc">
+      <ref name="attlist.notoc"/>
+      <empty/>
+    </element>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="notoc"/>
+  </define>
+
+  <define name="attlist.notoc" combine="interleave">
+    <attribute name="page"/>
+    <optional>
+      <attribute name="dir"/>
+    </optional>
+    <optional>
+      <attribute name="filename"/>
+    </optional>
+  </define>
+
+  <define name="title">
+    <element name="title">
+      <ref name="attlist.title"/>
+      <zeroOrMore>
+        <ref name="any"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.title" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="title"/>
+  </define>
+
+  <define name="titleabbrev">
+    <element name="titleabbrev">
+      <ref name="attlist.titleabbrev"/>
+      <zeroOrMore>
+        <ref name="any"/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.titleabbrev" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="titleabbrev"/>
+  </define>
+
+  <define name="summary">
+    <element name="summary">
+      <ref name="attlist.summary"/>
+      <zeroOrMore>
+        <text/>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="attlist.summary" combine="interleave">
+    <empty/>
+  </define>
+
+  <define name="any" combine="choice">
+    <ref name="summary"/>
+  </define>
+
+  <start>
+    <choice>
+      <ref name="layout"/>
+    </choice>
+  </start>
+
+  <define name="any" combine="choice">
+    <text/>
+  </define>
+</grammar>
diff --git a/website/schema/relaxng/rddl.rng b/website/schema/relaxng/rddl.rng
new file mode 100644 (file)
index 0000000..1661c4a
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:s="http://www.ascc.net/xml/schematron"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
+         xmlns:rddl="http://www.rddl.org/"
+         xmlns:xlink="http://www.w3.org/1999/xlink"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website RDDL Module</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">rddl</releaseinfo>
+<copyright>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the RDDL module for Website.</para>
+
+<para>Please direct all questions and comments about this schema to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+<define name="local.para.char.mix" combine="choice">
+  <ref name="rddl-resource"/>
+</define>
+
+<define name="local.section.attrib" combine="choice">
+  <optional>
+    <attribute name="rddl">
+      <data type="IDREF"/>
+    </attribute>
+  </optional>
+</define>
+
+<define name="rddl-resource">
+  <element name="rddl:resource">
+    <optional>
+      <attribute name="id">
+        <data type="ID"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="xml:lang">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="xml:base"/>
+    </optional>
+    <optional>
+      <attribute name="xlink:type" a:defaultValue="simple">
+        <choice>
+          <value>simple</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="xlink:arcrole"/>
+    </optional>
+    <optional>
+      <attribute name="xlink:role" a:defaultValue="http://www.rddl.org/#resource"/>
+    </optional>
+    <optional>
+      <attribute name="xlink:href"/>
+    </optional>
+    <optional>
+      <attribute name="xlink:title"/>
+    </optional>
+
+    <ref name="para.char.mix"/>
+  </element>
+</define>
+
+</grammar>
diff --git a/website/schema/relaxng/union.xml b/website/schema/relaxng/union.xml
new file mode 100644 (file)
index 0000000..2e0c180
--- /dev/null
@@ -0,0 +1,6 @@
+<elements xmlns="http://nwalsh.com/xmlns/docbook-grammar-structure">
+<element name="sgmltag"/>
+<element name="olink"/>
+<element name="simplelist"/>
+<element name="qandaset"/>
+</elements>
diff --git a/website/schema/relaxng/website-full.rng b/website/schema/relaxng/website-full.rng
new file mode 100644 (file)
index 0000000..a5a5c04
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:s="http://www.ascc.net/xml/schematron"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">website</releaseinfo>
+<copyright>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the driver file for V2.4.0 of the Website document type.
+Please use the following formal public identifier to identify it:</para>
+
+<screen>"-//Norman Walsh//DTD Website V2.4.0//EN"</screen>
+
+<para>For example, if
+you are using the Website DTD directly, use the FPI in the DOCTYPE
+declaration:</para>
+
+<programlisting><![CDATA[<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.0//EN"
+               "http://docbook.sourceforge.net/release/website/2.4.0/website.dtd">
+               [...]>]]></programlisting>
+
+<para>Or, if you have a higher-level driver file that customizes Website,
+use the FPI in the parameter entity declaration:</para>
+
+<programlisting><![CDATA[<!ENTITY % WebsiteDTD PUBLIC "-//Norman Walsh//DTD Website V2.4.0//EN"
+           "http://docbook.sourceforge.net/release/website/2.4.0/website.dtd">
+%WebsiteDTD;]]></programlisting>
+
+<para>Please direct all questions and comments about this DTD to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+<include href="../../../schema/relaxng/docbook.rng"/>
+<include href="extensions.rng"/>
+
+<define name="webpage.mix">
+  <zeroOrMore>
+    <ref name="config"/>
+  </zeroOrMore>
+  <ref name="head"/>
+  <ref name="bookcomponent.content"/>
+  <zeroOrMore>
+    <ref name="appendix"/>
+  </zeroOrMore>
+  <zeroOrMore>
+    <choice>
+      <ref name="index"/>
+      <ref name="glossary"/>
+      <ref name="bibliography"/>
+    </choice>
+  </zeroOrMore>
+</define>
+
+<start combine="choice">
+  <choice>
+    <ref name="webpage"/>
+  </choice>
+</start>
+
+</grammar>
diff --git a/website/schema/relaxng/website.rng b/website/schema/relaxng/website.rng
new file mode 100644 (file)
index 0000000..c2d45f9
--- /dev/null
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:rng="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+         xmlns:s="http://www.ascc.net/xml/schematron"
+         xmlns:doc="http://nwalsh.com/xmlns/documentation"
+         xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
+         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+   role="cvs">$Id$</releaseinfo>
+<title>Website</title>
+<productname>Website</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">website</releaseinfo>
+<copyright>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the driver file for V2.4.0 of the Website document type.
+Please use the following formal public identifier to identify it:</para>
+
+<screen>"-//Norman Walsh//DTD Website V2.4.0//EN"</screen>
+
+<para>For example, if
+you are using the Website DTD directly, use the FPI in the DOCTYPE
+declaration:</para>
+
+<programlisting><![CDATA[<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.4.0//EN"
+               "http://docbook.sourceforge.net/release/website/2.4.0/website.dtd">
+               [...]>]]></programlisting>
+
+<para>Or, if you have a higher-level driver file that customizes Website,
+use the FPI in the parameter entity declaration:</para>
+
+<programlisting><![CDATA[<!ENTITY % WebsiteDTD PUBLIC "-//Norman Walsh//DTD Website V2.4.0//EN"
+           "http://docbook.sourceforge.net/release/website/2.4.0/website.dtd">
+%WebsiteDTD;]]></programlisting>
+
+<para>Please direct all questions and comments about this DTD to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+<include href="websitedb.rng"/>
+<include href="extensions.rng"/>
+
+<define name="webpage.mix">
+  <zeroOrMore>
+    <ref name="config"/>
+  </zeroOrMore>
+  <ref name="head"/>
+  <ref name="bookcomponent.content"/>
+  <zeroOrMore>
+    <ref name="appendix"/>
+  </zeroOrMore>
+  <zeroOrMore>
+    <ref name="bibliography"/>
+  </zeroOrMore>
+</define>
+
+<start>
+  <choice>
+    <ref name="webpage"/>
+  </choice>
+</start>
+
+</grammar>
diff --git a/website/schema/relaxng/websitedb.rng b/website/schema/relaxng/websitedb.rng
new file mode 100644 (file)
index 0000000..dcebaa8
--- /dev/null
@@ -0,0 +1,7186 @@
+<?xml version="1.0" encoding="utf-8"?><grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:s="http://www.ascc.net/xml/schematron" xmlns:doc="http://nwalsh.com/xmlns/documentation" xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook Information Pool</title>
+<productname>DocBook</productname>
+<productnumber>4.2</productnumber>
+<releaseinfo role="filename">dbpool</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema for
+any purpose. It is provided <quote>as is</quote> without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your schema as a variant of DocBook. See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the <email>docbook@lists.oasis-open.org</email> mailing list. For more
+information, see <ulink url="http://www.oasis-open.org/docbook/"/>.</para>
+</legalnotice>
+</partinfo>
+
+<partintro>
+<para>This is the driver file for V4.2 of the DocBook DTD.
+Please use the following formal public identifier to identify it:</para>
+
+<screen>"-//OASIS//DTD DocBook XML V4.2//EN"</screen>
+
+<para>For example, if your document's top-level element is Book, and
+you are using the DocBook DTD directly, use the FPI in the DOCTYPE
+declaration:</para>
+
+<programlisting>&lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+               "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+               [...]&gt;</programlisting>
+
+<para>Or, if you have a higher-level driver file that customizes the DocBook DTD,
+use the FPI in the parameter entity declaration:</para>
+
+<programlisting>&lt;!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+           "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;
+%DocBookDTD;</programlisting>
+
+<para>See the documentation for detailed information on the parameter
+entity and module scheme used in DocBook, customizing DocBook and
+planning for interchange, and changes made since the last release
+of DocBook.</para>
+</partintro>
+</rng:div>
+
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+
+  <div db:name="sgml.features" db:ignore="yes">
+    <db:parameter-entity-declaration name="xml.features" value="IGNORE"/>
+  </div>
+
+  <db:parameter-entity-declaration name="xml.features" value="INCLUDE"/>
+
+  <div db:name="sgml.features" db:declare="no">
+    <div db:name="xml.features" db:declare="no">
+
+      <!-- ERROR: Exactly one of xml.features and sgml.features must be turned on! -->
+      <db:parameter-entity-declaration name="dbnotn" system="http://www.oasis-open.org/docbook/xml/configerror.txt"/>
+      <db:parameter-entity-declaration name="dbcent" system="http://www.oasis-open.org/docbook/xml/configerror.txt"/>
+      <db:parameter-entity-declaration name="dbpool" system="http://www.oasis-open.org/docbook/xml/configerror.txt"/>
+      <db:parameter-entity-declaration name="dbhier" system="http://www.oasis-open.org/docbook/xml/configerror.txt"/>
+      <db:parameter-entity-declaration name="dbgenent" system="http://www.oasis-open.org/docbook/xml/configerror.txt"/>
+    </div>
+  </div>
+
+<!-- Notation declarations ................................................ -->
+
+  
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook Notations</title>
+<productname>DocBook</productname>
+<productnumber>4.2</productnumber>
+<releaseinfo role="filename">dbnotn</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema for
+any purpose. It is provided <quote>as is</quote> without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your schema as a variant of DocBook. See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the <email>docbook@lists.oasis-open.org</email> mailing list. For more
+information, see <ulink url="http://www.oasis-open.org/docbook/"/>.</para>
+</legalnotice>
+</partinfo>
+
+<partintro>
+<para>This module contains the entity declarations for the standard ISO
+entity sets used by DocBook.</para>
+
+<para>When using this schema in driver files referring to the DTD version
+of this module, please use an entity
+declaration that uses the public identifier shown below:</para>
+
+<screen>&lt;!ENTITY % dbnotn PUBLIC
+"-//OASIS//ENTITIES DocBook Notations V4.2//EN"
+"dbnotnx.mod"&gt;
+%dbnotn;</screen>
+
+<para>See the documentation for detailed information on the parameter
+entity and module scheme used in DocBook, customizing DocBook and
+planning for interchange, and changes made since the last release
+of DocBook.
+</para>
+</partintro>
+</rng:div>
+
+  <define name="local.notation.class">
+    <notAllowed/>
+  </define>
+
+  <define name="notation.class">
+    <choice>
+      <value>BMP</value>
+      <value>CGM-CHAR</value>
+      <value>CGM-BINARY</value>
+      <value>CGM-CLEAR</value>
+      <value>DITROFF</value>
+      <value>DVI</value>
+      <value>EPS</value>
+      <value>EQN</value>
+      <value>FAX</value>
+      <value>GIF</value>
+      <value>GIF87a</value>
+      <value>GIF89a</value>
+      <value>JPG</value>
+      <value>JPEG</value>
+      <value>IGES</value>
+      <value>PCX</value>
+      <value>PIC</value>
+      <value>PNG</value>
+      <value>PS</value>
+      <value>SGML</value>
+      <value>TBL</value>
+      <value>TEX</value>
+      <value>TIFF</value>
+      <value>WMF</value>
+      <value>WPG</value>
+      <value>SVG</value>
+      <value>linespecific</value>
+      <ref name="local.notation.class"/>
+    </choice>
+  </define>
+
+<db:notation name="BMP" public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN"/>
+
+<db:notation name="CGM-CHAR" public="ISO 8632/2//NOTATION Character encoding//EN"/>
+
+<db:notation name="CGM-BINARY" public="ISO 8632/3//NOTATION Binary encoding//EN"/>
+
+<db:notation name="CGM-CLEAR" public="ISO 8632/4//NOTATION Clear text encoding//EN"/>
+
+<db:notation name="DITROFF" system="DITROFF"/>
+
+<db:notation name="DVI" system="DVI"/>
+
+<db:notation name="EPS" public="+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref. Manual//EN"/>
+
+<db:notation name="EQN" system="EQN"/>
+
+<db:notation name="FAX" public="-//USA-DOD//NOTATION CCITT Group 4 Facsimile Type 1 Untiled Raster//EN"/>
+
+<db:notation name="GIF" system="GIF"/>
+
+<db:notation name="GIF87a" public="-//CompuServe//NOTATION Graphics Interchange Format 87a//EN"/>
+
+<db:notation name="GIF89a" public="-//CompuServe//NOTATION Graphics Interchange Format 89a//EN"/>
+
+<db:notation name="JPG" system="JPG"/>
+
+<db:notation name="JPEG" system="JPG"/>
+
+<db:notation name="IGES" public="-//USA-DOD//NOTATION (ASME/ANSI Y14.26M-1987) Initial Graphics Exchange Specification//EN"/>
+
+<db:notation name="PCX" public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION ZSoft PCX bitmap//EN"/>
+
+<db:notation name="PIC" system="PIC"/>
+
+<db:notation name="PNG" system="http://www.w3.org/TR/REC-png"/>
+
+<db:notation name="PS" system="PS"/>
+
+<db:notation name="SGML" public="ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN"/>
+
+<db:notation name="TBL" system="TBL"/>
+
+<db:notation name="TEX" public="+//ISBN 0-201-13448-9::Knuth//NOTATION The TeXbook//EN"/>
+
+<db:notation name="TIFF" system="TIFF"/>
+
+<db:notation name="WMF" public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows Metafile//EN"/>
+
+<db:notation name="WPG" system="WPG"/> <!--WordPerfect Graphic format-->
+
+<db:notation name="SVG" system="http://www.w3.org/TR/SVG/"/>
+
+<db:notation name="linespecific" system="linespecific"/>
+
+
+
+<!-- ...................................................................... -->
+<!-- ISO character entity sets ............................................ -->
+
+  <!-- euro sign, U+20AC NEW -->
+  <div db:name="sgml.features" db:declare="no">
+    <db:parameter-entity-declaration name="euro" value="[euro  ]"/>
+  </div>
+
+  <div db:name="xml.features" db:declare="no">
+    <db:parameter-entity-declaration name="euro" value="&amp;#x20AC;"/>
+  </div>
+
+  
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook Character Entities</title>
+<productname>DocBook</productname>
+<productnumber>4.2</productnumber>
+<releaseinfo role="filename">dbcent</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema for
+any purpose. It is provided <quote>as is</quote> without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your schema as a variant of DocBook. See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the <email>docbook@lists.oasis-open.org</email> mailing list. For more
+information, see <ulink url="http://www.oasis-open.org/docbook/"/>.</para>
+</legalnotice>
+</partinfo>
+
+<partintro>
+
+<para>This module contains the entity declarations for the standard ISO
+entity sets used by DocBook.</para>
+
+<para>When using this schema in driver files referring to the DTD version
+of this module, please use an entity
+declaration that uses the public identifier shown below:</para>
+
+<screen>&lt;!ENTITY % dbcent PUBLIC
+"-//OASIS//ENTITIES DocBook Character Entities V4.2//EN"
+"dbcentx.mod"&gt;
+%dbcent;</screen>
+
+<para>See the documentation for detailed information on the parameter
+entity and module scheme used in DocBook, customizing DocBook and
+planning for interchange, and changes made since the last release
+of DocBook.
+</para>
+</partintro>
+</rng:div>
+
+<!-- ...................................................................... -->
+
+<div db:name="sgml.features" db:declare="no">
+
+<div db:name="ISOamsa.module">
+<db:parameter-entity-definition name="ISOamsa" public="ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN"/>
+</div>
+
+<div db:name="ISOamsb.module">
+<db:parameter-entity-definition name="ISOamsb" public="ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN"/>
+</div>
+
+<div db:name="ISOamsc.module">
+<db:parameter-entity-definition name="ISOamsc" public="ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN"/>
+</div>
+
+<div db:name="ISOamsn.module">
+<db:parameter-entity-definition name="ISOamsn" public="ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN"/>
+</div>
+
+<div db:name="ISOamso.module">
+<db:parameter-entity-definition name="ISOamso" public="ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN"/>
+</div>
+
+<div db:name="ISOamsr.module">
+<db:parameter-entity-definition name="ISOamsr" public="ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN"/>
+</div>
+
+<div db:name="ISObox.module">
+<db:parameter-entity-definition name="ISObox" public="ISO 8879:1986//ENTITIES Box and Line Drawing//EN"/>
+</div>
+
+<div db:name="ISOcyr1.module">
+<db:parameter-entity-definition name="ISOcyr1" public="ISO 8879:1986//ENTITIES Russian Cyrillic//EN"/>
+</div>
+
+<div db:name="ISOcyr2.module">
+<db:parameter-entity-definition name="ISOcyr2" public="ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN"/>
+</div>
+
+<div db:name="ISOdia.module">
+<db:parameter-entity-definition name="ISOdia" public="ISO 8879:1986//ENTITIES Diacritical Marks//EN"/>
+</div>
+
+<div db:name="ISOgrk1.module">
+<db:parameter-entity-definition name="ISOgrk1" public="ISO 8879:1986//ENTITIES Greek Letters//EN"/>
+</div>
+
+<div db:name="ISOgrk2.module">
+<db:parameter-entity-definition name="ISOgrk2" public="ISO 8879:1986//ENTITIES Monotoniko Greek//EN"/>
+</div>
+
+<div db:name="ISOgrk3.module">
+<db:parameter-entity-definition name="ISOgrk3" public="ISO 8879:1986//ENTITIES Greek Symbols//EN"/>
+</div>
+
+<div db:name="ISOgrk4.module">
+<db:parameter-entity-definition name="ISOgrk4" public="ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN"/>
+</div>
+
+<div db:name="ISOlat1.module">
+<db:parameter-entity-definition name="ISOlat1" public="ISO 8879:1986//ENTITIES Added Latin 1//EN"/>
+</div>
+
+<div db:name="ISOlat2.module">
+<db:parameter-entity-definition name="ISOlat2" public="ISO 8879:1986//ENTITIES Added Latin 2//EN"/>
+</div>
+
+<div db:name="ISOnum.module">
+<db:parameter-entity-definition name="ISOnum" public="ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN"/>
+</div>
+
+<div db:name="ISOpub.module">
+<db:parameter-entity-definition name="ISOpub" public="ISO 8879:1986//ENTITIES Publishing//EN"/>
+</div>
+
+<div db:name="ISOtech.module">
+<db:parameter-entity-definition name="ISOtech" public="ISO 8879:1986//ENTITIES General Technical//EN"/>
+</div>
+</div>
+
+<div db:name="xml.features" db:declare="no">
+
+<div db:name="isoamsa.module">
+<db:parameter-entity-definition name="isoamsa" public="iso 8879:1986//entities added math symbols: arrow relations//en//xml" system="ent/iso-amsa.ent"/>
+</div>
+
+<div db:name="isoamsb.module">
+<db:parameter-entity-definition name="isoamsb" public="iso 8879:1986//entities added math symbols: binary operators//en//xml" system="ent/iso-amsb.ent"/>
+</div>
+
+<div db:name="isoamsc.module">
+<db:parameter-entity-definition name="isoamsc" public="iso 8879:1986//entities added math symbols: delimiters//en//xml" system="ent/iso-amsc.ent"/>
+</div>
+
+<div db:name="isoamsn.module">
+<db:parameter-entity-definition name="isoamsn" public="iso 8879:1986//entities added math symbols: negated relations//en//xml" system="ent/iso-amsn.ent"/>
+</div>
+
+<div db:name="isoamso.module">
+<db:parameter-entity-definition name="isoamso" public="iso 8879:1986//entities added math symbols: ordinary//en//xml" system="ent/iso-amso.ent"/>
+</div>
+
+<div db:name="isoamsr.module">
+<db:parameter-entity-definition name="isoamsr" public="iso 8879:1986//entities added math symbols: relations//en//xml" system="ent/iso-amsr.ent"/>
+</div>
+
+<div db:name="isobox.module">
+<db:parameter-entity-definition name="isobox" public="iso 8879:1986//entities box and line drawing//en//xml" system="ent/iso-box.ent"/>
+</div>
+
+<div db:name="isocyr1.module">
+<db:parameter-entity-definition name="isocyr1" public="iso 8879:1986//entities russian cyrillic//en//xml" system="ent/iso-cyr1.ent"/>
+</div>
+
+<div db:name="isocyr2.module">
+<db:parameter-entity-definition name="isocyr2" public="iso 8879:1986//entities non-russian cyrillic//en//xml" system="ent/iso-cyr2.ent"/>
+</div>
+
+<div db:name="isodia.module">
+<db:parameter-entity-definition name="isodia" public="iso 8879:1986//entities diacritical marks//en//xml" system="ent/iso-dia.ent"/>
+</div>
+
+<div db:name="isogrk1.module">
+<db:parameter-entity-definition name="isogrk1" public="iso 8879:1986//entities greek letters//en//xml" system="ent/iso-grk1.ent"/>
+</div>
+
+<div db:name="isogrk2.module">
+<db:parameter-entity-definition name="isogrk2" public="iso 8879:1986//entities monotoniko greek//en//xml" system="ent/iso-grk2.ent"/>
+</div>
+
+<div db:name="isogrk3.module">
+<db:parameter-entity-definition name="isogrk3" public="iso 8879:1986//entities greek symbols//en//xml" system="ent/iso-grk3.ent"/>
+</div>
+
+<div db:name="isogrk4.module">
+<db:parameter-entity-definition name="isogrk4" public="iso 8879:1986//entities alternative greek symbols//en//xml" system="ent/iso-grk4.ent"/>
+</div>
+
+<div db:name="isolat1.module">
+<db:parameter-entity-definition name="isolat1" public="iso 8879:1986//entities added latin 1//en//xml" system="ent/iso-lat1.ent"/>
+</div>
+
+<div db:name="isolat2.module">
+<db:parameter-entity-definition name="isolat2" public="iso 8879:1986//entities added latin 2//en//xml" system="ent/iso-lat2.ent"/>
+</div>
+
+<div db:name="isonum.module">
+<db:parameter-entity-definition name="isonum" public="iso 8879:1986//entities numeric and special graphic//en//xml" system="ent/iso-num.ent"/>
+</div>
+
+<div db:name="isopub.module">
+<db:parameter-entity-definition name="isopub" public="iso 8879:1986//entities publishing//en//xml" system="ent/iso-pub.ent"/>
+</div>
+
+<div db:name="isotech.module">
+<db:parameter-entity-definition name="isotech" public="ISO 8879:1986//ENTITIES General Technical//EN//XML" system="ent/iso-tech.ent"/>
+</div>
+</div>
+
+<div db:name="ISOamsa.module">
+<db:parameter-entity-reference name="ISOamsa"/>
+</div>
+
+<div db:name="ISOamsb.module">
+<db:parameter-entity-reference name="ISOamsb"/>
+</div>
+
+<div db:name="ISOamsc.module">
+<db:parameter-entity-reference name="ISOamsc"/>
+</div>
+
+<div db:name="ISOamsn.module">
+<db:parameter-entity-reference name="ISOamsn"/>
+</div>
+
+<div db:name="ISOamso.module">
+<db:parameter-entity-reference name="ISOamso"/>
+</div>
+
+<div db:name="ISOamsr.module">
+<db:parameter-entity-reference name="ISOamsr"/>
+</div>
+
+<div db:name="ISObox.module">
+<db:parameter-entity-reference name="ISObox"/>
+</div>
+
+<div db:name="ISOcyr1.module">
+<db:parameter-entity-reference name="ISOcyr1"/>
+</div>
+
+<div db:name="ISOcyr2.module">
+<db:parameter-entity-reference name="ISOcyr2"/>
+</div>
+
+<div db:name="ISOdia.module">
+<db:parameter-entity-reference name="ISOdia"/>
+</div>
+
+<div db:name="ISOgrk1.module">
+<db:parameter-entity-reference name="ISOgrk1"/>
+</div>
+
+<div db:name="ISOgrk2.module">
+<db:parameter-entity-reference name="ISOgrk2"/>
+</div>
+
+<div db:name="ISOgrk3.module">
+<db:parameter-entity-reference name="ISOgrk3"/>
+</div>
+
+<div db:name="ISOgrk4.module">
+<db:parameter-entity-reference name="ISOgrk4"/>
+</div>
+
+<div db:name="ISOlat1.module">
+<db:parameter-entity-reference name="ISOlat1"/>
+</div>
+
+<div db:name="ISOlat2.module">
+<db:parameter-entity-reference name="ISOlat2"/>
+</div>
+
+<div db:name="ISOnum.module">
+<db:parameter-entity-reference name="ISOnum"/>
+</div>
+
+<div db:name="ISOpub.module">
+<db:parameter-entity-reference name="ISOpub"/>
+</div>
+
+<div db:name="ISOtech.module">
+<db:parameter-entity-reference name="ISOtech"/>
+</div>
+
+<!-- End of DocBook character entity sets module V4.2 ..................... -->
+<!-- ...................................................................... -->
+
+
+
+<!-- ...................................................................... -->
+<!-- DTD modules .......................................................... -->
+<!-- Information pool .............. -->
+
+  
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook Information Pool</title>
+<productname>DocBook</productname>
+<productnumber>4.2+</productnumber>
+<releaseinfo role="filename">dbpool</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema for
+any purpose. It is provided <quote>as is</quote> without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your schema as a variant of DocBook. See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the <email>docbook@lists.oasis-open.org</email> mailing list. For more
+information, see <ulink url="http://www.oasis-open.org/docbook/"/>.</para>
+</legalnotice>
+</partinfo>
+
+<partintro>
+<para>This module contains the definitions for the objects, inline
+elements, and so on that are available to be used as the main
+content of DocBook documents. Some elements are useful for general
+publishing, and others are useful specifically for computer
+documentation.</para>
+
+<para>This module has the following dependencies on other modules:</para>
+
+<itemizedlist>
+<listitem><para>It assumes that a %notation.class; entity is defined by the
+driver file or other high-level module. This entity is
+referenced in the NOTATION attributes for the graphic-related and
+ModeSpec elements.</para>
+</listitem>
+
+<listitem><para>It assumes that an appropriately parameterized table module is
+available for use with the table-related elements.</para>
+</listitem>
+</itemizedlist>
+
+<para>When using this schema in driver files referring to the DTD
+version of this module, please use an entity declaration that uses the
+public identifier shown below:</para>
+
+<screen>&lt;!ENTITY % dbpool PUBLIC
+"-//OASIS//ELEMENTS DocBook XML Information Pool V4.2//EN"
+"dbpool.mod"&gt;
+%dbpool;</screen>
+
+<para>See the documentation for detailed information on the parameter
+entity and module scheme used in DocBook, customizing DocBook and
+planning for interchange, and changes made since the last release
+of DocBook.</para>
+</partintro>
+</rng:div>
+
+<!-- ...................................................................... -->
+<!-- General-purpose semantics entities ................................... -->
+
+  <define name="yesorno.attvals">
+    <data type="string"/>
+  </define>
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+<!-- ...................................................................... -->
+<!-- Entities for element classes and mixtures ............................ -->
+<!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+
+  
+  
+
+<!-- Object-level classes ................................................. -->
+
+  <define name="local.list.class">
+    <notAllowed/>
+  </define>
+  <define name="list.class">
+    <choice>
+      
+      
+      <ref name="itemizedlist"/>
+      <ref name="orderedlist"/>
+      
+      <ref name="simplelist"/>
+      <ref name="variablelist"/>
+      <ref name="local.list.class"/>
+    </choice>
+  </define>
+  <define name="local.admon.class">
+    <notAllowed/>
+  </define>
+  <define name="admon.class">
+    <choice>
+      
+      
+      <ref name="note"/>
+      
+      
+      <ref name="local.admon.class"/>
+    </choice>
+  </define>
+  <define name="local.linespecific.class">
+    <notAllowed/>
+  </define>
+  <define name="linespecific.class">
+    <choice>
+      <ref name="literallayout"/>
+      <ref name="programlisting"/>
+      
+      
+      
+      
+      <ref name="local.linespecific.class"/>
+    </choice>
+  </define>
+  
+  
+  
+  
+  <define name="local.para.class">
+    <notAllowed/>
+  </define>
+  <define name="para.class">
+    <choice>
+      
+      <ref name="para"/>
+      
+      <ref name="local.para.class"/>
+    </choice>
+  </define>
+  <define name="local.informal.class">
+    <notAllowed/>
+  </define>
+  <define name="informal.class">
+    <choice>
+      
+      <ref name="blockquote"/>
+      
+      
+      <ref name="mediaobject"/>
+      
+      
+      
+      
+      <ref name="informaltable"/>
+      <ref name="local.informal.class"/>
+    </choice>
+  </define>
+  <define name="local.formal.class">
+    <notAllowed/>
+  </define>
+  <define name="formal.class">
+    <choice>
+      
+      <ref name="example"/>
+      <ref name="figure"/>
+      <ref name="table"/>
+      <ref name="local.formal.class"/>
+    </choice>
+  </define>
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+
+  <define name="ebnf.block.hook">
+    <notAllowed/>
+  </define>
+
+  <define name="local.compound.class">
+    <notAllowed/>
+  </define>
+  <define name="compound.class">
+    <choice>
+      
+      
+      <ref name="sidebar"/>
+      <ref name="qandaset"/>
+      <ref name="ebnf.block.hook"/>
+      <ref name="local.compound.class"/>
+    </choice>
+  </define>
+  
+  
+  <define name="local.descobj.class">
+    <notAllowed/>
+  </define>
+  <define name="descobj.class">
+    <choice>
+      <ref name="abstract"/>
+      <ref name="authorblurb"/>
+      <ref name="epigraph"/>
+      <ref name="local.descobj.class"/>
+    </choice>
+  </define>
+
+<!-- Character-level classes .............................................. -->
+
+  <define name="local.xref.char.class">
+    <notAllowed/>
+  </define>
+  <define name="xref.char.class">
+    <choice>
+      <ref name="footnoteref"/>
+      <ref name="xref"/>
+      <ref name="local.xref.char.class"/>
+    </choice>
+  </define>
+  <define name="local.gen.char.class">
+    <notAllowed/>
+  </define>
+  <define name="gen.char.class">
+    <choice>
+      <ref name="abbrev"/>
+      <ref name="acronym"/>
+      
+      
+      <ref name="citetitle"/>
+      <ref name="emphasis"/>
+      
+      
+      
+      <ref name="footnote"/>
+      <ref name="phrase"/>
+      <ref name="quote"/>
+      <ref name="trademark"/>
+      
+      
+      <ref name="local.gen.char.class"/>
+    </choice>
+  </define>
+  <define name="local.link.char.class">
+    <notAllowed/>
+  </define>
+  <define name="link.char.class">
+    <choice>
+      <ref name="link"/>
+      <ref name="olink"/>
+      <ref name="ulink"/>
+      <ref name="local.link.char.class"/>
+    </choice>
+  </define>
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+
+  <define name="ebnf.inline.hook">
+    <notAllowed/>
+  </define>
+
+  <define name="local.tech.char.class">
+    <notAllowed/>
+  </define>
+  <define name="tech.char.class">
+    <choice>
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      <ref name="command"/>
+      <ref name="computeroutput"/>
+      
+      <ref name="email"/>
+      
+      
+      
+      
+      
+      <ref name="filename"/>
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      <ref name="literal"/>
+      
+      
+      
+      
+      
+      <ref name="option"/>
+      
+      
+      
+      
+      <ref name="replaceable"/>
+      
+      <ref name="sgmltag"/>
+      
+      
+      
+      <ref name="systemitem"/>
+      
+      
+      <ref name="userinput"/>
+      
+      <ref name="ebnf.inline.hook"/>
+      <ref name="local.tech.char.class"/>
+    </choice>
+  </define>
+  
+  
+  <define name="local.docinfo.char.class">
+    <notAllowed/>
+  </define>
+  <define name="docinfo.char.class">
+    <choice>
+      <ref name="author"/>
+      <ref name="authorinitials"/>
+      <ref name="corpauthor"/>
+      
+      <ref name="othercredit"/>
+      
+      
+      <ref name="revhistory"/>
+      <ref name="local.docinfo.char.class"/>
+    </choice>
+  </define>
+  
+  
+  <define name="local.inlineobj.char.class">
+    <notAllowed/>
+  </define>
+  <define name="inlineobj.char.class">
+    <choice>
+      
+      <ref name="inlinemediaobject"/>
+      
+      <ref name="local.inlineobj.char.class"/>
+    </choice>
+  </define>
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+  <define name="formalobject.title.content">
+    <ref name="title"/>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+  </define>
+
+<!-- Redeclaration placeholder ............................................ -->
+<!-- For redeclaring entities that are declared after this point while
+     retaining their references to the entities that are declared before
+     this point -->
+<!-- Object-level mixtures ................................................ -->
+<!--
+                      list admn line synp para infm form cmpd gen  desc
+Component mixture       X    X    X    X    X    X    X    X    X    X
+Sidebar mixture         X    X    X    X    X    X    X    a    X
+Footnote mixture        X         X    X    X    X
+Example mixture         X         X    X    X    X
+Highlights mixture      X    X              X
+Paragraph mixture       X         X    X         X
+Admonition mixture      X         X    X    X    X    X    b    c
+Figure mixture                    X    X         X
+Table entry mixture     X    X    X         X    d
+Glossary def mixture    X         X    X    X    X         e
+Legal notice mixture    X    X    X         X    f
+
+a. Just Procedure; not Sidebar itself or MsgSet.
+b. No MsgSet.
+c. No Highlights.
+d. Just Graphic; no other informal objects.
+e. No Anchor, BridgeHead, or Highlights.
+f. Just BlockQuote; no other informal objects.
+-->
+
+  <define name="local.component.mix">
+    <notAllowed/>
+  </define>
+  <define name="component.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="compound.class"/>
+      
+      <ref name="descobj.class"/>
+      
+      
+      <ref name="local.component.mix"/>
+    </choice>
+  </define>
+  <define name="local.sidebar.mix">
+    <notAllowed/>
+  </define>
+  <define name="sidebar.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      
+      
+      
+      
+      <ref name="local.sidebar.mix"/>
+    </choice>
+  </define>
+  <define name="local.qandaset.mix">
+    <notAllowed/>
+  </define>
+  <define name="qandaset.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      
+      
+      
+      <ref name="local.qandaset.mix"/>
+    </choice>
+  </define>
+  <define name="local.revdescription.mix">
+    <notAllowed/>
+  </define>
+  <define name="revdescription.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      
+      
+      
+      <ref name="local.revdescription.mix"/>
+    </choice>
+  </define>
+  <define name="local.footnote.mix">
+    <notAllowed/>
+  </define>
+  <define name="footnote.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="local.footnote.mix"/>
+    </choice>
+  </define>
+  <define name="local.example.mix">
+    <notAllowed/>
+  </define>
+  <define name="example.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      
+      
+      <ref name="local.example.mix"/>
+    </choice>
+  </define>
+  
+  
+
+<!-- %formal.class; is explicitly excluded from many contexts in which
+     paragraphs are used -->
+
+  <define name="local.para.mix">
+    <notAllowed/>
+  </define>
+  <define name="para.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="local.para.mix"/>
+    </choice>
+  </define>
+  <define name="local.admon.mix">
+    <notAllowed/>
+  </define>
+  <define name="admon.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      
+      <ref name="sidebar"/>
+      
+      
+      
+      
+      
+      <ref name="local.admon.mix"/>
+    </choice>
+  </define>
+  <define name="local.figure.mix">
+    <notAllowed/>
+  </define>
+  <define name="figure.mix">
+    <choice>
+      <ref name="linespecific.class"/>
+      
+      <ref name="informal.class"/>
+      
+      
+      <ref name="local.figure.mix"/>
+    </choice>
+  </define>
+  <define name="local.tabentry.mix">
+    <notAllowed/>
+  </define>
+  <define name="tabentry.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="para.class"/>
+      
+      <ref name="mediaobject"/>
+      <ref name="local.tabentry.mix"/>
+    </choice>
+  </define>
+  
+  
+  <define name="local.legalnotice.mix">
+    <notAllowed/>
+  </define>
+  <define name="legalnotice.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="para.class"/>
+      <ref name="blockquote"/>
+      
+      
+      <ref name="local.legalnotice.mix"/>
+    </choice>
+  </define>
+  <define name="local.textobject.mix">
+    <notAllowed/>
+  </define>
+  <define name="textobject.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="para.class"/>
+      <ref name="blockquote"/>
+      <ref name="local.textobject.mix"/>
+    </choice>
+  </define>
+  <define name="local.mediaobject.mix">
+    <notAllowed/>
+  </define>
+  <define name="mediaobject.mix">
+    <choice>
+      <ref name="videoobject"/>
+      <ref name="audioobject"/>
+      <ref name="imageobject"/>
+      <ref name="textobject"/>
+      <ref name="local.mediaobject.mix"/>
+    </choice>
+  </define>
+  <define name="local.listpreamble.mix">
+    <notAllowed/>
+  </define>
+  <define name="listpreamble.mix">
+    <choice>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      
+      <ref name="descobj.class"/>
+      
+      
+      <ref name="local.listpreamble.mix"/>
+    </choice>
+  </define>
+
+<!-- Character-level mixtures ............................................. -->
+
+<div db:name="sgml.features" db:declare="no">
+  <db:parameter-entity-declaration name="local.ubiq.mix" value=""/>
+
+  <db:parameter-entity-declaration name="ubiq.mix" value="%ndxterm.class;|beginpage %local.ubiq.mix;"/>
+
+  <db:parameter-entity-declaration name="ubiq.exclusion" value="-(%ubiq.mix)"/>
+
+  <db:parameter-entity-declaration name="ubiq.inclusion" value="+(%ubiq.mix)"/>
+
+  <db:parameter-entity-declaration name="footnote.exclusion" value="-(footnote|%formal.class;)"/>
+
+  <db:parameter-entity-declaration name="highlights.exclusion" value="-(%ubiq.mix;|%formal.class;)"/>
+
+  <db:parameter-entity-declaration name="admon.exclusion" value="-(%admon.class;)"/>
+
+  <db:parameter-entity-declaration name="formal.exclusion" value="-(%formal.class;)"/>
+
+  <db:parameter-entity-declaration name="acronym.exclusion" value="-(acronym)"/>
+
+  <db:parameter-entity-declaration name="beginpage.exclusion" value="-(beginpage)"/>
+
+  <db:parameter-entity-declaration name="ndxterm.exclusion" value="-(%ndxterm.class;)"/>
+
+  <db:parameter-entity-declaration name="blockquote.exclusion" value="-(epigraph)"/>
+
+  <db:parameter-entity-declaration name="remark.exclusion" value="-(remark|%ubiq.mix;)"/>
+
+  <db:parameter-entity-declaration name="glossterm.exclusion" value="-(glossterm)"/>
+
+  <db:parameter-entity-declaration name="links.exclusion" value="-(link|olink|ulink|xref)"/>
+</div>
+
+<db:parameter-entity-declaration name="local.ubiq.mix" value=""/>
+
+<db:parameter-entity-declaration name="ubiq.mix" value=""/>
+
+<db:parameter-entity-declaration name="ubiq.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="ubiq.inclusion" value=""/>
+
+<db:parameter-entity-declaration name="footnote.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="highlights.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="admon.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="formal.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="acronym.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="beginpage.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="ndxterm.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="blockquote.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="remark.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="glossterm.exclusion" value=""/>
+
+<db:parameter-entity-declaration name="links.exclusion" value=""/>
+
+<!--
+                    #PCD xref word link cptr base dnfo othr inob (synop)
+para.char.mix         X    X    X    X    X    X    X    X    X
+title.char.mix        X    X    X    X    X    X    X    X    X
+ndxterm.char.mix      X    X    X    X    X    X    X    X    a
+cptr.char.mix         X              X    X    X         X    a
+smallcptr.char.mix    X                   b                   a
+word.char.mix         X         c    X         X         X    a
+docinfo.char.mix      X         d    X    b              X    a
+
+a. Just InlineGraphic; no InlineEquation.
+b. Just Replaceable; no other computer terms.
+c. Just Emphasis and Trademark; no other word elements.
+d. Just Acronym, Emphasis, and Trademark; no other word elements.
+-->
+<!-- The DocBook TC may produce an official forms module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+
+  <define name="forminlines.hook">
+    <notAllowed/>
+  </define>
+
+  <define name="local.para.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="para.char.mix">
+    <choice>
+      <text/>
+      <ref name="xref.char.class"/>
+      <ref name="gen.char.class"/>
+      <ref name="link.char.class"/>
+      <ref name="tech.char.class"/>
+      
+      <ref name="docinfo.char.class"/>
+      
+      <ref name="inlineobj.char.class"/>
+      
+      
+      
+      <ref name="forminlines.hook"/>
+      <ref name="local.para.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.title.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="title.char.mix">
+    <choice>
+      <text/>
+      <ref name="xref.char.class"/>
+      <ref name="gen.char.class"/>
+      <ref name="link.char.class"/>
+      <ref name="tech.char.class"/>
+      
+      <ref name="docinfo.char.class"/>
+      
+      <ref name="inlineobj.char.class"/>
+      
+      <ref name="local.title.char.mix"/>
+    </choice>
+  </define>
+  
+  
+  <define name="local.cptr.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="cptr.char.mix">
+    <choice>
+      <text/>
+      <ref name="link.char.class"/>
+      <ref name="tech.char.class"/>
+      
+      
+      
+      <ref name="inlinemediaobject"/>
+      
+      
+      <ref name="local.cptr.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.smallcptr.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="smallcptr.char.mix">
+    <choice>
+      <text/>
+      <ref name="replaceable"/>
+      
+      <ref name="inlinemediaobject"/>
+      
+      
+      <ref name="local.smallcptr.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.word.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="word.char.mix">
+    <choice>
+      <text/>
+      <ref name="acronym"/>
+      <ref name="emphasis"/>
+      <ref name="trademark"/>
+      <ref name="link.char.class"/>
+      
+      
+      
+      <ref name="inlinemediaobject"/>
+      
+      
+      <ref name="local.word.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.docinfo.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="docinfo.char.mix">
+    <choice>
+      <text/>
+      <ref name="link.char.class"/>
+      <ref name="emphasis"/>
+      <ref name="trademark"/>
+      <ref name="replaceable"/>
+      
+      
+      <ref name="inlinemediaobject"/>
+      
+      <ref name="local.docinfo.char.mix"/>
+    </choice>
+  </define>
+
+<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)-->
+<!--ENTITY % person.ident.mix (see Bibliographic section, below)-->
+<!-- ...................................................................... -->
+<!-- Entities for attributes and attribute components ..................... -->
+<!-- Effectivity attributes ............................................... -->
+<!-- Arch: Computer or chip architecture to which element applies; no
+       default -->
+
+  <define name="arch.attrib">
+    <optional>
+      <attribute name="arch"/>
+    </optional>
+  </define>
+
+<!-- Condition: General-purpose effectivity attribute -->
+
+  <define name="condition.attrib">
+    <optional>
+      <attribute name="condition"/>
+    </optional>
+  </define>
+
+<!-- Conformance: Standards conformance characteristics -->
+
+  <define name="conformance.attrib">
+    <optional>
+      <attribute name="conformance">
+        <data type="NMTOKENS"/>
+      </attribute>
+    </optional>
+  </define>
+
+<!-- OS: Operating system to which element applies; no default -->
+
+  <define name="os.attrib">
+    <optional>
+      <attribute name="os"/>
+    </optional>
+  </define>
+
+<!-- Revision: Editorial revision to which element belongs; no default -->
+
+  <define name="revision.attrib">
+    <optional>
+      <attribute name="revision"/>
+    </optional>
+  </define>
+
+<!-- Security: Security classification; no default -->
+
+  <define name="security.attrib">
+    <optional>
+      <attribute name="security"/>
+    </optional>
+  </define>
+
+<!-- UserLevel: Level of user experience to which element applies; no
+       default -->
+
+  <define name="userlevel.attrib">
+    <optional>
+      <attribute name="userlevel"/>
+    </optional>
+  </define>
+
+<!-- Vendor: Computer vendor to which element applies; no default -->
+
+  <define name="vendor.attrib">
+    <optional>
+      <attribute name="vendor"/>
+    </optional>
+  </define>
+  <define name="local.effectivity.attrib">
+    <empty/>
+  </define>
+  <define name="effectivity.attrib">
+    <ref name="arch.attrib"/>
+    <ref name="condition.attrib"/>
+    <ref name="conformance.attrib"/>
+    <ref name="os.attrib"/>
+    <ref name="revision.attrib"/>
+    <ref name="security.attrib"/>
+    <ref name="userlevel.attrib"/>
+    <ref name="vendor.attrib"/>
+    <ref name="local.effectivity.attrib"/>
+  </define>
+
+<!-- Common attributes .................................................... -->
+<!-- Id: Unique identifier of element; no default -->
+
+  <define name="id.attrib">
+    <optional>
+      <attribute name="id">
+        <data type="ID"/>
+      </attribute>
+    </optional>
+  </define>
+
+<!-- Id: Unique identifier of element; a value must be supplied; no
+       default -->
+
+  
+
+<!-- Lang: Indicator of language in which element is written, for
+       translation, character set management, etc.; no default -->
+
+  <define name="lang.attrib">
+    <optional>
+      <attribute name="lang"/>
+    </optional>
+  </define>
+
+<!-- Remap: Previous role of element before conversion; no default -->
+
+  <define name="remap.attrib">
+    <optional>
+      <attribute name="remap"/>
+    </optional>
+  </define>
+
+<!-- Role: New role of element in local environment; no default -->
+
+  <define name="role.attrib">
+    <optional>
+      <attribute name="role"/>
+    </optional>
+  </define>
+
+<!-- XRefLabel: Alternate labeling string for XRef text generation;
+       default is usually title or other appropriate label text already
+       contained in element -->
+
+  <define name="xreflabel.attrib">
+    <optional>
+      <attribute name="xreflabel"/>
+    </optional>
+  </define>
+
+<!-- xml:base: Sets the base URI of the current element, as per
+       http://www.w3.org/TR/xmlbase/ -->
+
+  <define name="xml.base.attrib">
+    <optional>
+      <attribute name="xml:base"/>
+    </optional>
+  </define>
+
+<!-- RevisionFlag: Revision status of element; default is that element
+       wasn't revised -->
+
+  <define name="revisionflag.attrib">
+    <optional>
+      <attribute name="revisionflag">
+        <choice>
+          <value>changed</value>
+          <value>added</value>
+          <value>deleted</value>
+          <value>off</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="local.common.attrib">
+    <empty/>
+  </define>
+
+<!-- Role is included explicitly on each element -->
+
+  <define name="common.attrib">
+    <ref name="id.attrib"/>
+    <ref name="lang.attrib"/>
+    <ref name="remap.attrib"/>
+    <ref name="xreflabel.attrib"/>
+    <ref name="revisionflag.attrib"/>
+    <ref name="effectivity.attrib"/>
+    <ref name="xml.base.attrib"/>
+    <ref name="local.common.attrib"/>
+  </define>
+
+<!-- Role is included explicitly on each element -->
+
+  
+
+<!-- Semi-common attributes and other attribute entities .................. -->
+
+  
+
+<!-- EntityRef: Name of an external entity containing the content
+       of the graphic -->
+<!-- FileRef: Filename, qualified by a pathname if desired,
+       designating the file containing the content of the graphic -->
+<!-- Format: Notation of the element content, if any -->
+<!-- SrcCredit: Information about the source of the Graphic -->
+<!-- Width: Same as CALS reprowid (desired width) -->
+<!-- Depth: Same as CALS reprodep (desired depth) -->
+<!-- Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+       application-specific -->
+<!-- Scale: Conflation of CALS hscale and vscale -->
+<!-- Scalefit: Same as CALS scalefit -->
+
+  
+  
+
+<!-- Action: Key combination type; default is unspecified if one
+       child element, Simul if there is more than one; if value is
+       Other, the OtherAction attribute must have a nonempty value -->
+<!-- OtherAction: User-defined key combination type -->
+
+  
+
+<!-- Label: Identifying number or string; default is usually the
+       appropriate number or string autogenerated by a formatter -->
+
+  <define name="label.attrib">
+    <optional>
+      <attribute name="label"/>
+    </optional>
+  </define>
+
+<!-- Format: whether element is assumed to contain significant white
+       space -->
+
+  <define name="linespecific.attrib">
+    <optional>
+      <attribute name="format" a:defaultValue="linespecific">
+        <choice>
+          <value>linespecific</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="linenumbering">
+        <choice>
+          <value>numbered</value>
+          <value>unnumbered</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+
+<!-- Linkend: link to related information; no default -->
+
+  
+
+<!-- Linkend: required link to related information -->
+
+  <define name="linkendreq.attrib">
+    <attribute name="linkend">
+      <data type="IDREF"/>
+    </attribute>
+  </define>
+
+<!-- Linkends: link to one or more sets of related information; no
+       default -->
+
+  
+  <define name="local.mark.attrib">
+    <empty/>
+  </define>
+  <define name="mark.attrib">
+    <optional>
+      <attribute name="mark"/>
+    </optional>
+    <ref name="local.mark.attrib"/>
+  </define>
+
+<!-- MoreInfo: whether element's content has an associated RefEntry -->
+
+  <define name="moreinfo.attrib">
+    <optional>
+      <attribute name="moreinfo" a:defaultValue="none">
+        <choice>
+          <value>refentry</value>
+          <value>none</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+
+<!-- Pagenum: number of page on which element appears; no default -->
+
+  <define name="pagenum.attrib">
+    <optional>
+      <attribute name="pagenum"/>
+    </optional>
+  </define>
+  <define name="local.status.attrib">
+    <empty/>
+  </define>
+
+<!-- Status: Editorial or publication status of the element
+       it applies to, such as "in review" or "approved for distribution" -->
+
+  <define name="status.attrib">
+    <optional>
+      <attribute name="status"/>
+    </optional>
+    <ref name="local.status.attrib"/>
+  </define>
+
+<!-- Width: width of the longest line in the element to which it
+       pertains, in number of characters -->
+
+  <define name="width.attrib">
+    <optional>
+      <attribute name="width"/>
+    </optional>
+  </define>
+
+<!-- ...................................................................... -->
+<!-- Title elements ....................................................... -->
+
+  <div db:name="title.module">
+    <define name="local.title.attrib">
+      <empty/>
+    </define>
+    <define name="title.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="title">
+      <define name="title">
+        <element name="title">
+          <ref name="title.attlist"/>
+          <zeroOrMore>
+            <ref name="title.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="title.attlist">
+      <define name="title.attlist" combine="interleave">
+        <ref name="pagenum.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="title.role.attrib"/>
+        <ref name="local.title.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="titleabbrev.module">
+    <define name="local.titleabbrev.attrib">
+      <empty/>
+    </define>
+    <define name="titleabbrev.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="titleabbrev">
+      <define name="titleabbrev">
+        <element name="titleabbrev">
+          <ref name="titleabbrev.attlist"/>
+          <zeroOrMore>
+            <ref name="title.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="titleabbrev.attlist">
+      <define name="titleabbrev.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="titleabbrev.role.attrib"/>
+        <ref name="local.titleabbrev.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="subtitle.module">
+    <define name="local.subtitle.attrib">
+      <empty/>
+    </define>
+    <define name="subtitle.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="subtitle">
+      <define name="subtitle">
+        <element name="subtitle">
+          <ref name="subtitle.attlist"/>
+          <zeroOrMore>
+            <ref name="title.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="subtitle.attlist">
+      <define name="subtitle.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="subtitle.role.attrib"/>
+        <ref name="local.subtitle.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- ...................................................................... -->
+<!-- Bibliographic entities and elements .................................. -->
+<!-- The bibliographic elements are typically used in the document
+     hierarchy. They do not appear in content models of information
+     pool elements.  See also the document information elements,
+     below. -->
+
+  <define name="local.person.ident.mix">
+    <notAllowed/>
+  </define>
+  <define name="person.ident.mix">
+    <choice>
+      <ref name="honorific"/>
+      <ref name="firstname"/>
+      <ref name="surname"/>
+      <ref name="lineage"/>
+      <ref name="othername"/>
+      <ref name="affiliation"/>
+      <ref name="authorblurb"/>
+      
+      <ref name="local.person.ident.mix"/>
+    </choice>
+  </define>
+  <define name="local.bibliocomponent.mix">
+    <notAllowed/>
+  </define>
+  <define name="bibliocomponent.mix">
+    <choice>
+      <ref name="abbrev"/>
+      <ref name="abstract"/>
+      
+      
+      <ref name="author"/>
+      <ref name="authorgroup"/>
+      <ref name="authorinitials"/>
+      <ref name="bibliomisc"/>
+      
+      
+      
+      
+      
+      <ref name="copyright"/>
+      <ref name="corpauthor"/>
+      
+      <ref name="date"/>
+      <ref name="edition"/>
+      <ref name="editor"/>
+      
+      
+      
+      <ref name="issuenum"/>
+      <ref name="orgname"/>
+      
+      
+      
+      
+      
+      <ref name="othercredit"/>
+      
+      
+      
+      
+      <ref name="pubdate"/>
+      
+      <ref name="publishername"/>
+      
+      <ref name="releaseinfo"/>
+      <ref name="revhistory"/>
+      
+      <ref name="subtitle"/>
+      <ref name="title"/>
+      <ref name="titleabbrev"/>
+      <ref name="volumenum"/>
+      <ref name="citetitle"/>
+      
+      <ref name="person.ident.mix"/>
+      
+      <ref name="local.bibliocomponent.mix"/>
+    </choice>
+  </define>
+
+<!-- I don't think this is well placed, but it needs to be here because of -->
+<!-- the reference to bibliocomponent.mix -->
+
+  <define name="local.info.class">
+    <notAllowed/>
+  </define>
+  <define name="info.class">
+    <choice>
+      
+      <ref name="mediaobject"/>
+      <ref name="legalnotice"/>
+      
+      <ref name="subjectset"/>
+      <ref name="keywordset"/>
+      
+      <ref name="bibliocomponent.mix"/>
+      <ref name="local.info.class"/>
+    </choice>
+  </define>
+
+  
+
+  <div db:name="bibliomixed.module">
+    <define name="local.bibliomixed.attrib">
+      <empty/>
+    </define>
+    <define name="bibliomixed.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="bibliomixed">
+      <define name="bibliomixed">
+        <element name="bibliomixed">
+          <ref name="bibliomixed.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <text/>
+              <ref name="bibliocomponent.mix"/>
+              <ref name="bibliomset"/>
+            </choice>
+          </zeroOrMore>
+          <s:assert test="count(.//indexterm) = 0">&lt;bibliomixed&gt; contains &lt;indexterm&gt;</s:assert>
+          <s:assert test="count(.//beginpage) = 0">&lt;bibliomixed&gt; contains &lt;beginpage&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="bibliomixed.attlist">
+      <define name="bibliomixed.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="bibliomixed.role.attrib"/>
+        <ref name="local.bibliomixed.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="articleinfo.module">
+    <define name="local.articleinfo.attrib">
+      <empty/>
+    </define>
+    <define name="articleinfo.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="articleinfo">
+      <define name="articleinfo">
+        <element name="articleinfo">
+          <ref name="articleinfo.attlist"/>
+          <oneOrMore>
+            <ref name="info.class"/>
+          </oneOrMore>
+          <s:assert test="count(title) &lt; 2">&lt;articleinfo&gt; contains more than one &lt;title&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="articleinfo.attlist">
+      <define name="articleinfo.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="articleinfo.role.attrib"/>
+        <ref name="local.articleinfo.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+  <define name="bibliomset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+
+  <div db:name="bibliomset.module">
+    <define name="local.bibliomset.attrib">
+      <empty/>
+    </define>
+
+    <div db:name="bibliomset">
+      <define name="bibliomset">
+        <element name="bibliomset">
+          <ref name="bibliomset.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <text/>
+              <ref name="bibliocomponent.mix"/>
+              <ref name="bibliomset"/>
+            </choice>
+          </zeroOrMore>
+          <s:assert test="count(.//indexterm) = 0">&lt;bibliomset&gt; contains &lt;indexterm&gt;</s:assert>
+          <s:assert test="count(.//beginpage) = 0">&lt;bibliomset&gt; contains &lt;beginpage&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+<!-- Relation: Relationship of elements contained within BiblioMSet -->
+
+    <div db:name="bibliomset.attlist">
+      <define name="bibliomset.attlist" combine="interleave">
+        <optional>
+          <attribute name="relation"/>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="bibliomset.role.attrib"/>
+        <ref name="local.bibliomset.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="bibliomisc.module">
+    <define name="local.bibliomisc.attrib">
+      <empty/>
+    </define>
+    <define name="bibliomisc.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="bibliomisc">
+      <define name="bibliomisc">
+        <element name="bibliomisc">
+          <ref name="bibliomisc.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="bibliomisc.attlist">
+      <define name="bibliomisc.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="bibliomisc.role.attrib"/>
+        <ref name="local.bibliomisc.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- ...................................................................... -->
+<!-- Subject, Keyword, and ITermSet elements .............................. -->
+
+  <div db:name="subjectset.content.module">
+
+    <div db:name="subjectset.module">
+      <define name="local.subjectset.attrib">
+        <empty/>
+      </define>
+      <define name="subjectset.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="subjectset">
+        <define name="subjectset">
+          <element name="subjectset">
+            <ref name="subjectset.attlist"/>
+            <oneOrMore>
+              <ref name="subject"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+<!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+
+      <div db:name="subjectset.attlist">
+        <define name="subjectset.attlist" combine="interleave">
+          <optional>
+            <attribute name="scheme">
+              <data type="NMTOKEN"/>
+            </attribute>
+          </optional>
+          <ref name="common.attrib"/>
+          <ref name="subjectset.role.attrib"/>
+          <ref name="local.subjectset.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="subject.module">
+      <define name="local.subject.attrib">
+        <empty/>
+      </define>
+      <define name="subject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="subject">
+        <define name="subject">
+          <element name="subject">
+            <ref name="subject.attlist"/>
+            <oneOrMore>
+              <ref name="subjectterm"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+<!-- Weight: Ranking of this group of SubjectTerms relative
+               to others, 0 is low, no highest value specified -->
+
+      <div db:name="subject.attlist">
+        <define name="subject.attlist" combine="interleave">
+          <optional>
+            <attribute name="weight"/>
+          </optional>
+          <ref name="common.attrib"/>
+          <ref name="subject.role.attrib"/>
+          <ref name="local.subject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="subjectterm.module">
+      <define name="local.subjectterm.attrib">
+        <empty/>
+      </define>
+      <define name="subjectterm.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="subjectterm">
+        <define name="subjectterm">
+          <element name="subjectterm">
+            <ref name="subjectterm.attlist"/>
+            <text/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="subjectterm.attlist">
+        <define name="subjectterm.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="subjectterm.role.attrib"/>
+          <ref name="local.subjectterm.attrib"/>
+        </define>
+      </div>
+    </div>
+  </div>
+
+  <div db:name="keywordset.content.module">
+
+    <div db:name="keywordset.module">
+      <define name="local.keywordset.attrib">
+        <empty/>
+      </define>
+      <define name="keywordset.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="keywordset">
+        <define name="keywordset">
+          <element name="keywordset">
+            <ref name="keywordset.attlist"/>
+            <oneOrMore>
+              <ref name="keyword"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="keywordset.attlist">
+        <define name="keywordset.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="keywordset.role.attrib"/>
+          <ref name="local.keywordset.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="keyword.module">
+      <define name="local.keyword.attrib">
+        <empty/>
+      </define>
+      <define name="keyword.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="keyword">
+        <define name="keyword">
+          <element name="keyword">
+            <ref name="keyword.attlist"/>
+            <text/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="keyword.attlist">
+        <define name="keyword.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="keyword.role.attrib"/>
+          <ref name="local.keyword.attrib"/>
+        </define>
+      </div>
+    </div>
+  </div>
+
+  
+
+<!-- Bibliographic info for "blocks" -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Compound (section-ish) elements ...................................... -->
+<!-- Message set ...................... -->
+
+  
+
+<!-- QandASet ........................ -->
+
+  <div db:name="qandaset.content.module">
+
+    <div db:name="qandaset.module">
+      <define name="local.qandaset.attrib">
+        <empty/>
+      </define>
+      <define name="qandaset.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="qandaset">
+        <define name="qandaset">
+          <element name="qandaset">
+            <ref name="qandaset.attlist"/>
+            
+            <optional>
+              <ref name="formalobject.title.content"/>
+            </optional>
+            <zeroOrMore>
+              <ref name="qandaset.mix"/>
+            </zeroOrMore>
+            
+          </element>
+        </define>
+      </div>
+
+      <div db:name="qandaset.attlist">
+        <define name="qandaset.attlist" combine="interleave">
+          <optional>
+            <attribute name="defaultlabel">
+              <choice>
+                <value>qanda</value>
+                <value>number</value>
+                <value>none</value>
+              </choice>
+            </attribute>
+          </optional>
+          <ref name="common.attrib"/>
+          <ref name="qandaset.role.attrib"/>
+          <ref name="local.qandaset.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    
+
+    
+
+    
+
+    
+
+    
+  </div>
+
+<!-- Procedure ........................ -->
+
+  
+
+<!-- Sidebar .......................... -->
+
+  
+
+  <div db:name="sidebar.module">
+    <define name="local.sidebar.attrib">
+      <empty/>
+    </define>
+    <define name="sidebar.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="sidebar">
+      <define name="sidebar">
+        <element name="sidebar">
+          <ref name="sidebar.attlist"/>
+          
+          <optional>
+            <ref name="formalobject.title.content"/>
+          </optional>
+          <oneOrMore>
+            <ref name="sidebar.mix"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="sidebar.attlist">
+      <define name="sidebar.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="sidebar.role.attrib"/>
+        <ref name="local.sidebar.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!--end of sidebar.content.model-->
+<!-- ...................................................................... -->
+<!-- Paragraph-related elements ........................................... -->
+
+  <div db:name="abstract.module">
+    <define name="local.abstract.attrib">
+      <empty/>
+    </define>
+    <define name="abstract.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="abstract">
+      <define name="abstract">
+        <element name="abstract">
+          <ref name="abstract.attlist"/>
+          <optional>
+            <ref name="title"/>
+          </optional>
+          <oneOrMore>
+            <ref name="para.class"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="abstract.attlist">
+      <define name="abstract.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="abstract.role.attrib"/>
+        <ref name="local.abstract.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="authorblurb.module">
+    <define name="local.authorblurb.attrib">
+      <empty/>
+    </define>
+    <define name="authorblurb.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="authorblurb">
+      <define name="authorblurb">
+        <element name="authorblurb">
+          <ref name="authorblurb.attlist"/>
+          <optional>
+            <ref name="title"/>
+          </optional>
+          <oneOrMore>
+            <ref name="para.class"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="authorblurb.attlist">
+      <define name="authorblurb.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="authorblurb.role.attrib"/>
+        <ref name="local.authorblurb.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  <div db:name="blockquote.module">
+    <define name="local.blockquote.attrib">
+      <empty/>
+    </define>
+    <define name="blockquote.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="blockquote">
+      <define name="blockquote">
+        <element name="blockquote">
+          <ref name="blockquote.attlist"/>
+          
+          <optional>
+            <ref name="title"/>
+          </optional>
+          <optional>
+            <ref name="attribution"/>
+          </optional>
+          <oneOrMore>
+            <ref name="component.mix"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="blockquote.attlist">
+      <define name="blockquote.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="blockquote.role.attrib"/>
+        <ref name="local.blockquote.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="attribution.module">
+    <define name="local.attribution.attrib">
+      <empty/>
+    </define>
+    <define name="attribution.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="attribution">
+      <define name="attribution">
+        <element name="attribution">
+          <ref name="attribution.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="attribution.attlist">
+      <define name="attribution.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="attribution.role.attrib"/>
+        <ref name="local.attribution.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  <div db:name="epigraph.module">
+    <define name="local.epigraph.attrib">
+      <empty/>
+    </define>
+    <define name="epigraph.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="epigraph">
+      <define name="epigraph">
+        <element name="epigraph">
+          <ref name="epigraph.attlist"/>
+          <optional>
+            <ref name="attribution"/>
+          </optional>
+          <oneOrMore>
+            <choice>
+              <ref name="para.class"/>
+              <ref name="literallayout"/>
+            </choice>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="epigraph.attlist">
+      <define name="epigraph.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="epigraph.role.attrib"/>
+        <ref name="local.epigraph.attrib"/>
+      </define>
+    </div>
+
+<!-- Attribution (defined above)-->
+
+  </div>
+
+  <div db:name="footnote.module">
+    <define name="local.footnote.attrib">
+      <empty/>
+    </define>
+    <define name="footnote.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="footnote">
+      <define name="footnote">
+        <element name="footnote">
+          <ref name="footnote.attlist"/>
+          <oneOrMore>
+            <ref name="footnote.mix"/>
+          </oneOrMore>
+          <s:assert test="count(.//footnote) = 0">Nested footnotes</s:assert>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="footnote.attlist">
+      <define name="footnote.attlist" combine="interleave">
+        <ref name="label.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="footnote.role.attrib"/>
+        <ref name="local.footnote.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  <div db:name="para.module">
+    <define name="local.para.attrib">
+      <empty/>
+    </define>
+    <define name="para.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="para">
+      <define name="para">
+        <element name="para">
+          <ref name="para.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="para.char.mix"/>
+              <ref name="para.mix"/>
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="para.attlist">
+      <define name="para.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="para.role.attrib"/>
+        <ref name="local.para.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  <div db:name="admon.module">
+    <define name="local.admon.attrib">
+      <empty/>
+    </define>
+    <define name="admon.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    
+
+    
+
+    
+
+    
+
+    <div db:name="note">
+      <define name="note">
+        <element name="note">
+          <ref name="note.attlist"/>
+          <optional>
+            <ref name="title"/>
+          </optional>
+          <oneOrMore>
+            <ref name="admon.mix"/>
+          </oneOrMore>
+          <s:assert test="count(.//caution) = 0">&lt;note&gt; contains &lt;caution&gt;</s:assert>
+          <s:assert test="count(.//important) = 0">&lt;note&gt; contains &lt;important&gt;</s:assert>
+          <s:assert test="count(.//note) = 0">&lt;note&gt; contains &lt;note&gt;</s:assert>
+          <s:assert test="count(.//tip) = 0">&lt;note&gt; contains &lt;tip&gt;</s:assert>
+          <s:assert test="count(.//warning) = 0">&lt;note&gt; contains &lt;warning&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="note.attlist">
+      <define name="note.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="admon.role.attrib"/>
+        <ref name="local.admon.attrib"/>
+      </define>
+    </div>
+
+    
+
+    
+
+    
+
+    
+  </div>
+
+<!-- ...................................................................... -->
+<!-- Lists ................................................................ -->
+<!-- GlossList ........................ -->
+
+  
+
+  
+
+<!-- ItemizedList and OrderedList ..... -->
+
+  <div db:name="itemizedlist.module">
+    <define name="local.itemizedlist.attrib">
+      <empty/>
+    </define>
+    <define name="itemizedlist.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="itemizedlist">
+      <define name="itemizedlist">
+        <element name="itemizedlist">
+          <ref name="itemizedlist.attlist"/>
+          
+          <optional>
+            <ref name="formalobject.title.content"/>
+          </optional>
+          <zeroOrMore>
+            <ref name="listpreamble.mix"/>
+          </zeroOrMore>
+          <oneOrMore>
+            <ref name="listitem"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Spacing: Whether the vertical space in the list should be
+               compressed -->
+<!-- Mark: Keyword, e.g., bullet, dash, checkbox, none;
+               list of keywords and defaults are implementation specific -->
+
+    <div db:name="itemizedlist.attlist">
+      <define name="itemizedlist.attlist" combine="interleave">
+        <optional>
+          <attribute name="spacing">
+            <choice>
+              <value>normal</value>
+              <value>compact</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="mark.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="itemizedlist.role.attrib"/>
+        <ref name="local.itemizedlist.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="orderedlist.module">
+    <define name="local.orderedlist.attrib">
+      <empty/>
+    </define>
+    <define name="orderedlist.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="orderedlist">
+      <define name="orderedlist">
+        <element name="orderedlist">
+          <ref name="orderedlist.attlist"/>
+          
+          <optional>
+            <ref name="formalobject.title.content"/>
+          </optional>
+          <zeroOrMore>
+            <ref name="listpreamble.mix"/>
+          </zeroOrMore>
+          <oneOrMore>
+            <ref name="listitem"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Numeration: Style of ListItem numbered; default is expected
+               to be Arabic -->
+<!-- InheritNum: Specifies for a nested list that the numbering
+               of ListItems should include the number of the item
+               within which they are nested (e.g., 1a and 1b within 1,
+               rather than a and b) -->
+<!-- Continuation: Where list numbering begins afresh (Restarts,
+               the default) or continues that of the immediately preceding
+               list (Continues) -->
+<!-- Spacing: Whether the vertical space in the list should be
+               compressed -->
+
+    <div db:name="orderedlist.attlist">
+      <define name="orderedlist.attlist" combine="interleave">
+        <optional>
+          <attribute name="numeration">
+            <choice>
+              <value>arabic</value>
+              <value>upperalpha</value>
+              <value>loweralpha</value>
+              <value>upperroman</value>
+              <value>lowerroman</value>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="inheritnum" a:defaultValue="ignore">
+            <choice>
+              <value>inherit</value>
+              <value>ignore</value>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="continuation" a:defaultValue="restarts">
+            <choice>
+              <value>continues</value>
+              <value>restarts</value>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="spacing">
+            <choice>
+              <value>normal</value>
+              <value>compact</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="orderedlist.role.attrib"/>
+        <ref name="local.orderedlist.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="listitem.module">
+    <define name="local.listitem.attrib">
+      <empty/>
+    </define>
+    <define name="listitem.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="listitem">
+      <define name="listitem">
+        <element name="listitem">
+          <ref name="listitem.attlist"/>
+          <oneOrMore>
+            <ref name="component.mix"/>
+          </oneOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Override: Indicates the mark to be used for this ListItem
+               instead of the default mark or the mark specified by
+               the Mark attribute on the enclosing ItemizedList -->
+
+    <div db:name="listitem.attlist">
+      <define name="listitem.attlist" combine="interleave">
+        <optional>
+          <attribute name="override"/>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="listitem.role.attrib"/>
+        <ref name="local.listitem.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- SegmentedList .................... -->
+
+  
+
+<!-- SimpleList ....................... -->
+
+  <div db:name="simplelist.content.module">
+
+    <div db:name="simplelist.module">
+      <define name="local.simplelist.attrib">
+        <empty/>
+      </define>
+      <define name="simplelist.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="simplelist">
+        <define name="simplelist">
+          <element name="simplelist">
+            <ref name="simplelist.attlist"/>
+            
+          </element>
+        </define>
+      </div>
+
+<!-- Columns: The number of columns the array should contain -->
+<!-- Type: How the Members of the SimpleList should be
+               formatted: Inline (members separated with commas etc.
+               inline), Vert (top to bottom in n Columns), or Horiz (in
+               the direction of text flow) in n Columns.  If Column
+               is 1 or implied, Type=Vert and Type=Horiz give the same
+               results. -->
+
+      <div db:name="simplelist.attlist">
+        <define name="simplelist.attlist" combine="interleave">
+          <optional>
+            <attribute name="columns"/>
+          </optional>
+          <optional>
+            <attribute name="type" a:defaultValue="vert">
+              <choice>
+                <value>inline</value>
+                <value>vert</value>
+                <value>horiz</value>
+              </choice>
+            </attribute>
+          </optional>
+          <ref name="common.attrib"/>
+          <ref name="simplelist.role.attrib"/>
+          <ref name="local.simplelist.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    
+  </div>
+
+<!-- VariableList ..................... -->
+
+  <div db:name="variablelist.content.module">
+
+    <div db:name="variablelist.module">
+      <define name="local.variablelist.attrib">
+        <empty/>
+      </define>
+      <define name="variablelist.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="variablelist">
+        <define name="variablelist">
+          <element name="variablelist">
+            <ref name="variablelist.attlist"/>
+            
+            <optional>
+              <ref name="formalobject.title.content"/>
+            </optional>
+            <zeroOrMore>
+              <ref name="listpreamble.mix"/>
+            </zeroOrMore>
+            <oneOrMore>
+              <ref name="varlistentry"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+<!-- TermLength: Length beyond which the presentation engine
+               may consider the Term too long and select an alternate
+               presentation of the Term and, or, its associated ListItem. -->
+
+      <div db:name="variablelist.attlist">
+        <define name="variablelist.attlist" combine="interleave">
+          <optional>
+            <attribute name="termlength"/>
+          </optional>
+          <ref name="common.attrib"/>
+          <ref name="variablelist.role.attrib"/>
+          <ref name="local.variablelist.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="varlistentry.module">
+      <define name="local.varlistentry.attrib">
+        <empty/>
+      </define>
+      <define name="varlistentry.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="varlistentry">
+        <define name="varlistentry">
+          <element name="varlistentry">
+            <ref name="varlistentry.attlist"/>
+            <oneOrMore>
+              <ref name="term"/>
+            </oneOrMore>
+            <ref name="listitem"/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="varlistentry.attlist">
+        <define name="varlistentry.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="varlistentry.role.attrib"/>
+          <ref name="local.varlistentry.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="term.module">
+      <define name="local.term.attrib">
+        <empty/>
+      </define>
+      <define name="term.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="term">
+        <define name="term">
+          <element name="term">
+            <ref name="term.attlist"/>
+            <zeroOrMore>
+              <ref name="para.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="term.attlist">
+        <define name="term.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="term.role.attrib"/>
+          <ref name="local.term.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- ListItem (defined above)-->
+
+  </div>
+
+<!-- CalloutList ...................... -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Objects .............................................................. -->
+<!-- Examples etc. .................... -->
+
+  <div db:name="example.module">
+    <define name="local.example.attrib">
+      <empty/>
+    </define>
+    <define name="example.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="example">
+      <define name="example">
+        <element name="example">
+          <ref name="example.attlist"/>
+          
+          <ref name="formalobject.title.content"/>
+          <oneOrMore>
+            <ref name="example.mix"/>
+          </oneOrMore>
+          <s:assert test="count(.//equation/title) = 0">&lt;example&gt; contains &lt;equation&gt;</s:assert>
+          <s:assert test="count(.//example) = 0">&lt;example&gt; contains &lt;example&gt;</s:assert>
+          <s:assert test="count(.//figure) = 0">&lt;example&gt; contains &lt;figure&gt;</s:assert>
+          <s:assert test="count(.//table) = 0">&lt;example&gt; contains &lt;table&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="example.attlist">
+      <define name="example.attlist" combine="interleave">
+        <ref name="label.attrib"/>
+        <ref name="width.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="example.role.attrib"/>
+        <ref name="local.example.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  <div db:name="programlisting.module">
+    <define name="local.programlisting.attrib">
+      <empty/>
+    </define>
+    <define name="programlisting.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="programlisting">
+      <define name="programlisting">
+        <element name="programlisting">
+          <ref name="programlisting.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="para.char.mix"/>
+              
+              
+              <ref name="lineannotation"/>
+              <ref name="textobject"/>
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="programlisting.attlist">
+      <define name="programlisting.attlist" combine="interleave">
+        <ref name="width.attrib"/>
+        <ref name="linespecific.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="programlisting.role.attrib"/>
+        <ref name="local.programlisting.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="literallayout.module">
+    <define name="local.literallayout.attrib">
+      <empty/>
+    </define>
+    <define name="literallayout.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="literallayout">
+      <define name="literallayout">
+        <element name="literallayout">
+          <ref name="literallayout.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="para.char.mix"/>
+              
+              
+              <ref name="textobject"/>
+              <ref name="lineannotation"/>
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="literallayout.attlist">
+      <define name="literallayout.attlist" combine="interleave">
+        <ref name="width.attrib"/>
+        <ref name="linespecific.attrib"/>
+        <optional>
+          <attribute name="class" a:defaultValue="normal">
+            <choice>
+              <value>monospaced</value>
+              <value>normal</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="literallayout.role.attrib"/>
+        <ref name="local.literallayout.attrib"/>
+      </define>
+    </div>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+
+  </div>
+
+  
+
+  
+
+  
+
+<!-- Figures etc. ..................... -->
+
+  <div db:name="figure.module">
+    <define name="local.figure.attrib">
+      <empty/>
+    </define>
+    <define name="figure.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="figure">
+      <define name="figure">
+        <element name="figure">
+          <ref name="figure.attlist"/>
+          
+          <ref name="formalobject.title.content"/>
+          <oneOrMore>
+            <choice>
+              <ref name="figure.mix"/>
+              <ref name="link.char.class"/>
+            </choice>
+          </oneOrMore>
+          <s:assert test="count(.//equation/title) = 0">&lt;figure&gt; contains &lt;equation&gt;</s:assert>
+          <s:assert test="count(.//example) = 0">&lt;figure&gt; contains &lt;example&gt;</s:assert>
+          <s:assert test="count(.//figure) = 0">&lt;figure&gt; contains &lt;figure&gt;</s:assert>
+          <s:assert test="count(.//table) = 0">&lt;figure&gt; contains &lt;table&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+<!-- Float: Whether the Figure is supposed to be rendered
+               where convenient (yes (1) value) or at the place it occurs
+               in the text (no (0) value, the default) -->
+
+    <div db:name="figure.attlist">
+      <define name="figure.attlist" combine="interleave">
+        <optional>
+          <attribute name="float" a:defaultValue="0">
+            <ref name="yesorno.attvals"/>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="floatstyle"/>
+        </optional>
+        <optional>
+          <attribute name="pgwide">
+            <ref name="yesorno.attvals"/>
+          </attribute>
+        </optional>
+        <ref name="label.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="figure.role.attrib"/>
+        <ref name="local.figure.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+<!-- Graphical data can be the content of Graphic, or you can reference
+     an external file either as an entity (Entitref) or a filename
+     (Fileref). -->
+
+  
+
+  
+
+  <div db:name="mediaobject.content.module">
+
+    <div db:name="mediaobject.module">
+      <define name="local.mediaobject.attrib">
+        <empty/>
+      </define>
+      <define name="mediaobject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="mediaobject">
+        <define name="mediaobject">
+          <element name="mediaobject">
+            <ref name="mediaobject.attlist"/>
+            <optional>
+              <ref name="objectinfo"/>
+            </optional>
+            <oneOrMore>
+              <ref name="mediaobject.mix"/>
+            </oneOrMore>
+            <optional>
+              <ref name="caption"/>
+            </optional>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="mediaobject.attlist">
+        <define name="mediaobject.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="mediaobject.role.attrib"/>
+          <ref name="local.mediaobject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="inlinemediaobject.module">
+      <define name="local.inlinemediaobject.attrib">
+        <empty/>
+      </define>
+      <define name="inlinemediaobject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="inlinemediaobject">
+        <define name="inlinemediaobject">
+          <element name="inlinemediaobject">
+            <ref name="inlinemediaobject.attlist"/>
+            <optional>
+              <ref name="objectinfo"/>
+            </optional>
+            <oneOrMore>
+              <ref name="mediaobject.mix"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="inlinemediaobject.attlist">
+        <define name="inlinemediaobject.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="inlinemediaobject.role.attrib"/>
+          <ref name="local.inlinemediaobject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="videoobject.module">
+      <define name="local.videoobject.attrib">
+        <empty/>
+      </define>
+      <define name="videoobject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="videoobject">
+        <define name="videoobject">
+          <element name="videoobject">
+            <ref name="videoobject.attlist"/>
+            <optional>
+              <ref name="objectinfo"/>
+            </optional>
+            <ref name="videodata"/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="videoobject.attlist">
+        <define name="videoobject.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="videoobject.role.attrib"/>
+          <ref name="local.videoobject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="audioobject.module">
+      <define name="local.audioobject.attrib">
+        <empty/>
+      </define>
+      <define name="audioobject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="audioobject">
+        <define name="audioobject">
+          <element name="audioobject">
+            <ref name="audioobject.attlist"/>
+            <optional>
+              <ref name="objectinfo"/>
+            </optional>
+            <ref name="audiodata"/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="audioobject.attlist">
+        <define name="audioobject.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="audioobject.role.attrib"/>
+          <ref name="local.audioobject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <define name="svg.hook">
+      <notAllowed/>
+    </define>
+
+    <div db:name="imageobject.module">
+      <define name="local.imageobject.attrib">
+        <empty/>
+      </define>
+      <define name="imageobject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="imageobject">
+        <define name="imageobject">
+          <element name="imageobject">
+            <ref name="imageobject.attlist"/>
+            <optional>
+              <ref name="objectinfo"/>
+            </optional>
+            <choice>
+              <ref name="imagedata"/>
+              <ref name="svg.hook"/>
+            </choice>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="imageobject.attlist">
+        <define name="imageobject.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="imageobject.role.attrib"/>
+          <ref name="local.imageobject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="textobject.module">
+      <define name="local.textobject.attrib">
+        <empty/>
+      </define>
+      <define name="textobject.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="textobject">
+        <define name="textobject">
+          <element name="textobject">
+            <ref name="textobject.attlist"/>
+            <optional>
+              <ref name="objectinfo"/>
+            </optional>
+            <choice>
+              <ref name="phrase"/>
+              <ref name="textdata"/>
+              <oneOrMore>
+                <ref name="textobject.mix"/>
+              </oneOrMore>
+            </choice>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="textobject.attlist">
+        <define name="textobject.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="textobject.role.attrib"/>
+          <ref name="local.textobject.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="objectinfo.module">
+      <define name="local.objectinfo.attrib">
+        <empty/>
+      </define>
+      <define name="objectinfo.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="objectinfo">
+        <define name="objectinfo">
+          <element name="objectinfo">
+            <ref name="objectinfo.attlist"/>
+            <oneOrMore>
+              <ref name="info.class"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="objectinfo.attlist">
+        <define name="objectinfo.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="objectinfo.role.attrib"/>
+          <ref name="local.objectinfo.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!--EntityRef: Name of an external entity containing the content
+       of the object data-->
+<!--FileRef: Filename, qualified by a pathname if desired,
+       designating the file containing the content of the object data-->
+<!--Format: Notation of the element content, if any-->
+<!--SrcCredit: Information about the source of the image-->
+
+    <div db:name="objectdata.module">
+      <define name="local.objectdata.attrib">
+        <empty/>
+      </define>
+      <define name="objectdata.attrib">
+        <optional>
+          <attribute name="entityref">
+            <data type="ENTITY"/>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="fileref"/>
+        </optional>
+        <optional>
+          <attribute name="format">
+            <choice>
+              <ref name="notation.class"/>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="srccredit"/>
+        </optional>
+        <ref name="local.objectdata.attrib"/>
+      </define>
+    </div>
+
+    <div db:name="videodata.module">
+      <define name="local.videodata.attrib">
+        <empty/>
+      </define>
+      <define name="videodata.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="videodata">
+        <define name="videodata">
+          <element name="videodata">
+            <ref name="videodata.attlist"/>
+            <empty/>
+          </element>
+        </define>
+      </div>
+
+<!--Width: Same as CALS reprowid (desired width)-->
+<!--Depth: Same as CALS reprodep (desired depth)-->
+<!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+       application-specific-->
+<!--Scale: Conflation of CALS hscale and vscale-->
+<!--Scalefit: Same as CALS scalefit-->
+
+      <div db:name="videodata.attlist">
+        <define name="videodata.attlist" combine="interleave">
+          <optional>
+            <attribute name="width"/>
+          </optional>
+          <optional>
+            <attribute name="contentwidth"/>
+          </optional>
+          <optional>
+            <attribute name="depth"/>
+          </optional>
+          <optional>
+            <attribute name="contentdepth"/>
+          </optional>
+          <optional>
+            <attribute name="align">
+              <choice>
+                <value>left</value>
+                <value>right</value>
+                <value>center</value>
+              </choice>
+            </attribute>
+          </optional>
+          <optional>
+            <attribute name="valign">
+              <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+              </choice>
+            </attribute>
+          </optional>
+          <optional>
+            <attribute name="scale"/>
+          </optional>
+          <optional>
+            <attribute name="scalefit">
+              <ref name="yesorno.attvals"/>
+            </attribute>
+          </optional>
+          <ref name="objectdata.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="videodata.role.attrib"/>
+          <ref name="local.videodata.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="audiodata.module">
+      <define name="local.audiodata.attrib">
+        <empty/>
+      </define>
+      <define name="audiodata.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="audiodata">
+        <define name="audiodata">
+          <element name="audiodata">
+            <ref name="audiodata.attlist"/>
+            <empty/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="audiodata.attlist">
+        <define name="audiodata.attlist" combine="interleave">
+          <ref name="objectdata.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="audiodata.role.attrib"/>
+          <ref name="local.audiodata.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="imagedata.module">
+      <define name="local.imagedata.attrib">
+        <empty/>
+      </define>
+      <define name="imagedata.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="imagedata">
+        <define name="imagedata">
+          <element name="imagedata">
+            <ref name="imagedata.attlist"/>
+            <empty/>
+          </element>
+        </define>
+      </div>
+
+<!--Width: Same as CALS reprowid (desired width)-->
+<!--Depth: Same as CALS reprodep (desired depth)-->
+<!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+       application-specific-->
+<!--Scale: Conflation of CALS hscale and vscale-->
+<!--Scalefit: Same as CALS scalefit-->
+
+      <div db:name="imagedata.attlist">
+        <define name="imagedata.attlist" combine="interleave">
+          <optional>
+            <attribute name="width"/>
+          </optional>
+          <optional>
+            <attribute name="contentwidth"/>
+          </optional>
+          <optional>
+            <attribute name="depth"/>
+          </optional>
+          <optional>
+            <attribute name="contentdepth"/>
+          </optional>
+          <optional>
+            <attribute name="align">
+              <choice>
+                <value>left</value>
+                <value>right</value>
+                <value>center</value>
+              </choice>
+            </attribute>
+          </optional>
+          <optional>
+            <attribute name="valign">
+              <choice>
+                <value>top</value>
+                <value>middle</value>
+                <value>bottom</value>
+              </choice>
+            </attribute>
+          </optional>
+          <optional>
+            <attribute name="scale"/>
+          </optional>
+          <optional>
+            <attribute name="scalefit">
+              <ref name="yesorno.attvals"/>
+            </attribute>
+          </optional>
+          <ref name="objectdata.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="imagedata.role.attrib"/>
+          <ref name="local.imagedata.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="textdata.module">
+      <define name="local.textdata.attrib">
+        <empty/>
+      </define>
+      <define name="textdata.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="textdata">
+        <define name="textdata">
+          <element name="textdata">
+            <ref name="textdata.attlist"/>
+            <empty/>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="textdata.attlist">
+        <define name="textdata.attlist" combine="interleave">
+          <optional>
+            <attribute name="encoding"/>
+          </optional>
+          <ref name="objectdata.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="textdata.role.attrib"/>
+          <ref name="local.textdata.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="caption.module">
+      <define name="local.caption.attrib">
+        <empty/>
+      </define>
+      <define name="caption.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="caption">
+        <define name="caption">
+          <element name="caption">
+            <ref name="caption.attlist"/>
+            <zeroOrMore>
+              <ref name="textobject.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="caption.attlist">
+        <define name="caption.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="caption.role.attrib"/>
+          <ref name="local.caption.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    
+
+    
+  </div>
+
+<!-- Equations ........................ -->
+<!-- This PE provides a mechanism for replacing equation content, -->
+<!-- perhaps adding a new or different model (e.g., MathML) -->
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+<!-- Tables ........................... -->
+<!-- Choose a table model. CALS or OASIS XML Exchange -->
+
+  <define name="tables.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+
+<!-- Add label and role attributes to table and informaltable -->
+
+  <define name="bodyatt">
+    <ref name="label.attrib"/>
+  </define>
+
+<!-- Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+     EntryTbl, and Entry (and InformalTable element). -->
+
+  <define name="secur">
+    <ref name="common.attrib"/>
+    <ref name="tables.role.attrib"/>
+  </define>
+  <define name="common.table.attribs">
+    <ref name="bodyatt"/>
+    <ref name="secur"/>
+  </define>
+
+<!-- Content model for Table. -->
+
+  <define name="tbl.table.mdl">
+    
+    <ref name="formalobject.title.content"/>
+    
+    <zeroOrMore>
+      <ref name="textobject"/>
+    </zeroOrMore>
+    <choice>
+      
+      <oneOrMore>
+        <ref name="mediaobject"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="tgroup"/>
+      </oneOrMore>
+    </choice>
+  </define>
+
+<!-- Allow either objects or inlines; beware of REs between elements. -->
+
+  <define name="tbl.entry.mdl">
+    <choice>
+      <ref name="para.char.mix"/>
+      <ref name="tabentry.mix"/>
+    </choice>
+  </define>
+
+<!-- Reference CALS Table Model -->
+
+  
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook CALS Table Model</title>
+<productname>DocBook</productname>
+<productnumber>4.2</productnumber>
+<releaseinfo role="filename">calstbl</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>This DTD is based on the CALS Table Model
+("-//USA-DOD//DTD Table Model 951010//EN").</para>
+
+<para>Permission to use, copy, modify and distribute the DocBook DTD
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies.  The copyright
+holders make no representation about the suitability of the DTD for
+any purpose.  It is provided "as is" without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook DTD in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your DTD as a variant of DocBook.  See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the docbook@lists.oasis-open.org mailing list. For more
+information, see http://www.oasis-open.org/docbook/.</para>
+</legalnotice>
+</partinfo>
+</rng:div>
+
+<!-- ...................................................................... -->
+<!-- This module contains the definitions for the CALS Table Model
+     converted to XML.
+-->
+<!-- These definitions are not directly related to the table model, but are
+     used in the default CALS table model and are usually defined elsewhere
+     (and prior to the inclusion of this table module) in a CALS DTD. -->
+<!-- no if zero(s),
+                                yes if any other digits value -->
+  <define name="yesorno">
+    <data type="string"/>
+  </define>
+  
+<!-- default for use in entry content -->
+<!--
+The parameter entities as defined below provide the CALS table model
+as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+These following declarations provide the CALS-compliant default definitions
+for these entities.  However, these entities can and should be redefined
+(by giving the appropriate parameter entity declaration(s) prior to the
+reference to this Table Model declaration set entity) to fit the needs
+of the current application.
+-->
+  
+  
+  <define name="tbl.table.att">
+    <optional>
+      <attribute name="tabstyle"/>
+    </optional>
+    <optional>
+      <attribute name="tocentry">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="shortentry">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="orient">
+        <choice>
+          <value>port</value>
+          <value>land</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="pgwide">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="tbl.tgroup.mdl">
+    <zeroOrMore>
+      <ref name="colspec"/>
+    </zeroOrMore>
+    <zeroOrMore>
+      <ref name="spanspec"/>
+    </zeroOrMore>
+    <optional>
+      <ref name="thead"/>
+    </optional>
+    <optional>
+      <ref name="tfoot"/>
+    </optional>
+    <ref name="tbody"/>
+  </define>
+  <define name="tbl.tgroup.att">
+    <optional>
+      <attribute name="tgroupstyle"/>
+    </optional>
+  </define>
+  <define name="tbl.hdft.mdl">
+    <zeroOrMore>
+      <ref name="colspec"/>
+    </zeroOrMore>
+    <oneOrMore>
+      <ref name="row"/>
+    </oneOrMore>
+  </define>
+  <define name="tbl.row.mdl">
+    <oneOrMore>
+      <choice>
+        <ref name="entry"/>
+        <ref name="entrytbl"/>
+      </choice>
+    </oneOrMore>
+  </define>
+  <define name="tbl.entrytbl.mdl">
+    <zeroOrMore>
+      <ref name="colspec"/>
+    </zeroOrMore>
+    <zeroOrMore>
+      <ref name="spanspec"/>
+    </zeroOrMore>
+    <optional>
+      <ref name="thead"/>
+    </optional>
+    <ref name="tbody"/>
+  </define>
+<!-- =====  Element and attribute declarations follow. =====  -->
+  <define name="table">
+    <element name="table">
+      <ref name="table.attlist"/>
+      <ref name="tbl.table.mdl"/>
+      <s:assert test="count(.//equation/title) = 0">&lt;table&gt; contains &lt;equation&gt;</s:assert>
+      <s:assert test="count(.//example) = 0">&lt;table&gt; contains &lt;example&gt;</s:assert>
+      <s:assert test="count(.//figure) = 0">&lt;table&gt; contains &lt;figure&gt;</s:assert>
+      <s:assert test="count(.//table) = 0">&lt;table&gt; contains &lt;table&gt;</s:assert>
+    </element>
+  </define>
+  <define name="table.attlist" combine="interleave">
+    <optional>
+      <attribute name="frame">
+        <choice>
+          <value>top</value>
+          <value>bottom</value>
+          <value>topbot</value>
+          <value>all</value>
+          <value>sides</value>
+          <value>none</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="colsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <ref name="tbl.table.att"/>
+    <ref name="bodyatt"/>
+    <ref name="secur"/>
+  </define>
+  <define name="tgroup">
+    <element name="tgroup">
+      <ref name="tgroup.attlist"/>
+      <ref name="tbl.tgroup.mdl"/>
+    </element>
+  </define>
+  <define name="tgroup.attlist" combine="interleave">
+    <attribute name="cols"/>
+    <ref name="tbl.tgroup.att"/>
+    <optional>
+      <attribute name="colsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+          <value>justify</value>
+          <value>char</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="char"/>
+    </optional>
+    <optional>
+      <attribute name="charoff"/>
+    </optional>
+    <ref name="secur"/>
+  </define>
+  <define name="colspec">
+    <element name="colspec">
+      <ref name="colspec.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <define name="colspec.attlist" combine="interleave">
+    <optional>
+      <attribute name="colnum"/>
+    </optional>
+    <optional>
+      <attribute name="colname"/>
+    </optional>
+    <optional>
+      <attribute name="colwidth"/>
+    </optional>
+    <optional>
+      <attribute name="colsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+          <value>justify</value>
+          <value>char</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="char"/>
+    </optional>
+    <optional>
+      <attribute name="charoff"/>
+    </optional>
+  </define>
+  <define name="spanspec">
+    <element name="spanspec">
+      <ref name="spanspec.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <define name="spanspec.attlist" combine="interleave">
+    <attribute name="namest"/>
+    <attribute name="nameend"/>
+    <attribute name="spanname"/>
+    <optional>
+      <attribute name="colsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+          <value>justify</value>
+          <value>char</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="char"/>
+    </optional>
+    <optional>
+      <attribute name="charoff"/>
+    </optional>
+  </define>
+  <define name="thead">
+    <element name="thead">
+      <ref name="thead.attlist"/>
+      <ref name="tbl.hdft.mdl"/>
+    </element>
+  </define>
+  <define name="thead.attlist" combine="interleave">
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="secur"/>
+  </define>
+  <define name="tfoot">
+    <element name="tfoot">
+      <ref name="tfoot.attlist"/>
+      <ref name="tbl.hdft.mdl"/>
+    </element>
+  </define>
+  <define name="tfoot.attlist" combine="interleave">
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="secur"/>
+  </define>
+  <define name="tbody">
+    <element name="tbody">
+      <ref name="tbody.attlist"/>
+      <oneOrMore>
+        <ref name="row"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <define name="tbody.attlist" combine="interleave">
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="secur"/>
+  </define>
+  <define name="row">
+    <element name="row">
+      <ref name="row.attlist"/>
+      <ref name="tbl.row.mdl"/>
+    </element>
+  </define>
+  <define name="row.attlist" combine="interleave">
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="secur"/>
+  </define>
+  <define name="entrytbl">
+    <element name="entrytbl">
+      <ref name="entrytbl.attlist"/>
+      <ref name="tbl.entrytbl.mdl"/>
+    </element>
+  </define>
+  <define name="entrytbl.attlist" combine="interleave">
+    <attribute name="cols"/>
+    <ref name="tbl.tgroup.att"/>
+    <optional>
+      <attribute name="colname"/>
+    </optional>
+    <optional>
+      <attribute name="spanname"/>
+    </optional>
+    <optional>
+      <attribute name="namest"/>
+    </optional>
+    <optional>
+      <attribute name="nameend"/>
+    </optional>
+    <optional>
+      <attribute name="colsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+          <value>justify</value>
+          <value>char</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="char"/>
+    </optional>
+    <optional>
+      <attribute name="charoff"/>
+    </optional>
+    <ref name="secur"/>
+  </define>
+  <define name="entry">
+    <element name="entry">
+      <ref name="entry.attlist"/>
+      <zeroOrMore>
+        <ref name="tbl.entry.mdl"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <define name="entry.attlist" combine="interleave">
+    <optional>
+      <attribute name="colname"/>
+    </optional>
+    <optional>
+      <attribute name="namest"/>
+    </optional>
+    <optional>
+      <attribute name="nameend"/>
+    </optional>
+    <optional>
+      <attribute name="spanname"/>
+    </optional>
+    <optional>
+      <attribute name="morerows"/>
+    </optional>
+    <optional>
+      <attribute name="colsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowsep">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+          <value>justify</value>
+          <value>char</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="char"/>
+    </optional>
+    <optional>
+      <attribute name="charoff"/>
+    </optional>
+    <optional>
+      <attribute name="rotate">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="secur"/>
+  </define>
+<!-- End of DocBook CALS Table Model V4.2 ................................. -->
+<!-- ...................................................................... -->
+
+
+<!-- Note that InformalTable is dependent on some of the entity
+     declarations that customize Table. -->
+
+  <div db:name="informaltable.module">
+    <define name="local.informaltable.attrib">
+      <empty/>
+    </define>
+
+    <div db:name="informaltable">
+      <define name="informaltable">
+        <element name="informaltable">
+          <ref name="informaltable.attlist"/>
+          
+          <zeroOrMore>
+            <ref name="textobject"/>
+          </zeroOrMore>
+          <choice>
+            
+            <oneOrMore>
+              <ref name="mediaobject"/>
+            </oneOrMore>
+            <oneOrMore>
+              <ref name="tgroup"/>
+            </oneOrMore>
+          </choice>
+        </element>
+      </define>
+    </div>
+
+<!-- Frame, Colsep, and Rowsep must be repeated because
+               they are not in entities in the table module. -->
+<!-- includes TabStyle, ToCentry, ShortEntry,
+                               Orient, PgWide -->
+<!-- includes Label -->
+<!-- includes common attributes -->
+
+    <div db:name="informaltable.attlist">
+      <define name="informaltable.attlist" combine="interleave">
+        <optional>
+          <attribute name="frame">
+            <choice>
+              <value>top</value>
+              <value>bottom</value>
+              <value>topbot</value>
+              <value>all</value>
+              <value>sides</value>
+              <value>none</value>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="colsep">
+            <ref name="yesorno.attvals"/>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="rowsep">
+            <ref name="yesorno.attvals"/>
+          </attribute>
+        </optional>
+        <ref name="common.table.attribs"/>
+        <ref name="tbl.table.att"/>
+        <ref name="local.informaltable.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- ...................................................................... -->
+<!-- Synopses ............................................................. -->
+<!-- Synopsis ......................... -->
+
+  
+
+<!-- CmdSynopsis ...................... -->
+
+  
+
+<!-- FuncSynopsis ..................... -->
+
+  
+
+<!-- ClassSynopsis ..................... -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Document information entities and elements ........................... -->
+<!-- The document information elements include some elements that are
+     currently used only in the document hierarchy module. They are
+     defined here so that they will be available for use in customized
+     document hierarchies. -->
+
+  <div db:name="docinfo.content.module">
+
+<!-- .................................. -->
+<!-- Ackno ............................ -->
+
+    
+
+<!-- Address .......................... -->
+
+    
+
+<!-- Affiliation ...................... -->
+
+    <div db:name="affiliation.content.module">
+
+      <div db:name="affiliation.module">
+        <define name="local.affiliation.attrib">
+          <empty/>
+        </define>
+        <define name="affiliation.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="affiliation">
+          <define name="affiliation">
+            <element name="affiliation">
+              <ref name="affiliation.attlist"/>
+              
+              <zeroOrMore>
+                <ref name="jobtitle"/>
+              </zeroOrMore>
+              <optional>
+                <ref name="orgname"/>
+              </optional>
+              
+              
+            </element>
+          </define>
+        </div>
+
+        <div db:name="affiliation.attlist">
+          <define name="affiliation.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="affiliation.role.attrib"/>
+            <ref name="local.affiliation.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      
+
+      <div db:name="jobtitle.module">
+        <define name="local.jobtitle.attrib">
+          <empty/>
+        </define>
+        <define name="jobtitle.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="jobtitle">
+          <define name="jobtitle">
+            <element name="jobtitle">
+              <ref name="jobtitle.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="jobtitle.attlist">
+          <define name="jobtitle.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="jobtitle.role.attrib"/>
+            <ref name="local.jobtitle.attrib"/>
+          </define>
+        </div>
+      </div>
+
+<!-- OrgName (defined elsewhere in this section)-->
+
+      
+
+<!-- Address (defined elsewhere in this section)-->
+
+    </div>
+
+<!-- ArtPageNums ...................... -->
+
+    
+
+<!-- PersonName -->
+
+    
+
+<!-- Author ........................... -->
+
+    <div db:name="author.module">
+      <define name="local.author.attrib">
+        <empty/>
+      </define>
+      <define name="author.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="author">
+        <define name="author">
+          <element name="author">
+            <ref name="author.attlist"/>
+            <choice>
+              
+              <oneOrMore>
+                <ref name="person.ident.mix"/>
+              </oneOrMore>
+            </choice>
+            <zeroOrMore>
+              <choice>
+                
+                <ref name="email"/>
+                
+              </choice>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="author.attlist">
+        <define name="author.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="author.role.attrib"/>
+          <ref name="local.author.attrib"/>
+        </define>
+      </div>
+
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+    </div>
+
+<!-- AuthorGroup ...................... -->
+
+    <div db:name="authorgroup.content.module">
+
+      <div db:name="authorgroup.module">
+        <define name="local.authorgroup.attrib">
+          <empty/>
+        </define>
+        <define name="authorgroup.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="authorgroup">
+          <define name="authorgroup">
+            <element name="authorgroup">
+              <ref name="authorgroup.attlist"/>
+              <oneOrMore>
+                <choice>
+                  <ref name="author"/>
+                  <ref name="editor"/>
+                  
+                  <ref name="corpauthor"/>
+                  <ref name="othercredit"/>
+                </choice>
+              </oneOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="authorgroup.attlist">
+          <define name="authorgroup.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="authorgroup.role.attrib"/>
+            <ref name="local.authorgroup.attrib"/>
+          </define>
+        </div>
+      </div>
+
+<!-- Author (defined elsewhere in this section)-->
+<!-- Editor (defined elsewhere in this section)-->
+
+      
+
+<!-- CorpAuthor (defined elsewhere in this section)-->
+<!-- OtherCredit (defined elsewhere in this section)-->
+
+    </div>
+
+<!-- AuthorInitials ................... -->
+
+    <div db:name="authorinitials.module">
+      <define name="local.authorinitials.attrib">
+        <empty/>
+      </define>
+      <define name="authorinitials.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="authorinitials">
+        <define name="authorinitials">
+          <element name="authorinitials">
+            <ref name="authorinitials.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="authorinitials.attlist">
+        <define name="authorinitials.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="authorinitials.role.attrib"/>
+          <ref name="local.authorinitials.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- ConfGroup ........................ -->
+
+    
+
+<!-- ContractNum ...................... -->
+
+    
+
+<!-- ContractSponsor .................. -->
+
+    
+
+<!-- Copyright ........................ -->
+
+    <div db:name="copyright.content.module">
+
+      <div db:name="copyright.module">
+        <define name="local.copyright.attrib">
+          <empty/>
+        </define>
+        <define name="copyright.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="copyright">
+          <define name="copyright">
+            <element name="copyright">
+              <ref name="copyright.attlist"/>
+              <oneOrMore>
+                <ref name="year"/>
+              </oneOrMore>
+              <zeroOrMore>
+                <ref name="holder"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="copyright.attlist">
+          <define name="copyright.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="copyright.role.attrib"/>
+            <ref name="local.copyright.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="year.module">
+        <define name="local.year.attrib">
+          <empty/>
+        </define>
+        <define name="year.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="year">
+          <define name="year">
+            <element name="year">
+              <ref name="year.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="year.attlist">
+          <define name="year.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="year.role.attrib"/>
+            <ref name="local.year.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="holder.module">
+        <define name="local.holder.attrib">
+          <empty/>
+        </define>
+        <define name="holder.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="holder">
+          <define name="holder">
+            <element name="holder">
+              <ref name="holder.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="holder.attlist">
+          <define name="holder.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="holder.role.attrib"/>
+            <ref name="local.holder.attrib"/>
+          </define>
+        </div>
+      </div>
+    </div>
+
+<!-- CorpAuthor ....................... -->
+
+    <div db:name="corpauthor.module">
+      <define name="local.corpauthor.attrib">
+        <empty/>
+      </define>
+      <define name="corpauthor.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="corpauthor">
+        <define name="corpauthor">
+          <element name="corpauthor">
+            <ref name="corpauthor.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="corpauthor.attlist">
+        <define name="corpauthor.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="corpauthor.role.attrib"/>
+          <ref name="local.corpauthor.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- CorpName ......................... -->
+
+    
+
+<!-- Date ............................. -->
+
+    <div db:name="date.module">
+      <define name="local.date.attrib">
+        <empty/>
+      </define>
+      <define name="date.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="date">
+        <define name="date">
+          <element name="date">
+            <ref name="date.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="date.attlist">
+        <define name="date.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="date.role.attrib"/>
+          <ref name="local.date.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- Edition .......................... -->
+
+    <div db:name="edition.module">
+      <define name="local.edition.attrib">
+        <empty/>
+      </define>
+      <define name="edition.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="edition">
+        <define name="edition">
+          <element name="edition">
+            <ref name="edition.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="edition.attlist">
+        <define name="edition.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="edition.role.attrib"/>
+          <ref name="local.edition.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- Editor ........................... -->
+
+    <div db:name="editor.module">
+      <define name="local.editor.attrib">
+        <empty/>
+      </define>
+      <define name="editor.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="editor">
+        <define name="editor">
+          <element name="editor">
+            <ref name="editor.attlist"/>
+            <choice>
+              
+              <oneOrMore>
+                <ref name="person.ident.mix"/>
+              </oneOrMore>
+            </choice>
+            <zeroOrMore>
+              <choice>
+                
+                <ref name="email"/>
+                
+              </choice>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="editor.attlist">
+        <define name="editor.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="editor.role.attrib"/>
+          <ref name="local.editor.attrib"/>
+        </define>
+      </div>
+
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+    </div>
+
+<!-- ISBN ............................. -->
+
+    
+
+<!-- ISSN ............................. -->
+
+    
+
+<!-- BiblioId ................. -->
+
+    
+
+    
+
+<!-- CiteBiblioId ................. -->
+
+    
+
+<!-- BiblioSource ................. -->
+
+    
+
+<!-- BiblioRelation ................. -->
+
+    
+
+<!-- BiblioCoverage ................. -->
+
+    
+
+<!-- InvPartNumber .................... -->
+
+    
+
+<!-- IssueNum ......................... -->
+
+    <div db:name="issuenum.module">
+      <define name="local.issuenum.attrib">
+        <empty/>
+      </define>
+      <define name="issuenum.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="issuenum">
+        <define name="issuenum">
+          <element name="issuenum">
+            <ref name="issuenum.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="issuenum.attlist">
+        <define name="issuenum.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="issuenum.role.attrib"/>
+          <ref name="local.issuenum.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- LegalNotice ...................... -->
+
+    <div db:name="legalnotice.module">
+      <define name="local.legalnotice.attrib">
+        <empty/>
+      </define>
+      <define name="legalnotice.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="legalnotice">
+        <define name="legalnotice">
+          <element name="legalnotice">
+            <ref name="legalnotice.attlist"/>
+            
+            <optional>
+              <ref name="title"/>
+            </optional>
+            <oneOrMore>
+              <ref name="legalnotice.mix"/>
+            </oneOrMore>
+            <s:assert test="count(.//equation/title) = 0">&lt;legalnotice&gt; contains &lt;equation&gt;</s:assert>
+            <s:assert test="count(.//example) = 0">&lt;legalnotice&gt; contains &lt;example&gt;</s:assert>
+            <s:assert test="count(.//figure) = 0">&lt;legalnotice&gt; contains &lt;figure&gt;</s:assert>
+            <s:assert test="count(.//table) = 0">&lt;legalnotice&gt; contains &lt;table&gt;</s:assert>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="legalnotice.attlist">
+        <define name="legalnotice.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="legalnotice.role.attrib"/>
+          <ref name="local.legalnotice.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- ModeSpec ......................... -->
+
+    
+
+<!-- OrgName .......................... -->
+
+    <div db:name="orgname.module">
+      <define name="local.orgname.attrib">
+        <empty/>
+      </define>
+      <define name="orgname.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="orgname">
+        <define name="orgname">
+          <element name="orgname">
+            <ref name="orgname.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="orgname.attlist">
+        <define name="orgname.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <optional>
+            <attribute name="class">
+              <choice>
+                <value>corporation</value>
+                <value>nonprofit</value>
+                <value>consortium</value>
+                <value>informal</value>
+                <value>other</value>
+              </choice>
+            </attribute>
+          </optional>
+          <optional>
+            <attribute name="otherclass"/>
+          </optional>
+          <ref name="orgname.role.attrib"/>
+          <ref name="local.orgname.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- OtherCredit ...................... -->
+
+    <div db:name="othercredit.module">
+      <define name="local.othercredit.attrib">
+        <empty/>
+      </define>
+      <define name="othercredit.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="othercredit">
+        <define name="othercredit">
+          <element name="othercredit">
+            <ref name="othercredit.attlist"/>
+            <choice>
+              
+              <oneOrMore>
+                <ref name="person.ident.mix"/>
+              </oneOrMore>
+            </choice>
+            <zeroOrMore>
+              <choice>
+                
+                <ref name="email"/>
+                
+              </choice>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="othercredit.attlist">
+        <define name="othercredit.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="othercredit.role.attrib"/>
+          <ref name="local.othercredit.attrib"/>
+        </define>
+      </div>
+
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+    </div>
+
+<!-- PageNums ......................... -->
+
+    
+
+<!-- Personal identity elements ....... -->
+<!-- These elements are used only within Author, Editor, and
+OtherCredit. -->
+
+    <div db:name="person.ident.module">
+
+      
+
+      <div db:name="firstname.module">
+        <define name="local.firstname.attrib">
+          <empty/>
+        </define>
+        <define name="firstname.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="firstname">
+          <define name="firstname">
+            <element name="firstname">
+              <ref name="firstname.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="firstname.attlist">
+          <define name="firstname.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="firstname.role.attrib"/>
+            <ref name="local.firstname.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="honorific.module">
+        <define name="local.honorific.attrib">
+          <empty/>
+        </define>
+        <define name="honorific.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="honorific">
+          <define name="honorific">
+            <element name="honorific">
+              <ref name="honorific.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="honorific.attlist">
+          <define name="honorific.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="honorific.role.attrib"/>
+            <ref name="local.honorific.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="lineage.module">
+        <define name="local.lineage.attrib">
+          <empty/>
+        </define>
+        <define name="lineage.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="lineage">
+          <define name="lineage">
+            <element name="lineage">
+              <ref name="lineage.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="lineage.attlist">
+          <define name="lineage.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="lineage.role.attrib"/>
+            <ref name="local.lineage.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="othername.module">
+        <define name="local.othername.attrib">
+          <empty/>
+        </define>
+        <define name="othername.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="othername">
+          <define name="othername">
+            <element name="othername">
+              <ref name="othername.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="othername.attlist">
+          <define name="othername.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="othername.role.attrib"/>
+            <ref name="local.othername.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="surname.module">
+        <define name="local.surname.attrib">
+          <empty/>
+        </define>
+        <define name="surname.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="surname">
+          <define name="surname">
+            <element name="surname">
+              <ref name="surname.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="surname.attlist">
+          <define name="surname.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="surname.role.attrib"/>
+            <ref name="local.surname.attrib"/>
+          </define>
+        </div>
+      </div>
+    </div>
+
+<!-- PrintHistory ..................... -->
+
+    
+
+<!-- ProductName ...................... -->
+
+    
+
+<!-- ProductNumber .................... -->
+
+    
+
+<!-- PubDate .......................... -->
+
+    <div db:name="pubdate.module">
+      <define name="local.pubdate.attrib">
+        <empty/>
+      </define>
+      <define name="pubdate.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="pubdate">
+        <define name="pubdate">
+          <element name="pubdate">
+            <ref name="pubdate.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="pubdate.attlist">
+        <define name="pubdate.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="pubdate.role.attrib"/>
+          <ref name="local.pubdate.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- Publisher ........................ -->
+
+    <div db:name="publisher.content.module">
+
+      
+
+      <div db:name="publishername.module">
+        <define name="local.publishername.attrib">
+          <empty/>
+        </define>
+        <define name="publishername.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="publishername">
+          <define name="publishername">
+            <element name="publishername">
+              <ref name="publishername.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="publishername.attlist">
+          <define name="publishername.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="publishername.role.attrib"/>
+            <ref name="local.publishername.attrib"/>
+          </define>
+        </div>
+      </div>
+
+<!-- Address (defined elsewhere in this section)-->
+
+    </div>
+
+<!-- PubsNumber ....................... -->
+
+    
+
+<!-- ReleaseInfo ...................... -->
+
+    <div db:name="releaseinfo.module">
+      <define name="local.releaseinfo.attrib">
+        <empty/>
+      </define>
+      <define name="releaseinfo.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="releaseinfo">
+        <define name="releaseinfo">
+          <element name="releaseinfo">
+            <ref name="releaseinfo.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="releaseinfo.attlist">
+        <define name="releaseinfo.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="releaseinfo.role.attrib"/>
+          <ref name="local.releaseinfo.attrib"/>
+        </define>
+      </div>
+    </div>
+
+<!-- RevHistory ....................... -->
+
+    <div db:name="revhistory.content.module">
+
+      <div db:name="revhistory.module">
+        <define name="local.revhistory.attrib">
+          <empty/>
+        </define>
+        <define name="revhistory.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="revhistory">
+          <define name="revhistory">
+            <element name="revhistory">
+              <ref name="revhistory.attlist"/>
+              <oneOrMore>
+                <ref name="revision"/>
+              </oneOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="revhistory.attlist">
+          <define name="revhistory.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="revhistory.role.attrib"/>
+            <ref name="local.revhistory.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="revision.module">
+        <define name="local.revision.attrib">
+          <empty/>
+        </define>
+        <define name="revision.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="revision">
+          <define name="revision">
+            <element name="revision">
+              <ref name="revision.attlist"/>
+              <ref name="revnumber"/>
+              <ref name="date"/>
+              <zeroOrMore>
+                <choice>
+                  <ref name="author"/>
+                  <ref name="authorinitials"/>
+                </choice>
+              </zeroOrMore>
+              <optional>
+                <choice>
+                  <ref name="revremark"/>
+                  <ref name="revdescription"/>
+                </choice>
+              </optional>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="revision.attlist">
+          <define name="revision.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="revision.role.attrib"/>
+            <ref name="local.revision.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="revnumber.module">
+        <define name="local.revnumber.attrib">
+          <empty/>
+        </define>
+        <define name="revnumber.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="revnumber">
+          <define name="revnumber">
+            <element name="revnumber">
+              <ref name="revnumber.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="revnumber.attlist">
+          <define name="revnumber.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="revnumber.role.attrib"/>
+            <ref name="local.revnumber.attrib"/>
+          </define>
+        </div>
+      </div>
+
+<!-- Date (defined elsewhere in this section)-->
+<!-- AuthorInitials (defined elsewhere in this section)-->
+
+      <div db:name="revremark.module">
+        <define name="local.revremark.attrib">
+          <empty/>
+        </define>
+        <define name="revremark.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="revremark">
+          <define name="revremark">
+            <element name="revremark">
+              <ref name="revremark.attlist"/>
+              <zeroOrMore>
+                <ref name="docinfo.char.mix"/>
+              </zeroOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="revremark.attlist">
+          <define name="revremark.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="revremark.role.attrib"/>
+            <ref name="local.revremark.attrib"/>
+          </define>
+        </div>
+      </div>
+
+      <div db:name="revdescription.module">
+        <define name="local.revdescription.attrib">
+          <empty/>
+        </define>
+        <define name="revdescription.role.attrib">
+          <ref name="role.attrib"/>
+        </define>
+
+        <div db:name="revdescription">
+          <define name="revdescription">
+            <element name="revdescription">
+              <ref name="revdescription.attlist"/>
+              <oneOrMore>
+                <ref name="revdescription.mix"/>
+              </oneOrMore>
+            </element>
+          </define>
+        </div>
+
+        <div db:name="revdescription.attlist">
+          <define name="revdescription.attlist" combine="interleave">
+            <ref name="common.attrib"/>
+            <ref name="revdescription.role.attrib"/>
+            <ref name="local.revdescription.attrib"/>
+          </define>
+        </div>
+      </div>
+    </div>
+
+<!-- SeriesVolNums .................... -->
+
+    
+
+<!-- VolumeNum ........................ -->
+
+    <div db:name="volumenum.module">
+      <define name="local.volumenum.attrib">
+        <empty/>
+      </define>
+      <define name="volumenum.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="volumenum">
+        <define name="volumenum">
+          <element name="volumenum">
+            <ref name="volumenum.attlist"/>
+            <zeroOrMore>
+              <ref name="docinfo.char.mix"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="volumenum.attlist">
+        <define name="volumenum.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="volumenum.role.attrib"/>
+          <ref name="local.volumenum.attrib"/>
+        </define>
+      </div>
+    </div>
+  </div>
+
+<!-- .................................. -->
+<!-- ...................................................................... -->
+<!-- Inline, link, and ubiquitous elements ................................ -->
+<!-- Technical and computer terms ......................................... -->
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  <div db:name="command.module">
+    <define name="local.command.attrib">
+      <empty/>
+    </define>
+    <define name="command.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="command">
+      <define name="command">
+        <element name="command">
+          <ref name="command.attlist"/>
+          <zeroOrMore>
+            <ref name="cptr.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="command.attlist">
+      <define name="command.attlist" combine="interleave">
+        <ref name="moreinfo.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="command.role.attrib"/>
+        <ref name="local.command.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="computeroutput.module">
+    <define name="local.computeroutput.attrib">
+      <empty/>
+    </define>
+    <define name="computeroutput.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="computeroutput">
+      <define name="computeroutput">
+        <element name="computeroutput">
+          <ref name="computeroutput.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="cptr.char.mix"/>
+              
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="computeroutput.attlist">
+      <define name="computeroutput.attlist" combine="interleave">
+        <ref name="moreinfo.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="computeroutput.role.attrib"/>
+        <ref name="local.computeroutput.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  <div db:name="email.module">
+    <define name="local.email.attrib">
+      <empty/>
+    </define>
+    <define name="email.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="email">
+      <define name="email">
+        <element name="email">
+          <ref name="email.attlist"/>
+          <zeroOrMore>
+            <ref name="docinfo.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="email.attlist">
+      <define name="email.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="email.role.attrib"/>
+        <ref name="local.email.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  <div db:name="filename.module">
+    <define name="local.filename.attrib">
+      <empty/>
+    </define>
+    <define name="filename.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="filename">
+      <define name="filename">
+        <element name="filename">
+          <ref name="filename.attlist"/>
+          <zeroOrMore>
+            <ref name="cptr.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Class: Type of filename the element names; no default -->
+<!-- Path: Search path (possibly system-specific) in which
+               file can be found -->
+
+    <div db:name="filename.attlist">
+      <define name="filename.attlist" combine="interleave">
+        <optional>
+          <attribute name="class">
+            <choice>
+              <value>headerfile</value>
+              <value>partition</value>
+              <value>devicefile</value>
+              <value>libraryfile</value>
+              <value>directory</value>
+              <value>extension</value>
+              <value>symlink</value>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="path"/>
+        </optional>
+        <ref name="moreinfo.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="filename.role.attrib"/>
+        <ref name="local.filename.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  <div db:name="lineannotation.module">
+    <define name="local.lineannotation.attrib">
+      <empty/>
+    </define>
+    <define name="lineannotation.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="lineannotation">
+      <define name="lineannotation">
+        <element name="lineannotation">
+          <ref name="lineannotation.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="lineannotation.attlist">
+      <define name="lineannotation.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="lineannotation.role.attrib"/>
+        <ref name="local.lineannotation.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="literal.module">
+    <define name="local.literal.attrib">
+      <empty/>
+    </define>
+    <define name="literal.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="literal">
+      <define name="literal">
+        <element name="literal">
+          <ref name="literal.attlist"/>
+          <zeroOrMore>
+            <ref name="cptr.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="literal.attlist">
+      <define name="literal.attlist" combine="interleave">
+        <ref name="moreinfo.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="literal.role.attrib"/>
+        <ref name="local.literal.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  <div db:name="option.module">
+    <define name="local.option.attrib">
+      <empty/>
+    </define>
+    <define name="option.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="option">
+      <define name="option">
+        <element name="option">
+          <ref name="option.attlist"/>
+          <zeroOrMore>
+            <ref name="cptr.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="option.attlist">
+      <define name="option.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="option.role.attrib"/>
+        <ref name="local.option.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  
+
+  <div db:name="replaceable.module">
+    <define name="local.replaceable.attrib">
+      <empty/>
+    </define>
+    <define name="replaceable.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="replaceable">
+      <define name="replaceable">
+        <element name="replaceable">
+          <ref name="replaceable.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <text/>
+              <ref name="link.char.class"/>
+              
+              
+              
+              
+              <ref name="inlinemediaobject"/>
+              
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Class: Type of information the element represents; no
+               default -->
+
+    <div db:name="replaceable.attlist">
+      <define name="replaceable.attlist" combine="interleave">
+        <optional>
+          <attribute name="class">
+            <choice>
+              <value>command</value>
+              <value>function</value>
+              <value>option</value>
+              <value>parameter</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="replaceable.role.attrib"/>
+        <ref name="local.replaceable.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  <div db:name="sgmltag.module">
+    <define name="local.sgmltag.attrib">
+      <empty/>
+    </define>
+    <define name="sgmltag.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="sgmltag">
+      <define name="sgmltag">
+        <element name="sgmltag">
+          <ref name="sgmltag.attlist"/>
+          <zeroOrMore>
+            <ref name="smallcptr.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Class: Type of SGML construct the element names; no default -->
+
+    <div db:name="sgmltag.attlist">
+      <define name="sgmltag.attlist" combine="interleave">
+        <optional>
+          <attribute name="class">
+            <choice>
+              <value>attribute</value>
+              <value>attvalue</value>
+              <value>element</value>
+              <value>endtag</value>
+              <value>emptytag</value>
+              <value>genentity</value>
+              <value>numcharref</value>
+              <value>paramentity</value>
+              <value>pi</value>
+              <value>xmlpi</value>
+              <value>starttag</value>
+              <value>sgmlcomment</value>
+              <value>prefix</value>
+              <value>namespace</value>
+              <value>localname</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="sgmltag.role.attrib"/>
+        <ref name="local.sgmltag.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  <div db:name="systemitem.module">
+    <define name="local.systemitem.attrib">
+      <empty/>
+    </define>
+    <define name="systemitem.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="systemitem">
+      <define name="systemitem">
+        <element name="systemitem">
+          <ref name="systemitem.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="cptr.char.mix"/>
+              <ref name="acronym"/>
+              
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Class: Type of system item the element names; no default -->
+
+    <div db:name="systemitem.attlist">
+      <define name="systemitem.attlist" combine="interleave">
+        <optional>
+          <attribute name="class">
+            <choice>
+              <value>constant</value>
+              <value>event</value>
+              <value>eventhandler</value>
+              <value>domainname</value>
+              <value>fqdomainname</value>
+              <value>ipaddress</value>
+              <value>netmask</value>
+              <value>etheraddress</value>
+              <value>groupname</value>
+              <value>library</value>
+              <value>macro</value>
+              <value>osname</value>
+              <value>filesystem</value>
+              <value>resource</value>
+              <value>systemname</value>
+              <value>username</value>
+              <value>newsgroup</value>
+              <value>process</value>
+              <value>server</value>
+              <value>service</value>
+              <value>daemon</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="moreinfo.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="systemitem.role.attrib"/>
+        <ref name="local.systemitem.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  <div db:name="userinput.module">
+    <define name="local.userinput.attrib">
+      <empty/>
+    </define>
+    <define name="userinput.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="userinput">
+      <define name="userinput">
+        <element name="userinput">
+          <ref name="userinput.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="cptr.char.mix"/>
+              
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="userinput.attlist">
+      <define name="userinput.attlist" combine="interleave">
+        <ref name="moreinfo.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="userinput.role.attrib"/>
+        <ref name="local.userinput.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- General words and phrases ............................................ -->
+
+  <div db:name="abbrev.module">
+    <define name="local.abbrev.attrib">
+      <empty/>
+    </define>
+    <define name="abbrev.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="abbrev">
+      <define name="abbrev">
+        <element name="abbrev">
+          <ref name="abbrev.attlist"/>
+          <zeroOrMore>
+            <ref name="word.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="abbrev.attlist">
+      <define name="abbrev.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="abbrev.role.attrib"/>
+        <ref name="local.abbrev.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="acronym.module">
+    <define name="local.acronym.attrib">
+      <empty/>
+    </define>
+    <define name="acronym.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="acronym">
+      <define name="acronym">
+        <element name="acronym">
+          <ref name="acronym.attlist"/>
+          <zeroOrMore>
+            <ref name="word.char.mix"/>
+          </zeroOrMore>
+          <s:assert test="count(.//acronym)=0">&lt;acronym&gt; contains &lt;acronym&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="acronym.attlist">
+      <define name="acronym.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="acronym.role.attrib"/>
+        <ref name="local.acronym.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  
+
+  <div db:name="citetitle.module">
+    <define name="local.citetitle.attrib">
+      <empty/>
+    </define>
+    <define name="citetitle.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="citetitle">
+      <define name="citetitle">
+        <element name="citetitle">
+          <ref name="citetitle.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Pubwork: Genre of published work cited; no default -->
+
+    <div db:name="citetitle.attlist">
+      <define name="citetitle.attlist" combine="interleave">
+        <optional>
+          <attribute name="pubwork">
+            <choice>
+              <value>article</value>
+              <value>book</value>
+              <value>chapter</value>
+              <value>part</value>
+              <value>refentry</value>
+              <value>section</value>
+              <value>journal</value>
+              <value>series</value>
+              <value>set</value>
+              <value>manuscript</value>
+              <value>emailmessage</value>
+              <value>webpage</value>
+              <value>newsposting</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="citetitle.role.attrib"/>
+        <ref name="local.citetitle.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="emphasis.module">
+    <define name="local.emphasis.attrib">
+      <empty/>
+    </define>
+    <define name="emphasis.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="emphasis">
+      <define name="emphasis">
+        <element name="emphasis">
+          <ref name="emphasis.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="emphasis.attlist">
+      <define name="emphasis.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="emphasis.role.attrib"/>
+        <ref name="local.emphasis.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  
+
+  
+
+  <div db:name="phrase.module">
+    <define name="local.phrase.attrib">
+      <empty/>
+    </define>
+    <define name="phrase.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="phrase">
+      <define name="phrase">
+        <element name="phrase">
+          <ref name="phrase.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="phrase.attlist">
+      <define name="phrase.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="phrase.role.attrib"/>
+        <ref name="local.phrase.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="quote.module">
+    <define name="local.quote.attrib">
+      <empty/>
+    </define>
+    <define name="quote.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="quote">
+      <define name="quote">
+        <element name="quote">
+          <ref name="quote.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="quote.attlist">
+      <define name="quote.attlist" combine="interleave">
+        <ref name="common.attrib"/>
+        <ref name="quote.role.attrib"/>
+        <ref name="local.quote.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+  <div db:name="trademark.module">
+    <define name="local.trademark.attrib">
+      <empty/>
+    </define>
+    <define name="trademark.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="trademark">
+      <define name="trademark">
+        <element name="trademark">
+          <ref name="trademark.attlist"/>
+          <zeroOrMore>
+            <choice>
+              <text/>
+              <ref name="link.char.class"/>
+              <ref name="tech.char.class"/>
+              
+              
+              
+              <ref name="inlinemediaobject"/>
+              <ref name="emphasis"/>
+            </choice>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+<!-- Class: More precisely identifies the item the element names -->
+
+    <div db:name="trademark.attlist">
+      <define name="trademark.attlist" combine="interleave">
+        <optional>
+          <attribute name="class" a:defaultValue="trade">
+            <choice>
+              <value>service</value>
+              <value>trade</value>
+              <value>registered</value>
+              <value>copyright</value>
+            </choice>
+          </attribute>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="trademark.role.attrib"/>
+        <ref name="local.trademark.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+<!-- Links and cross-references ........................................... -->
+
+  <div db:name="link.module">
+    <define name="local.link.attrib">
+      <empty/>
+    </define>
+    <define name="link.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="link">
+      <define name="link">
+        <element name="link">
+          <ref name="link.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+          <s:assert test="count(.//link) = 0">&lt;link&gt; contains &lt;link&gt;</s:assert>
+          <s:assert test="count(.//ulink) = 0">&lt;link&gt; contains &lt;ulink&gt;</s:assert>
+          <s:assert test="count(.//olink) = 0">&lt;link&gt; contains &lt;olink&gt;</s:assert>
+          <s:assert test="count(.//xref) = 0">&lt;link&gt; contains &lt;xref&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+<!-- Endterm: ID of element containing text that is to be
+               fetched from elsewhere in the document to appear as
+               the content of this element -->
+<!-- to linked-to object -->
+<!-- Type: Freely assignable parameter -->
+
+    <div db:name="link.attlist">
+      <define name="link.attlist" combine="interleave">
+        <optional>
+          <attribute name="endterm">
+            <data type="IDREF"/>
+          </attribute>
+        </optional>
+        <ref name="linkendreq.attrib"/>
+        <optional>
+          <attribute name="type"/>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="link.role.attrib"/>
+        <ref name="local.link.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="olink.module">
+    <define name="local.olink.attrib">
+      <empty/>
+    </define>
+    <define name="olink.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="olink">
+      <define name="olink">
+        <element name="olink">
+          <ref name="olink.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+          <s:assert test="count(.//link) = 0">&lt;olink&gt; contains &lt;link&gt;</s:assert>
+          <s:assert test="count(.//ulink) = 0">&lt;olink&gt; contains &lt;ulink&gt;</s:assert>
+          <s:assert test="count(.//olink) = 0">&lt;olink&gt; contains &lt;olink&gt;</s:assert>
+          <s:assert test="count(.//xref) = 0">&lt;olink&gt; contains &lt;xref&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+<!-- TargetDocEnt: Name of an entity to be the target of the link -->
+<!-- LinkMode: ID of a ModeSpec containing instructions for
+               operating on the entity named by TargetDocEnt -->
+<!-- LocalInfo: Information that may be passed to ModeSpec -->
+<!-- Type: Freely assignable parameter -->
+
+    <div db:name="olink.attlist">
+      <define name="olink.attlist" combine="interleave">
+        <optional>
+          <attribute name="targetdocent">
+            <data type="ENTITY"/>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="linkmode">
+            <data type="IDREF"/>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="localinfo"/>
+        </optional>
+        <optional>
+          <attribute name="type"/>
+        </optional>
+        <optional>
+          <attribute name="targetdoc"/>
+        </optional>
+        <optional>
+          <attribute name="targetptr"/>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="olink.role.attrib"/>
+        <ref name="local.olink.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="ulink.module">
+    <define name="local.ulink.attrib">
+      <empty/>
+    </define>
+    <define name="ulink.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="ulink">
+      <define name="ulink">
+        <element name="ulink">
+          <ref name="ulink.attlist"/>
+          <zeroOrMore>
+            <ref name="para.char.mix"/>
+          </zeroOrMore>
+          <s:assert test="count(.//link) = 0">&lt;ulink&gt; contains &lt;link&gt;</s:assert>
+          <s:assert test="count(.//ulink) = 0">&lt;ulink&gt; contains &lt;ulink&gt;</s:assert>
+          <s:assert test="count(.//olink) = 0">&lt;ulink&gt; contains &lt;olink&gt;</s:assert>
+          <s:assert test="count(.//xref) = 0">&lt;ulink&gt; contains &lt;xref&gt;</s:assert>
+        </element>
+      </define>
+    </div>
+
+<!-- URL: uniform resource locator; the target of the ULink -->
+<!-- Type: Freely assignable parameter -->
+
+    <div db:name="ulink.attlist">
+      <define name="ulink.attlist" combine="interleave">
+        <attribute name="url"/>
+        <optional>
+          <attribute name="type"/>
+        </optional>
+        <ref name="common.attrib"/>
+        <ref name="ulink.role.attrib"/>
+        <ref name="local.ulink.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="footnoteref.module">
+    <define name="local.footnoteref.attrib">
+      <empty/>
+    </define>
+    <define name="footnoteref.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="footnoteref">
+      <define name="footnoteref">
+        <element name="footnoteref">
+          <ref name="footnoteref.attlist"/>
+          <empty/>
+        </element>
+      </define>
+    </div>
+
+<!-- to footnote content supplied elsewhere -->
+
+    <div db:name="footnoteref.attlist">
+      <define name="footnoteref.attlist" combine="interleave">
+        <ref name="linkendreq.attrib"/>
+        <ref name="label.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="footnoteref.role.attrib"/>
+        <ref name="local.footnoteref.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  <div db:name="xref.module">
+    <define name="local.xref.attrib">
+      <empty/>
+    </define>
+    <define name="xref.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="xref">
+      <define name="xref">
+        <element name="xref">
+          <ref name="xref.attlist"/>
+          <empty/>
+        </element>
+      </define>
+    </div>
+
+<!-- Endterm: ID of element containing text that is to be
+               fetched from elsewhere in the document to appear as
+               the content of this element -->
+<!-- to linked-to object -->
+
+    <div db:name="xref.attlist">
+      <define name="xref.attlist" combine="interleave">
+        <optional>
+          <attribute name="endterm">
+            <data type="IDREF"/>
+          </attribute>
+        </optional>
+        <ref name="linkendreq.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="xref.role.attrib"/>
+        <ref name="local.xref.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- Ubiquitous elements .................................................. -->
+
+  
+
+  
+
+<!-- IndexTerms appear in the text flow for generating or linking an
+     index. -->
+
+  
+
+<!-- End of DocBook XML information pool module V4.2 ...................... -->
+<!-- ...................................................................... -->
+
+
+
+<!-- Redeclaration placeholder ..... -->
+
+  <div db:name="intermod.redecl.module" db:ignore="yes">
+    <!-- Defining rdbmods here makes some buggy XML parsers happy. -->
+    <db:parameter-entity-declaration name="rdbmods" value=""/>
+    <db:parameter-entity-reference name="rdbmods"/>
+  </div>
+
+<!-- Document hierarchy ............ -->
+
+  
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook Document Hierarchy</title>
+<productname>DocBook</productname>
+<productnumber>4.2</productnumber>
+<releaseinfo role="filename">dbhier</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema for
+any purpose. It is provided <quote>as is</quote> without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your schema as a variant of DocBook. See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the <email>docbook@lists.oasis-open.org</email> mailing list. For more
+information, see <ulink url="http://www.oasis-open.org/docbook/"/>.</para>
+</legalnotice>
+</partinfo>
+
+<partintro>
+<para>This module contains the definitions for the overall document
+hierarchies of DocBook documents.  It covers computer documentation
+manuals and manual fragments, as well as reference entries (such as
+man pages) and technical journals or anthologies containing
+articles.</para>
+
+<para>This module depends on the DocBook information pool module.  All
+elements and entities referenced but not defined here are assumed
+to be defined in the information pool module.</para>
+
+<para>When using this schema in driver files referring to the DTD
+version of this module, please use an entity declaration that uses the
+public identifier shown below:</para>
+
+<screen>&lt;!ENTITY % dbheir PUBLIC
+"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.2//EN"
+"dbhier.mod"&gt;
+%dbhier;</screen>
+
+<para>See the documentation for detailed information on the parameter
+entity and module scheme used in DocBook, customizing DocBook and
+planning for interchange, and changes made since the last release
+of DocBook.</para>
+</partintro>
+</rng:div>
+
+  <define name="local.appendix.class">
+    <notAllowed/>
+  </define>
+  <define name="appendix.class">
+    <choice>
+      <ref name="appendix"/>
+      <ref name="local.appendix.class"/>
+    </choice>
+  </define>
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  <define name="local.section.class">
+    <notAllowed/>
+  </define>
+  <define name="section.class">
+    <choice>
+      <ref name="section"/>
+      <ref name="local.section.class"/>
+    </choice>
+  </define>
+  <define name="local.nav.class">
+    <notAllowed/>
+  </define>
+  <define name="nav.class">
+    <choice>
+      
+      
+      
+      
+      <ref name="bibliography"/>
+      <ref name="local.nav.class"/>
+    </choice>
+  </define>
+
+<!-- Redeclaration placeholder ............................................ -->
+<!-- For redeclaring entities that are declared after this point while
+     retaining their references to the entities that are declared before
+     this point -->
+<!-- ...................................................................... -->
+<!-- Entities for element mixtures ........................................ -->
+<!-- The DocBook TC may produce an official forms module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+
+  <define name="forms.hook">
+    <notAllowed/>
+  </define>
+
+  <define name="local.divcomponent.mix">
+    <notAllowed/>
+  </define>
+  <define name="divcomponent.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="compound.class"/>
+      
+      <ref name="descobj.class"/>
+      
+      
+      <ref name="forms.hook"/>
+      <ref name="local.divcomponent.mix"/>
+    </choice>
+  </define>
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+<!-- Redeclaration placeholder 2 .......................................... -->
+<!-- For redeclaring entities that are declared after this point while
+     retaining their references to the entities that are declared before
+     this point -->
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+  <define name="div.title.content">
+    <ref name="title"/>
+    <optional>
+      <ref name="subtitle"/>
+    </optional>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+  </define>
+  <define name="bookcomponent.title.content">
+    <ref name="title"/>
+    <optional>
+      <ref name="subtitle"/>
+    </optional>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+  </define>
+  <define name="sect.title.content">
+    <ref name="title"/>
+    <optional>
+      <ref name="subtitle"/>
+    </optional>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+  </define>
+  
+  <define name="bookcomponent.content">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="divcomponent.mix"/>
+        </oneOrMore>
+        <choice>
+          
+          
+          
+          <zeroOrMore>
+            <ref name="section.class"/>
+          </zeroOrMore>
+        </choice>
+      </group>
+      
+      
+      
+      <oneOrMore>
+        <ref name="section.class"/>
+      </oneOrMore>
+    </choice>
+  </define>
+
+<!-- ...................................................................... -->
+<!-- Set and SetInfo ...................................................... -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Book and BookInfo .................................................... -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Dedication, ToC, and LoT ............................................. -->
+
+  
+
+  
+
+  
+
+  
+
+<!-- ...................................................................... -->
+<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+
+  <div db:name="appendix.module">
+    <define name="local.appendix.attrib">
+      <empty/>
+    </define>
+    <define name="appendix.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="appendix">
+      <define name="appendix">
+        <element name="appendix">
+          <ref name="appendix.attlist"/>
+          
+          
+          <ref name="bookcomponent.title.content"/>
+          <zeroOrMore>
+            <ref name="nav.class"/>
+          </zeroOrMore>
+          
+          <ref name="bookcomponent.content"/>
+          <zeroOrMore>
+            <ref name="nav.class"/>
+          </zeroOrMore>
+        </element>
+      </define>
+    </div>
+
+    <div db:name="appendix.attlist">
+      <define name="appendix.attlist" combine="interleave">
+        <ref name="label.attrib"/>
+        <ref name="status.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="appendix.role.attrib"/>
+        <ref name="local.appendix.attrib"/>
+      </define>
+    </div>
+  </div>
+
+  
+
+<!-- Note that Part was to have its content model reduced in V4.2.  This
+change will not be made after all. -->
+
+  
+
+  
+
+  
+
+  
+
+<!-- ...................................................................... -->
+<!-- Other Info elements .................................................. -->
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+<!-- ...................................................................... -->
+<!-- Section (parallel to Sect*) ......................................... -->
+
+  <div db:name="section.content.module">
+
+    <div db:name="section.module">
+      <define name="local.section.attrib">
+        <empty/>
+      </define>
+      <define name="section.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="section">
+        <define name="section">
+          <element name="section">
+            <ref name="section.attlist"/>
+            <optional>
+              <ref name="sectioninfo"/>
+            </optional>
+            <ref name="sect.title.content"/>
+            <zeroOrMore>
+              <ref name="nav.class"/>
+            </zeroOrMore>
+            <choice>
+              <group>
+                <oneOrMore>
+                  <ref name="divcomponent.mix"/>
+                </oneOrMore>
+                <choice>
+                  
+                  <zeroOrMore>
+                    <ref name="section.class"/>
+                  </zeroOrMore>
+                  
+                </choice>
+              </group>
+              
+              <oneOrMore>
+                <ref name="section.class"/>
+              </oneOrMore>
+              
+            </choice>
+            <zeroOrMore>
+              <ref name="nav.class"/>
+            </zeroOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="section.attlist">
+        <define name="section.attlist" combine="interleave">
+          <ref name="label.attrib"/>
+          <ref name="status.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="section.role.attrib"/>
+          <ref name="local.section.attrib"/>
+        </define>
+      </div>
+    </div>
+    <define name="sectioninfo.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="sectioninfo.module">
+      <define name="local.sectioninfo.attrib">
+        <empty/>
+      </define>
+
+      <div db:name="sectioninfo">
+        <define name="sectioninfo">
+          <element name="sectioninfo">
+            <ref name="sectioninfo.attlist"/>
+            <oneOrMore>
+              <ref name="info.class"/>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="sectioninfo.attlist">
+        <define name="sectioninfo.attlist" combine="interleave">
+          <ref name="common.attrib"/>
+          <ref name="sectioninfo.role.attrib"/>
+          <ref name="local.sectioninfo.attrib"/>
+        </define>
+      </div>
+    </div>
+  </div>
+
+<!-- ...................................................................... -->
+<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+
+  
+
+  
+
+  
+
+  
+
+  
+
+  
+
+<!-- ...................................................................... -->
+<!-- Bibliography ......................................................... -->
+
+  <div db:name="bibliography.content.module">
+
+    <div db:name="bibliography.module">
+      <define name="local.bibliography.attrib">
+        <empty/>
+      </define>
+      <define name="bibliography.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="bibliography">
+        <define name="bibliography">
+          <element name="bibliography">
+            <ref name="bibliography.attlist"/>
+            
+            <optional>
+              <ref name="bookcomponent.title.content"/>
+            </optional>
+            <zeroOrMore>
+              <ref name="component.mix"/>
+            </zeroOrMore>
+            <choice>
+              <oneOrMore>
+                <ref name="bibliodiv"/>
+              </oneOrMore>
+              <oneOrMore>
+                <choice>
+                  
+                  <ref name="bibliomixed"/>
+                </choice>
+              </oneOrMore>
+            </choice>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="bibliography.attlist">
+        <define name="bibliography.attlist" combine="interleave">
+          <ref name="status.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="bibliography.role.attrib"/>
+          <ref name="local.bibliography.attrib"/>
+        </define>
+      </div>
+    </div>
+
+    <div db:name="bibliodiv.module">
+      <define name="local.bibliodiv.attrib">
+        <empty/>
+      </define>
+      <define name="bibliodiv.role.attrib">
+        <ref name="role.attrib"/>
+      </define>
+
+      <div db:name="bibliodiv">
+        <define name="bibliodiv">
+          <element name="bibliodiv">
+            <ref name="bibliodiv.attlist"/>
+            <optional>
+              <ref name="sect.title.content"/>
+            </optional>
+            <zeroOrMore>
+              <ref name="component.mix"/>
+            </zeroOrMore>
+            <oneOrMore>
+              <choice>
+                
+                <ref name="bibliomixed"/>
+              </choice>
+            </oneOrMore>
+          </element>
+        </define>
+      </div>
+
+      <div db:name="bibliodiv.attlist">
+        <define name="bibliodiv.attlist" combine="interleave">
+          <ref name="status.attrib"/>
+          <ref name="common.attrib"/>
+          <ref name="bibliodiv.role.attrib"/>
+          <ref name="local.bibliodiv.attrib"/>
+        </define>
+      </div>
+    </div>
+  </div>
+
+<!-- ...................................................................... -->
+<!-- Glossary ............................................................. -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Index and SetIndex ................................................... -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- RefEntry ............................................................. -->
+
+  
+
+<!-- ...................................................................... -->
+<!-- Article .............................................................. -->
+<!-- An Article is a chapter-level, stand-alone document that is often,
+     but need not be, collected into a Book. -->
+
+  <div db:name="article.module">
+    <define name="local.article.attrib">
+      <empty/>
+    </define>
+    <define name="article.role.attrib">
+      <ref name="role.attrib"/>
+    </define>
+
+    <div db:name="article">
+      <define name="article">
+        <element name="article">
+          <ref name="article.attlist"/>
+          <optional>
+            <ref name="div.title.content"/>
+          </optional>
+          <optional>
+            <ref name="articleinfo"/>
+          </optional>
+          
+          
+          <ref name="bookcomponent.content"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="nav.class"/>
+              <ref name="appendix.class"/>
+              
+            </choice>
+          </zeroOrMore>
+<!-- this test doesn't work yet because of a bug in relames
+          <s:assert test="count(title) = 0 or count(articleinfo/title) = 0 or articleinfo/title = title">&lt;article&gt;/&lt;title&gt; and &lt;articleinfo&gt;/&lt;title&gt; differ</s:assert>
+-->
+        </element>
+      </define>
+    </div>
+
+<!-- Class: Indicates the type of a particular article;
+               all articles have the same structure and general purpose.
+               No default. -->
+<!-- ParentBook: ID of the enclosing Book -->
+
+    <div db:name="article.attlist">
+      <define name="article.attlist" combine="interleave">
+        <optional>
+          <attribute name="class">
+            <choice>
+              <value>journalarticle</value>
+              <value>productsheet</value>
+              <value>whitepaper</value>
+              <value>techreport</value>
+              <value>specification</value>
+              <value>faq</value>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="parentbook">
+            <data type="IDREF"/>
+          </attribute>
+        </optional>
+        <ref name="status.attrib"/>
+        <ref name="common.attrib"/>
+        <ref name="article.role.attrib"/>
+        <ref name="local.article.attrib"/>
+      </define>
+    </div>
+  </div>
+
+<!-- End of DocBook document hierarchy module V4.2 ........................ -->
+<!-- ...................................................................... -->
+
+
+
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+
+  
+
+<rng:div xmlns="" doc:docbook="yes">
+<partinfo>
+<releaseinfo role="cvs">$Id$</releaseinfo>
+<title>DocBook Additional General Entities</title>
+<productname>DocBook</productname>
+<productnumber>4.2</productnumber>
+<releaseinfo role="filename">dbgenent</releaseinfo>
+<copyright>
+<year>1992</year>
+<year>1993</year>
+<year>1994</year>
+<year>1995</year>
+<year>1996</year>
+<year>1997</year>
+<year>1998</year>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<holder>HaL Computer Systems, Inc.</holder>
+<holder>O'Reilly &amp; Associates, Inc.</holder>
+<holder>ArborText, Inc.</holder>
+<holder>Fujitsu Software Corporation</holder>
+<holder>Norman Walsh</holder>
+<holder>Sun Microsystems, Inc.</holder>
+<holder>OASIS Open, Inc.</holder>
+</copyright>
+
+<legalnotice>
+<para>Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema for
+any purpose. It is provided <quote>as is</quote> without expressed or implied
+warranty.</para>
+
+<para>If you modify the DocBook in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your schema as a variant of DocBook. See
+the maintenance documentation for more information.</para>
+
+<para>Please direct all questions, bug reports, or suggestions for
+changes to the <email>docbook@lists.oasis-open.org</email> mailing list. For more
+information, see <ulink url="http://www.oasis-open.org/docbook/"/>.</para>
+</legalnotice>
+</partinfo>
+
+<partintro>
+<para>This module is a place holder for additional general entity declarations.</para>
+
+<para>When using this schema in driver files referring to the DTD version
+of this module, please use an entity
+declaration that uses the public identifier shown below:</para>
+
+<screen>&lt;!ENTITY % dbgenent PUBLIC
+"-//OASIS//ENTITIES DocBook Additional General Entities V4.2//EN"
+"dbgenent.mod"&gt;
+%dbgenent;</screen>
+
+<para>In the DTD versions of this module, you can edit this file to
+add the following:</para>
+
+<itemizedlist>
+<listitem><para>General entity declarations of any kind.  For example:</para>
+<programlisting>&lt;!ENTITY productname "WinWidget"&gt;          <lineannotation>(small boilerplate)</lineannotation>
+&lt;!ENTITY legal-notice SYSTEM "notice.sgm"&gt; <lineannotation>(large boilerplate)</lineannotation></programlisting>
+</listitem>
+
+<listitem><para>Notation declarations.  For example:</para>
+<programlisting>&lt;!NOTATION chicken-scratch SYSTEM&gt;</programlisting>
+</listitem>
+
+<listitem><para>Declarations for and references to external parameter entities
+containing collections of any of the above.  For example:</para>
+<programlisting>&lt;!ENTITY % all-titles PUBLIC "-//DocTools//ELEMENTS Book Titles//EN"
+    "booktitles.ent"&gt;
+%all-titles;</programlisting>
+</listitem>
+</itemizedlist>
+</partintro>
+</rng:div>
+
+<!-- End of DocBook additional general entities V4.2 ...................... -->
+<!-- ...................................................................... -->
+
+
+
+<!-- End of DocBook XML DTD V4.2 .......................................... -->
+<!-- ...................................................................... -->
+
+  
+</grammar>
\ No newline at end of file