]> granicus.if.org Git - docbook-dsssl/commitdiff
Moving relaxng directory from docbook/ to schema/ where it belongs
authorNorman Walsh <ndw@nwalsh.com>
Mon, 12 Nov 2001 21:22:23 +0000 (21:22 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Mon, 12 Nov 2001 21:22:23 +0000 (21:22 +0000)
schema/relaxng/README [new file with mode: 0644]
schema/relaxng/calstblx.rng [new file with mode: 0644]
schema/relaxng/dbcent.rng [new file with mode: 0644]
schema/relaxng/dbgenent.rng [new file with mode: 0644]
schema/relaxng/dbhier.rng [new file with mode: 0644]
schema/relaxng/dbnotn.rng [new file with mode: 0644]
schema/relaxng/dbpool.rng [new file with mode: 0644]
schema/relaxng/docbook.rng [new file with mode: 0644]
schema/relaxng/soextblx.rng [new file with mode: 0644]

diff --git a/schema/relaxng/README b/schema/relaxng/README
new file mode 100644 (file)
index 0000000..db9aab4
--- /dev/null
@@ -0,0 +1,4 @@
+This is a work in progress.
+
+These files were generated automatically with http://www.thaiopensource.com/dtdinst/
+
diff --git a/schema/relaxng/calstblx.rng b/schema/relaxng/calstblx.rng
new file mode 100644 (file)
index 0000000..644b9c7
--- /dev/null
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+         xmlns="http://relaxng.org/ns/structure/0.9"
+          xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+
+<!-- ...................................................................... -->
+<!-- DocBook XML CALS Table Model V4.1.2 .................................... -->
+<!-- File calstblx.mod .................................................... -->
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, Norman Walsh and the Organization for the Advancement
+     of Structured Information Standards (OASIS).
+
+     This DTD is based on the CALS Table Model
+     PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+     $Id$
+
+     Permission to use, copy, modify and distribute the DocBook XML 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.
+
+     If you modify the DocBook XML 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.
+
+     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/.
+-->
+<!-- ...................................................................... -->
+
+<!-- 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>
+  <define name="titles">
+    <optional>
+      <ref name="title"/>
+    </optional>
+  </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-titles.mdl">
+    <ref name="titles"/>
+  </define>
+  <define name="tbl.table-main.mdl">
+    <choice>
+      <oneOrMore>
+        <ref name="tgroup"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="graphic"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <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"/>
+    </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 XML CALS Table Model V4.1.2 ............................. -->
+<!-- ...................................................................... -->
+</grammar>
diff --git a/schema/relaxng/dbcent.rng b/schema/relaxng/dbcent.rng
new file mode 100644 (file)
index 0000000..360feb2
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+         xmlns="http://relaxng.org/ns/structure/0.9"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+
+<!-- ...................................................................... -->
+<!-- DocBook XML character entities module V4.1.2 ........................... -->
+<!-- File dbcentx.mod ..................................................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, Norman Walsh, and the Organization for the Advancement
+     of Structured Information Standards (OASIS).
+
+     $Id$
+
+     Permission to use, copy, modify and distribute the DocBook XML 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.
+
+     If you modify the DocBook XML 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.
+
+     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/.
+-->
+
+<!-- ...................................................................... -->
+
+<!-- This module usually contains the entity declarations for the
+     standard ISO entity sets used by DocBook. However, there is no
+     RELAX NG equivalent, so this file is empty. -->
+
+</grammar>
diff --git a/schema/relaxng/dbgenent.rng b/schema/relaxng/dbgenent.rng
new file mode 100644 (file)
index 0000000..0a9fb89
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+         xmlns="http://relaxng.org/ns/structure/0.9"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+
+<!-- ...................................................................... -->
+<!-- DocBook XML additional general entities V4.1.2 ......................... -->
+
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, and the Organization for the Advancement of
+     Structured Information Standards (OASIS).
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbgenent PUBLIC
+     "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN"
+     "dbgenent.mod">
+     %dbgenent;
+-->
+
+<!-- File dbgenent.mod .................................................... -->
+
+<!-- You can edit this file to add the following:
+
+     o General entity declarations of any kind.  For example:
+
+       <!ENTITY happyface SDATA "insert-face">    (system-specific data)
+       <!ENTITY productname "WinWidget">          (small boilerplate)
+       <!ENTITY legal-notice SYSTEM "notice.sgm"> (large boilerplate)
+
+     o Notation declarations.  For example:
+
+       <!NOTATION chicken-scratch SYSTEM>
+
+     o Declarations for and references to external parameter entities
+       containing collections of any of the above.  For example:
+
+       <!ENTITY % all-titles PUBLIC "-//DocTools//ELEMENTS Book Titles//EN"
+           "booktitles.ent">
+       %all-titles;
+-->
+
+<!-- End of DocBook XML additional general entities V4.1.2 .................. -->
+<!-- ...................................................................... -->
+
+</grammar>
diff --git a/schema/relaxng/dbhier.rng b/schema/relaxng/dbhier.rng
new file mode 100644 (file)
index 0000000..e77678a
--- /dev/null
@@ -0,0 +1,2956 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+         xmlns="http://relaxng.org/ns/structure/0.9"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+
+<!-- ...................................................................... -->
+<!-- DocBook XML document hierarchy module V4.1.2 ........................... -->
+<!-- File dbhierx.mod ..................................................... -->
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, Norman Walsh, and the Organization for the Advancement
+     of Structured Information Standards (OASIS).
+
+     $Id$
+
+     Permission to use, copy, modify and distribute the DocBook XML 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.
+
+     If you modify the DocBook XML 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.
+
+     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/.
+-->
+<!-- ...................................................................... -->
+<!-- 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.
+
+     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.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbhier PUBLIC
+     "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN"
+     "dbhierx.mod">
+     %dbhier;
+
+     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.
+-->
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+  <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.article.class">
+    <notAllowed/>
+  </define>
+  <define name="article.class">
+    <choice>
+      <ref name="article"/>
+      <ref name="local.article.class"/>
+    </choice>
+  </define>
+  <define name="local.book.class">
+    <notAllowed/>
+  </define>
+  <define name="book.class">
+    <choice>
+      <ref name="book"/>
+      <ref name="local.book.class"/>
+    </choice>
+  </define>
+  <define name="local.chapter.class">
+    <notAllowed/>
+  </define>
+  <define name="chapter.class">
+    <choice>
+      <ref name="chapter"/>
+      <ref name="local.chapter.class"/>
+    </choice>
+  </define>
+  <define name="local.index.class">
+    <notAllowed/>
+  </define>
+  <define name="index.class">
+    <choice>
+      <ref name="index"/>
+      <ref name="setindex"/>
+      <ref name="local.index.class"/>
+    </choice>
+  </define>
+  <define name="local.refentry.class">
+    <notAllowed/>
+  </define>
+  <define name="refentry.class">
+    <choice>
+      <ref name="refentry"/>
+      <ref name="local.refentry.class"/>
+    </choice>
+  </define>
+  <define name="local.nav.class">
+    <notAllowed/>
+  </define>
+  <define name="nav.class">
+    <choice>
+      <ref name="toc"/>
+      <ref name="lot"/>
+      <ref name="index"/>
+      <ref name="glossary"/>
+      <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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="compound.class"/>
+      <ref name="genobj.class"/>
+      <ref name="descobj.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <ref name="forms.hook"/>
+      <ref name="local.divcomponent.mix"/>
+    </choice>
+  </define>
+  <define name="local.refcomponent.mix">
+    <notAllowed/>
+  </define>
+  <define name="refcomponent.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="compound.class"/>
+      <ref name="genobj.class"/>
+      <ref name="descobj.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <ref name="local.refcomponent.mix"/>
+    </choice>
+  </define>
+  <define name="local.indexdivcomponent.mix">
+    <notAllowed/>
+  </define>
+  <define name="indexdivcomponent.mix">
+    <choice>
+      <ref name="itemizedlist"/>
+      <ref name="orderedlist"/>
+      <ref name="variablelist"/>
+      <ref name="simplelist"/>
+      <ref name="linespecific.class"/>
+      <ref name="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="anchor"/>
+      <ref name="remark"/>
+      <ref name="link.char.class"/>
+      <ref name="beginpage"/>
+      <ref name="local.indexdivcomponent.mix"/>
+    </choice>
+  </define>
+  <define name="local.refname.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="refname.char.mix">
+    <choice>
+      <text/>
+      <ref name="tech.char.class"/>
+      <ref name="local.refname.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.partcontent.mix">
+    <notAllowed/>
+  </define>
+  <define name="partcontent.mix">
+    <choice>
+      <ref name="appendix.class"/>
+      <ref name="chapter.class"/>
+      <ref name="nav.class"/>
+      <ref name="article.class"/>
+      <ref name="preface"/>
+      <ref name="refentry.class"/>
+      <ref name="reference"/>
+      <ref name="local.partcontent.mix"/>
+    </choice>
+  </define>
+  <define name="local.refinline.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="refinline.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="base.char.class"/>
+      <ref name="docinfo.char.class"/>
+      <ref name="other.char.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <ref name="local.refinline.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.refclass.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="refclass.char.mix">
+    <choice>
+      <text/>
+      <ref name="application"/>
+      <ref name="local.refclass.char.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="refsect.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="sect1"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="refentry.class"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="simplesect"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="section"/>
+          </zeroOrMore>
+        </choice>
+      </group>
+      <oneOrMore>
+        <ref name="sect1"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="refentry.class"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="simplesect"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="section"/>
+      </oneOrMore>
+    </choice>
+  </define>
+<!-- ...................................................................... -->
+<!-- Set and SetInfo ...................................................... -->
+  <define name="local.set.attrib">
+    <empty/>
+  </define>
+  <define name="set.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="set">
+    <element name="set">
+      <ref name="set.attlist"/>
+      <optional>
+        <ref name="div.title.content"/>
+      </optional>
+      <optional>
+        <ref name="setinfo"/>
+      </optional>
+      <optional>
+        <ref name="toc"/>
+      </optional>
+      <oneOrMore>
+        <ref name="book.class"/>
+      </oneOrMore>
+      <optional>
+        <ref name="setindex"/>
+      </optional>
+    </element>
+  </define>
+<!--end of set.element-->
+<!-- FPI: SGML formal public identifier -->
+  <define name="set.attlist" combine="interleave">
+    <optional>
+      <attribute name="fpi"/>
+    </optional>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="set.role.attrib"/>
+    <ref name="local.set.attrib"/>
+  </define>
+<!--end of set.attlist-->
+<!--end of set.module-->
+  <define name="local.setinfo.attrib">
+    <empty/>
+  </define>
+  <define name="setinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="setinfo">
+    <element name="setinfo">
+      <ref name="setinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of setinfo.element-->
+<!-- Contents: IDs of the ToC, Books, and SetIndex that comprise 
+               the set, in the order of their appearance -->
+  <define name="setinfo.attlist" combine="interleave">
+    <optional>
+      <attribute name="contents">
+        <data type="IDREFS"/>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="setinfo.role.attrib"/>
+    <ref name="local.setinfo.attrib"/>
+  </define>
+<!--end of setinfo.attlist-->
+<!--end of setinfo.module-->
+<!--end of set.content.module-->
+<!-- ...................................................................... -->
+<!-- Book and BookInfo .................................................... -->
+  <define name="local.book.attrib">
+    <empty/>
+  </define>
+  <define name="book.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="book">
+    <element name="book">
+      <ref name="book.attlist"/>
+      <optional>
+        <ref name="div.title.content"/>
+      </optional>
+      <optional>
+        <ref name="bookinfo"/>
+      </optional>
+      <zeroOrMore>
+        <choice>
+          <ref name="dedication"/>
+          <ref name="toc"/>
+          <ref name="lot"/>
+          <ref name="glossary"/>
+          <ref name="bibliography"/>
+          <ref name="preface"/>
+          <ref name="chapter.class"/>
+          <ref name="reference"/>
+          <ref name="part"/>
+          <ref name="article.class"/>
+          <ref name="appendix.class"/>
+          <ref name="index.class"/>
+          <ref name="colophon"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of book.element-->
+<!-- FPI: SGML formal public identifier -->
+  <define name="book.attlist" combine="interleave">
+    <optional>
+      <attribute name="fpi"/>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="book.role.attrib"/>
+    <ref name="local.book.attrib"/>
+  </define>
+<!--end of book.attlist-->
+<!--end of book.module-->
+  <define name="local.bookinfo.attrib">
+    <empty/>
+  </define>
+  <define name="bookinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="bookinfo">
+    <element name="bookinfo">
+      <ref name="bookinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of bookinfo.element-->
+<!-- Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+               Appendixes, References, GLossary, Bibliography, and indexes
+               comprising the Book, in the order of their appearance -->
+  <define name="bookinfo.attlist" combine="interleave">
+    <optional>
+      <attribute name="contents">
+        <data type="IDREFS"/>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="bookinfo.role.attrib"/>
+    <ref name="local.bookinfo.attrib"/>
+  </define>
+<!--end of bookinfo.attlist-->
+<!--end of bookinfo.module-->
+<!--end of book.content.module-->
+<!-- ...................................................................... -->
+<!-- Dedication, ToC, and LoT ............................................. -->
+  <define name="local.dedication.attrib">
+    <empty/>
+  </define>
+  <define name="dedication.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="dedication">
+    <element name="dedication">
+      <ref name="dedication.attlist"/>
+      <optional>
+        <ref name="sect.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="legalnotice.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of dedication.element-->
+  <define name="dedication.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="dedication.role.attrib"/>
+    <ref name="local.dedication.attrib"/>
+  </define>
+<!--end of dedication.attlist-->
+<!--end of dedication.module-->
+  <define name="local.colophon.attrib">
+    <empty/>
+  </define>
+  <define name="colophon.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="colophon">
+    <element name="colophon">
+      <ref name="colophon.attlist"/>
+      <optional>
+        <ref name="sect.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="textobject.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of colophon.element-->
+  <define name="colophon.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="colophon.role.attrib"/>
+    <ref name="local.colophon.attrib"/>
+  </define>
+<!--end of colophon.attlist-->
+<!--end of colophon.module-->
+  <define name="local.toc.attrib">
+    <empty/>
+  </define>
+  <define name="toc.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="toc">
+    <element name="toc">
+      <ref name="toc.attlist"/>
+      <optional>
+        <ref name="bookcomponent.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="tocfront"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <choice>
+          <ref name="tocpart"/>
+          <ref name="tocchap"/>
+        </choice>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="tocback"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of toc.element-->
+  <define name="toc.attlist" combine="interleave">
+    <ref name="pagenum.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="toc.role.attrib"/>
+    <ref name="local.toc.attrib"/>
+  </define>
+<!--end of toc.attlist-->
+<!--end of toc.module-->
+  <define name="local.tocfront.attrib">
+    <empty/>
+  </define>
+  <define name="tocfront.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="tocfront">
+    <element name="tocfront">
+      <ref name="tocfront.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tocfront.element-->
+<!-- to element that this entry represents -->
+  <define name="tocfront.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="linkend.attrib"/>
+    <ref name="pagenum.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="tocfront.role.attrib"/>
+    <ref name="local.tocfront.attrib"/>
+  </define>
+<!--end of tocfront.attlist-->
+<!--end of tocfront.module-->
+  <define name="local.tocentry.attrib">
+    <empty/>
+  </define>
+  <define name="tocentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="tocentry">
+    <element name="tocentry">
+      <ref name="tocentry.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tocentry.element-->
+<!-- to element that this entry represents -->
+  <define name="tocentry.attlist" combine="interleave">
+    <ref name="linkend.attrib"/>
+    <ref name="pagenum.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="tocentry.role.attrib"/>
+    <ref name="local.tocentry.attrib"/>
+  </define>
+<!--end of tocentry.attlist-->
+<!--end of tocentry.module-->
+  <define name="local.tocpart.attrib">
+    <empty/>
+  </define>
+  <define name="tocpart.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="tocpart">
+    <element name="tocpart">
+      <ref name="tocpart.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="tocchap"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tocpart.element-->
+  <define name="tocpart.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="tocpart.role.attrib"/>
+    <ref name="local.tocpart.attrib"/>
+  </define>
+<!--end of tocpart.attlist-->
+<!--end of tocpart.module-->
+  <define name="local.tocchap.attrib">
+    <empty/>
+  </define>
+  <define name="tocchap.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="tocchap">
+    <element name="tocchap">
+      <ref name="tocchap.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="toclevel1"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tocchap.element-->
+  <define name="tocchap.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="tocchap.role.attrib"/>
+    <ref name="local.tocchap.attrib"/>
+  </define>
+<!--end of tocchap.attlist-->
+<!--end of tocchap.module-->
+  <define name="local.toclevel1.attrib">
+    <empty/>
+  </define>
+  <define name="toclevel1.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="toclevel1">
+    <element name="toclevel1">
+      <ref name="toclevel1.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="toclevel2"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of toclevel1.element-->
+  <define name="toclevel1.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="toclevel1.role.attrib"/>
+    <ref name="local.toclevel1.attrib"/>
+  </define>
+<!--end of toclevel1.attlist-->
+<!--end of toclevel1.module-->
+  <define name="local.toclevel2.attrib">
+    <empty/>
+  </define>
+  <define name="toclevel2.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="toclevel2">
+    <element name="toclevel2">
+      <ref name="toclevel2.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="toclevel3"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of toclevel2.element-->
+  <define name="toclevel2.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="toclevel2.role.attrib"/>
+    <ref name="local.toclevel2.attrib"/>
+  </define>
+<!--end of toclevel2.attlist-->
+<!--end of toclevel2.module-->
+  <define name="local.toclevel3.attrib">
+    <empty/>
+  </define>
+  <define name="toclevel3.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="toclevel3">
+    <element name="toclevel3">
+      <ref name="toclevel3.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="toclevel4"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of toclevel3.element-->
+  <define name="toclevel3.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="toclevel3.role.attrib"/>
+    <ref name="local.toclevel3.attrib"/>
+  </define>
+<!--end of toclevel3.attlist-->
+<!--end of toclevel3.module-->
+  <define name="local.toclevel4.attrib">
+    <empty/>
+  </define>
+  <define name="toclevel4.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="toclevel4">
+    <element name="toclevel4">
+      <ref name="toclevel4.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="toclevel5"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of toclevel4.element-->
+  <define name="toclevel4.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="toclevel4.role.attrib"/>
+    <ref name="local.toclevel4.attrib"/>
+  </define>
+<!--end of toclevel4.attlist-->
+<!--end of toclevel4.module-->
+  <define name="local.toclevel5.attrib">
+    <empty/>
+  </define>
+  <define name="toclevel5.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="toclevel5">
+    <element name="toclevel5">
+      <ref name="toclevel5.attlist"/>
+      <oneOrMore>
+        <ref name="tocentry"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of toclevel5.element-->
+  <define name="toclevel5.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="toclevel5.role.attrib"/>
+    <ref name="local.toclevel5.attrib"/>
+  </define>
+<!--end of toclevel5.attlist-->
+<!--end of toclevel5.module-->
+  <define name="local.tocback.attrib">
+    <empty/>
+  </define>
+  <define name="tocback.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="tocback">
+    <element name="tocback">
+      <ref name="tocback.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tocback.element-->
+<!-- to element that this entry represents -->
+  <define name="tocback.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="linkend.attrib"/>
+    <ref name="pagenum.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="tocback.role.attrib"/>
+    <ref name="local.tocback.attrib"/>
+  </define>
+<!--end of tocback.attlist-->
+<!--end of tocback.module-->
+<!--end of toc.content.module-->
+  <define name="local.lot.attrib">
+    <empty/>
+  </define>
+  <define name="lot.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="lot">
+    <element name="lot">
+      <ref name="lot.attlist"/>
+      <optional>
+        <ref name="bookcomponent.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="lotentry"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of lot.element-->
+  <define name="lot.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="lot.role.attrib"/>
+    <ref name="local.lot.attrib"/>
+  </define>
+<!--end of lot.attlist-->
+<!--end of lot.module-->
+  <define name="local.lotentry.attrib">
+    <empty/>
+  </define>
+  <define name="lotentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="lotentry">
+    <element name="lotentry">
+      <ref name="lotentry.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of lotentry.element-->
+<!-- SrcCredit: Information about the source of the entry, 
+               as for a list of illustrations -->
+<!-- linkend: to element that this entry represents-->
+  <define name="lotentry.attlist" combine="interleave">
+    <optional>
+      <attribute name="srccredit"/>
+    </optional>
+    <ref name="pagenum.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="linkend.attrib"/>
+    <ref name="lotentry.role.attrib"/>
+    <ref name="local.lotentry.attrib"/>
+  </define>
+<!--end of lotentry.attlist-->
+<!--end of lotentry.module-->
+<!--end of lot.content.module-->
+<!-- ...................................................................... -->
+<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+  <define name="local.appendix.attrib">
+    <empty/>
+  </define>
+  <define name="appendix.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="appendix">
+    <element name="appendix">
+      <ref name="appendix.attlist"/>
+      <optional>
+        <ref name="appendixinfo"/>
+      </optional>
+      <ref name="bookcomponent.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="tocchap"/>
+      </optional>
+      <ref name="bookcomponent.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of appendix.element-->
+  <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>
+<!--end of appendix.attlist-->
+<!--end of appendix.module-->
+  <define name="local.chapter.attrib">
+    <empty/>
+  </define>
+  <define name="chapter.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="chapter">
+    <element name="chapter">
+      <ref name="chapter.attlist"/>
+      <optional>
+        <ref name="chapterinfo"/>
+      </optional>
+      <ref name="bookcomponent.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="tocchap"/>
+      </optional>
+      <ref name="bookcomponent.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of chapter.element-->
+  <define name="chapter.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="chapter.role.attrib"/>
+    <ref name="local.chapter.attrib"/>
+  </define>
+<!--end of chapter.attlist-->
+<!--end of chapter.module-->
+<!-- Note that Part was to have its content model reduced in V4.1.2.  This
+change will not be made after all. -->
+  <define name="local.part.attrib">
+    <empty/>
+  </define>
+  <define name="part.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="part">
+    <element name="part">
+      <ref name="part.attlist"/>
+      <optional>
+        <ref name="partinfo"/>
+      </optional>
+      <ref name="bookcomponent.title.content"/>
+      <optional>
+        <ref name="partintro"/>
+      </optional>
+      <oneOrMore>
+        <ref name="partcontent.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of part.element-->
+  <define name="part.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="part.role.attrib"/>
+    <ref name="local.part.attrib"/>
+  </define>
+<!--end of part.attlist-->
+<!--ELEMENT PartIntro (defined below)-->
+<!--end of part.module-->
+  <define name="local.preface.attrib">
+    <empty/>
+  </define>
+  <define name="preface.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="preface">
+    <element name="preface">
+      <ref name="preface.attlist"/>
+      <optional>
+        <ref name="prefaceinfo"/>
+      </optional>
+      <ref name="bookcomponent.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="tocchap"/>
+      </optional>
+      <ref name="bookcomponent.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of preface.element-->
+  <define name="preface.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="preface.role.attrib"/>
+    <ref name="local.preface.attrib"/>
+  </define>
+<!--end of preface.attlist-->
+<!--end of preface.module-->
+  <define name="local.reference.attrib">
+    <empty/>
+  </define>
+  <define name="reference.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="reference">
+    <element name="reference">
+      <ref name="reference.attlist"/>
+      <optional>
+        <ref name="referenceinfo"/>
+      </optional>
+      <ref name="bookcomponent.title.content"/>
+      <optional>
+        <ref name="partintro"/>
+      </optional>
+      <oneOrMore>
+        <ref name="refentry.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of reference.element-->
+  <define name="reference.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="reference.role.attrib"/>
+    <ref name="local.reference.attrib"/>
+  </define>
+<!--end of reference.attlist-->
+<!--ELEMENT PartIntro (defined below)-->
+<!--end of reference.module-->
+  <define name="local.partintro.attrib">
+    <empty/>
+  </define>
+  <define name="partintro.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="partintro">
+    <element name="partintro">
+      <ref name="partintro.attlist"/>
+      <optional>
+        <ref name="div.title.content"/>
+      </optional>
+      <ref name="bookcomponent.content"/>
+    </element>
+  </define>
+<!--end of partintro.element-->
+  <define name="partintro.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="local.partintro.attrib"/>
+    <ref name="partintro.role.attrib"/>
+  </define>
+<!--end of partintro.attlist-->
+<!--end of partintro.module-->
+<!-- ...................................................................... -->
+<!-- Other Info elements .................................................. -->
+  <define name="local.appendixinfo.attrib">
+    <empty/>
+  </define>
+  <define name="appendixinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="appendixinfo">
+    <element name="appendixinfo">
+      <ref name="appendixinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of appendixinfo.element-->
+  <define name="appendixinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="appendixinfo.role.attrib"/>
+    <ref name="local.appendixinfo.attrib"/>
+  </define>
+<!--end of appendixinfo.attlist-->
+<!--end of appendixinfo.module-->
+  <define name="local.bibliographyinfo.attrib">
+    <empty/>
+  </define>
+  <define name="bibliographyinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="bibliographyinfo">
+    <element name="bibliographyinfo">
+      <ref name="bibliographyinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of bibliographyinfo.element-->
+  <define name="bibliographyinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="bibliographyinfo.role.attrib"/>
+    <ref name="local.bibliographyinfo.attrib"/>
+  </define>
+<!--end of bibliographyinfo.attlist-->
+<!--end of bibliographyinfo.module-->
+  <define name="local.chapterinfo.attrib">
+    <empty/>
+  </define>
+  <define name="chapterinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="chapterinfo">
+    <element name="chapterinfo">
+      <ref name="chapterinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of chapterinfo.element-->
+  <define name="chapterinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="chapterinfo.role.attrib"/>
+    <ref name="local.chapterinfo.attrib"/>
+  </define>
+<!--end of chapterinfo.attlist-->
+<!--end of chapterinfo.module-->
+  <define name="local.glossaryinfo.attrib">
+    <empty/>
+  </define>
+  <define name="glossaryinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossaryinfo">
+    <element name="glossaryinfo">
+      <ref name="glossaryinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of glossaryinfo.element-->
+  <define name="glossaryinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="glossaryinfo.role.attrib"/>
+    <ref name="local.glossaryinfo.attrib"/>
+  </define>
+<!--end of glossaryinfo.attlist-->
+<!--end of glossaryinfo.module-->
+  <define name="local.indexinfo.attrib">
+    <empty/>
+  </define>
+  <define name="indexinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="indexinfo">
+    <element name="indexinfo">
+      <ref name="indexinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of indexinfo.element-->
+  <define name="indexinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="indexinfo.role.attrib"/>
+    <ref name="local.indexinfo.attrib"/>
+  </define>
+<!--end of indexinfo.attlist-->
+<!--end of indexinfo.module-->
+  <define name="local.setindexinfo.attrib">
+    <empty/>
+  </define>
+  <define name="setindexinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="setindexinfo">
+    <element name="setindexinfo">
+      <ref name="setindexinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of setindexinfo.element-->
+  <define name="setindexinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="setindexinfo.role.attrib"/>
+    <ref name="local.setindexinfo.attrib"/>
+  </define>
+<!--end of setindexinfo.attlist-->
+<!--end of setindexinfo.module-->
+  <define name="local.partinfo.attrib">
+    <empty/>
+  </define>
+  <define name="partinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="partinfo">
+    <element name="partinfo">
+      <ref name="partinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of partinfo.element-->
+  <define name="partinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="partinfo.role.attrib"/>
+    <ref name="local.partinfo.attrib"/>
+  </define>
+<!--end of partinfo.attlist-->
+<!--end of partinfo.module-->
+  <define name="local.prefaceinfo.attrib">
+    <empty/>
+  </define>
+  <define name="prefaceinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="prefaceinfo">
+    <element name="prefaceinfo">
+      <ref name="prefaceinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of prefaceinfo.element-->
+  <define name="prefaceinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="prefaceinfo.role.attrib"/>
+    <ref name="local.prefaceinfo.attrib"/>
+  </define>
+<!--end of prefaceinfo.attlist-->
+<!--end of prefaceinfo.module-->
+  <define name="local.refentryinfo.attrib">
+    <empty/>
+  </define>
+  <define name="refentryinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refentryinfo">
+    <element name="refentryinfo">
+      <ref name="refentryinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refentryinfo.element-->
+  <define name="refentryinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refentryinfo.role.attrib"/>
+    <ref name="local.refentryinfo.attrib"/>
+  </define>
+<!--end of refentryinfo.attlist-->
+<!--end of refentryinfo.module-->
+  <define name="local.refsect1info.attrib">
+    <empty/>
+  </define>
+  <define name="refsect1info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsect1info">
+    <element name="refsect1info">
+      <ref name="refsect1info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refsect1info.element-->
+  <define name="refsect1info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refsect1info.role.attrib"/>
+    <ref name="local.refsect1info.attrib"/>
+  </define>
+<!--end of refsect1info.attlist-->
+<!--end of refsect1info.module-->
+  <define name="local.refsect2info.attrib">
+    <empty/>
+  </define>
+  <define name="refsect2info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsect2info">
+    <element name="refsect2info">
+      <ref name="refsect2info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refsect2info.element-->
+  <define name="refsect2info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refsect2info.role.attrib"/>
+    <ref name="local.refsect2info.attrib"/>
+  </define>
+<!--end of refsect2info.attlist-->
+<!--end of refsect2info.module-->
+  <define name="local.refsect3info.attrib">
+    <empty/>
+  </define>
+  <define name="refsect3info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsect3info">
+    <element name="refsect3info">
+      <ref name="refsect3info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refsect3info.element-->
+  <define name="refsect3info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refsect3info.role.attrib"/>
+    <ref name="local.refsect3info.attrib"/>
+  </define>
+<!--end of refsect3info.attlist-->
+<!--end of refsect3info.module-->
+  <define name="local.refsynopsisdivinfo.attrib">
+    <empty/>
+  </define>
+  <define name="refsynopsisdivinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsynopsisdivinfo">
+    <element name="refsynopsisdivinfo">
+      <ref name="refsynopsisdivinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refsynopsisdivinfo.element-->
+  <define name="refsynopsisdivinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refsynopsisdivinfo.role.attrib"/>
+    <ref name="local.refsynopsisdivinfo.attrib"/>
+  </define>
+<!--end of refsynopsisdivinfo.attlist-->
+<!--end of refsynopsisdivinfo.module-->
+  <define name="local.referenceinfo.attrib">
+    <empty/>
+  </define>
+  <define name="referenceinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="referenceinfo">
+    <element name="referenceinfo">
+      <ref name="referenceinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of referenceinfo.element-->
+  <define name="referenceinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="referenceinfo.role.attrib"/>
+    <ref name="local.referenceinfo.attrib"/>
+  </define>
+<!--end of referenceinfo.attlist-->
+<!--end of referenceinfo.module-->
+  <define name="local.sect1info.attrib">
+    <empty/>
+  </define>
+  <define name="sect1info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect1info">
+    <element name="sect1info">
+      <ref name="sect1info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sect1info.element-->
+  <define name="sect1info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sect1info.role.attrib"/>
+    <ref name="local.sect1info.attrib"/>
+  </define>
+<!--end of sect1info.attlist-->
+  <define name="local.sect2info.attrib">
+    <empty/>
+  </define>
+  <define name="sect2info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect2info">
+    <element name="sect2info">
+      <ref name="sect2info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sect2info.element-->
+  <define name="sect2info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sect2info.role.attrib"/>
+    <ref name="local.sect2info.attrib"/>
+  </define>
+<!--end of sect2info.attlist-->
+  <define name="local.sect3info.attrib">
+    <empty/>
+  </define>
+  <define name="sect3info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect3info">
+    <element name="sect3info">
+      <ref name="sect3info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sect3info.element-->
+  <define name="sect3info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sect3info.role.attrib"/>
+    <ref name="local.sect3info.attrib"/>
+  </define>
+<!--end of sect3info.attlist-->
+  <define name="local.sect4info.attrib">
+    <empty/>
+  </define>
+  <define name="sect4info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect4info">
+    <element name="sect4info">
+      <ref name="sect4info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sect4info.element-->
+  <define name="sect4info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sect4info.role.attrib"/>
+    <ref name="local.sect4info.attrib"/>
+  </define>
+<!--end of sect4info.attlist-->
+  <define name="local.sect5info.attrib">
+    <empty/>
+  </define>
+  <define name="sect5info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect5info">
+    <element name="sect5info">
+      <ref name="sect5info.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sect5info.element-->
+  <define name="sect5info.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sect5info.role.attrib"/>
+    <ref name="local.sect5info.attrib"/>
+  </define>
+<!--end of sect5info.attlist-->
+<!-- ...................................................................... -->
+<!-- Section (parallel to Sect*) ......................................... -->
+  <define name="local.section.attrib">
+    <empty/>
+  </define>
+  <define name="section.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <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="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="section"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="section"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of section.element-->
+  <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>
+<!--end of section.attlist-->
+<!--end of section.module-->
+  <define name="sectioninfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="local.sectioninfo.attrib">
+    <empty/>
+  </define>
+  <define name="sectioninfo">
+    <element name="sectioninfo">
+      <ref name="sectioninfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sectioninfo.element-->
+  <define name="sectioninfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sectioninfo.role.attrib"/>
+    <ref name="local.sectioninfo.attrib"/>
+  </define>
+<!--end of sectioninfo.attlist-->
+<!--end of sectioninfo.module-->
+<!--end of section.content.module-->
+<!-- ...................................................................... -->
+<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+  <define name="local.sect1.attrib">
+    <empty/>
+  </define>
+  <define name="sect1.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect1">
+    <element name="sect1">
+      <ref name="sect1.attlist"/>
+      <optional>
+        <ref name="sect1info"/>
+      </optional>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="divcomponent.mix"/>
+          </oneOrMore>
+          <choice>
+            <zeroOrMore>
+              <ref name="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="sect2"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="simplesect"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="sect2"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of sect1.element-->
+<!-- Renderas: Indicates the format in which the heading should
+               appear -->
+  <define name="sect1.attlist" combine="interleave">
+    <optional>
+      <attribute name="renderas">
+        <choice>
+          <value>sect2</value>
+          <value>sect3</value>
+          <value>sect4</value>
+          <value>sect5</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="sect1.role.attrib"/>
+    <ref name="local.sect1.attrib"/>
+  </define>
+<!--end of sect1.attlist-->
+<!--end of sect1.module-->
+  <define name="local.sect2.attrib">
+    <empty/>
+  </define>
+  <define name="sect2.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect2">
+    <element name="sect2">
+      <ref name="sect2.attlist"/>
+      <optional>
+        <ref name="sect2info"/>
+      </optional>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="divcomponent.mix"/>
+          </oneOrMore>
+          <choice>
+            <zeroOrMore>
+              <ref name="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="sect3"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="simplesect"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="sect3"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of sect2.element-->
+<!-- Renderas: Indicates the format in which the heading should
+               appear -->
+  <define name="sect2.attlist" combine="interleave">
+    <optional>
+      <attribute name="renderas">
+        <choice>
+          <value>sect1</value>
+          <value>sect3</value>
+          <value>sect4</value>
+          <value>sect5</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="sect2.role.attrib"/>
+    <ref name="local.sect2.attrib"/>
+  </define>
+<!--end of sect2.attlist-->
+<!--end of sect2.module-->
+  <define name="local.sect3.attrib">
+    <empty/>
+  </define>
+  <define name="sect3.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect3">
+    <element name="sect3">
+      <ref name="sect3.attlist"/>
+      <optional>
+        <ref name="sect3info"/>
+      </optional>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="divcomponent.mix"/>
+          </oneOrMore>
+          <choice>
+            <zeroOrMore>
+              <ref name="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="sect4"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="simplesect"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="sect4"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of sect3.element-->
+<!-- Renderas: Indicates the format in which the heading should
+               appear -->
+  <define name="sect3.attlist" combine="interleave">
+    <optional>
+      <attribute name="renderas">
+        <choice>
+          <value>sect1</value>
+          <value>sect2</value>
+          <value>sect4</value>
+          <value>sect5</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="sect3.role.attrib"/>
+    <ref name="local.sect3.attrib"/>
+  </define>
+<!--end of sect3.attlist-->
+<!--end of sect3.module-->
+  <define name="local.sect4.attrib">
+    <empty/>
+  </define>
+  <define name="sect4.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect4">
+    <element name="sect4">
+      <ref name="sect4.attlist"/>
+      <optional>
+        <ref name="sect4info"/>
+      </optional>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="divcomponent.mix"/>
+          </oneOrMore>
+          <choice>
+            <zeroOrMore>
+              <ref name="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="sect5"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="simplesect"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="sect5"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of sect4.element-->
+<!-- Renderas: Indicates the format in which the heading should
+               appear -->
+  <define name="sect4.attlist" combine="interleave">
+    <optional>
+      <attribute name="renderas">
+        <choice>
+          <value>sect1</value>
+          <value>sect2</value>
+          <value>sect3</value>
+          <value>sect5</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="sect4.role.attrib"/>
+    <ref name="local.sect4.attrib"/>
+  </define>
+<!--end of sect4.attlist-->
+<!--end of sect4.module-->
+  <define name="local.sect5.attrib">
+    <empty/>
+  </define>
+  <define name="sect5.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sect5">
+    <element name="sect5">
+      <ref name="sect5.attlist"/>
+      <optional>
+        <ref name="sect5info"/>
+      </optional>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="divcomponent.mix"/>
+          </oneOrMore>
+          <choice>
+            <zeroOrMore>
+              <ref name="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="simplesect"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of sect5.element-->
+<!-- Renderas: Indicates the format in which the heading should
+               appear -->
+  <define name="sect5.attlist" combine="interleave">
+    <optional>
+      <attribute name="renderas">
+        <choice>
+          <value>sect1</value>
+          <value>sect2</value>
+          <value>sect3</value>
+          <value>sect4</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="sect5.role.attrib"/>
+    <ref name="local.sect5.attrib"/>
+  </define>
+<!--end of sect5.attlist-->
+<!--end of sect5.module-->
+  <define name="local.simplesect.attrib">
+    <empty/>
+  </define>
+  <define name="simplesect.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="simplesect">
+    <element name="simplesect">
+      <ref name="simplesect.attlist"/>
+      <ref name="sect.title.content"/>
+      <oneOrMore>
+        <ref name="divcomponent.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of simplesect.element-->
+  <define name="simplesect.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="simplesect.role.attrib"/>
+    <ref name="local.simplesect.attrib"/>
+  </define>
+<!--end of simplesect.attlist-->
+<!--end of simplesect.module-->
+<!-- ...................................................................... -->
+<!-- Bibliography ......................................................... -->
+  <define name="local.bibliography.attrib">
+    <empty/>
+  </define>
+  <define name="bibliography.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="bibliography">
+    <element name="bibliography">
+      <ref name="bibliography.attlist"/>
+      <optional>
+        <ref name="bibliographyinfo"/>
+      </optional>
+      <optional>
+        <ref name="bookcomponent.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="component.mix"/>
+      </zeroOrMore>
+      <choice>
+        <oneOrMore>
+          <ref name="bibliodiv"/>
+        </oneOrMore>
+        <oneOrMore>
+          <choice>
+            <ref name="biblioentry"/>
+            <ref name="bibliomixed"/>
+          </choice>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of bibliography.element-->
+  <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>
+<!--end of bibliography.attlist-->
+<!--end of bibliography.module-->
+  <define name="local.bibliodiv.attrib">
+    <empty/>
+  </define>
+  <define name="bibliodiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <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="biblioentry"/>
+          <ref name="bibliomixed"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of bibliodiv.element-->
+  <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>
+<!--end of bibliodiv.attlist-->
+<!--end of bibliodiv.module-->
+<!--end of bibliography.content.module-->
+<!-- ...................................................................... -->
+<!-- Glossary ............................................................. -->
+  <define name="local.glossary.attrib">
+    <empty/>
+  </define>
+  <define name="glossary.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossary">
+    <element name="glossary">
+      <ref name="glossary.attlist"/>
+      <optional>
+        <ref name="glossaryinfo"/>
+      </optional>
+      <optional>
+        <ref name="bookcomponent.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="component.mix"/>
+      </zeroOrMore>
+      <choice>
+        <oneOrMore>
+          <ref name="glossdiv"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="glossentry"/>
+        </oneOrMore>
+      </choice>
+      <optional>
+        <ref name="bibliography"/>
+      </optional>
+    </element>
+  </define>
+<!--end of glossary.element-->
+  <define name="glossary.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="glossary.role.attrib"/>
+    <ref name="local.glossary.attrib"/>
+  </define>
+<!--end of glossary.attlist-->
+<!--end of glossary.module-->
+  <define name="local.glossdiv.attrib">
+    <empty/>
+  </define>
+  <define name="glossdiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossdiv">
+    <element name="glossdiv">
+      <ref name="glossdiv.attlist"/>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="component.mix"/>
+      </zeroOrMore>
+      <oneOrMore>
+        <ref name="glossentry"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of glossdiv.element-->
+  <define name="glossdiv.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="glossdiv.role.attrib"/>
+    <ref name="local.glossdiv.attrib"/>
+  </define>
+<!--end of glossdiv.attlist-->
+<!--end of glossdiv.module-->
+<!--end of glossary.content.module-->
+<!-- ...................................................................... -->
+<!-- Index and SetIndex ................................................... -->
+  <define name="local.indexes.attrib">
+    <empty/>
+  </define>
+  <define name="indexes.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="index">
+    <element name="index">
+      <ref name="index.attlist"/>
+      <optional>
+        <ref name="indexinfo"/>
+      </optional>
+      <optional>
+        <ref name="bookcomponent.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="component.mix"/>
+      </zeroOrMore>
+      <choice>
+        <zeroOrMore>
+          <ref name="indexdiv"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="indexentry"/>
+        </zeroOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of index.element-->
+  <define name="index.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="indexes.role.attrib"/>
+    <ref name="local.indexes.attrib"/>
+  </define>
+<!--end of index.attlist-->
+  <define name="setindex">
+    <element name="setindex">
+      <ref name="setindex.attlist"/>
+      <optional>
+        <ref name="setindexinfo"/>
+      </optional>
+      <optional>
+        <ref name="bookcomponent.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="component.mix"/>
+      </zeroOrMore>
+      <choice>
+        <zeroOrMore>
+          <ref name="indexdiv"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="indexentry"/>
+        </zeroOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of setindex.element-->
+  <define name="setindex.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="indexes.role.attrib"/>
+    <ref name="local.indexes.attrib"/>
+  </define>
+<!--end of setindex.attlist-->
+<!--end of indexes.module-->
+<!-- SegmentedList in this content is useful for marking up permuted
+     indices. -->
+  <define name="local.indexdiv.attrib">
+    <empty/>
+  </define>
+  <define name="indexdiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="indexdiv">
+    <element name="indexdiv">
+      <ref name="indexdiv.attlist"/>
+      <optional>
+        <ref name="sect.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="indexdivcomponent.mix"/>
+      </zeroOrMore>
+      <choice>
+        <oneOrMore>
+          <ref name="indexentry"/>
+        </oneOrMore>
+        <ref name="segmentedlist"/>
+      </choice>
+    </element>
+  </define>
+<!--end of indexdiv.element-->
+  <define name="indexdiv.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="indexdiv.role.attrib"/>
+    <ref name="local.indexdiv.attrib"/>
+  </define>
+<!--end of indexdiv.attlist-->
+<!--end of indexdiv.module-->
+<!-- Index entries appear in the index, not the text. -->
+  <define name="local.indexentry.attrib">
+    <empty/>
+  </define>
+  <define name="indexentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="indexentry">
+    <element name="indexentry">
+      <ref name="indexentry.attlist"/>
+      <ref name="primaryie"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="seeie"/>
+          <ref name="seealsoie"/>
+        </choice>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="secondaryie"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="seeie"/>
+            <ref name="seealsoie"/>
+            <ref name="tertiaryie"/>
+          </choice>
+        </zeroOrMore>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of indexentry.element-->
+  <define name="indexentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="indexentry.role.attrib"/>
+    <ref name="local.indexentry.attrib"/>
+  </define>
+<!--end of indexentry.attlist-->
+<!--end of indexentry.module-->
+  <define name="local.primsecterie.attrib">
+    <empty/>
+  </define>
+  <define name="primsecterie.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="primaryie">
+    <element name="primaryie">
+      <ref name="primaryie.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of primaryie.element-->
+<!-- to IndexTerms that these entries represent -->
+  <define name="primaryie.attlist" combine="interleave">
+    <ref name="linkends.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="primsecterie.role.attrib"/>
+    <ref name="local.primsecterie.attrib"/>
+  </define>
+<!--end of primaryie.attlist-->
+  <define name="secondaryie">
+    <element name="secondaryie">
+      <ref name="secondaryie.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of secondaryie.element-->
+<!-- to IndexTerms that these entries represent -->
+  <define name="secondaryie.attlist" combine="interleave">
+    <ref name="linkends.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="primsecterie.role.attrib"/>
+    <ref name="local.primsecterie.attrib"/>
+  </define>
+<!--end of secondaryie.attlist-->
+  <define name="tertiaryie">
+    <element name="tertiaryie">
+      <ref name="tertiaryie.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tertiaryie.element-->
+<!-- to IndexTerms that these entries represent -->
+  <define name="tertiaryie.attlist" combine="interleave">
+    <ref name="linkends.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="primsecterie.role.attrib"/>
+    <ref name="local.primsecterie.attrib"/>
+  </define>
+<!--end of tertiaryie.attlist-->
+<!--end of primsecterie.module-->
+  <define name="local.seeie.attrib">
+    <empty/>
+  </define>
+  <define name="seeie.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="seeie">
+    <element name="seeie">
+      <ref name="seeie.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of seeie.element-->
+<!-- to IndexEntry to look up -->
+  <define name="seeie.attlist" combine="interleave">
+    <ref name="linkend.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="seeie.role.attrib"/>
+    <ref name="local.seeie.attrib"/>
+  </define>
+<!--end of seeie.attlist-->
+<!--end of seeie.module-->
+  <define name="local.seealsoie.attrib">
+    <empty/>
+  </define>
+  <define name="seealsoie.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="seealsoie">
+    <element name="seealsoie">
+      <ref name="seealsoie.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of seealsoie.element-->
+<!-- to related IndexEntries -->
+  <define name="seealsoie.attlist" combine="interleave">
+    <ref name="linkends.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="seealsoie.role.attrib"/>
+    <ref name="local.seealsoie.attrib"/>
+  </define>
+<!--end of seealsoie.attlist-->
+<!--end of seealsoie.module-->
+<!--end of index.content.module-->
+<!-- ...................................................................... -->
+<!-- RefEntry ............................................................. -->
+  <define name="local.refentry.attrib">
+    <empty/>
+  </define>
+  <define name="refentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refentry">
+    <element name="refentry">
+      <ref name="refentry.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.class"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="refentryinfo"/>
+      </optional>
+      <optional>
+        <ref name="refmeta"/>
+      </optional>
+      <zeroOrMore>
+        <choice>
+          <ref name="remark"/>
+          <ref name="link.char.class"/>
+        </choice>
+      </zeroOrMore>
+      <ref name="refnamediv"/>
+      <optional>
+        <ref name="refsynopsisdiv"/>
+      </optional>
+      <oneOrMore>
+        <ref name="refsect1"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refentry.element-->
+  <define name="refentry.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="refentry.role.attrib"/>
+    <ref name="local.refentry.attrib"/>
+  </define>
+<!--end of refentry.attlist-->
+<!--end of refentry.module-->
+  <define name="local.refmeta.attrib">
+    <empty/>
+  </define>
+  <define name="refmeta.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refmeta">
+    <element name="refmeta">
+      <ref name="refmeta.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.class"/>
+      </zeroOrMore>
+      <ref name="refentrytitle"/>
+      <optional>
+        <ref name="manvolnum"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="refmiscinfo"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="ndxterm.class"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refmeta.element-->
+  <define name="refmeta.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refmeta.role.attrib"/>
+    <ref name="local.refmeta.attrib"/>
+  </define>
+<!--end of refmeta.attlist-->
+<!--end of refmeta.module-->
+  <define name="local.refmiscinfo.attrib">
+    <empty/>
+  </define>
+  <define name="refmiscinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refmiscinfo">
+    <element name="refmiscinfo">
+      <ref name="refmiscinfo.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refmiscinfo.element-->
+<!-- Class: Freely assignable parameter; no default -->
+  <define name="refmiscinfo.attlist" combine="interleave">
+    <optional>
+      <attribute name="class"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="refmiscinfo.role.attrib"/>
+    <ref name="local.refmiscinfo.attrib"/>
+  </define>
+<!--end of refmiscinfo.attlist-->
+<!--end of refmiscinfo.module-->
+  <define name="local.refnamediv.attrib">
+    <empty/>
+  </define>
+  <define name="refnamediv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refnamediv">
+    <element name="refnamediv">
+      <ref name="refnamediv.attlist"/>
+      <optional>
+        <ref name="refdescriptor"/>
+      </optional>
+      <oneOrMore>
+        <ref name="refname"/>
+      </oneOrMore>
+      <ref name="refpurpose"/>
+      <zeroOrMore>
+        <ref name="refclass"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <choice>
+          <ref name="remark"/>
+          <ref name="link.char.class"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refnamediv.element-->
+  <define name="refnamediv.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refnamediv.role.attrib"/>
+    <ref name="local.refnamediv.attrib"/>
+  </define>
+<!--end of refnamediv.attlist-->
+<!--end of refnamediv.module-->
+  <define name="local.refdescriptor.attrib">
+    <empty/>
+  </define>
+  <define name="refdescriptor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refdescriptor">
+    <element name="refdescriptor">
+      <ref name="refdescriptor.attlist"/>
+      <zeroOrMore>
+        <ref name="refname.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refdescriptor.element-->
+  <define name="refdescriptor.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refdescriptor.role.attrib"/>
+    <ref name="local.refdescriptor.attrib"/>
+  </define>
+<!--end of refdescriptor.attlist-->
+<!--end of refdescriptor.module-->
+  <define name="local.refname.attrib">
+    <empty/>
+  </define>
+  <define name="refname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refname">
+    <element name="refname">
+      <ref name="refname.attlist"/>
+      <zeroOrMore>
+        <ref name="refname.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refname.element-->
+  <define name="refname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refname.role.attrib"/>
+    <ref name="local.refname.attrib"/>
+  </define>
+<!--end of refname.attlist-->
+<!--end of refname.module-->
+  <define name="local.refpurpose.attrib">
+    <empty/>
+  </define>
+  <define name="refpurpose.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refpurpose">
+    <element name="refpurpose">
+      <ref name="refpurpose.attlist"/>
+      <zeroOrMore>
+        <ref name="refinline.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refpurpose.element-->
+  <define name="refpurpose.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refpurpose.role.attrib"/>
+    <ref name="local.refpurpose.attrib"/>
+  </define>
+<!--end of refpurpose.attlist-->
+<!--end of refpurpose.module-->
+  <define name="local.refclass.attrib">
+    <empty/>
+  </define>
+  <define name="refclass.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refclass">
+    <element name="refclass">
+      <ref name="refclass.attlist"/>
+      <zeroOrMore>
+        <ref name="refclass.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refclass.element-->
+  <define name="refclass.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refclass.role.attrib"/>
+    <ref name="local.refclass.attrib"/>
+  </define>
+<!--end of refclass.attlist-->
+<!--end of refclass.module-->
+  <define name="local.refsynopsisdiv.attrib">
+    <empty/>
+  </define>
+  <define name="refsynopsisdiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsynopsisdiv">
+    <element name="refsynopsisdiv">
+      <ref name="refsynopsisdiv.attlist"/>
+      <optional>
+        <ref name="refsynopsisdivinfo"/>
+      </optional>
+      <optional>
+        <ref name="refsect.title.content"/>
+      </optional>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="refcomponent.mix"/>
+          </oneOrMore>
+          <zeroOrMore>
+            <ref name="refsect2"/>
+          </zeroOrMore>
+        </group>
+        <oneOrMore>
+          <ref name="refsect2"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of refsynopsisdiv.element-->
+  <define name="refsynopsisdiv.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refsynopsisdiv.role.attrib"/>
+    <ref name="local.refsynopsisdiv.attrib"/>
+  </define>
+<!--end of refsynopsisdiv.attlist-->
+<!--end of refsynopsisdiv.module-->
+  <define name="local.refsect1.attrib">
+    <empty/>
+  </define>
+  <define name="refsect1.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsect1">
+    <element name="refsect1">
+      <ref name="refsect1.attlist"/>
+      <optional>
+        <ref name="refsect1info"/>
+      </optional>
+      <ref name="refsect.title.content"/>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="refcomponent.mix"/>
+          </oneOrMore>
+          <zeroOrMore>
+            <ref name="refsect2"/>
+          </zeroOrMore>
+        </group>
+        <oneOrMore>
+          <ref name="refsect2"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of refsect1.element-->
+  <define name="refsect1.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="refsect1.role.attrib"/>
+    <ref name="local.refsect1.attrib"/>
+  </define>
+<!--end of refsect1.attlist-->
+<!--end of refsect1.module-->
+  <define name="local.refsect2.attrib">
+    <empty/>
+  </define>
+  <define name="refsect2.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsect2">
+    <element name="refsect2">
+      <ref name="refsect2.attlist"/>
+      <optional>
+        <ref name="refsect2info"/>
+      </optional>
+      <ref name="refsect.title.content"/>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="refcomponent.mix"/>
+          </oneOrMore>
+          <zeroOrMore>
+            <ref name="refsect3"/>
+          </zeroOrMore>
+        </group>
+        <oneOrMore>
+          <ref name="refsect3"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of refsect2.element-->
+  <define name="refsect2.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="refsect2.role.attrib"/>
+    <ref name="local.refsect2.attrib"/>
+  </define>
+<!--end of refsect2.attlist-->
+<!--end of refsect2.module-->
+  <define name="local.refsect3.attrib">
+    <empty/>
+  </define>
+  <define name="refsect3.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refsect3">
+    <element name="refsect3">
+      <ref name="refsect3.attlist"/>
+      <optional>
+        <ref name="refsect3info"/>
+      </optional>
+      <ref name="refsect.title.content"/>
+      <oneOrMore>
+        <ref name="refcomponent.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of refsect3.element-->
+  <define name="refsect3.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="refsect3.role.attrib"/>
+    <ref name="local.refsect3.attrib"/>
+  </define>
+<!--end of refsect3.attlist-->
+<!--end of refsect3.module-->
+<!--end of refentry.content.module-->
+<!-- ...................................................................... -->
+<!-- Article .............................................................. -->
+<!-- An Article is a chapter-level, stand-alone document that is often,
+     but need not be, collected into a Book. -->
+  <define name="local.article.attrib">
+    <empty/>
+  </define>
+  <define name="article.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="article">
+    <element name="article">
+      <ref name="article.attlist"/>
+      <optional>
+        <ref name="div.title.content"/>
+      </optional>
+      <optional>
+        <ref name="articleinfo"/>
+      </optional>
+      <optional>
+        <ref name="tocchap"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="lot"/>
+      </zeroOrMore>
+      <ref name="bookcomponent.content"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="nav.class"/>
+          <ref name="appendix.class"/>
+          <ref name="ackno"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of article.element-->
+<!-- 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 -->
+  <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>
+<!--end of article.attlist-->
+<!--end of article.module-->
+<!-- End of DocBook XML document hierarchy module V4.1.2 .................... -->
+<!-- ...................................................................... -->
+</grammar>
diff --git a/schema/relaxng/dbnotn.rng b/schema/relaxng/dbnotn.rng
new file mode 100644 (file)
index 0000000..5455a08
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/0.9" xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+<!-- ...................................................................... -->
+<!-- DocBook XML notations module V4.1.2 .................................... -->
+<!-- File dbnotnx.mod ..................................................... -->
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, Norman Walsh, and the Organization for the Advancement
+     of Structured Information Standards (OASIS).
+
+     $Id$
+
+     Permission to use, copy, modify and distribute the DocBook XML 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.
+
+     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.
+
+     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/.
+-->
+<!-- ...................................................................... -->
+<!-- This module contains the entity declarations for the standard ISO
+     entity sets used by DocBook.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbnotn PUBLIC
+     "-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN"
+     "dbnotnx.mod">
+     %dbnotn;
+
+     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.
+-->
+  <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>linespecific</value>
+      <ref name="local.notation.class"/>
+    </choice>
+  </define>
+<!--WordPerfect Graphic format-->
+<!-- End of DocBook XML notations module V4.1.2 ............................. -->
+<!-- ...................................................................... -->
+</grammar>
diff --git a/schema/relaxng/dbpool.rng b/schema/relaxng/dbpool.rng
new file mode 100644 (file)
index 0000000..795d60e
--- /dev/null
@@ -0,0 +1,9128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+         xmlns="http://relaxng.org/ns/structure/0.9"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+<!-- ...................................................................... -->
+<!-- DocBook XML information pool module V4.1.2 ............................. -->
+<!-- File dbpoolx.mod ..................................................... -->
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, Norman Walsh and the Organization for the Advancement
+     of Structured Information Standards (OASIS).
+
+     $Id$
+
+     Permission to use, copy, modify and distribute the DocBook XML 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.
+
+     If you modify the DocBook XML 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.
+
+     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/.
+-->
+<!-- ...................................................................... -->
+<!-- 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.
+
+     This module has the following dependencies on other modules:
+
+     o 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.
+
+     o It assumes that an appropriately parameterized table module is
+       available for use with the table-related elements.
+
+     In DTD driver files referring to this module, please use an entity
+     declaration that uses the public identifier shown below:
+
+     <!ENTITY % dbpool PUBLIC
+     "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN"
+     "dbpoolx.mod">
+     %dbpool;
+
+     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.
+-->
+<!-- ...................................................................... -->
+<!-- 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 -->
+  <define name="local.ndxterm.class">
+    <notAllowed/>
+  </define>
+  <define name="ndxterm.class">
+    <choice>
+      <ref name="indexterm"/>
+      <ref name="local.ndxterm.class"/>
+    </choice>
+  </define>
+<!-- Object-level classes ................................................. -->
+  <define name="local.list.class">
+    <notAllowed/>
+  </define>
+  <define name="list.class">
+    <choice>
+      <ref name="calloutlist"/>
+      <ref name="glosslist"/>
+      <ref name="itemizedlist"/>
+      <ref name="orderedlist"/>
+      <ref name="segmentedlist"/>
+      <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="caution"/>
+      <ref name="important"/>
+      <ref name="note"/>
+      <ref name="tip"/>
+      <ref name="warning"/>
+      <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="programlistingco"/>
+      <ref name="screen"/>
+      <ref name="screenco"/>
+      <ref name="screenshot"/>
+      <ref name="local.linespecific.class"/>
+    </choice>
+  </define>
+  <define name="local.method.synop.class">
+    <notAllowed/>
+  </define>
+  <define name="method.synop.class">
+    <choice>
+      <ref name="constructorsynopsis"/>
+      <ref name="destructorsynopsis"/>
+      <ref name="methodsynopsis"/>
+      <ref name="local.method.synop.class"/>
+    </choice>
+  </define>
+  <define name="local.synop.class">
+    <notAllowed/>
+  </define>
+  <define name="synop.class">
+    <choice>
+      <ref name="synopsis"/>
+      <ref name="cmdsynopsis"/>
+      <ref name="funcsynopsis"/>
+      <ref name="classsynopsis"/>
+      <ref name="fieldsynopsis"/>
+      <ref name="method.synop.class"/>
+      <ref name="local.synop.class"/>
+    </choice>
+  </define>
+  <define name="local.para.class">
+    <notAllowed/>
+  </define>
+  <define name="para.class">
+    <choice>
+      <ref name="formalpara"/>
+      <ref name="para"/>
+      <ref name="simpara"/>
+      <ref name="local.para.class"/>
+    </choice>
+  </define>
+  <define name="local.informal.class">
+    <notAllowed/>
+  </define>
+  <define name="informal.class">
+    <choice>
+      <ref name="address"/>
+      <ref name="blockquote"/>
+      <ref name="graphic"/>
+      <ref name="graphicco"/>
+      <ref name="mediaobject"/>
+      <ref name="mediaobjectco"/>
+      <ref name="informalequation"/>
+      <ref name="informalexample"/>
+      <ref name="informalfigure"/>
+      <ref name="informaltable"/>
+      <ref name="local.informal.class"/>
+    </choice>
+  </define>
+  <define name="local.formal.class">
+    <notAllowed/>
+  </define>
+  <define name="formal.class">
+    <choice>
+      <ref name="equation"/>
+      <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="msgset"/>
+      <ref name="procedure"/>
+      <ref name="sidebar"/>
+      <ref name="qandaset"/>
+      <ref name="ebnf.block.hook"/>
+      <ref name="local.compound.class"/>
+    </choice>
+  </define>
+  <define name="local.genobj.class">
+    <notAllowed/>
+  </define>
+  <define name="genobj.class">
+    <choice>
+      <ref name="anchor"/>
+      <ref name="bridgehead"/>
+      <ref name="remark"/>
+      <ref name="highlights"/>
+      <ref name="local.genobj.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="citation"/>
+      <ref name="citerefentry"/>
+      <ref name="citetitle"/>
+      <ref name="emphasis"/>
+      <ref name="firstterm"/>
+      <ref name="foreignphrase"/>
+      <ref name="glossterm"/>
+      <ref name="footnote"/>
+      <ref name="phrase"/>
+      <ref name="quote"/>
+      <ref name="trademark"/>
+      <ref name="wordasword"/>
+      <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="action"/>
+      <ref name="application"/>
+      <ref name="classname"/>
+      <ref name="methodname"/>
+      <ref name="interfacename"/>
+      <ref name="exceptionname"/>
+      <ref name="ooclass"/>
+      <ref name="oointerface"/>
+      <ref name="ooexception"/>
+      <ref name="command"/>
+      <ref name="computeroutput"/>
+      <ref name="database"/>
+      <ref name="email"/>
+      <ref name="envar"/>
+      <ref name="errorcode"/>
+      <ref name="errorname"/>
+      <ref name="errortype"/>
+      <ref name="filename"/>
+      <ref name="function"/>
+      <ref name="guibutton"/>
+      <ref name="guiicon"/>
+      <ref name="guilabel"/>
+      <ref name="guimenu"/>
+      <ref name="guimenuitem"/>
+      <ref name="guisubmenu"/>
+      <ref name="hardware"/>
+      <ref name="interface"/>
+      <ref name="keycap"/>
+      <ref name="keycode"/>
+      <ref name="keycombo"/>
+      <ref name="keysym"/>
+      <ref name="literal"/>
+      <ref name="constant"/>
+      <ref name="markup"/>
+      <ref name="medialabel"/>
+      <ref name="menuchoice"/>
+      <ref name="mousebutton"/>
+      <ref name="option"/>
+      <ref name="optional"/>
+      <ref name="parameter"/>
+      <ref name="prompt"/>
+      <ref name="property"/>
+      <ref name="replaceable"/>
+      <ref name="returnvalue"/>
+      <ref name="sgmltag"/>
+      <ref name="structfield"/>
+      <ref name="structname"/>
+      <ref name="symbol"/>
+      <ref name="systemitem"/>
+      <ref name="token"/>
+      <ref name="type"/>
+      <ref name="userinput"/>
+      <ref name="varname"/>
+      <ref name="ebnf.inline.hook"/>
+      <ref name="local.tech.char.class"/>
+    </choice>
+  </define>
+  <define name="local.base.char.class">
+    <notAllowed/>
+  </define>
+  <define name="base.char.class">
+    <choice>
+      <ref name="anchor"/>
+      <ref name="local.base.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="modespec"/>
+      <ref name="othercredit"/>
+      <ref name="productname"/>
+      <ref name="productnumber"/>
+      <ref name="revhistory"/>
+      <ref name="local.docinfo.char.class"/>
+    </choice>
+  </define>
+  <define name="local.other.char.class">
+    <notAllowed/>
+  </define>
+  <define name="other.char.class">
+    <choice>
+      <ref name="remark"/>
+      <ref name="subscript"/>
+      <ref name="superscript"/>
+      <ref name="local.other.char.class"/>
+    </choice>
+  </define>
+  <define name="local.inlineobj.char.class">
+    <notAllowed/>
+  </define>
+  <define name="inlineobj.char.class">
+    <choice>
+      <ref name="inlinegraphic"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="inlineequation"/>
+      <ref name="local.inlineobj.char.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 -->
+<!-- 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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="compound.class"/>
+      <ref name="genobj.class"/>
+      <ref name="descobj.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="procedure"/>
+      <ref name="genobj.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="procedure"/>
+      <ref name="genobj.class"/>
+      <ref name="ndxterm.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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="procedure"/>
+      <ref name="genobj.class"/>
+      <ref name="ndxterm.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="synop.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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <ref name="local.example.mix"/>
+    </choice>
+  </define>
+  <define name="local.highlights.mix">
+    <notAllowed/>
+  </define>
+  <define name="highlights.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="para.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="local.highlights.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="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="procedure"/>
+      <ref name="sidebar"/>
+      <ref name="anchor"/>
+      <ref name="bridgehead"/>
+      <ref name="remark"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="synop.class"/>
+      <ref name="informal.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="graphic"/>
+      <ref name="mediaobject"/>
+      <ref name="local.tabentry.mix"/>
+    </choice>
+  </define>
+  <define name="local.glossdef.mix">
+    <notAllowed/>
+  </define>
+  <define name="glossdef.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="formal.class"/>
+      <ref name="remark"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <ref name="local.glossdef.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="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="local.mediaobject.mix"/>
+    </choice>
+  </define>
+<!-- Character-level mixtures ............................................. -->
+<!--
+                    #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="base.char.class"/>
+      <ref name="docinfo.char.class"/>
+      <ref name="other.char.class"/>
+      <ref name="inlineobj.char.class"/>
+      <ref name="synop.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="base.char.class"/>
+      <ref name="docinfo.char.class"/>
+      <ref name="other.char.class"/>
+      <ref name="inlineobj.char.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="local.title.char.mix"/>
+    </choice>
+  </define>
+  <define name="local.ndxterm.char.mix">
+    <notAllowed/>
+  </define>
+  <define name="ndxterm.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="base.char.class"/>
+      <ref name="docinfo.char.class"/>
+      <ref name="other.char.class"/>
+      <ref name="inlinegraphic"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="local.ndxterm.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="base.char.class"/>
+      <ref name="other.char.class"/>
+      <ref name="inlinegraphic"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="inlinegraphic"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="base.char.class"/>
+      <ref name="other.char.class"/>
+      <ref name="inlinegraphic"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <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="other.char.class"/>
+      <ref name="inlinegraphic"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="ndxterm.class"/>
+      <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 content models .......................................... -->
+  <define name="formalobject.title.content">
+    <ref name="title"/>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+  </define>
+<!-- ...................................................................... -->
+<!-- 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 -->
+  <define name="idreq.attrib">
+    <attribute name="id">
+      <data type="ID"/>
+    </attribute>
+  </define>
+<!-- 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>
+<!-- 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="local.common.attrib"/>
+  </define>
+<!-- Role is included explicitly on each element -->
+  <define name="idreq.common.attrib">
+    <ref name="idreq.attrib"/>
+    <ref name="lang.attrib"/>
+    <ref name="remap.attrib"/>
+    <ref name="xreflabel.attrib"/>
+    <ref name="revisionflag.attrib"/>
+    <ref name="effectivity.attrib"/>
+    <ref name="local.common.attrib"/>
+  </define>
+<!-- Semi-common attributes and other attribute entities .................. -->
+  <define name="local.graphics.attrib">
+    <empty/>
+  </define>
+<!-- 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 -->
+  <define name="graphics.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>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="depth"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scale"/>
+    </optional>
+    <optional>
+      <attribute name="scalefit">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="local.graphics.attrib"/>
+  </define>
+  <define name="local.keyaction.attrib">
+    <empty/>
+  </define>
+<!-- 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 -->
+  <define name="keyaction.attrib">
+    <optional>
+      <attribute name="action">
+        <choice>
+          <value>click</value>
+          <value>double-click</value>
+          <value>press</value>
+          <value>seq</value>
+          <value>simul</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otheraction"/>
+    </optional>
+    <ref name="local.keyaction.attrib"/>
+  </define>
+<!-- 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 -->
+  <define name="linkend.attrib">
+    <optional>
+      <attribute name="linkend">
+        <data type="IDREF"/>
+      </attribute>
+    </optional>
+  </define>
+<!-- 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="linkends.attrib">
+    <optional>
+      <attribute name="linkends">
+        <data type="IDREFS"/>
+      </attribute>
+    </optional>
+  </define>
+  <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 ....................................................... -->
+  <define name="local.title.attrib">
+    <empty/>
+  </define>
+  <define name="title.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="title">
+    <element name="title">
+      <ref name="title.attlist"/>
+      <zeroOrMore>
+        <ref name="title.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of title.element-->
+  <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>
+<!--end of title.attlist-->
+<!--end of title.module-->
+  <define name="local.titleabbrev.attrib">
+    <empty/>
+  </define>
+  <define name="titleabbrev.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="titleabbrev">
+    <element name="titleabbrev">
+      <ref name="titleabbrev.attlist"/>
+      <zeroOrMore>
+        <ref name="title.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of titleabbrev.element-->
+  <define name="titleabbrev.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="titleabbrev.role.attrib"/>
+    <ref name="local.titleabbrev.attrib"/>
+  </define>
+<!--end of titleabbrev.attlist-->
+<!--end of titleabbrev.module-->
+  <define name="local.subtitle.attrib">
+    <empty/>
+  </define>
+  <define name="subtitle.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="subtitle">
+    <element name="subtitle">
+      <ref name="subtitle.attlist"/>
+      <zeroOrMore>
+        <ref name="title.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of subtitle.element-->
+  <define name="subtitle.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="subtitle.role.attrib"/>
+    <ref name="local.subtitle.attrib"/>
+  </define>
+<!--end of subtitle.attlist-->
+<!--end of subtitle.module-->
+<!-- ...................................................................... -->
+<!-- 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="contrib"/>
+      <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="address"/>
+      <ref name="artpagenums"/>
+      <ref name="author"/>
+      <ref name="authorgroup"/>
+      <ref name="authorinitials"/>
+      <ref name="bibliomisc"/>
+      <ref name="biblioset"/>
+      <ref name="collab"/>
+      <ref name="confgroup"/>
+      <ref name="contractnum"/>
+      <ref name="contractsponsor"/>
+      <ref name="copyright"/>
+      <ref name="corpauthor"/>
+      <ref name="corpname"/>
+      <ref name="date"/>
+      <ref name="edition"/>
+      <ref name="editor"/>
+      <ref name="invpartnumber"/>
+      <ref name="isbn"/>
+      <ref name="issn"/>
+      <ref name="issuenum"/>
+      <ref name="orgname"/>
+      <ref name="othercredit"/>
+      <ref name="pagenums"/>
+      <ref name="printhistory"/>
+      <ref name="productname"/>
+      <ref name="productnumber"/>
+      <ref name="pubdate"/>
+      <ref name="publisher"/>
+      <ref name="publishername"/>
+      <ref name="pubsnumber"/>
+      <ref name="releaseinfo"/>
+      <ref name="revhistory"/>
+      <ref name="seriesvolnums"/>
+      <ref name="subtitle"/>
+      <ref name="title"/>
+      <ref name="titleabbrev"/>
+      <ref name="volumenum"/>
+      <ref name="citetitle"/>
+      <ref name="person.ident.mix"/>
+      <ref name="ndxterm.class"/>
+      <ref name="local.bibliocomponent.mix"/>
+    </choice>
+  </define>
+  <define name="local.biblioentry.attrib">
+    <empty/>
+  </define>
+  <define name="biblioentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="biblioentry">
+    <element name="biblioentry">
+      <ref name="biblioentry.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="articleinfo"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of biblioentry.element-->
+  <define name="biblioentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="biblioentry.role.attrib"/>
+    <ref name="local.biblioentry.attrib"/>
+  </define>
+<!--end of biblioentry.attlist-->
+<!--end of biblioentry.module-->
+  <define name="local.bibliomixed.attrib">
+    <empty/>
+  </define>
+  <define name="bibliomixed.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="bibliomixed">
+    <element name="bibliomixed">
+      <ref name="bibliomixed.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="bibliocomponent.mix"/>
+          <ref name="bibliomset"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of bibliomixed.element-->
+  <define name="bibliomixed.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="bibliomixed.role.attrib"/>
+    <ref name="local.bibliomixed.attrib"/>
+  </define>
+<!--end of bibliomixed.attlist-->
+<!--end of bibliomixed.module-->
+  <define name="local.articleinfo.attrib">
+    <empty/>
+  </define>
+  <define name="articleinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="articleinfo">
+    <element name="articleinfo">
+      <ref name="articleinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of articleinfo.element-->
+  <define name="articleinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="articleinfo.role.attrib"/>
+    <ref name="local.articleinfo.attrib"/>
+  </define>
+<!--end of articleinfo.attlist-->
+<!--end of articleinfo.module-->
+  <define name="local.biblioset.attrib">
+    <empty/>
+  </define>
+  <define name="biblioset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="biblioset">
+    <element name="biblioset">
+      <ref name="biblioset.attlist"/>
+      <oneOrMore>
+        <ref name="bibliocomponent.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of biblioset.element-->
+<!-- Relation: Relationship of elements contained within BiblioSet -->
+  <define name="biblioset.attlist" combine="interleave">
+    <optional>
+      <attribute name="relation"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="biblioset.role.attrib"/>
+    <ref name="local.biblioset.attrib"/>
+  </define>
+<!--end of biblioset.attlist-->
+<!--end of biblioset.module-->
+  <define name="bibliomset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="local.bibliomset.attrib">
+    <empty/>
+  </define>
+  <define name="bibliomset">
+    <element name="bibliomset">
+      <ref name="bibliomset.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="bibliocomponent.mix"/>
+          <ref name="bibliomset"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of bibliomset.element-->
+<!-- Relation: Relationship of elements contained within BiblioMSet -->
+  <define name="bibliomset.attlist" combine="interleave">
+    <optional>
+      <attribute name="relation"/>
+    </optional>
+    <ref name="bibliomset.role.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="local.bibliomset.attrib"/>
+  </define>
+<!--end of bibliomset.attlist-->
+<!--end of bibliomset.module-->
+  <define name="local.bibliomisc.attrib">
+    <empty/>
+  </define>
+  <define name="bibliomisc.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="bibliomisc">
+    <element name="bibliomisc">
+      <ref name="bibliomisc.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of bibliomisc.element-->
+  <define name="bibliomisc.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="bibliomisc.role.attrib"/>
+    <ref name="local.bibliomisc.attrib"/>
+  </define>
+<!--end of bibliomisc.attlist-->
+<!--end of bibliomisc.module-->
+<!-- ...................................................................... -->
+<!-- Subject, Keyword, and ITermSet elements .............................. -->
+  <define name="local.subjectset.attrib">
+    <empty/>
+  </define>
+  <define name="subjectset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="subjectset">
+    <element name="subjectset">
+      <ref name="subjectset.attlist"/>
+      <oneOrMore>
+        <ref name="subject"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of subjectset.element-->
+<!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+  <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>
+<!--end of subjectset.attlist-->
+<!--end of subjectset.module-->
+  <define name="local.subject.attrib">
+    <empty/>
+  </define>
+  <define name="subject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="subject">
+    <element name="subject">
+      <ref name="subject.attlist"/>
+      <oneOrMore>
+        <ref name="subjectterm"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of subject.element-->
+<!-- Weight: Ranking of this group of SubjectTerms relative 
+               to others, 0 is low, no highest value specified -->
+  <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>
+<!--end of subject.attlist-->
+<!--end of subject.module-->
+  <define name="local.subjectterm.attrib">
+    <empty/>
+  </define>
+  <define name="subjectterm.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="subjectterm">
+    <element name="subjectterm">
+      <ref name="subjectterm.attlist"/>
+      <text/>
+    </element>
+  </define>
+<!--end of subjectterm.element-->
+  <define name="subjectterm.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="subjectterm.role.attrib"/>
+    <ref name="local.subjectterm.attrib"/>
+  </define>
+<!--end of subjectterm.attlist-->
+<!--end of subjectterm.module-->
+<!--end of subjectset.content.module-->
+  <define name="local.keywordset.attrib">
+    <empty/>
+  </define>
+  <define name="keywordset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="keywordset">
+    <element name="keywordset">
+      <ref name="keywordset.attlist"/>
+      <oneOrMore>
+        <ref name="keyword"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of keywordset.element-->
+  <define name="keywordset.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="keywordset.role.attrib"/>
+    <ref name="local.keywordset.attrib"/>
+  </define>
+<!--end of keywordset.attlist-->
+<!--end of keywordset.module-->
+  <define name="local.keyword.attrib">
+    <empty/>
+  </define>
+  <define name="keyword.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="keyword">
+    <element name="keyword">
+      <ref name="keyword.attlist"/>
+      <text/>
+    </element>
+  </define>
+<!--end of keyword.element-->
+  <define name="keyword.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="keyword.role.attrib"/>
+    <ref name="local.keyword.attrib"/>
+  </define>
+<!--end of keyword.attlist-->
+<!--end of keyword.module-->
+<!--end of keywordset.content.module-->
+  <define name="local.itermset.attrib">
+    <empty/>
+  </define>
+  <define name="itermset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="itermset">
+    <element name="itermset">
+      <ref name="itermset.attlist"/>
+      <oneOrMore>
+        <ref name="indexterm"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of itermset.element-->
+  <define name="itermset.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="itermset.role.attrib"/>
+    <ref name="local.itermset.attrib"/>
+  </define>
+<!--end of itermset.attlist-->
+<!--end of itermset.module-->
+<!-- ...................................................................... -->
+<!-- Compound (section-ish) elements ...................................... -->
+<!-- Message set ...................... -->
+  <define name="local.msgset.attrib">
+    <empty/>
+  </define>
+  <define name="msgset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgset">
+    <element name="msgset">
+      <ref name="msgset.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <choice>
+        <oneOrMore>
+          <ref name="msgentry"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplemsgentry"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of msgset.element-->
+  <define name="msgset.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgset.role.attrib"/>
+    <ref name="local.msgset.attrib"/>
+  </define>
+<!--end of msgset.attlist-->
+<!--end of msgset.module-->
+  <define name="local.msgentry.attrib">
+    <empty/>
+  </define>
+  <define name="msgentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgentry">
+    <element name="msgentry">
+      <ref name="msgentry.attlist"/>
+      <oneOrMore>
+        <ref name="msg"/>
+      </oneOrMore>
+      <optional>
+        <ref name="msginfo"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="msgexplan"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of msgentry.element-->
+  <define name="msgentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgentry.role.attrib"/>
+    <ref name="local.msgentry.attrib"/>
+  </define>
+<!--end of msgentry.attlist-->
+<!--end of msgentry.module-->
+  <define name="local.simplemsgentry.attrib">
+    <empty/>
+  </define>
+  <define name="simplemsgentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="simplemsgentry">
+    <element name="simplemsgentry">
+      <ref name="simplemsgentry.attlist"/>
+      <ref name="msgtext"/>
+      <ref name="msgexplan"/>
+    </element>
+  </define>
+<!--end of simplemsgentry.element-->
+  <define name="simplemsgentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="simplemsgentry.role.attrib"/>
+    <ref name="local.simplemsgentry.attrib"/>
+    <optional>
+      <attribute name="audience"/>
+    </optional>
+    <optional>
+      <attribute name="level"/>
+    </optional>
+    <optional>
+      <attribute name="origin"/>
+    </optional>
+  </define>
+<!--end of simplemsgentry.attlist-->
+<!--end of simplemsgentry.module-->
+  <define name="local.msg.attrib">
+    <empty/>
+  </define>
+  <define name="msg.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msg">
+    <element name="msg">
+      <ref name="msg.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <ref name="msgmain"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="msgsub"/>
+          <ref name="msgrel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of msg.element-->
+  <define name="msg.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msg.role.attrib"/>
+    <ref name="local.msg.attrib"/>
+  </define>
+<!--end of msg.attlist-->
+<!--end of msg.module-->
+  <define name="local.msgmain.attrib">
+    <empty/>
+  </define>
+  <define name="msgmain.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgmain">
+    <element name="msgmain">
+      <ref name="msgmain.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <ref name="msgtext"/>
+    </element>
+  </define>
+<!--end of msgmain.element-->
+  <define name="msgmain.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgmain.role.attrib"/>
+    <ref name="local.msgmain.attrib"/>
+  </define>
+<!--end of msgmain.attlist-->
+<!--end of msgmain.module-->
+  <define name="local.msgsub.attrib">
+    <empty/>
+  </define>
+  <define name="msgsub.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgsub">
+    <element name="msgsub">
+      <ref name="msgsub.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <ref name="msgtext"/>
+    </element>
+  </define>
+<!--end of msgsub.element-->
+  <define name="msgsub.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgsub.role.attrib"/>
+    <ref name="local.msgsub.attrib"/>
+  </define>
+<!--end of msgsub.attlist-->
+<!--end of msgsub.module-->
+  <define name="local.msgrel.attrib">
+    <empty/>
+  </define>
+  <define name="msgrel.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgrel">
+    <element name="msgrel">
+      <ref name="msgrel.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <ref name="msgtext"/>
+    </element>
+  </define>
+<!--end of msgrel.element-->
+  <define name="msgrel.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgrel.role.attrib"/>
+    <ref name="local.msgrel.attrib"/>
+  </define>
+<!--end of msgrel.attlist-->
+<!--end of msgrel.module-->
+<!-- MsgText (defined in the Inlines section, below)-->
+  <define name="local.msginfo.attrib">
+    <empty/>
+  </define>
+  <define name="msginfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msginfo">
+    <element name="msginfo">
+      <ref name="msginfo.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="msglevel"/>
+          <ref name="msgorig"/>
+          <ref name="msgaud"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of msginfo.element-->
+  <define name="msginfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msginfo.role.attrib"/>
+    <ref name="local.msginfo.attrib"/>
+  </define>
+<!--end of msginfo.attlist-->
+<!--end of msginfo.module-->
+  <define name="local.msglevel.attrib">
+    <empty/>
+  </define>
+  <define name="msglevel.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msglevel">
+    <element name="msglevel">
+      <ref name="msglevel.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of msglevel.element-->
+  <define name="msglevel.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msglevel.role.attrib"/>
+    <ref name="local.msglevel.attrib"/>
+  </define>
+<!--end of msglevel.attlist-->
+<!--end of msglevel.module-->
+  <define name="local.msgorig.attrib">
+    <empty/>
+  </define>
+  <define name="msgorig.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgorig">
+    <element name="msgorig">
+      <ref name="msgorig.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of msgorig.element-->
+  <define name="msgorig.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgorig.role.attrib"/>
+    <ref name="local.msgorig.attrib"/>
+  </define>
+<!--end of msgorig.attlist-->
+<!--end of msgorig.module-->
+  <define name="local.msgaud.attrib">
+    <empty/>
+  </define>
+  <define name="msgaud.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgaud">
+    <element name="msgaud">
+      <ref name="msgaud.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of msgaud.element-->
+  <define name="msgaud.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgaud.role.attrib"/>
+    <ref name="local.msgaud.attrib"/>
+  </define>
+<!--end of msgaud.attlist-->
+<!--end of msgaud.module-->
+  <define name="local.msgexplan.attrib">
+    <empty/>
+  </define>
+  <define name="msgexplan.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgexplan">
+    <element name="msgexplan">
+      <ref name="msgexplan.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of msgexplan.element-->
+  <define name="msgexplan.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgexplan.role.attrib"/>
+    <ref name="local.msgexplan.attrib"/>
+  </define>
+<!--end of msgexplan.attlist-->
+<!--end of msgexplan.module-->
+<!--end of msgset.content.module-->
+<!-- QandASet ........................ -->
+  <define name="local.qandset.attrib">
+    <empty/>
+  </define>
+  <define name="qandset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="qandaset">
+    <element name="qandaset">
+      <ref name="qandaset.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="qandaset.mix"/>
+      </zeroOrMore>
+      <choice>
+        <oneOrMore>
+          <ref name="qandadiv"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="qandaentry"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of qandset.element-->
+  <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="qandset.role.attrib"/>
+    <ref name="local.qandset.attrib"/>
+  </define>
+<!--end of qandset.attlist-->
+<!--end of qandset.module-->
+  <define name="local.qandadiv.attrib">
+    <empty/>
+  </define>
+  <define name="qandadiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="qandadiv">
+    <element name="qandadiv">
+      <ref name="qandadiv.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="qandaset.mix"/>
+      </zeroOrMore>
+      <choice>
+        <oneOrMore>
+          <ref name="qandadiv"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="qandaentry"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of qandadiv.element-->
+  <define name="qandadiv.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="qandadiv.role.attrib"/>
+    <ref name="local.qandadiv.attrib"/>
+  </define>
+<!--end of qandadiv.attlist-->
+<!--end of qandadiv.module-->
+  <define name="local.qandaentry.attrib">
+    <empty/>
+  </define>
+  <define name="qandaentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="qandaentry">
+    <element name="qandaentry">
+      <ref name="qandaentry.attlist"/>
+      <optional>
+        <ref name="revhistory"/>
+      </optional>
+      <ref name="question"/>
+      <zeroOrMore>
+        <ref name="answer"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of qandaentry.element-->
+  <define name="qandaentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="qandaentry.role.attrib"/>
+    <ref name="local.qandaentry.attrib"/>
+  </define>
+<!--end of qandaentry.attlist-->
+<!--end of qandaentry.module-->
+  <define name="local.question.attrib">
+    <empty/>
+  </define>
+  <define name="question.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="question">
+    <element name="question">
+      <ref name="question.attlist"/>
+      <optional>
+        <ref name="label"/>
+      </optional>
+      <oneOrMore>
+        <ref name="qandaset.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of question.element-->
+  <define name="question.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="question.role.attrib"/>
+    <ref name="local.question.attrib"/>
+  </define>
+<!--end of question.attlist-->
+<!--end of question.module-->
+  <define name="local.answer.attrib">
+    <empty/>
+  </define>
+  <define name="answer.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="answer">
+    <element name="answer">
+      <ref name="answer.attlist"/>
+      <optional>
+        <ref name="label"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="qandaset.mix"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="qandaentry"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of answer.element-->
+  <define name="answer.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="answer.role.attrib"/>
+    <ref name="local.answer.attrib"/>
+  </define>
+<!--end of answer.attlist-->
+<!--end of answer.module-->
+  <define name="local.label.attrib">
+    <empty/>
+  </define>
+  <define name="label.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="label">
+    <element name="label">
+      <ref name="label.attlist"/>
+      <zeroOrMore>
+        <ref name="word.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of label.element-->
+  <define name="label.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="label.role.attrib"/>
+    <ref name="local.label.attrib"/>
+  </define>
+<!--end of label.attlist-->
+<!--end of label.module-->
+<!--end of qandset.content.module-->
+<!-- Procedure ........................ -->
+  <define name="local.procedure.attrib">
+    <empty/>
+  </define>
+  <define name="procedure.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="procedure">
+    <element name="procedure">
+      <ref name="procedure.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="component.mix"/>
+      </zeroOrMore>
+      <oneOrMore>
+        <ref name="step"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of procedure.element-->
+  <define name="procedure.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="procedure.role.attrib"/>
+    <ref name="local.procedure.attrib"/>
+  </define>
+<!--end of procedure.attlist-->
+<!--end of procedure.module-->
+  <define name="local.step.attrib">
+    <empty/>
+  </define>
+  <define name="step.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="step">
+    <element name="step">
+      <ref name="step.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="component.mix"/>
+          </oneOrMore>
+          <optional>
+            <ref name="substeps"/>
+            <zeroOrMore>
+              <ref name="component.mix"/>
+            </zeroOrMore>
+          </optional>
+        </group>
+        <group>
+          <ref name="substeps"/>
+          <zeroOrMore>
+            <ref name="component.mix"/>
+          </zeroOrMore>
+        </group>
+      </choice>
+    </element>
+  </define>
+<!--end of step.element-->
+<!-- Performance: Whether the Step must be performed -->
+<!-- not #REQUIRED! -->
+  <define name="step.attlist" combine="interleave">
+    <optional>
+      <attribute name="performance" a:defaultValue="required">
+        <choice>
+          <value>optional</value>
+          <value>required</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="step.role.attrib"/>
+    <ref name="local.step.attrib"/>
+  </define>
+<!--end of step.attlist-->
+<!--end of step.module-->
+  <define name="local.substeps.attrib">
+    <empty/>
+  </define>
+  <define name="substeps.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="substeps">
+    <element name="substeps">
+      <ref name="substeps.attlist"/>
+      <oneOrMore>
+        <ref name="step"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of substeps.element-->
+<!-- Performance: whether entire set of substeps must be performed -->
+<!-- not #REQUIRED! -->
+  <define name="substeps.attlist" combine="interleave">
+    <optional>
+      <attribute name="performance" a:defaultValue="required">
+        <choice>
+          <value>optional</value>
+          <value>required</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="substeps.role.attrib"/>
+    <ref name="local.substeps.attrib"/>
+  </define>
+<!--end of substeps.attlist-->
+<!--end of substeps.module-->
+<!--end of procedure.content.module-->
+<!-- Sidebar .......................... -->
+  <define name="local.sidebarinfo.attrib">
+    <empty/>
+  </define>
+  <define name="sidebarinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sidebarinfo">
+    <element name="sidebarinfo">
+      <ref name="sidebarinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sidebarinfo.element-->
+  <define name="sidebarinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sidebarinfo.role.attrib"/>
+    <ref name="local.sidebarinfo.attrib"/>
+  </define>
+<!--end of sidebarinfo.attlist-->
+<!--end of sidebarinfo.module-->
+  <define name="local.sidebar.attrib">
+    <empty/>
+  </define>
+  <define name="sidebar.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sidebar">
+    <element name="sidebar">
+      <ref name="sidebar.attlist"/>
+      <optional>
+        <ref name="sidebarinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="sidebar.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of sidebar.element-->
+  <define name="sidebar.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sidebar.role.attrib"/>
+    <ref name="local.sidebar.attrib"/>
+  </define>
+<!--end of sidebar.attlist-->
+<!--end of sidebar.module-->
+<!--end of sidebar.content.model-->
+<!-- ...................................................................... -->
+<!-- Paragraph-related elements ........................................... -->
+  <define name="local.abstract.attrib">
+    <empty/>
+  </define>
+  <define name="abstract.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="abstract">
+    <element name="abstract">
+      <ref name="abstract.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="para.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of abstract.element-->
+  <define name="abstract.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="abstract.role.attrib"/>
+    <ref name="local.abstract.attrib"/>
+  </define>
+<!--end of abstract.attlist-->
+<!--end of abstract.module-->
+  <define name="local.authorblurb.attrib">
+    <empty/>
+  </define>
+  <define name="authorblurb.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="authorblurb">
+    <element name="authorblurb">
+      <ref name="authorblurb.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="para.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of authorblurb.element-->
+  <define name="authorblurb.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="authorblurb.role.attrib"/>
+    <ref name="local.authorblurb.attrib"/>
+  </define>
+<!--end of authorblurb.attlist-->
+<!--end of authorblurb.module-->
+  <define name="local.blockquote.attrib">
+    <empty/>
+  </define>
+  <define name="blockquote.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <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>
+<!--end of blockquote.element-->
+  <define name="blockquote.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="blockquote.role.attrib"/>
+    <ref name="local.blockquote.attrib"/>
+  </define>
+<!--end of blockquote.attlist-->
+<!--end of blockquote.module-->
+  <define name="local.attribution.attrib">
+    <empty/>
+  </define>
+  <define name="attribution.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="attribution">
+    <element name="attribution">
+      <ref name="attribution.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of attribution.element-->
+  <define name="attribution.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="attribution.role.attrib"/>
+    <ref name="local.attribution.attrib"/>
+  </define>
+<!--end of attribution.attlist-->
+<!--end of attribution.module-->
+  <define name="local.bridgehead.attrib">
+    <empty/>
+  </define>
+  <define name="bridgehead.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="bridgehead">
+    <element name="bridgehead">
+      <ref name="bridgehead.attlist"/>
+      <zeroOrMore>
+        <ref name="title.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of bridgehead.element-->
+<!-- Renderas: Indicates the format in which the BridgeHead
+               should appear -->
+  <define name="bridgehead.attlist" combine="interleave">
+    <optional>
+      <attribute name="renderas">
+        <choice>
+          <value>other</value>
+          <value>sect1</value>
+          <value>sect2</value>
+          <value>sect3</value>
+          <value>sect4</value>
+          <value>sect5</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="bridgehead.role.attrib"/>
+    <ref name="local.bridgehead.attrib"/>
+  </define>
+<!--end of bridgehead.attlist-->
+<!--end of bridgehead.module-->
+  <define name="local.remark.attrib">
+    <empty/>
+  </define>
+  <define name="remark.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="remark">
+    <element name="remark">
+      <ref name="remark.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of remark.element-->
+  <define name="remark.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="remark.role.attrib"/>
+    <ref name="local.remark.attrib"/>
+  </define>
+<!--end of remark.attlist-->
+<!--end of remark.module-->
+  <define name="local.epigraph.attrib">
+    <empty/>
+  </define>
+  <define name="epigraph.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="epigraph">
+    <element name="epigraph">
+      <ref name="epigraph.attlist"/>
+      <optional>
+        <ref name="attribution"/>
+      </optional>
+      <oneOrMore>
+        <ref name="para.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of epigraph.element-->
+  <define name="epigraph.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="epigraph.role.attrib"/>
+    <ref name="local.epigraph.attrib"/>
+  </define>
+<!--end of epigraph.attlist-->
+<!-- Attribution (defined above)-->
+<!--end of epigraph.module-->
+  <define name="local.footnote.attrib">
+    <empty/>
+  </define>
+  <define name="footnote.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="footnote">
+    <element name="footnote">
+      <ref name="footnote.attlist"/>
+      <oneOrMore>
+        <ref name="footnote.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of footnote.element-->
+  <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>
+<!--end of footnote.attlist-->
+<!--end of footnote.module-->
+  <define name="local.highlights.attrib">
+    <empty/>
+  </define>
+  <define name="highlights.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="highlights">
+    <element name="highlights">
+      <ref name="highlights.attlist"/>
+      <oneOrMore>
+        <ref name="highlights.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of highlights.element-->
+  <define name="highlights.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="highlights.role.attrib"/>
+    <ref name="local.highlights.attrib"/>
+  </define>
+<!--end of highlights.attlist-->
+<!--end of highlights.module-->
+  <define name="local.formalpara.attrib">
+    <empty/>
+  </define>
+  <define name="formalpara.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="formalpara">
+    <element name="formalpara">
+      <ref name="formalpara.attlist"/>
+      <ref name="title"/>
+      <zeroOrMore>
+        <ref name="ndxterm.class"/>
+      </zeroOrMore>
+      <ref name="para"/>
+    </element>
+  </define>
+<!--end of formalpara.element-->
+  <define name="formalpara.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="formalpara.role.attrib"/>
+    <ref name="local.formalpara.attrib"/>
+  </define>
+<!--end of formalpara.attlist-->
+<!--end of formalpara.module-->
+  <define name="local.para.attrib">
+    <empty/>
+  </define>
+  <define name="para.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <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>
+<!--end of para.element-->
+  <define name="para.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="para.role.attrib"/>
+    <ref name="local.para.attrib"/>
+  </define>
+<!--end of para.attlist-->
+<!--end of para.module-->
+  <define name="local.simpara.attrib">
+    <empty/>
+  </define>
+  <define name="simpara.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="simpara">
+    <element name="simpara">
+      <ref name="simpara.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of simpara.element-->
+  <define name="simpara.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="simpara.role.attrib"/>
+    <ref name="local.simpara.attrib"/>
+  </define>
+<!--end of simpara.attlist-->
+<!--end of simpara.module-->
+  <define name="local.admon.attrib">
+    <empty/>
+  </define>
+  <define name="admon.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="caution">
+    <element name="caution">
+      <ref name="caution.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="admon.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of caution.element-->
+  <define name="caution.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="admon.role.attrib"/>
+    <ref name="local.admon.attrib"/>
+  </define>
+<!--end of caution.attlist-->
+  <define name="important">
+    <element name="important">
+      <ref name="important.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="admon.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of important.element-->
+  <define name="important.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="admon.role.attrib"/>
+    <ref name="local.admon.attrib"/>
+  </define>
+<!--end of important.attlist-->
+  <define name="note">
+    <element name="note">
+      <ref name="note.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="admon.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of note.element-->
+  <define name="note.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="admon.role.attrib"/>
+    <ref name="local.admon.attrib"/>
+  </define>
+<!--end of note.attlist-->
+  <define name="tip">
+    <element name="tip">
+      <ref name="tip.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="admon.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of tip.element-->
+  <define name="tip.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="admon.role.attrib"/>
+    <ref name="local.admon.attrib"/>
+  </define>
+<!--end of tip.attlist-->
+  <define name="warning">
+    <element name="warning">
+      <ref name="warning.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="admon.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of warning.element-->
+  <define name="warning.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="admon.role.attrib"/>
+    <ref name="local.admon.attrib"/>
+  </define>
+<!--end of warning.attlist-->
+<!--end of admon.module-->
+<!-- ...................................................................... -->
+<!-- Lists ................................................................ -->
+<!-- GlossList ........................ -->
+  <define name="local.glosslist.attrib">
+    <empty/>
+  </define>
+  <define name="glosslist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glosslist">
+    <element name="glosslist">
+      <ref name="glosslist.attlist"/>
+      <oneOrMore>
+        <ref name="glossentry"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of glosslist.element-->
+  <define name="glosslist.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="glosslist.role.attrib"/>
+    <ref name="local.glosslist.attrib"/>
+  </define>
+<!--end of glosslist.attlist-->
+<!--end of glosslist.module-->
+  <define name="local.glossentry.attrib">
+    <empty/>
+  </define>
+  <define name="glossentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossentry">
+    <element name="glossentry">
+      <ref name="glossentry.attlist"/>
+      <ref name="glossterm"/>
+      <optional>
+        <ref name="acronym"/>
+      </optional>
+      <optional>
+        <ref name="abbrev"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="ndxterm.class"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="revhistory"/>
+      </optional>
+      <choice>
+        <ref name="glosssee"/>
+        <oneOrMore>
+          <ref name="glossdef"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of glossentry.element-->
+<!-- SortAs: String by which the GlossEntry is to be sorted
+               (alphabetized) in lieu of its proper content -->
+  <define name="glossentry.attlist" combine="interleave">
+    <optional>
+      <attribute name="sortas"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="glossentry.role.attrib"/>
+    <ref name="local.glossentry.attrib"/>
+  </define>
+<!--end of glossentry.attlist-->
+<!--end of glossentry.module-->
+<!-- GlossTerm (defined in the Inlines section, below)-->
+  <define name="local.glossdef.attrib">
+    <empty/>
+  </define>
+  <define name="glossdef.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossdef">
+    <element name="glossdef">
+      <ref name="glossdef.attlist"/>
+      <oneOrMore>
+        <ref name="glossdef.mix"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="glossseealso"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of glossdef.element-->
+<!-- Subject: List of subjects; keywords for the definition -->
+  <define name="glossdef.attlist" combine="interleave">
+    <optional>
+      <attribute name="subject"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="glossdef.role.attrib"/>
+    <ref name="local.glossdef.attrib"/>
+  </define>
+<!--end of glossdef.attlist-->
+<!--end of glossdef.module-->
+  <define name="local.glosssee.attrib">
+    <empty/>
+  </define>
+  <define name="glosssee.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glosssee">
+    <element name="glosssee">
+      <ref name="glosssee.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of glosssee.element-->
+<!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+               should be displayed at the point of the GlossSee -->
+  <define name="glosssee.attlist" combine="interleave">
+    <optional>
+      <attribute name="otherterm">
+        <data type="IDREF"/>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="glosssee.role.attrib"/>
+    <ref name="local.glosssee.attrib"/>
+  </define>
+<!--end of glosssee.attlist-->
+<!--end of glosssee.module-->
+  <define name="local.glossseealso.attrib">
+    <empty/>
+  </define>
+  <define name="glossseealso.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossseealso">
+    <element name="glossseealso">
+      <ref name="glossseealso.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of glossseealso.element-->
+<!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+               should be displayed at the point of the GlossSeeAlso -->
+  <define name="glossseealso.attlist" combine="interleave">
+    <optional>
+      <attribute name="otherterm">
+        <data type="IDREF"/>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="glossseealso.role.attrib"/>
+    <ref name="local.glossseealso.attrib"/>
+  </define>
+<!--end of glossseealso.attlist-->
+<!--end of glossseealso.module-->
+<!--end of glossentry.content.module-->
+<!-- ItemizedList and OrderedList ..... -->
+  <define name="local.itemizedlist.attrib">
+    <empty/>
+  </define>
+  <define name="itemizedlist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="itemizedlist">
+    <element name="itemizedlist">
+      <ref name="itemizedlist.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="listitem"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of itemizedlist.element-->
+<!-- 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 -->
+  <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>
+<!--end of itemizedlist.attlist-->
+<!--end of itemizedlist.module-->
+  <define name="local.orderedlist.attrib">
+    <empty/>
+  </define>
+  <define name="orderedlist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="orderedlist">
+    <element name="orderedlist">
+      <ref name="orderedlist.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="listitem"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of orderedlist.element-->
+<!-- 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 -->
+  <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>
+<!--end of orderedlist.attlist-->
+<!--end of orderedlist.module-->
+  <define name="local.listitem.attrib">
+    <empty/>
+  </define>
+  <define name="listitem.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="listitem">
+    <element name="listitem">
+      <ref name="listitem.attlist"/>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of listitem.element-->
+<!-- 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 -->
+  <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>
+<!--end of listitem.attlist-->
+<!--end of listitem.module-->
+<!-- SegmentedList .................... -->
+  <define name="local.segmentedlist.attrib">
+    <empty/>
+  </define>
+  <define name="segmentedlist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="segmentedlist">
+    <element name="segmentedlist">
+      <ref name="segmentedlist.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <ref name="segtitle"/>
+      <oneOrMore>
+        <ref name="segtitle"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="seglistitem"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of segmentedlist.element-->
+  <define name="segmentedlist.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="segmentedlist.role.attrib"/>
+    <ref name="local.segmentedlist.attrib"/>
+  </define>
+<!--end of segmentedlist.attlist-->
+<!--end of segmentedlist.module-->
+  <define name="local.segtitle.attrib">
+    <empty/>
+  </define>
+  <define name="segtitle.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="segtitle">
+    <element name="segtitle">
+      <ref name="segtitle.attlist"/>
+      <zeroOrMore>
+        <ref name="title.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of segtitle.element-->
+  <define name="segtitle.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="segtitle.role.attrib"/>
+    <ref name="local.segtitle.attrib"/>
+  </define>
+<!--end of segtitle.attlist-->
+<!--end of segtitle.module-->
+  <define name="local.seglistitem.attrib">
+    <empty/>
+  </define>
+  <define name="seglistitem.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="seglistitem">
+    <element name="seglistitem">
+      <ref name="seglistitem.attlist"/>
+      <ref name="seg"/>
+      <oneOrMore>
+        <ref name="seg"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of seglistitem.element-->
+  <define name="seglistitem.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="seglistitem.role.attrib"/>
+    <ref name="local.seglistitem.attrib"/>
+  </define>
+<!--end of seglistitem.attlist-->
+<!--end of seglistitem.module-->
+  <define name="local.seg.attrib">
+    <empty/>
+  </define>
+  <define name="seg.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="seg">
+    <element name="seg">
+      <ref name="seg.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of seg.element-->
+  <define name="seg.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="seg.role.attrib"/>
+    <ref name="local.seg.attrib"/>
+  </define>
+<!--end of seg.attlist-->
+<!--end of seg.module-->
+<!--end of segmentedlist.content.module-->
+<!-- SimpleList ....................... -->
+  <define name="local.simplelist.attrib">
+    <empty/>
+  </define>
+  <define name="simplelist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="simplelist">
+    <element name="simplelist">
+      <ref name="simplelist.attlist"/>
+      <oneOrMore>
+        <ref name="member"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of simplelist.element-->
+<!-- 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. -->
+  <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>
+<!--end of simplelist.attlist-->
+<!--end of simplelist.module-->
+  <define name="local.member.attrib">
+    <empty/>
+  </define>
+  <define name="member.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="member">
+    <element name="member">
+      <ref name="member.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of member.element-->
+  <define name="member.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="member.role.attrib"/>
+    <ref name="local.member.attrib"/>
+  </define>
+<!--end of member.attlist-->
+<!--end of member.module-->
+<!--end of simplelist.content.module-->
+<!-- VariableList ..................... -->
+  <define name="local.variablelist.attrib">
+    <empty/>
+  </define>
+  <define name="variablelist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="variablelist">
+    <element name="variablelist">
+      <ref name="variablelist.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="varlistentry"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of variablelist.element-->
+<!-- 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. -->
+  <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>
+<!--end of variablelist.attlist-->
+<!--end of variablelist.module-->
+  <define name="local.varlistentry.attrib">
+    <empty/>
+  </define>
+  <define name="varlistentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="varlistentry">
+    <element name="varlistentry">
+      <ref name="varlistentry.attlist"/>
+      <oneOrMore>
+        <ref name="term"/>
+      </oneOrMore>
+      <ref name="listitem"/>
+    </element>
+  </define>
+<!--end of varlistentry.element-->
+  <define name="varlistentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="varlistentry.role.attrib"/>
+    <ref name="local.varlistentry.attrib"/>
+  </define>
+<!--end of varlistentry.attlist-->
+<!--end of varlistentry.module-->
+  <define name="local.term.attrib">
+    <empty/>
+  </define>
+  <define name="term.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="term">
+    <element name="term">
+      <ref name="term.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of term.element-->
+  <define name="term.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="term.role.attrib"/>
+    <ref name="local.term.attrib"/>
+  </define>
+<!--end of term.attlist-->
+<!--end of term.module-->
+<!-- ListItem (defined above)-->
+<!--end of variablelist.content.module-->
+<!-- CalloutList ...................... -->
+  <define name="local.calloutlist.attrib">
+    <empty/>
+  </define>
+  <define name="calloutlist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="calloutlist">
+    <element name="calloutlist">
+      <ref name="calloutlist.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="callout"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of calloutlist.element-->
+  <define name="calloutlist.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="calloutlist.role.attrib"/>
+    <ref name="local.calloutlist.attrib"/>
+  </define>
+<!--end of calloutlist.attlist-->
+<!--end of calloutlist.module-->
+  <define name="local.callout.attrib">
+    <empty/>
+  </define>
+  <define name="callout.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="callout">
+    <element name="callout">
+      <ref name="callout.attlist"/>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of callout.element-->
+<!-- AreaRefs: IDs of one or more Areas or AreaSets described
+               by this Callout -->
+  <define name="callout.attlist" combine="interleave">
+    <attribute name="arearefs">
+      <data type="IDREFS"/>
+    </attribute>
+    <ref name="common.attrib"/>
+    <ref name="callout.role.attrib"/>
+    <ref name="local.callout.attrib"/>
+  </define>
+<!--end of callout.attlist-->
+<!--end of callout.module-->
+<!--end of calloutlist.content.module-->
+<!-- ...................................................................... -->
+<!-- Objects .............................................................. -->
+<!-- Examples etc. .................... -->
+  <define name="local.example.attrib">
+    <empty/>
+  </define>
+  <define name="example.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="example">
+    <element name="example">
+      <ref name="example.attlist"/>
+      <ref name="formalobject.title.content"/>
+      <oneOrMore>
+        <ref name="example.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of example.element-->
+  <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>
+<!--end of example.attlist-->
+<!--end of example.module-->
+  <define name="local.informalexample.attrib">
+    <empty/>
+  </define>
+  <define name="informalexample.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="informalexample">
+    <element name="informalexample">
+      <ref name="informalexample.attlist"/>
+      <oneOrMore>
+        <ref name="example.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of informalexample.element-->
+  <define name="informalexample.attlist" combine="interleave">
+    <ref name="width.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="informalexample.role.attrib"/>
+    <ref name="local.informalexample.attrib"/>
+  </define>
+<!--end of informalexample.attlist-->
+<!--end of informalexample.module-->
+  <define name="local.programlistingco.attrib">
+    <empty/>
+  </define>
+  <define name="programlistingco.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="programlistingco">
+    <element name="programlistingco">
+      <ref name="programlistingco.attlist"/>
+      <ref name="areaspec"/>
+      <ref name="programlisting"/>
+      <zeroOrMore>
+        <ref name="calloutlist"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of programlistingco.element-->
+  <define name="programlistingco.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="programlistingco.role.attrib"/>
+    <ref name="local.programlistingco.attrib"/>
+  </define>
+<!--end of programlistingco.attlist-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of informalexample.module-->
+  <define name="local.areaspec.attrib">
+    <empty/>
+  </define>
+  <define name="areaspec.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="areaspec">
+    <element name="areaspec">
+      <ref name="areaspec.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="area"/>
+          <ref name="areaset"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of areaspec.element-->
+<!-- Units: global unit of measure in which coordinates in
+               this spec are expressed:
+
+               - CALSPair "x1,y1 x2,y2": lower-left and upper-right 
+               coordinates in a rectangle describing repro area in which 
+               graphic is placed, where X and Y dimensions are each some 
+               number 0..10000 (taken from CALS graphic attributes)
+
+               - LineColumn "line column": line number and column number
+               at which to start callout text in "linespecific" content
+
+               - LineRange "startline endline": whole lines from startline
+               to endline in "linespecific" content
+
+               - LineColumnPair "line1 col1 line2 col2": starting and ending
+               points of area in "linespecific" content that starts at
+               first position and ends at second position (including the
+               beginnings of any intervening lines)
+
+               - Other: directive to look at value of OtherUnits attribute
+               to get implementation-specific keyword
+
+               The default is implementation-specific; usually dependent on 
+               the parent element (GraphicCO gets CALSPair, ProgramListingCO
+               and ScreenCO get LineColumn) -->
+<!-- OtherUnits: User-defined units -->
+  <define name="areaspec.attlist" combine="interleave">
+    <optional>
+      <attribute name="units">
+        <choice>
+          <value>calspair</value>
+          <value>linecolumn</value>
+          <value>linerange</value>
+          <value>linecolumnpair</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherunits">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="areaspec.role.attrib"/>
+    <ref name="local.areaspec.attrib"/>
+  </define>
+<!--end of areaspec.attlist-->
+<!--end of areaspec.module-->
+  <define name="local.area.attrib">
+    <empty/>
+  </define>
+  <define name="area.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="area">
+    <element name="area">
+      <ref name="area.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of area.element-->
+<!-- bug number/symbol override or initialization -->
+<!-- to any related information -->
+<!-- Units: unit of measure in which coordinates in this
+               area are expressed; inherits from AreaSet and AreaSpec -->
+<!-- OtherUnits: User-defined units -->
+  <define name="area.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="linkends.attrib"/>
+    <optional>
+      <attribute name="units">
+        <choice>
+          <value>calspair</value>
+          <value>linecolumn</value>
+          <value>linerange</value>
+          <value>linecolumnpair</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherunits">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <attribute name="coords"/>
+    <ref name="idreq.common.attrib"/>
+    <ref name="area.role.attrib"/>
+    <ref name="local.area.attrib"/>
+  </define>
+<!--end of area.attlist-->
+<!--end of area.module-->
+  <define name="local.areaset.attrib">
+    <empty/>
+  </define>
+  <define name="areaset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="areaset">
+    <element name="areaset">
+      <ref name="areaset.attlist"/>
+      <oneOrMore>
+        <ref name="area"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of areaset.element-->
+<!-- bug number/symbol override or initialization -->
+<!-- Units: unit of measure in which coordinates in this
+               area are expressed; inherits from AreaSpec -->
+  <define name="areaset.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <optional>
+      <attribute name="units">
+        <choice>
+          <value>calspair</value>
+          <value>linecolumn</value>
+          <value>linerange</value>
+          <value>linecolumnpair</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherunits">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <attribute name="coords"/>
+    <ref name="idreq.common.attrib"/>
+    <ref name="areaset.role.attrib"/>
+    <ref name="local.areaset.attrib"/>
+  </define>
+<!--end of areaset.attlist-->
+<!--end of areaset.module-->
+<!--end of areaspec.content.module-->
+  <define name="local.programlisting.attrib">
+    <empty/>
+  </define>
+  <define name="programlisting.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="programlisting">
+    <element name="programlisting">
+      <ref name="programlisting.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="co"/>
+          <ref name="lineannotation"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of programlisting.element-->
+  <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>
+<!--end of programlisting.attlist-->
+<!--end of programlisting.module-->
+  <define name="local.literallayout.attrib">
+    <empty/>
+  </define>
+  <define name="literallayout.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="literallayout">
+    <element name="literallayout">
+      <ref name="literallayout.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="lineannotation"/>
+          <ref name="co"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of literallayout.element-->
+  <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>
+<!--end of literallayout.attlist-->
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!--end of literallayout.module-->
+  <define name="local.screenco.attrib">
+    <empty/>
+  </define>
+  <define name="screenco.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="screenco">
+    <element name="screenco">
+      <ref name="screenco.attlist"/>
+      <ref name="areaspec"/>
+      <ref name="screen"/>
+      <zeroOrMore>
+        <ref name="calloutlist"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of screenco.element-->
+  <define name="screenco.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="screenco.role.attrib"/>
+    <ref name="local.screenco.attrib"/>
+  </define>
+<!--end of screenco.attlist-->
+<!-- AreaSpec (defined above)-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of screenco.module-->
+  <define name="local.screen.attrib">
+    <empty/>
+  </define>
+  <define name="screen.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="screen">
+    <element name="screen">
+      <ref name="screen.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="co"/>
+          <ref name="lineannotation"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of screen.element-->
+  <define name="screen.attlist" combine="interleave">
+    <ref name="width.attrib"/>
+    <ref name="linespecific.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="screen.role.attrib"/>
+    <ref name="local.screen.attrib"/>
+  </define>
+<!--end of screen.attlist-->
+<!--end of screen.module-->
+  <define name="local.screenshot.attrib">
+    <empty/>
+  </define>
+  <define name="screenshot.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="screenshot">
+    <element name="screenshot">
+      <ref name="screenshot.attlist"/>
+      <optional>
+        <ref name="screeninfo"/>
+      </optional>
+      <choice>
+        <ref name="graphic"/>
+        <ref name="graphicco"/>
+        <ref name="mediaobject"/>
+        <ref name="mediaobjectco"/>
+      </choice>
+    </element>
+  </define>
+<!--end of screenshot.element-->
+  <define name="screenshot.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="screenshot.role.attrib"/>
+    <ref name="local.screenshot.attrib"/>
+  </define>
+<!--end of screenshot.attlist-->
+<!--end of screenshot.module-->
+  <define name="local.screeninfo.attrib">
+    <empty/>
+  </define>
+  <define name="screeninfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="screeninfo">
+    <element name="screeninfo">
+      <ref name="screeninfo.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of screeninfo.element-->
+  <define name="screeninfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="screeninfo.role.attrib"/>
+    <ref name="local.screeninfo.attrib"/>
+  </define>
+<!--end of screeninfo.attlist-->
+<!--end of screeninfo.module-->
+<!--end of screenshot.content.module-->
+<!-- Figures etc. ..................... -->
+  <define name="local.figure.attrib">
+    <empty/>
+  </define>
+  <define name="figure.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <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>
+    </element>
+  </define>
+<!--end of figure.element-->
+<!-- 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) -->
+  <define name="figure.attlist" combine="interleave">
+    <optional>
+      <attribute name="float" a:defaultValue="0">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </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>
+<!--end of figure.attlist-->
+<!--end of figure.module-->
+  <define name="local.informalfigure.attrib">
+    <empty/>
+  </define>
+  <define name="informalfigure.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="informalfigure">
+    <element name="informalfigure">
+      <ref name="informalfigure.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="figure.mix"/>
+          <ref name="link.char.class"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of informalfigure.element-->
+<!--
+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)
+-->
+  <define name="informalfigure.attlist" combine="interleave">
+    <optional>
+      <attribute name="float" a:defaultValue="0">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="pgwide">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="informalfigure.role.attrib"/>
+    <ref name="local.informalfigure.attrib"/>
+  </define>
+<!--end of informalfigure.attlist-->
+<!--end of informalfigure.module-->
+  <define name="local.graphicco.attrib">
+    <empty/>
+  </define>
+  <define name="graphicco.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="graphicco">
+    <element name="graphicco">
+      <ref name="graphicco.attlist"/>
+      <ref name="areaspec"/>
+      <ref name="graphic"/>
+      <zeroOrMore>
+        <ref name="calloutlist"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of graphicco.element-->
+  <define name="graphicco.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="graphicco.role.attrib"/>
+    <ref name="local.graphicco.attrib"/>
+  </define>
+<!--end of graphicco.attlist-->
+<!-- AreaSpec (defined above in Examples)-->
+<!-- CalloutList (defined above in Lists)-->
+<!--end of graphicco.module-->
+<!-- Graphical data can be the content of Graphic, or you can reference
+     an external file either as an entity (Entitref) or a filename
+     (Fileref). -->
+  <define name="local.graphic.attrib">
+    <empty/>
+  </define>
+  <define name="graphic.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="graphic">
+    <element name="graphic">
+      <ref name="graphic.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of graphic.element-->
+  <define name="graphic.attlist" combine="interleave">
+    <ref name="graphics.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="graphic.role.attrib"/>
+    <ref name="local.graphic.attrib"/>
+  </define>
+<!--end of graphic.attlist-->
+<!--end of graphic.module-->
+  <define name="local.inlinegraphic.attrib">
+    <empty/>
+  </define>
+  <define name="inlinegraphic.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="inlinegraphic">
+    <element name="inlinegraphic">
+      <ref name="inlinegraphic.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of inlinegraphic.element-->
+  <define name="inlinegraphic.attlist" combine="interleave">
+    <ref name="graphics.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="inlinegraphic.role.attrib"/>
+    <ref name="local.inlinegraphic.attrib"/>
+  </define>
+<!--end of inlinegraphic.attlist-->
+<!--end of inlinegraphic.module-->
+  <define name="local.mediaobject.attrib">
+    <empty/>
+  </define>
+  <define name="mediaobject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="mediaobject">
+    <element name="mediaobject">
+      <ref name="mediaobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <ref name="mediaobject.mix"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="mediaobject.mix"/>
+          <ref name="textobject"/>
+        </choice>
+      </zeroOrMore>
+      <optional>
+        <ref name="caption"/>
+      </optional>
+    </element>
+  </define>
+<!--end of mediaobject.element-->
+  <define name="mediaobject.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="mediaobject.role.attrib"/>
+    <ref name="local.mediaobject.attrib"/>
+  </define>
+<!--end of mediaobject.attlist-->
+<!--end of mediaobject.module-->
+  <define name="local.inlinemediaobject.attrib">
+    <empty/>
+  </define>
+  <define name="inlinemediaobject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="inlinemediaobject">
+    <element name="inlinemediaobject">
+      <ref name="inlinemediaobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <ref name="mediaobject.mix"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="mediaobject.mix"/>
+          <ref name="textobject"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of inlinemediaobject.element-->
+  <define name="inlinemediaobject.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="inlinemediaobject.role.attrib"/>
+    <ref name="local.inlinemediaobject.attrib"/>
+  </define>
+<!--end of inlinemediaobject.attlist-->
+<!--end of inlinemediaobject.module-->
+  <define name="local.videoobject.attrib">
+    <empty/>
+  </define>
+  <define name="videoobject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="videoobject">
+    <element name="videoobject">
+      <ref name="videoobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <ref name="videodata"/>
+    </element>
+  </define>
+<!--end of videoobject.element-->
+  <define name="videoobject.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="videoobject.role.attrib"/>
+    <ref name="local.videoobject.attrib"/>
+  </define>
+<!--end of videoobject.attlist-->
+<!--end of videoobject.module-->
+  <define name="local.audioobject.attrib">
+    <empty/>
+  </define>
+  <define name="audioobject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="audioobject">
+    <element name="audioobject">
+      <ref name="audioobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <ref name="audiodata"/>
+    </element>
+  </define>
+<!--end of audioobject.element-->
+  <define name="audioobject.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="audioobject.role.attrib"/>
+    <ref name="local.audioobject.attrib"/>
+  </define>
+<!--end of audioobject.attlist-->
+<!--end of audioobject.module-->
+  <define name="local.imageobject.attrib">
+    <empty/>
+  </define>
+  <define name="imageobject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="imageobject">
+    <element name="imageobject">
+      <ref name="imageobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <ref name="imagedata"/>
+    </element>
+  </define>
+<!--end of imageobject.element-->
+  <define name="imageobject.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="imageobject.role.attrib"/>
+    <ref name="local.imageobject.attrib"/>
+  </define>
+<!--end of imageobject.attlist-->
+<!--end of imageobject.module-->
+  <define name="local.textobject.attrib">
+    <empty/>
+  </define>
+  <define name="textobject.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="textobject">
+    <element name="textobject">
+      <ref name="textobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <choice>
+        <ref name="phrase"/>
+        <oneOrMore>
+          <ref name="textobject.mix"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of textobject.element-->
+  <define name="textobject.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="textobject.role.attrib"/>
+    <ref name="local.textobject.attrib"/>
+  </define>
+<!--end of textobject.attlist-->
+<!--end of textobject.module-->
+  <define name="local.objectinfo.attrib">
+    <empty/>
+  </define>
+  <define name="objectinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="objectinfo">
+    <element name="objectinfo">
+      <ref name="objectinfo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="legalnotice"/>
+          <ref name="modespec"/>
+          <ref name="subjectset"/>
+          <ref name="keywordset"/>
+          <ref name="itermset"/>
+          <ref name="bibliocomponent.mix"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of objectinfo.element-->
+  <define name="objectinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="objectinfo.role.attrib"/>
+    <ref name="local.objectinfo.attrib"/>
+  </define>
+<!--end of objectinfo.attlist-->
+<!--end of objectinfo.module-->
+<!--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-->
+  <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>
+  <define name="local.videodata.attrib">
+    <empty/>
+  </define>
+  <define name="videodata.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="videodata">
+    <element name="videodata">
+      <ref name="videodata.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of videodata.element-->
+<!--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-->
+  <define name="videodata.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="objectdata.attrib"/>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="depth"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scale"/>
+    </optional>
+    <optional>
+      <attribute name="scalefit">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="videodata.role.attrib"/>
+    <ref name="local.videodata.attrib"/>
+  </define>
+<!--end of videodata.attlist-->
+<!--end of videodata.module-->
+  <define name="local.audiodata.attrib">
+    <empty/>
+  </define>
+  <define name="audiodata.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="audiodata">
+    <element name="audiodata">
+      <ref name="audiodata.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of audiodata.element-->
+  <define name="audiodata.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="objectdata.attrib"/>
+    <ref name="local.audiodata.attrib"/>
+    <ref name="audiodata.role.attrib"/>
+  </define>
+<!--end of audiodata.attlist-->
+<!--end of audiodata.module-->
+  <define name="local.imagedata.attrib">
+    <empty/>
+  </define>
+  <define name="imagedata.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="imagedata">
+    <element name="imagedata">
+      <ref name="imagedata.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of imagedata.element-->
+<!--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-->
+  <define name="imagedata.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="objectdata.attrib"/>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="depth"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scale"/>
+    </optional>
+    <optional>
+      <attribute name="scalefit">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="local.imagedata.attrib"/>
+    <ref name="imagedata.role.attrib"/>
+  </define>
+<!--end of imagedata.attlist-->
+<!--end of imagedata.module-->
+  <define name="local.caption.attrib">
+    <empty/>
+  </define>
+  <define name="caption.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="caption">
+    <element name="caption">
+      <ref name="caption.attlist"/>
+      <zeroOrMore>
+        <ref name="textobject.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of caption.element-->
+  <define name="caption.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="local.caption.attrib"/>
+    <ref name="caption.role.attrib"/>
+  </define>
+<!--end of caption.attlist-->
+<!--end of caption.module-->
+  <define name="local.mediaobjectco.attrib">
+    <empty/>
+  </define>
+  <define name="mediaobjectco.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="mediaobjectco">
+    <element name="mediaobjectco">
+      <ref name="mediaobjectco.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <ref name="imageobjectco"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="imageobjectco"/>
+          <ref name="textobject"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of mediaobjectco.element-->
+  <define name="mediaobjectco.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="mediaobjectco.role.attrib"/>
+    <ref name="local.mediaobjectco.attrib"/>
+  </define>
+<!--end of mediaobjectco.attlist-->
+<!--end of mediaobjectco.module-->
+  <define name="local.imageobjectco.attrib">
+    <empty/>
+  </define>
+  <define name="imageobjectco.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="imageobjectco">
+    <element name="imageobjectco">
+      <ref name="imageobjectco.attlist"/>
+      <ref name="areaspec"/>
+      <ref name="imageobject"/>
+      <zeroOrMore>
+        <ref name="calloutlist"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of imageobjectco.element-->
+  <define name="imageobjectco.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="imageobjectco.role.attrib"/>
+    <ref name="local.imageobjectco.attrib"/>
+  </define>
+<!--end of imageobjectco.attlist-->
+<!--end of imageobjectco.module-->
+<!--end of mediaobject.content.module-->
+<!-- Equations ........................ -->
+<!-- This PE provides a mechanism for replacing equation content, -->
+<!-- perhaps adding a new or different model (e.g., MathML) -->
+  <define name="equation.content">
+    <optional>
+      <ref name="alt"/>
+    </optional>
+    <choice>
+      <oneOrMore>
+        <ref name="graphic"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="mediaobject"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="inlineequation.content">
+    <optional>
+      <ref name="alt"/>
+    </optional>
+    <choice>
+      <oneOrMore>
+        <ref name="graphic"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="inlinemediaobject"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="local.equation.attrib">
+    <empty/>
+  </define>
+  <define name="equation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="equation">
+    <element name="equation">
+      <ref name="equation.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <choice>
+        <ref name="informalequation"/>
+        <ref name="equation.content"/>
+      </choice>
+    </element>
+  </define>
+<!--end of equation.element-->
+  <define name="equation.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="equation.role.attrib"/>
+    <ref name="local.equation.attrib"/>
+  </define>
+<!--end of equation.attlist-->
+<!--end of equation.module-->
+  <define name="local.informalequation.attrib">
+    <empty/>
+  </define>
+  <define name="informalequation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="informalequation">
+    <element name="informalequation">
+      <ref name="informalequation.attlist"/>
+      <ref name="equation.content"/>
+    </element>
+  </define>
+<!--end of informalequation.element-->
+  <define name="informalequation.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="informalequation.role.attrib"/>
+    <ref name="local.informalequation.attrib"/>
+  </define>
+<!--end of informalequation.attlist-->
+<!--end of informalequation.module-->
+  <define name="local.inlineequation.attrib">
+    <empty/>
+  </define>
+  <define name="inlineequation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="inlineequation">
+    <element name="inlineequation">
+      <ref name="inlineequation.attlist"/>
+      <ref name="inlineequation.content"/>
+    </element>
+  </define>
+<!--end of inlineequation.element-->
+  <define name="inlineequation.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="inlineequation.role.attrib"/>
+    <ref name="local.inlineequation.attrib"/>
+  </define>
+<!--end of inlineequation.attlist-->
+<!--end of inlineequation.module-->
+  <define name="local.alt.attrib">
+    <empty/>
+  </define>
+  <define name="alt.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="alt">
+    <element name="alt">
+      <ref name="alt.attlist"/>
+      <text/>
+    </element>
+  </define>
+<!--end of alt.element-->
+  <define name="alt.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="alt.role.attrib"/>
+    <ref name="local.alt.attrib"/>
+  </define>
+<!--end of alt.attlist-->
+<!--end of alt.module-->
+<!-- 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="ndxterm.class"/>
+    </zeroOrMore>
+    <choice>
+      <oneOrMore>
+        <ref name="graphic"/>
+      </oneOrMore>
+      <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 -->
+  <include href="calstblx.rng"/>
+<!--end of table.module-->
+<!-- Note that InformalTable is dependent on some of the entity
+     declarations that customize Table. -->
+  <define name="local.informaltable.attrib">
+    <empty/>
+  </define>
+  <define name="informaltable">
+    <element name="informaltable">
+      <ref name="informaltable.attlist"/>
+      <choice>
+        <oneOrMore>
+          <ref name="graphic"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="mediaobject"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="tgroup"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of informaltable.element-->
+<!-- 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 -->
+  <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>
+<!--end of informaltable.attlist-->
+<!--end of informaltable.module-->
+<!-- ...................................................................... -->
+<!-- Synopses ............................................................. -->
+<!-- Synopsis ......................... -->
+  <define name="local.synopsis.attrib">
+    <empty/>
+  </define>
+  <define name="synopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="synopsis">
+    <element name="synopsis">
+      <ref name="synopsis.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="graphic"/>
+          <ref name="mediaobject"/>
+          <ref name="lineannotation"/>
+          <ref name="co"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of synopsis.element-->
+  <define name="synopsis.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="linespecific.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="synopsis.role.attrib"/>
+    <ref name="local.synopsis.attrib"/>
+  </define>
+<!--end of synopsis.attlist-->
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!--end of synopsis.module-->
+<!-- CmdSynopsis ...................... -->
+  <define name="local.cmdsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="cmdsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="cmdsynopsis">
+    <element name="cmdsynopsis">
+      <ref name="cmdsynopsis.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="command"/>
+          <ref name="arg"/>
+          <ref name="group"/>
+          <ref name="sbr"/>
+        </choice>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="synopfragment"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of cmdsynopsis.element-->
+<!-- Sepchar: Character that should separate command and all 
+               top-level arguments; alternate value might be e.g., &Delta; -->
+  <define name="cmdsynopsis.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <optional>
+      <attribute name="sepchar" a:defaultValue=" "/>
+    </optional>
+    <optional>
+      <attribute name="cmdlength"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="cmdsynopsis.role.attrib"/>
+    <ref name="local.cmdsynopsis.attrib"/>
+  </define>
+<!--end of cmdsynopsis.attlist-->
+<!--end of cmdsynopsis.module-->
+  <define name="local.arg.attrib">
+    <empty/>
+  </define>
+  <define name="arg.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="arg">
+    <element name="arg">
+      <ref name="arg.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="arg"/>
+          <ref name="group"/>
+          <ref name="option"/>
+          <ref name="synopfragmentref"/>
+          <ref name="replaceable"/>
+          <ref name="sbr"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of arg.element-->
+<!-- Choice: Whether Arg must be supplied: Opt (optional to 
+               supply, e.g. [arg]; the default), Req (required to supply, 
+               e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+<!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without 
+               ellipsis; the default), or Repeat (e.g. arg...) -->
+  <define name="arg.attlist" combine="interleave">
+    <optional>
+      <attribute name="choice" a:defaultValue="opt">
+        <choice>
+          <value>opt</value>
+          <value>req</value>
+          <value>plain</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rep" a:defaultValue="norepeat">
+        <choice>
+          <value>norepeat</value>
+          <value>repeat</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="arg.role.attrib"/>
+    <ref name="local.arg.attrib"/>
+  </define>
+<!--end of arg.attlist-->
+<!--end of arg.module-->
+  <define name="local.group.attrib">
+    <empty/>
+  </define>
+  <define name="group.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="group">
+    <element name="group">
+      <ref name="group.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="arg"/>
+          <ref name="group"/>
+          <ref name="option"/>
+          <ref name="synopfragmentref"/>
+          <ref name="replaceable"/>
+          <ref name="sbr"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of group.element-->
+<!-- Choice: Whether Group must be supplied: Opt (optional to
+               supply, e.g.  [g1|g2|g3]; the default), Req (required to
+               supply, e.g.  {g1|g2|g3}), Plain (required to supply,
+               e.g.  g1|g2|g3), OptMult (can supply zero or more, e.g.
+               [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+               {{g1|g2|g3}}) -->
+<!-- Rep: whether Group is repeatable: Norepeat (e.g. group 
+               without ellipsis; the default), or Repeat (e.g. group...) -->
+  <define name="group.attlist" combine="interleave">
+    <optional>
+      <attribute name="choice" a:defaultValue="opt">
+        <choice>
+          <value>opt</value>
+          <value>req</value>
+          <value>plain</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rep" a:defaultValue="norepeat">
+        <choice>
+          <value>norepeat</value>
+          <value>repeat</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="group.role.attrib"/>
+    <ref name="local.group.attrib"/>
+  </define>
+<!--end of group.attlist-->
+<!--end of group.module-->
+  <define name="local.sbr.attrib">
+    <empty/>
+  </define>
+<!-- Synopsis break -->
+  <define name="sbr.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sbr">
+    <element name="sbr">
+      <ref name="sbr.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of sbr.element-->
+  <define name="sbr.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="sbr.role.attrib"/>
+    <ref name="local.sbr.attrib"/>
+  </define>
+<!--end of sbr.attlist-->
+<!--end of sbr.module-->
+  <define name="local.synopfragmentref.attrib">
+    <empty/>
+  </define>
+  <define name="synopfragmentref.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="synopfragmentref">
+    <element name="synopfragmentref">
+      <ref name="synopfragmentref.attlist"/>
+      <text/>
+    </element>
+  </define>
+<!--end of synopfragmentref.element-->
+<!-- to SynopFragment of complex synopsis
+                       material for separate referencing -->
+  <define name="synopfragmentref.attlist" combine="interleave">
+    <ref name="linkendreq.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="synopfragmentref.role.attrib"/>
+    <ref name="local.synopfragmentref.attrib"/>
+  </define>
+<!--end of synopfragmentref.attlist-->
+<!--end of synopfragmentref.module-->
+  <define name="local.synopfragment.attrib">
+    <empty/>
+  </define>
+  <define name="synopfragment.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="synopfragment">
+    <element name="synopfragment">
+      <ref name="synopfragment.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="arg"/>
+          <ref name="group"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of synopfragment.element-->
+  <define name="synopfragment.attlist" combine="interleave">
+    <ref name="idreq.common.attrib"/>
+    <ref name="synopfragment.role.attrib"/>
+    <ref name="local.synopfragment.attrib"/>
+  </define>
+<!--end of synopfragment.attlist-->
+<!--end of synopfragment.module-->
+<!-- Command (defined in the Inlines section, below)-->
+<!-- Option (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!--end of cmdsynopsis.content.module-->
+<!-- FuncSynopsis ..................... -->
+  <define name="local.funcsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="funcsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="funcsynopsis">
+    <element name="funcsynopsis">
+      <ref name="funcsynopsis.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="funcsynopsisinfo"/>
+          <ref name="funcprototype"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of funcsynopsis.element-->
+  <define name="funcsynopsis.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="funcsynopsis.role.attrib"/>
+    <ref name="local.funcsynopsis.attrib"/>
+  </define>
+<!--end of funcsynopsis.attlist-->
+<!--end of funcsynopsis.module-->
+  <define name="local.funcsynopsisinfo.attrib">
+    <empty/>
+  </define>
+  <define name="funcsynopsisinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="funcsynopsisinfo">
+    <element name="funcsynopsisinfo">
+      <ref name="funcsynopsisinfo.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="lineannotation"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of funcsynopsisinfo.element-->
+  <define name="funcsynopsisinfo.attlist" combine="interleave">
+    <ref name="linespecific.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="funcsynopsisinfo.role.attrib"/>
+    <ref name="local.funcsynopsisinfo.attrib"/>
+  </define>
+<!--end of funcsynopsisinfo.attlist-->
+<!--end of funcsynopsisinfo.module-->
+  <define name="local.funcprototype.attrib">
+    <empty/>
+  </define>
+  <define name="funcprototype.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="funcprototype">
+    <element name="funcprototype">
+      <ref name="funcprototype.attlist"/>
+      <ref name="funcdef"/>
+      <choice>
+        <ref name="void"/>
+        <ref name="varargs"/>
+        <oneOrMore>
+          <ref name="paramdef"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+<!--end of funcprototype.element-->
+  <define name="funcprototype.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="funcprototype.role.attrib"/>
+    <ref name="local.funcprototype.attrib"/>
+  </define>
+<!--end of funcprototype.attlist-->
+<!--end of funcprototype.module-->
+  <define name="local.funcdef.attrib">
+    <empty/>
+  </define>
+  <define name="funcdef.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="funcdef">
+    <element name="funcdef">
+      <ref name="funcdef.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="replaceable"/>
+          <ref name="function"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of funcdef.element-->
+  <define name="funcdef.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="funcdef.role.attrib"/>
+    <ref name="local.funcdef.attrib"/>
+  </define>
+<!--end of funcdef.attlist-->
+<!--end of funcdef.module-->
+  <define name="local.void.attrib">
+    <empty/>
+  </define>
+  <define name="void.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="void">
+    <element name="void">
+      <ref name="void.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of void.element-->
+  <define name="void.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="void.role.attrib"/>
+    <ref name="local.void.attrib"/>
+  </define>
+<!--end of void.attlist-->
+<!--end of void.module-->
+  <define name="local.varargs.attrib">
+    <empty/>
+  </define>
+  <define name="varargs.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="varargs">
+    <element name="varargs">
+      <ref name="varargs.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of varargs.element-->
+  <define name="varargs.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="varargs.role.attrib"/>
+    <ref name="local.varargs.attrib"/>
+  </define>
+<!--end of varargs.attlist-->
+<!--end of varargs.module-->
+<!-- Processing assumes that only one Parameter will appear in a
+     ParamDef, and that FuncParams will be used at most once, for
+     providing information on the "inner parameters" for parameters that
+     are pointers to functions. -->
+  <define name="local.paramdef.attrib">
+    <empty/>
+  </define>
+  <define name="paramdef.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="paramdef">
+    <element name="paramdef">
+      <ref name="paramdef.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="replaceable"/>
+          <ref name="parameter"/>
+          <ref name="funcparams"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of paramdef.element-->
+  <define name="paramdef.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="paramdef.role.attrib"/>
+    <ref name="local.paramdef.attrib"/>
+  </define>
+<!--end of paramdef.attlist-->
+<!--end of paramdef.module-->
+  <define name="local.funcparams.attrib">
+    <empty/>
+  </define>
+  <define name="funcparams.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="funcparams">
+    <element name="funcparams">
+      <ref name="funcparams.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of funcparams.element-->
+  <define name="funcparams.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="funcparams.role.attrib"/>
+    <ref name="local.funcparams.attrib"/>
+  </define>
+<!--end of funcparams.attlist-->
+<!--end of funcparams.module-->
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!-- Function (defined in the Inlines section, below)-->
+<!-- Parameter (defined in the Inlines section, below)-->
+<!--end of funcsynopsis.content.module-->
+<!-- ClassSynopsis ..................... -->
+  <define name="local.classsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="classsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="classsynopsis">
+    <element name="classsynopsis">
+      <ref name="classsynopsis.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="ooclass"/>
+          <ref name="oointerface"/>
+          <ref name="ooexception"/>
+        </choice>
+      </oneOrMore>
+      <zeroOrMore>
+        <choice>
+          <ref name="classsynopsisinfo"/>
+          <ref name="fieldsynopsis"/>
+          <ref name="method.synop.class"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of classsynopsis.element-->
+  <define name="classsynopsis.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="classsynopsis.role.attrib"/>
+    <ref name="local.classsynopsis.attrib"/>
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <optional>
+      <attribute name="class" a:defaultValue="class">
+        <choice>
+          <value>class</value>
+          <value>interface</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+<!--end of classsynopsis.attlist-->
+<!--end of classsynopsis.module-->
+  <define name="local.classsynopsisinfo.attrib">
+    <empty/>
+  </define>
+  <define name="classsynopsisinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="classsynopsisinfo">
+    <element name="classsynopsisinfo">
+      <ref name="classsynopsisinfo.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="lineannotation"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of classsynopsisinfo.element-->
+  <define name="classsynopsisinfo.attlist" combine="interleave">
+    <ref name="linespecific.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="classsynopsisinfo.role.attrib"/>
+    <ref name="local.classsynopsisinfo.attrib"/>
+  </define>
+<!--end of classsynopsisinfo.attlist-->
+<!--end of classsynopsisinfo.module-->
+  <define name="local.ooclass.attrib">
+    <empty/>
+  </define>
+  <define name="ooclass.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="ooclass">
+    <element name="ooclass">
+      <ref name="ooclass.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <ref name="classname"/>
+    </element>
+  </define>
+<!--end of ooclass.element-->
+  <define name="ooclass.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="ooclass.role.attrib"/>
+    <ref name="local.ooclass.attrib"/>
+  </define>
+<!--end of ooclass.attlist-->
+<!--end of ooclass.module-->
+  <define name="local.oointerface.attrib">
+    <empty/>
+  </define>
+  <define name="oointerface.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="oointerface">
+    <element name="oointerface">
+      <ref name="oointerface.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <ref name="interfacename"/>
+    </element>
+  </define>
+<!--end of oointerface.element-->
+  <define name="oointerface.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="oointerface.role.attrib"/>
+    <ref name="local.oointerface.attrib"/>
+  </define>
+<!--end of oointerface.attlist-->
+<!--end of oointerface.module-->
+  <define name="local.ooexception.attrib">
+    <empty/>
+  </define>
+  <define name="ooexception.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="ooexception">
+    <element name="ooexception">
+      <ref name="ooexception.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <ref name="exceptionname"/>
+    </element>
+  </define>
+<!--end of ooexception.element-->
+  <define name="ooexception.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="ooexception.role.attrib"/>
+    <ref name="local.ooexception.attrib"/>
+  </define>
+<!--end of ooexception.attlist-->
+<!--end of ooexception.module-->
+  <define name="local.modifier.attrib">
+    <empty/>
+  </define>
+  <define name="modifier.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="modifier">
+    <element name="modifier">
+      <ref name="modifier.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of modifier.element-->
+  <define name="modifier.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="modifier.role.attrib"/>
+    <ref name="local.modifier.attrib"/>
+  </define>
+<!--end of modifier.attlist-->
+<!--end of modifier.module-->
+  <define name="local.interfacename.attrib">
+    <empty/>
+  </define>
+  <define name="interfacename.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="interfacename">
+    <element name="interfacename">
+      <ref name="interfacename.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of interfacename.element-->
+  <define name="interfacename.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="interfacename.role.attrib"/>
+    <ref name="local.interfacename.attrib"/>
+  </define>
+<!--end of interfacename.attlist-->
+<!--end of interfacename.module-->
+  <define name="local.exceptionname.attrib">
+    <empty/>
+  </define>
+  <define name="exceptionname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="exceptionname">
+    <element name="exceptionname">
+      <ref name="exceptionname.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of exceptionname.element-->
+  <define name="exceptionname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="exceptionname.role.attrib"/>
+    <ref name="local.exceptionname.attrib"/>
+  </define>
+<!--end of exceptionname.attlist-->
+<!--end of exceptionname.module-->
+  <define name="local.fieldsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="fieldsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="fieldsynopsis">
+    <element name="fieldsynopsis">
+      <ref name="fieldsynopsis.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="type"/>
+      </optional>
+      <ref name="varname"/>
+      <optional>
+        <ref name="initializer"/>
+      </optional>
+    </element>
+  </define>
+<!--end of fieldsynopsis.element-->
+  <define name="fieldsynopsis.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="fieldsynopsis.role.attrib"/>
+    <ref name="local.fieldsynopsis.attrib"/>
+  </define>
+<!--end of fieldsynopsis.attlist-->
+<!--end of fieldsynopsis.module-->
+  <define name="local.initializer.attrib">
+    <empty/>
+  </define>
+  <define name="initializer.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="initializer">
+    <element name="initializer">
+      <ref name="initializer.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of initializer.element-->
+  <define name="initializer.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="initializer.role.attrib"/>
+    <ref name="local.initializer.attrib"/>
+  </define>
+<!--end of initializer.attlist-->
+<!--end of initializer.module-->
+  <define name="local.constructorsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="constructorsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="constructorsynopsis">
+    <element name="constructorsynopsis">
+      <ref name="constructorsynopsis.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="methodname"/>
+      </optional>
+      <choice>
+        <oneOrMore>
+          <ref name="methodparam"/>
+        </oneOrMore>
+        <ref name="void"/>
+      </choice>
+      <zeroOrMore>
+        <ref name="exceptionname"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of constructorsynopsis.element-->
+  <define name="constructorsynopsis.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="constructorsynopsis.role.attrib"/>
+    <ref name="local.constructorsynopsis.attrib"/>
+  </define>
+<!--end of constructorsynopsis.attlist-->
+<!--end of constructorsynopsis.module-->
+  <define name="local.destructorsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="destructorsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="destructorsynopsis">
+    <element name="destructorsynopsis">
+      <ref name="destructorsynopsis.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="methodname"/>
+      </optional>
+      <choice>
+        <oneOrMore>
+          <ref name="methodparam"/>
+        </oneOrMore>
+        <ref name="void"/>
+      </choice>
+      <zeroOrMore>
+        <ref name="exceptionname"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of destructorsynopsis.element-->
+  <define name="destructorsynopsis.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="destructorsynopsis.role.attrib"/>
+    <ref name="local.destructorsynopsis.attrib"/>
+  </define>
+<!--end of destructorsynopsis.attlist-->
+<!--end of destructorsynopsis.module-->
+  <define name="local.methodsynopsis.attrib">
+    <empty/>
+  </define>
+  <define name="methodsynopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="methodsynopsis">
+    <element name="methodsynopsis">
+      <ref name="methodsynopsis.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <optional>
+        <choice>
+          <ref name="type"/>
+          <ref name="void"/>
+        </choice>
+      </optional>
+      <ref name="methodname"/>
+      <choice>
+        <oneOrMore>
+          <ref name="methodparam"/>
+        </oneOrMore>
+        <ref name="void"/>
+      </choice>
+      <zeroOrMore>
+        <ref name="exceptionname"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of methodsynopsis.element-->
+  <define name="methodsynopsis.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="methodsynopsis.role.attrib"/>
+    <ref name="local.methodsynopsis.attrib"/>
+  </define>
+<!--end of methodsynopsis.attlist-->
+<!--end of methodsynopsis.module-->
+  <define name="local.methodname.attrib">
+    <empty/>
+  </define>
+  <define name="methodname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="methodname">
+    <element name="methodname">
+      <ref name="methodname.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of methodname.element-->
+  <define name="methodname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="methodname.role.attrib"/>
+    <ref name="local.methodname.attrib"/>
+  </define>
+<!--end of methodname.attlist-->
+<!--end of methodname.module-->
+  <define name="local.methodparam.attrib">
+    <empty/>
+  </define>
+  <define name="methodparam.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="methodparam">
+    <element name="methodparam">
+      <ref name="methodparam.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="type"/>
+      </optional>
+      <choice>
+        <group>
+          <ref name="parameter"/>
+          <optional>
+            <ref name="initializer"/>
+          </optional>
+        </group>
+        <ref name="funcparams"/>
+      </choice>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of methodparam.element-->
+  <define name="methodparam.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="methodparam.role.attrib"/>
+    <ref name="local.methodparam.attrib"/>
+    <optional>
+      <attribute name="choice" a:defaultValue="req">
+        <choice>
+          <value>opt</value>
+          <value>req</value>
+          <value>plain</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rep" a:defaultValue="norepeat">
+        <choice>
+          <value>norepeat</value>
+          <value>repeat</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+<!--end of methodparam.attlist-->
+<!--end of methodparam.module-->
+<!--end of classsynopsis.content.module-->
+<!-- ...................................................................... -->
+<!-- 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. -->
+<!-- .................................. -->
+<!-- Ackno ............................ -->
+  <define name="local.ackno.attrib">
+    <empty/>
+  </define>
+  <define name="ackno.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="ackno">
+    <element name="ackno">
+      <ref name="ackno.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of ackno.element-->
+  <define name="ackno.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="ackno.role.attrib"/>
+    <ref name="local.ackno.attrib"/>
+  </define>
+<!--end of ackno.attlist-->
+<!--end of ackno.module-->
+<!-- Address .......................... -->
+  <define name="local.address.attrib">
+    <empty/>
+  </define>
+  <define name="address.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="address">
+    <element name="address">
+      <ref name="address.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="person.ident.mix"/>
+          <ref name="street"/>
+          <ref name="pob"/>
+          <ref name="postcode"/>
+          <ref name="city"/>
+          <ref name="state"/>
+          <ref name="country"/>
+          <ref name="phone"/>
+          <ref name="fax"/>
+          <ref name="email"/>
+          <ref name="otheraddr"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of address.element-->
+  <define name="address.attlist" combine="interleave">
+    <ref name="linespecific.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="address.role.attrib"/>
+    <ref name="local.address.attrib"/>
+  </define>
+<!--end of address.attlist-->
+<!--end of address.module-->
+  <define name="local.street.attrib">
+    <empty/>
+  </define>
+  <define name="street.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="street">
+    <element name="street">
+      <ref name="street.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of street.element-->
+  <define name="street.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="street.role.attrib"/>
+    <ref name="local.street.attrib"/>
+  </define>
+<!--end of street.attlist-->
+<!--end of street.module-->
+  <define name="local.pob.attrib">
+    <empty/>
+  </define>
+  <define name="pob.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="pob">
+    <element name="pob">
+      <ref name="pob.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of pob.element-->
+  <define name="pob.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="pob.role.attrib"/>
+    <ref name="local.pob.attrib"/>
+  </define>
+<!--end of pob.attlist-->
+<!--end of pob.module-->
+  <define name="local.postcode.attrib">
+    <empty/>
+  </define>
+  <define name="postcode.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="postcode">
+    <element name="postcode">
+      <ref name="postcode.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of postcode.element-->
+  <define name="postcode.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="postcode.role.attrib"/>
+    <ref name="local.postcode.attrib"/>
+  </define>
+<!--end of postcode.attlist-->
+<!--end of postcode.module-->
+  <define name="local.city.attrib">
+    <empty/>
+  </define>
+  <define name="city.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="city">
+    <element name="city">
+      <ref name="city.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of city.element-->
+  <define name="city.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="city.role.attrib"/>
+    <ref name="local.city.attrib"/>
+  </define>
+<!--end of city.attlist-->
+<!--end of city.module-->
+  <define name="local.state.attrib">
+    <empty/>
+  </define>
+  <define name="state.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="state">
+    <element name="state">
+      <ref name="state.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of state.element-->
+  <define name="state.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="state.role.attrib"/>
+    <ref name="local.state.attrib"/>
+  </define>
+<!--end of state.attlist-->
+<!--end of state.module-->
+  <define name="local.country.attrib">
+    <empty/>
+  </define>
+  <define name="country.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="country">
+    <element name="country">
+      <ref name="country.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of country.element-->
+  <define name="country.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="country.role.attrib"/>
+    <ref name="local.country.attrib"/>
+  </define>
+<!--end of country.attlist-->
+<!--end of country.module-->
+  <define name="local.phone.attrib">
+    <empty/>
+  </define>
+  <define name="phone.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="phone">
+    <element name="phone">
+      <ref name="phone.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of phone.element-->
+  <define name="phone.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="phone.role.attrib"/>
+    <ref name="local.phone.attrib"/>
+  </define>
+<!--end of phone.attlist-->
+<!--end of phone.module-->
+  <define name="local.fax.attrib">
+    <empty/>
+  </define>
+  <define name="fax.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="fax">
+    <element name="fax">
+      <ref name="fax.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of fax.element-->
+  <define name="fax.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="fax.role.attrib"/>
+    <ref name="local.fax.attrib"/>
+  </define>
+<!--end of fax.attlist-->
+<!--end of fax.module-->
+<!-- Email (defined in the Inlines section, below)-->
+  <define name="local.otheraddr.attrib">
+    <empty/>
+  </define>
+  <define name="otheraddr.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="otheraddr">
+    <element name="otheraddr">
+      <ref name="otheraddr.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of otheraddr.element-->
+  <define name="otheraddr.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="otheraddr.role.attrib"/>
+    <ref name="local.otheraddr.attrib"/>
+  </define>
+<!--end of otheraddr.attlist-->
+<!--end of otheraddr.module-->
+<!--end of address.content.module-->
+<!-- Affiliation ...................... -->
+  <define name="local.affiliation.attrib">
+    <empty/>
+  </define>
+  <define name="affiliation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="affiliation">
+    <element name="affiliation">
+      <ref name="affiliation.attlist"/>
+      <optional>
+        <ref name="shortaffil"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="jobtitle"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="orgname"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="orgdiv"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="address"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of affiliation.element-->
+  <define name="affiliation.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="affiliation.role.attrib"/>
+    <ref name="local.affiliation.attrib"/>
+  </define>
+<!--end of affiliation.attlist-->
+<!--end of affiliation.module-->
+  <define name="local.shortaffil.attrib">
+    <empty/>
+  </define>
+  <define name="shortaffil.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="shortaffil">
+    <element name="shortaffil">
+      <ref name="shortaffil.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of shortaffil.element-->
+  <define name="shortaffil.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="shortaffil.role.attrib"/>
+    <ref name="local.shortaffil.attrib"/>
+  </define>
+<!--end of shortaffil.attlist-->
+<!--end of shortaffil.module-->
+  <define name="local.jobtitle.attrib">
+    <empty/>
+  </define>
+  <define name="jobtitle.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="jobtitle">
+    <element name="jobtitle">
+      <ref name="jobtitle.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of jobtitle.element-->
+  <define name="jobtitle.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="jobtitle.role.attrib"/>
+    <ref name="local.jobtitle.attrib"/>
+  </define>
+<!--end of jobtitle.attlist-->
+<!--end of jobtitle.module-->
+<!-- OrgName (defined elsewhere in this section)-->
+  <define name="local.orgdiv.attrib">
+    <empty/>
+  </define>
+  <define name="orgdiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="orgdiv">
+    <element name="orgdiv">
+      <ref name="orgdiv.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of orgdiv.element-->
+  <define name="orgdiv.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="orgdiv.role.attrib"/>
+    <ref name="local.orgdiv.attrib"/>
+  </define>
+<!--end of orgdiv.attlist-->
+<!--end of orgdiv.module-->
+<!-- Address (defined elsewhere in this section)-->
+<!--end of affiliation.content.module-->
+<!-- ArtPageNums ...................... -->
+  <define name="local.artpagenums.attrib">
+    <empty/>
+  </define>
+  <define name="artpagenums.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="artpagenums">
+    <element name="artpagenums">
+      <ref name="artpagenums.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of artpagenums.element-->
+  <define name="artpagenums.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="artpagenums.role.attrib"/>
+    <ref name="local.artpagenums.attrib"/>
+  </define>
+<!--end of artpagenums.attlist-->
+<!--end of artpagenums.module-->
+<!-- Author ........................... -->
+  <define name="local.author.attrib">
+    <empty/>
+  </define>
+  <define name="author.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="author">
+    <element name="author">
+      <ref name="author.attlist"/>
+      <oneOrMore>
+        <ref name="person.ident.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of author.element-->
+  <define name="author.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="author.role.attrib"/>
+    <ref name="local.author.attrib"/>
+  </define>
+<!--end of author.attlist-->
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of author.module-->
+<!-- AuthorGroup ...................... -->
+  <define name="local.authorgroup.attrib">
+    <empty/>
+  </define>
+  <define name="authorgroup.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="authorgroup">
+    <element name="authorgroup">
+      <ref name="authorgroup.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="author"/>
+          <ref name="editor"/>
+          <ref name="collab"/>
+          <ref name="corpauthor"/>
+          <ref name="othercredit"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of authorgroup.element-->
+  <define name="authorgroup.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="authorgroup.role.attrib"/>
+    <ref name="local.authorgroup.attrib"/>
+  </define>
+<!--end of authorgroup.attlist-->
+<!--end of authorgroup.module-->
+<!-- Author (defined elsewhere in this section)-->
+<!-- Editor (defined elsewhere in this section)-->
+  <define name="local.collab.attrib">
+    <empty/>
+  </define>
+  <define name="collab.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="collab">
+    <element name="collab">
+      <ref name="collab.attlist"/>
+      <ref name="collabname"/>
+      <zeroOrMore>
+        <ref name="affiliation"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of collab.element-->
+  <define name="collab.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="collab.role.attrib"/>
+    <ref name="local.collab.attrib"/>
+  </define>
+<!--end of collab.attlist-->
+<!--end of collab.module-->
+  <define name="local.collabname.attrib">
+    <empty/>
+  </define>
+  <define name="collabname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="collabname">
+    <element name="collabname">
+      <ref name="collabname.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of collabname.element-->
+  <define name="collabname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="collabname.role.attrib"/>
+    <ref name="local.collabname.attrib"/>
+  </define>
+<!--end of collabname.attlist-->
+<!--end of collabname.module-->
+<!-- Affiliation (defined elsewhere in this section)-->
+<!--end of collab.content.module-->
+<!-- CorpAuthor (defined elsewhere in this section)-->
+<!-- OtherCredit (defined elsewhere in this section)-->
+<!--end of authorgroup.content.module-->
+<!-- AuthorInitials ................... -->
+  <define name="local.authorinitials.attrib">
+    <empty/>
+  </define>
+  <define name="authorinitials.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="authorinitials">
+    <element name="authorinitials">
+      <ref name="authorinitials.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of authorinitials.element-->
+  <define name="authorinitials.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="authorinitials.role.attrib"/>
+    <ref name="local.authorinitials.attrib"/>
+  </define>
+<!--end of authorinitials.attlist-->
+<!--end of authorinitials.module-->
+<!-- ConfGroup ........................ -->
+  <define name="local.confgroup.attrib">
+    <empty/>
+  </define>
+  <define name="confgroup.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="confgroup">
+    <element name="confgroup">
+      <ref name="confgroup.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="confdates"/>
+          <ref name="conftitle"/>
+          <ref name="confnum"/>
+          <ref name="address"/>
+          <ref name="confsponsor"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of confgroup.element-->
+  <define name="confgroup.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="confgroup.role.attrib"/>
+    <ref name="local.confgroup.attrib"/>
+  </define>
+<!--end of confgroup.attlist-->
+<!--end of confgroup.module-->
+  <define name="local.confdates.attrib">
+    <empty/>
+  </define>
+  <define name="confdates.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="confdates">
+    <element name="confdates">
+      <ref name="confdates.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of confdates.element-->
+  <define name="confdates.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="confdates.role.attrib"/>
+    <ref name="local.confdates.attrib"/>
+  </define>
+<!--end of confdates.attlist-->
+<!--end of confdates.module-->
+  <define name="local.conftitle.attrib">
+    <empty/>
+  </define>
+  <define name="conftitle.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="conftitle">
+    <element name="conftitle">
+      <ref name="conftitle.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of conftitle.element-->
+  <define name="conftitle.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="conftitle.role.attrib"/>
+    <ref name="local.conftitle.attrib"/>
+  </define>
+<!--end of conftitle.attlist-->
+<!--end of conftitle.module-->
+  <define name="local.confnum.attrib">
+    <empty/>
+  </define>
+  <define name="confnum.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="confnum">
+    <element name="confnum">
+      <ref name="confnum.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of confnum.element-->
+  <define name="confnum.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="confnum.role.attrib"/>
+    <ref name="local.confnum.attrib"/>
+  </define>
+<!--end of confnum.attlist-->
+<!--end of confnum.module-->
+<!-- Address (defined elsewhere in this section)-->
+  <define name="local.confsponsor.attrib">
+    <empty/>
+  </define>
+  <define name="confsponsor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="confsponsor">
+    <element name="confsponsor">
+      <ref name="confsponsor.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of confsponsor.element-->
+  <define name="confsponsor.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="confsponsor.role.attrib"/>
+    <ref name="local.confsponsor.attrib"/>
+  </define>
+<!--end of confsponsor.attlist-->
+<!--end of confsponsor.module-->
+<!--end of confgroup.content.module-->
+<!-- ContractNum ...................... -->
+  <define name="local.contractnum.attrib">
+    <empty/>
+  </define>
+  <define name="contractnum.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="contractnum">
+    <element name="contractnum">
+      <ref name="contractnum.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of contractnum.element-->
+  <define name="contractnum.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="contractnum.role.attrib"/>
+    <ref name="local.contractnum.attrib"/>
+  </define>
+<!--end of contractnum.attlist-->
+<!--end of contractnum.module-->
+<!-- ContractSponsor .................. -->
+  <define name="local.contractsponsor.attrib">
+    <empty/>
+  </define>
+  <define name="contractsponsor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="contractsponsor">
+    <element name="contractsponsor">
+      <ref name="contractsponsor.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of contractsponsor.element-->
+  <define name="contractsponsor.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="contractsponsor.role.attrib"/>
+    <ref name="local.contractsponsor.attrib"/>
+  </define>
+<!--end of contractsponsor.attlist-->
+<!--end of contractsponsor.module-->
+<!-- Copyright ........................ -->
+  <define name="local.copyright.attrib">
+    <empty/>
+  </define>
+  <define name="copyright.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="copyright">
+    <element name="copyright">
+      <ref name="copyright.attlist"/>
+      <oneOrMore>
+        <ref name="year"/>
+      </oneOrMore>
+      <zeroOrMore>
+        <ref name="holder"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of copyright.element-->
+  <define name="copyright.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="copyright.role.attrib"/>
+    <ref name="local.copyright.attrib"/>
+  </define>
+<!--end of copyright.attlist-->
+<!--end of copyright.module-->
+  <define name="local.year.attrib">
+    <empty/>
+  </define>
+  <define name="year.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="year">
+    <element name="year">
+      <ref name="year.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of year.element-->
+  <define name="year.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="year.role.attrib"/>
+    <ref name="local.year.attrib"/>
+  </define>
+<!--end of year.attlist-->
+<!--end of year.module-->
+  <define name="local.holder.attrib">
+    <empty/>
+  </define>
+  <define name="holder.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="holder">
+    <element name="holder">
+      <ref name="holder.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of holder.element-->
+  <define name="holder.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="holder.role.attrib"/>
+    <ref name="local.holder.attrib"/>
+  </define>
+<!--end of holder.attlist-->
+<!--end of holder.module-->
+<!--end of copyright.content.module-->
+<!-- CorpAuthor ....................... -->
+  <define name="local.corpauthor.attrib">
+    <empty/>
+  </define>
+  <define name="corpauthor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="corpauthor">
+    <element name="corpauthor">
+      <ref name="corpauthor.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of corpauthor.element-->
+  <define name="corpauthor.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="corpauthor.role.attrib"/>
+    <ref name="local.corpauthor.attrib"/>
+  </define>
+<!--end of corpauthor.attlist-->
+<!--end of corpauthor.module-->
+<!-- CorpName ......................... -->
+  <define name="local.corpname.attrib">
+    <empty/>
+  </define>
+  <define name="corpname">
+    <element name="corpname">
+      <ref name="corpname.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of corpname.element-->
+  <define name="corpname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="corpname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="corpname.role.attrib"/>
+    <ref name="local.corpname.attrib"/>
+  </define>
+<!--end of corpname.attlist-->
+<!--end of corpname.module-->
+<!-- Date ............................. -->
+  <define name="local.date.attrib">
+    <empty/>
+  </define>
+  <define name="date.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="date">
+    <element name="date">
+      <ref name="date.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of date.element-->
+  <define name="date.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="date.role.attrib"/>
+    <ref name="local.date.attrib"/>
+  </define>
+<!--end of date.attlist-->
+<!--end of date.module-->
+<!-- Edition .......................... -->
+  <define name="local.edition.attrib">
+    <empty/>
+  </define>
+  <define name="edition.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="edition">
+    <element name="edition">
+      <ref name="edition.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of edition.element-->
+  <define name="edition.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="edition.role.attrib"/>
+    <ref name="local.edition.attrib"/>
+  </define>
+<!--end of edition.attlist-->
+<!--end of edition.module-->
+<!-- Editor ........................... -->
+  <define name="local.editor.attrib">
+    <empty/>
+  </define>
+  <define name="editor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="editor">
+    <element name="editor">
+      <ref name="editor.attlist"/>
+      <oneOrMore>
+        <ref name="person.ident.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of editor.element-->
+  <define name="editor.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="editor.role.attrib"/>
+    <ref name="local.editor.attrib"/>
+  </define>
+<!--end of editor.attlist-->
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of editor.module-->
+<!-- ISBN ............................. -->
+  <define name="local.isbn.attrib">
+    <empty/>
+  </define>
+  <define name="isbn.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="isbn">
+    <element name="isbn">
+      <ref name="isbn.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of isbn.element-->
+  <define name="isbn.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="isbn.role.attrib"/>
+    <ref name="local.isbn.attrib"/>
+  </define>
+<!--end of isbn.attlist-->
+<!--end of isbn.module-->
+<!-- ISSN ............................. -->
+  <define name="local.issn.attrib">
+    <empty/>
+  </define>
+  <define name="issn.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="issn">
+    <element name="issn">
+      <ref name="issn.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of issn.element-->
+  <define name="issn.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="issn.role.attrib"/>
+    <ref name="local.issn.attrib"/>
+  </define>
+<!--end of issn.attlist-->
+<!--end of issn.module-->
+<!-- InvPartNumber .................... -->
+  <define name="local.invpartnumber.attrib">
+    <empty/>
+  </define>
+  <define name="invpartnumber.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="invpartnumber">
+    <element name="invpartnumber">
+      <ref name="invpartnumber.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of invpartnumber.element-->
+  <define name="invpartnumber.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="invpartnumber.role.attrib"/>
+    <ref name="local.invpartnumber.attrib"/>
+  </define>
+<!--end of invpartnumber.attlist-->
+<!--end of invpartnumber.module-->
+<!-- IssueNum ......................... -->
+  <define name="local.issuenum.attrib">
+    <empty/>
+  </define>
+  <define name="issuenum.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="issuenum">
+    <element name="issuenum">
+      <ref name="issuenum.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of issuenum.element-->
+  <define name="issuenum.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="issuenum.role.attrib"/>
+    <ref name="local.issuenum.attrib"/>
+  </define>
+<!--end of issuenum.attlist-->
+<!--end of issuenum.module-->
+<!-- LegalNotice ...................... -->
+  <define name="local.legalnotice.attrib">
+    <empty/>
+  </define>
+  <define name="legalnotice.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="legalnotice">
+    <element name="legalnotice">
+      <ref name="legalnotice.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="legalnotice.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of legalnotice.element-->
+  <define name="legalnotice.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="legalnotice.role.attrib"/>
+    <ref name="local.legalnotice.attrib"/>
+  </define>
+<!--end of legalnotice.attlist-->
+<!--end of legalnotice.module-->
+<!-- ModeSpec ......................... -->
+  <define name="local.modespec.attrib">
+    <empty/>
+  </define>
+  <define name="modespec.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="modespec">
+    <element name="modespec">
+      <ref name="modespec.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of modespec.element-->
+<!-- Application: Type of action required for completion
+               of the links to which the ModeSpec is relevant (e.g.,
+               retrieval query) -->
+  <define name="modespec.attlist" combine="interleave">
+    <optional>
+      <attribute name="application">
+        <choice>
+          <ref name="notation.class"/>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="modespec.role.attrib"/>
+    <ref name="local.modespec.attrib"/>
+  </define>
+<!--end of modespec.attlist-->
+<!--end of modespec.module-->
+<!-- OrgName .......................... -->
+  <define name="local.orgname.attrib">
+    <empty/>
+  </define>
+  <define name="orgname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="orgname">
+    <element name="orgname">
+      <ref name="orgname.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of orgname.element-->
+  <define name="orgname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="orgname.role.attrib"/>
+    <ref name="local.orgname.attrib"/>
+  </define>
+<!--end of orgname.attlist-->
+<!--end of orgname.module-->
+<!-- OtherCredit ...................... -->
+  <define name="local.othercredit.attrib">
+    <empty/>
+  </define>
+  <define name="othercredit.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="othercredit">
+    <element name="othercredit">
+      <ref name="othercredit.attlist"/>
+      <oneOrMore>
+        <ref name="person.ident.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of othercredit.element-->
+  <define name="othercredit.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="othercredit.role.attrib"/>
+    <ref name="local.othercredit.attrib"/>
+  </define>
+<!--end of othercredit.attlist-->
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+<!--end of othercredit.module-->
+<!-- PageNums ......................... -->
+  <define name="local.pagenums.attrib">
+    <empty/>
+  </define>
+  <define name="pagenums.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="pagenums">
+    <element name="pagenums">
+      <ref name="pagenums.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of pagenums.element-->
+  <define name="pagenums.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="pagenums.role.attrib"/>
+    <ref name="local.pagenums.attrib"/>
+  </define>
+<!--end of pagenums.attlist-->
+<!--end of pagenums.module-->
+<!-- Personal identity elements ....... -->
+<!-- These elements are used only within Author, Editor, and 
+OtherCredit. -->
+  <define name="local.contrib.attrib">
+    <empty/>
+  </define>
+  <define name="contrib.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="contrib">
+    <element name="contrib">
+      <ref name="contrib.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of contrib.element-->
+  <define name="contrib.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="contrib.role.attrib"/>
+    <ref name="local.contrib.attrib"/>
+  </define>
+<!--end of contrib.attlist-->
+<!--end of contrib.module-->
+  <define name="local.firstname.attrib">
+    <empty/>
+  </define>
+  <define name="firstname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="firstname">
+    <element name="firstname">
+      <ref name="firstname.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of firstname.element-->
+  <define name="firstname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="firstname.role.attrib"/>
+    <ref name="local.firstname.attrib"/>
+  </define>
+<!--end of firstname.attlist-->
+<!--end of firstname.module-->
+  <define name="local.honorific.attrib">
+    <empty/>
+  </define>
+  <define name="honorific.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="honorific">
+    <element name="honorific">
+      <ref name="honorific.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of honorific.element-->
+  <define name="honorific.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="honorific.role.attrib"/>
+    <ref name="local.honorific.attrib"/>
+  </define>
+<!--end of honorific.attlist-->
+<!--end of honorific.module-->
+  <define name="local.lineage.attrib">
+    <empty/>
+  </define>
+  <define name="lineage.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="lineage">
+    <element name="lineage">
+      <ref name="lineage.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of lineage.element-->
+  <define name="lineage.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="lineage.role.attrib"/>
+    <ref name="local.lineage.attrib"/>
+  </define>
+<!--end of lineage.attlist-->
+<!--end of lineage.module-->
+  <define name="local.othername.attrib">
+    <empty/>
+  </define>
+  <define name="othername.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="othername">
+    <element name="othername">
+      <ref name="othername.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of othername.element-->
+  <define name="othername.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="othername.role.attrib"/>
+    <ref name="local.othername.attrib"/>
+  </define>
+<!--end of othername.attlist-->
+<!--end of othername.module-->
+  <define name="local.surname.attrib">
+    <empty/>
+  </define>
+  <define name="surname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="surname">
+    <element name="surname">
+      <ref name="surname.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of surname.element-->
+  <define name="surname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="surname.role.attrib"/>
+    <ref name="local.surname.attrib"/>
+  </define>
+<!--end of surname.attlist-->
+<!--end of surname.module-->
+<!--end of person.ident.module-->
+<!-- PrintHistory ..................... -->
+  <define name="local.printhistory.attrib">
+    <empty/>
+  </define>
+  <define name="printhistory.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="printhistory">
+    <element name="printhistory">
+      <ref name="printhistory.attlist"/>
+      <oneOrMore>
+        <ref name="para.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of printhistory.element-->
+  <define name="printhistory.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="printhistory.role.attrib"/>
+    <ref name="local.printhistory.attrib"/>
+  </define>
+<!--end of printhistory.attlist-->
+<!--end of printhistory.module-->
+<!-- ProductName ...................... -->
+  <define name="local.productname.attrib">
+    <empty/>
+  </define>
+  <define name="productname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="productname">
+    <element name="productname">
+      <ref name="productname.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of productname.element-->
+<!-- Class: More precisely identifies the item the element names -->
+  <define name="productname.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="productname.role.attrib"/>
+    <ref name="local.productname.attrib"/>
+  </define>
+<!--end of productname.attlist-->
+<!--end of productname.module-->
+<!-- ProductNumber .................... -->
+  <define name="local.productnumber.attrib">
+    <empty/>
+  </define>
+  <define name="productnumber.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="productnumber">
+    <element name="productnumber">
+      <ref name="productnumber.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of productnumber.element-->
+  <define name="productnumber.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="productnumber.role.attrib"/>
+    <ref name="local.productnumber.attrib"/>
+  </define>
+<!--end of productnumber.attlist-->
+<!--end of productnumber.module-->
+<!-- PubDate .......................... -->
+  <define name="local.pubdate.attrib">
+    <empty/>
+  </define>
+  <define name="pubdate.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="pubdate">
+    <element name="pubdate">
+      <ref name="pubdate.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of pubdate.element-->
+  <define name="pubdate.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="pubdate.role.attrib"/>
+    <ref name="local.pubdate.attrib"/>
+  </define>
+<!--end of pubdate.attlist-->
+<!--end of pubdate.module-->
+<!-- Publisher ........................ -->
+  <define name="local.publisher.attrib">
+    <empty/>
+  </define>
+  <define name="publisher.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="publisher">
+    <element name="publisher">
+      <ref name="publisher.attlist"/>
+      <ref name="publishername"/>
+      <zeroOrMore>
+        <ref name="address"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of publisher.element-->
+  <define name="publisher.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="publisher.role.attrib"/>
+    <ref name="local.publisher.attrib"/>
+  </define>
+<!--end of publisher.attlist-->
+<!--end of publisher.module-->
+  <define name="local.publishername.attrib">
+    <empty/>
+  </define>
+  <define name="publishername.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="publishername">
+    <element name="publishername">
+      <ref name="publishername.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of publishername.element-->
+  <define name="publishername.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="publishername.role.attrib"/>
+    <ref name="local.publishername.attrib"/>
+  </define>
+<!--end of publishername.attlist-->
+<!--end of publishername.module-->
+<!-- Address (defined elsewhere in this section)-->
+<!--end of publisher.content.module-->
+<!-- PubsNumber ....................... -->
+  <define name="local.pubsnumber.attrib">
+    <empty/>
+  </define>
+  <define name="pubsnumber.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="pubsnumber">
+    <element name="pubsnumber">
+      <ref name="pubsnumber.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of pubsnumber.element-->
+  <define name="pubsnumber.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="pubsnumber.role.attrib"/>
+    <ref name="local.pubsnumber.attrib"/>
+  </define>
+<!--end of pubsnumber.attlist-->
+<!--end of pubsnumber.module-->
+<!-- ReleaseInfo ...................... -->
+  <define name="local.releaseinfo.attrib">
+    <empty/>
+  </define>
+  <define name="releaseinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="releaseinfo">
+    <element name="releaseinfo">
+      <ref name="releaseinfo.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of releaseinfo.element-->
+  <define name="releaseinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="releaseinfo.role.attrib"/>
+    <ref name="local.releaseinfo.attrib"/>
+  </define>
+<!--end of releaseinfo.attlist-->
+<!--end of releaseinfo.module-->
+<!-- RevHistory ....................... -->
+  <define name="local.revhistory.attrib">
+    <empty/>
+  </define>
+  <define name="revhistory.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="revhistory">
+    <element name="revhistory">
+      <ref name="revhistory.attlist"/>
+      <oneOrMore>
+        <ref name="revision"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of revhistory.element-->
+  <define name="revhistory.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="revhistory.role.attrib"/>
+    <ref name="local.revhistory.attrib"/>
+  </define>
+<!--end of revhistory.attlist-->
+<!--end of revhistory.module-->
+  <define name="local.revision.attrib">
+    <empty/>
+  </define>
+  <define name="revision.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="revision">
+    <element name="revision">
+      <ref name="revision.attlist"/>
+      <ref name="revnumber"/>
+      <ref name="date"/>
+      <zeroOrMore>
+        <ref name="authorinitials"/>
+      </zeroOrMore>
+      <optional>
+        <choice>
+          <ref name="revremark"/>
+          <ref name="revdescription"/>
+        </choice>
+      </optional>
+    </element>
+  </define>
+<!--end of revision.element-->
+  <define name="revision.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="revision.role.attrib"/>
+    <ref name="local.revision.attrib"/>
+  </define>
+<!--end of revision.attlist-->
+<!--end of revision.module-->
+  <define name="local.revnumber.attrib">
+    <empty/>
+  </define>
+  <define name="revnumber.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="revnumber">
+    <element name="revnumber">
+      <ref name="revnumber.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of revnumber.element-->
+  <define name="revnumber.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="revnumber.role.attrib"/>
+    <ref name="local.revnumber.attrib"/>
+  </define>
+<!--end of revnumber.attlist-->
+<!--end of revnumber.module-->
+<!-- Date (defined elsewhere in this section)-->
+<!-- AuthorInitials (defined elsewhere in this section)-->
+  <define name="local.revremark.attrib">
+    <empty/>
+  </define>
+  <define name="revremark.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="revremark">
+    <element name="revremark">
+      <ref name="revremark.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of revremark.element-->
+  <define name="revremark.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="revremark.role.attrib"/>
+    <ref name="local.revremark.attrib"/>
+  </define>
+<!--end of revremark.attlist-->
+<!--end of revremark.module-->
+  <define name="local.revdescription.attrib">
+    <empty/>
+  </define>
+  <define name="revdescription.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="revdescription">
+    <element name="revdescription">
+      <ref name="revdescription.attlist"/>
+      <oneOrMore>
+        <ref name="revdescription.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of revdescription.element-->
+  <define name="revdescription.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="revdescription.role.attrib"/>
+    <ref name="local.revdescription.attrib"/>
+  </define>
+<!--end of revdescription.attlist-->
+<!--end of revdescription.module-->
+<!--end of revhistory.content.module-->
+<!-- SeriesVolNums .................... -->
+  <define name="local.seriesvolnums.attrib">
+    <empty/>
+  </define>
+  <define name="seriesvolnums.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="seriesvolnums">
+    <element name="seriesvolnums">
+      <ref name="seriesvolnums.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of seriesvolnums.element-->
+  <define name="seriesvolnums.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="seriesvolnums.role.attrib"/>
+    <ref name="local.seriesvolnums.attrib"/>
+  </define>
+<!--end of seriesvolnums.attlist-->
+<!--end of seriesvolnums.module-->
+<!-- VolumeNum ........................ -->
+  <define name="local.volumenum.attrib">
+    <empty/>
+  </define>
+  <define name="volumenum.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="volumenum">
+    <element name="volumenum">
+      <ref name="volumenum.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of volumenum.element-->
+  <define name="volumenum.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="volumenum.role.attrib"/>
+    <ref name="local.volumenum.attrib"/>
+  </define>
+<!--end of volumenum.attlist-->
+<!--end of volumenum.module-->
+<!-- .................................. -->
+<!--end of docinfo.content.module-->
+<!-- ...................................................................... -->
+<!-- Inline, link, and ubiquitous elements ................................ -->
+<!-- Technical and computer terms ......................................... -->
+  <define name="local.accel.attrib">
+    <empty/>
+  </define>
+  <define name="accel.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="accel">
+    <element name="accel">
+      <ref name="accel.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of accel.element-->
+  <define name="accel.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="accel.role.attrib"/>
+    <ref name="local.accel.attrib"/>
+  </define>
+<!--end of accel.attlist-->
+<!--end of accel.module-->
+  <define name="local.action.attrib">
+    <empty/>
+  </define>
+  <define name="action.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="action">
+    <element name="action">
+      <ref name="action.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of action.element-->
+  <define name="action.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="action.role.attrib"/>
+    <ref name="local.action.attrib"/>
+  </define>
+<!--end of action.attlist-->
+<!--end of action.module-->
+  <define name="local.application.attrib">
+    <empty/>
+  </define>
+  <define name="application.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="application">
+    <element name="application">
+      <ref name="application.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of application.element-->
+  <define name="application.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>hardware</value>
+          <value>software</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="application.role.attrib"/>
+    <ref name="local.application.attrib"/>
+  </define>
+<!--end of application.attlist-->
+<!--end of application.module-->
+  <define name="local.classname.attrib">
+    <empty/>
+  </define>
+  <define name="classname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="classname">
+    <element name="classname">
+      <ref name="classname.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of classname.element-->
+  <define name="classname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="classname.role.attrib"/>
+    <ref name="local.classname.attrib"/>
+  </define>
+<!--end of classname.attlist-->
+<!--end of classname.module-->
+  <define name="local.co.attrib">
+    <empty/>
+  </define>
+<!-- CO is a callout area of the LineColumn unit type (a single character 
+     position); the position is directly indicated by the location of CO. -->
+  <define name="co.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="co">
+    <element name="co">
+      <ref name="co.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of co.element-->
+<!-- bug number/symbol override or initialization -->
+<!-- to any related information -->
+  <define name="co.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="linkends.attrib"/>
+    <ref name="idreq.common.attrib"/>
+    <ref name="co.role.attrib"/>
+    <ref name="local.co.attrib"/>
+  </define>
+<!--end of co.attlist-->
+<!--end of co.module-->
+  <define name="local.command.attrib">
+    <empty/>
+  </define>
+  <define name="command.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="command">
+    <element name="command">
+      <ref name="command.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of command.element-->
+  <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>
+<!--end of command.attlist-->
+<!--end of command.module-->
+  <define name="local.computeroutput.attrib">
+    <empty/>
+  </define>
+  <define name="computeroutput.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="computeroutput">
+    <element name="computeroutput">
+      <ref name="computeroutput.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of computeroutput.element-->
+  <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>
+<!--end of computeroutput.attlist-->
+<!--end of computeroutput.module-->
+  <define name="local.database.attrib">
+    <empty/>
+  </define>
+  <define name="database.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="database">
+    <element name="database">
+      <ref name="database.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of database.element-->
+<!-- Class: Type of database the element names; no default -->
+  <define name="database.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>name</value>
+          <value>table</value>
+          <value>field</value>
+          <value>key1</value>
+          <value>key2</value>
+          <value>record</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="database.role.attrib"/>
+    <ref name="local.database.attrib"/>
+  </define>
+<!--end of database.attlist-->
+<!--end of database.module-->
+  <define name="local.email.attrib">
+    <empty/>
+  </define>
+  <define name="email.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="email">
+    <element name="email">
+      <ref name="email.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of email.element-->
+  <define name="email.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="email.role.attrib"/>
+    <ref name="local.email.attrib"/>
+  </define>
+<!--end of email.attlist-->
+<!--end of email.module-->
+  <define name="local.envar.attrib">
+    <empty/>
+  </define>
+  <define name="envar.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="envar">
+    <element name="envar">
+      <ref name="envar.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of envar.element-->
+  <define name="envar.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="envar.role.attrib"/>
+    <ref name="local.envar.attrib"/>
+  </define>
+<!--end of envar.attlist-->
+<!--end of envar.module-->
+  <define name="local.errorcode.attrib">
+    <empty/>
+  </define>
+  <define name="errorcode.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="errorcode">
+    <element name="errorcode">
+      <ref name="errorcode.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of errorcode.element-->
+  <define name="errorcode.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="errorcode.role.attrib"/>
+    <ref name="local.errorcode.attrib"/>
+  </define>
+<!--end of errorcode.attlist-->
+<!--end of errorcode.module-->
+  <define name="local.errorname.attrib">
+    <empty/>
+  </define>
+  <define name="errorname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="errorname">
+    <element name="errorname">
+      <ref name="errorname.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of errorname.element-->
+  <define name="errorname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="errorname.role.attrib"/>
+    <ref name="local.errorname.attrib"/>
+  </define>
+<!--end of errorname.attlist-->
+<!--end of errorname.module-->
+  <define name="local.errortype.attrib">
+    <empty/>
+  </define>
+  <define name="errortype.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="errortype">
+    <element name="errortype">
+      <ref name="errortype.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of errortype.element-->
+  <define name="errortype.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="errortype.role.attrib"/>
+    <ref name="local.errortype.attrib"/>
+  </define>
+<!--end of errortype.attlist-->
+<!--end of errortype.module-->
+  <define name="local.filename.attrib">
+    <empty/>
+  </define>
+  <define name="filename.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="filename">
+    <element name="filename">
+      <ref name="filename.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of filename.element-->
+<!-- Class: Type of filename the element names; no default -->
+<!-- Path: Search path (possibly system-specific) in which 
+               file can be found -->
+  <define name="filename.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>headerfile</value>
+          <value>devicefile</value>
+          <value>libraryfile</value>
+          <value>directory</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>
+<!--end of filename.attlist-->
+<!--end of filename.module-->
+  <define name="local.function.attrib">
+    <empty/>
+  </define>
+  <define name="function.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="function">
+    <element name="function">
+      <ref name="function.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of function.element-->
+  <define name="function.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="function.role.attrib"/>
+    <ref name="local.function.attrib"/>
+  </define>
+<!--end of function.attlist-->
+<!--end of function.module-->
+  <define name="local.guibutton.attrib">
+    <empty/>
+  </define>
+  <define name="guibutton.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="guibutton">
+    <element name="guibutton">
+      <ref name="guibutton.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of guibutton.element-->
+  <define name="guibutton.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="guibutton.role.attrib"/>
+    <ref name="local.guibutton.attrib"/>
+  </define>
+<!--end of guibutton.attlist-->
+<!--end of guibutton.module-->
+  <define name="local.guiicon.attrib">
+    <empty/>
+  </define>
+  <define name="guiicon.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="guiicon">
+    <element name="guiicon">
+      <ref name="guiicon.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of guiicon.element-->
+  <define name="guiicon.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="guiicon.role.attrib"/>
+    <ref name="local.guiicon.attrib"/>
+  </define>
+<!--end of guiicon.attlist-->
+<!--end of guiicon.module-->
+  <define name="local.guilabel.attrib">
+    <empty/>
+  </define>
+  <define name="guilabel.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="guilabel">
+    <element name="guilabel">
+      <ref name="guilabel.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of guilabel.element-->
+  <define name="guilabel.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="guilabel.role.attrib"/>
+    <ref name="local.guilabel.attrib"/>
+  </define>
+<!--end of guilabel.attlist-->
+<!--end of guilabel.module-->
+  <define name="local.guimenu.attrib">
+    <empty/>
+  </define>
+  <define name="guimenu.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="guimenu">
+    <element name="guimenu">
+      <ref name="guimenu.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of guimenu.element-->
+  <define name="guimenu.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="guimenu.role.attrib"/>
+    <ref name="local.guimenu.attrib"/>
+  </define>
+<!--end of guimenu.attlist-->
+<!--end of guimenu.module-->
+  <define name="local.guimenuitem.attrib">
+    <empty/>
+  </define>
+  <define name="guimenuitem.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="guimenuitem">
+    <element name="guimenuitem">
+      <ref name="guimenuitem.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of guimenuitem.element-->
+  <define name="guimenuitem.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="guimenuitem.role.attrib"/>
+    <ref name="local.guimenuitem.attrib"/>
+  </define>
+<!--end of guimenuitem.attlist-->
+<!--end of guimenuitem.module-->
+  <define name="local.guisubmenu.attrib">
+    <empty/>
+  </define>
+  <define name="guisubmenu.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="guisubmenu">
+    <element name="guisubmenu">
+      <ref name="guisubmenu.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of guisubmenu.element-->
+  <define name="guisubmenu.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="guisubmenu.role.attrib"/>
+    <ref name="local.guisubmenu.attrib"/>
+  </define>
+<!--end of guisubmenu.attlist-->
+<!--end of guisubmenu.module-->
+  <define name="local.hardware.attrib">
+    <empty/>
+  </define>
+  <define name="hardware.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="hardware">
+    <element name="hardware">
+      <ref name="hardware.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of hardware.element-->
+  <define name="hardware.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="hardware.role.attrib"/>
+    <ref name="local.hardware.attrib"/>
+  </define>
+<!--end of hardware.attlist-->
+<!--end of hardware.module-->
+  <define name="local.interface.attrib">
+    <empty/>
+  </define>
+  <define name="interface.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="interface">
+    <element name="interface">
+      <ref name="interface.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of interface.element-->
+<!-- Class: Type of the Interface item; no default -->
+  <define name="interface.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="interface.role.attrib"/>
+    <ref name="local.interface.attrib"/>
+  </define>
+<!--end of interface.attlist-->
+<!--end of interface.module-->
+  <define name="local.keycap.attrib">
+    <empty/>
+  </define>
+  <define name="keycap.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="keycap">
+    <element name="keycap">
+      <ref name="keycap.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of keycap.element-->
+  <define name="keycap.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="keycap.role.attrib"/>
+    <ref name="local.keycap.attrib"/>
+  </define>
+<!--end of keycap.attlist-->
+<!--end of keycap.module-->
+  <define name="local.keycode.attrib">
+    <empty/>
+  </define>
+  <define name="keycode.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="keycode">
+    <element name="keycode">
+      <ref name="keycode.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of keycode.element-->
+  <define name="keycode.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="keycode.role.attrib"/>
+    <ref name="local.keycode.attrib"/>
+  </define>
+<!--end of keycode.attlist-->
+<!--end of keycode.module-->
+  <define name="local.keycombo.attrib">
+    <empty/>
+  </define>
+  <define name="keycombo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="keycombo">
+    <element name="keycombo">
+      <ref name="keycombo.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="keycap"/>
+          <ref name="keycombo"/>
+          <ref name="keysym"/>
+          <ref name="mousebutton"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of keycombo.element-->
+  <define name="keycombo.attlist" combine="interleave">
+    <ref name="keyaction.attrib"/>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="keycombo.role.attrib"/>
+    <ref name="local.keycombo.attrib"/>
+  </define>
+<!--end of keycombo.attlist-->
+<!--end of keycombo.module-->
+  <define name="local.keysym.attrib">
+    <empty/>
+  </define>
+  <define name="keysysm.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="keysym">
+    <element name="keysym">
+      <ref name="keysym.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of keysym.element-->
+  <define name="keysym.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="keysysm.role.attrib"/>
+    <ref name="local.keysym.attrib"/>
+  </define>
+<!--end of keysym.attlist-->
+<!--end of keysym.module-->
+  <define name="local.lineannotation.attrib">
+    <empty/>
+  </define>
+  <define name="lineannotation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="lineannotation">
+    <element name="lineannotation">
+      <ref name="lineannotation.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of lineannotation.element-->
+  <define name="lineannotation.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="lineannotation.role.attrib"/>
+    <ref name="local.lineannotation.attrib"/>
+  </define>
+<!--end of lineannotation.attlist-->
+<!--end of lineannotation.module-->
+  <define name="local.literal.attrib">
+    <empty/>
+  </define>
+  <define name="literal.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="literal">
+    <element name="literal">
+      <ref name="literal.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of literal.element-->
+  <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>
+<!--end of literal.attlist-->
+<!--end of literal.module-->
+  <define name="local.constant.attrib">
+    <empty/>
+  </define>
+  <define name="constant.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="constant">
+    <element name="constant">
+      <ref name="constant.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of constant.element-->
+  <define name="constant.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="constant.role.attrib"/>
+    <ref name="local.constant.attrib"/>
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>limit</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+<!--end of constant.attlist-->
+<!--end of constant.module-->
+  <define name="local.varname.attrib">
+    <empty/>
+  </define>
+  <define name="varname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="varname">
+    <element name="varname">
+      <ref name="varname.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of varname.element-->
+  <define name="varname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="varname.role.attrib"/>
+    <ref name="local.varname.attrib"/>
+  </define>
+<!--end of varname.attlist-->
+<!--end of varname.module-->
+  <define name="local.markup.attrib">
+    <empty/>
+  </define>
+  <define name="markup.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="markup">
+    <element name="markup">
+      <ref name="markup.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of markup.element-->
+  <define name="markup.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="markup.role.attrib"/>
+    <ref name="local.markup.attrib"/>
+  </define>
+<!--end of markup.attlist-->
+<!--end of markup.module-->
+  <define name="local.medialabel.attrib">
+    <empty/>
+  </define>
+  <define name="medialabel.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="medialabel">
+    <element name="medialabel">
+      <ref name="medialabel.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of medialabel.element-->
+<!-- Class: Type of medium named by the element; no default -->
+  <define name="medialabel.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>cartridge</value>
+          <value>cdrom</value>
+          <value>disk</value>
+          <value>tape</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="medialabel.role.attrib"/>
+    <ref name="local.medialabel.attrib"/>
+  </define>
+<!--end of medialabel.attlist-->
+<!--end of medialabel.module-->
+  <define name="local.menuchoice.attrib">
+    <empty/>
+  </define>
+  <define name="menuchoice.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="menuchoice">
+    <element name="menuchoice">
+      <ref name="menuchoice.attlist"/>
+      <optional>
+        <ref name="shortcut"/>
+      </optional>
+      <oneOrMore>
+        <choice>
+          <ref name="guibutton"/>
+          <ref name="guiicon"/>
+          <ref name="guilabel"/>
+          <ref name="guimenu"/>
+          <ref name="guimenuitem"/>
+          <ref name="guisubmenu"/>
+          <ref name="interface"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of menuchoice.element-->
+  <define name="menuchoice.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="menuchoice.role.attrib"/>
+    <ref name="local.menuchoice.attrib"/>
+  </define>
+<!--end of menuchoice.attlist-->
+<!--end of menuchoice.module-->
+<!-- See also KeyCombo -->
+  <define name="local.shortcut.attrib">
+    <empty/>
+  </define>
+  <define name="shortcut.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="shortcut">
+    <element name="shortcut">
+      <ref name="shortcut.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="keycap"/>
+          <ref name="keycombo"/>
+          <ref name="keysym"/>
+          <ref name="mousebutton"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of shortcut.element-->
+  <define name="shortcut.attlist" combine="interleave">
+    <ref name="keyaction.attrib"/>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="shortcut.role.attrib"/>
+    <ref name="local.shortcut.attrib"/>
+  </define>
+<!--end of shortcut.attlist-->
+<!--end of shortcut.module-->
+<!--end of menuchoice.content.module-->
+  <define name="local.mousebutton.attrib">
+    <empty/>
+  </define>
+  <define name="mousebutton.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="mousebutton">
+    <element name="mousebutton">
+      <ref name="mousebutton.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of mousebutton.element-->
+  <define name="mousebutton.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="mousebutton.role.attrib"/>
+    <ref name="local.mousebutton.attrib"/>
+  </define>
+<!--end of mousebutton.attlist-->
+<!--end of mousebutton.module-->
+  <define name="local.msgtext.attrib">
+    <empty/>
+  </define>
+  <define name="msgtext.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="msgtext">
+    <element name="msgtext">
+      <ref name="msgtext.attlist"/>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+<!--end of msgtext.element-->
+  <define name="msgtext.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="msgtext.role.attrib"/>
+    <ref name="local.msgtext.attrib"/>
+  </define>
+<!--end of msgtext.attlist-->
+<!--end of msgtext.module-->
+  <define name="local.option.attrib">
+    <empty/>
+  </define>
+  <define name="option.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="option">
+    <element name="option">
+      <ref name="option.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of option.element-->
+  <define name="option.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="option.role.attrib"/>
+    <ref name="local.option.attrib"/>
+  </define>
+<!--end of option.attlist-->
+<!--end of option.module-->
+  <define name="local.optional.attrib">
+    <empty/>
+  </define>
+  <define name="optional.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="optional">
+    <element name="optional">
+      <ref name="optional.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of optional.element-->
+  <define name="optional.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="optional.role.attrib"/>
+    <ref name="local.optional.attrib"/>
+  </define>
+<!--end of optional.attlist-->
+<!--end of optional.module-->
+  <define name="local.parameter.attrib">
+    <empty/>
+  </define>
+  <define name="parameter.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="parameter">
+    <element name="parameter">
+      <ref name="parameter.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of parameter.element-->
+<!-- Class: Type of the Parameter; no default -->
+  <define name="parameter.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>command</value>
+          <value>function</value>
+          <value>option</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="parameter.role.attrib"/>
+    <ref name="local.parameter.attrib"/>
+  </define>
+<!--end of parameter.attlist-->
+<!--end of parameter.module-->
+  <define name="local.prompt.attrib">
+    <empty/>
+  </define>
+  <define name="prompt.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="prompt">
+    <element name="prompt">
+      <ref name="prompt.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of prompt.element-->
+  <define name="prompt.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="prompt.role.attrib"/>
+    <ref name="local.prompt.attrib"/>
+  </define>
+<!--end of prompt.attlist-->
+<!--end of prompt.module-->
+  <define name="local.property.attrib">
+    <empty/>
+  </define>
+  <define name="property.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="property">
+    <element name="property">
+      <ref name="property.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of property.element-->
+  <define name="property.attlist" combine="interleave">
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="property.role.attrib"/>
+    <ref name="local.property.attrib"/>
+  </define>
+<!--end of property.attlist-->
+<!--end of property.module-->
+  <define name="local.replaceable.attrib">
+    <empty/>
+  </define>
+  <define name="replaceable.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="replaceable">
+    <element name="replaceable">
+      <ref name="replaceable.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="link.char.class"/>
+          <ref name="optional"/>
+          <ref name="base.char.class"/>
+          <ref name="other.char.class"/>
+          <ref name="inlinegraphic"/>
+          <ref name="inlinemediaobject"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of replaceable.element-->
+<!-- Class: Type of information the element represents; no
+               default -->
+  <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>
+<!--end of replaceable.attlist-->
+<!--end of replaceable.module-->
+  <define name="local.returnvalue.attrib">
+    <empty/>
+  </define>
+  <define name="returnvalue.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="returnvalue">
+    <element name="returnvalue">
+      <ref name="returnvalue.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of returnvalue.element-->
+  <define name="returnvalue.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="returnvalue.role.attrib"/>
+    <ref name="local.returnvalue.attrib"/>
+  </define>
+<!--end of returnvalue.attlist-->
+<!--end of returnvalue.module-->
+  <define name="local.sgmltag.attrib">
+    <empty/>
+  </define>
+  <define name="sgmltag.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="sgmltag">
+    <element name="sgmltag">
+      <ref name="sgmltag.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of sgmltag.element-->
+<!-- Class: Type of SGML construct the element names; no default -->
+  <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>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="sgmltag.role.attrib"/>
+    <ref name="local.sgmltag.attrib"/>
+  </define>
+<!--end of sgmltag.attlist-->
+<!--end of sgmltag.module-->
+  <define name="local.structfield.attrib">
+    <empty/>
+  </define>
+  <define name="structfield.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="structfield">
+    <element name="structfield">
+      <ref name="structfield.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of structfield.element-->
+  <define name="structfield.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="structfield.role.attrib"/>
+    <ref name="local.structfield.attrib"/>
+  </define>
+<!--end of structfield.attlist-->
+<!--end of structfield.module-->
+  <define name="local.structname.attrib">
+    <empty/>
+  </define>
+  <define name="structname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="structname">
+    <element name="structname">
+      <ref name="structname.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of structname.element-->
+  <define name="structname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="structname.role.attrib"/>
+    <ref name="local.structname.attrib"/>
+  </define>
+<!--end of structname.attlist-->
+<!--end of structname.module-->
+  <define name="local.symbol.attrib">
+    <empty/>
+  </define>
+  <define name="symbol.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="symbol">
+    <element name="symbol">
+      <ref name="symbol.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of symbol.element-->
+<!-- Class: Type of symbol; no default -->
+  <define name="symbol.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>limit</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="symbol.role.attrib"/>
+    <ref name="local.symbol.attrib"/>
+  </define>
+<!--end of symbol.attlist-->
+<!--end of symbol.module-->
+  <define name="local.systemitem.attrib">
+    <empty/>
+  </define>
+  <define name="systemitem.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="systemitem">
+    <element name="systemitem">
+      <ref name="systemitem.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="acronym"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of systemitem.element-->
+<!-- Class: Type of system item the element names; no default -->
+  <define name="systemitem.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>constant</value>
+          <value>groupname</value>
+          <value>library</value>
+          <value>macro</value>
+          <value>osname</value>
+          <value>resource</value>
+          <value>systemname</value>
+          <value>username</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="systemitem.role.attrib"/>
+    <ref name="local.systemitem.attrib"/>
+  </define>
+<!--end of systemitem.attlist-->
+<!--end of systemitem.module-->
+  <define name="local.token.attrib">
+    <empty/>
+  </define>
+  <define name="token.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="token">
+    <element name="token">
+      <ref name="token.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of token.element-->
+  <define name="token.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="token.role.attrib"/>
+    <ref name="local.token.attrib"/>
+  </define>
+<!--end of token.attlist-->
+<!--end of token.module-->
+  <define name="local.type.attrib">
+    <empty/>
+  </define>
+  <define name="type.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="type">
+    <element name="type">
+      <ref name="type.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of type.element-->
+  <define name="type.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="type.role.attrib"/>
+    <ref name="local.type.attrib"/>
+  </define>
+<!--end of type.attlist-->
+<!--end of type.module-->
+  <define name="local.userinput.attrib">
+    <empty/>
+  </define>
+  <define name="userinput.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="userinput">
+    <element name="userinput">
+      <ref name="userinput.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of userinput.element-->
+  <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>
+<!--end of userinput.attlist-->
+<!--end of userinput.module-->
+<!-- General words and phrases ............................................ -->
+  <define name="local.abbrev.attrib">
+    <empty/>
+  </define>
+  <define name="abbrev.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="abbrev">
+    <element name="abbrev">
+      <ref name="abbrev.attlist"/>
+      <zeroOrMore>
+        <ref name="word.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of abbrev.element-->
+  <define name="abbrev.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="abbrev.role.attrib"/>
+    <ref name="local.abbrev.attrib"/>
+  </define>
+<!--end of abbrev.attlist-->
+<!--end of abbrev.module-->
+  <define name="local.acronym.attrib">
+    <empty/>
+  </define>
+  <define name="acronym.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="acronym">
+    <element name="acronym">
+      <ref name="acronym.attlist"/>
+      <zeroOrMore>
+        <ref name="word.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of acronym.element-->
+  <define name="acronym.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="acronym.role.attrib"/>
+    <ref name="local.acronym.attrib"/>
+  </define>
+<!--end of acronym.attlist-->
+<!--end of acronym.module-->
+  <define name="local.citation.attrib">
+    <empty/>
+  </define>
+  <define name="citation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="citation">
+    <element name="citation">
+      <ref name="citation.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of citation.element-->
+  <define name="citation.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="citation.role.attrib"/>
+    <ref name="local.citation.attrib"/>
+  </define>
+<!--end of citation.attlist-->
+<!--end of citation.module-->
+  <define name="local.citerefentry.attrib">
+    <empty/>
+  </define>
+  <define name="citerefentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="citerefentry">
+    <element name="citerefentry">
+      <ref name="citerefentry.attlist"/>
+      <ref name="refentrytitle"/>
+      <optional>
+        <ref name="manvolnum"/>
+      </optional>
+    </element>
+  </define>
+<!--end of citerefentry.element-->
+  <define name="citerefentry.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="citerefentry.role.attrib"/>
+    <ref name="local.citerefentry.attrib"/>
+  </define>
+<!--end of citerefentry.attlist-->
+<!--end of citerefentry.module-->
+  <define name="local.refentrytitle.attrib">
+    <empty/>
+  </define>
+  <define name="refentrytitle.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="refentrytitle">
+    <element name="refentrytitle">
+      <ref name="refentrytitle.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of refentrytitle.element-->
+  <define name="refentrytitle.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refentrytitle.role.attrib"/>
+    <ref name="local.refentrytitle.attrib"/>
+  </define>
+<!--end of refentrytitle.attlist-->
+<!--end of refentrytitle.module-->
+  <define name="local.manvolnum.attrib">
+    <empty/>
+  </define>
+  <define name="namvolnum.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="manvolnum">
+    <element name="manvolnum">
+      <ref name="manvolnum.attlist"/>
+      <zeroOrMore>
+        <ref name="word.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of manvolnum.element-->
+  <define name="manvolnum.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="namvolnum.role.attrib"/>
+    <ref name="local.manvolnum.attrib"/>
+  </define>
+<!--end of manvolnum.attlist-->
+<!--end of manvolnum.module-->
+  <define name="local.citetitle.attrib">
+    <empty/>
+  </define>
+  <define name="citetitle.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="citetitle">
+    <element name="citetitle">
+      <ref name="citetitle.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of citetitle.element-->
+<!-- Pubwork: Genre of published work cited; no default -->
+  <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>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="citetitle.role.attrib"/>
+    <ref name="local.citetitle.attrib"/>
+  </define>
+<!--end of citetitle.attlist-->
+<!--end of citetitle.module-->
+  <define name="local.emphasis.attrib">
+    <empty/>
+  </define>
+  <define name="emphasis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="emphasis">
+    <element name="emphasis">
+      <ref name="emphasis.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of emphasis.element-->
+  <define name="emphasis.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="emphasis.role.attrib"/>
+    <ref name="local.emphasis.attrib"/>
+  </define>
+<!--end of emphasis.attlist-->
+<!--end of emphasis.module-->
+  <define name="local.firstterm.attrib">
+    <empty/>
+  </define>
+  <define name="firstterm.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="firstterm">
+    <element name="firstterm">
+      <ref name="firstterm.attlist"/>
+      <zeroOrMore>
+        <ref name="word.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of firstterm.element-->
+<!-- to GlossEntry or other explanation -->
+  <define name="firstterm.attlist" combine="interleave">
+    <ref name="linkend.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="firstterm.role.attrib"/>
+    <ref name="local.firstterm.attrib"/>
+  </define>
+<!--end of firstterm.attlist-->
+<!--end of firstterm.module-->
+  <define name="local.foreignphrase.attrib">
+    <empty/>
+  </define>
+  <define name="foreignphrase.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="foreignphrase">
+    <element name="foreignphrase">
+      <ref name="foreignphrase.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of foreignphrase.element-->
+  <define name="foreignphrase.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="foreignphrase.role.attrib"/>
+    <ref name="local.foreignphrase.attrib"/>
+  </define>
+<!--end of foreignphrase.attlist-->
+<!--end of foreignphrase.module-->
+  <define name="local.glossterm.attrib">
+    <empty/>
+  </define>
+  <define name="glossterm.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="glossterm">
+    <element name="glossterm">
+      <ref name="glossterm.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of glossterm.element-->
+<!-- to GlossEntry if Glossterm used in text -->
+<!-- BaseForm: Provides the form of GlossTerm to be used
+               for indexing -->
+  <define name="glossterm.attlist" combine="interleave">
+    <ref name="linkend.attrib"/>
+    <optional>
+      <attribute name="baseform"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="glossterm.role.attrib"/>
+    <ref name="local.glossterm.attrib"/>
+  </define>
+<!--end of glossterm.attlist-->
+<!--end of glossterm.module-->
+  <define name="local.phrase.attrib">
+    <empty/>
+  </define>
+  <define name="phrase.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="phrase">
+    <element name="phrase">
+      <ref name="phrase.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of phrase.element-->
+  <define name="phrase.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="phrase.role.attrib"/>
+    <ref name="local.phrase.attrib"/>
+  </define>
+<!--end of phrase.attlist-->
+<!--end of phrase.module-->
+  <define name="local.quote.attrib">
+    <empty/>
+  </define>
+  <define name="quote.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="quote">
+    <element name="quote">
+      <ref name="quote.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of quote.element-->
+  <define name="quote.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="quote.role.attrib"/>
+    <ref name="local.quote.attrib"/>
+  </define>
+<!--end of quote.attlist-->
+<!--end of quote.module-->
+  <define name="local.ssscript.attrib">
+    <empty/>
+  </define>
+  <define name="ssscript.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="subscript">
+    <element name="subscript">
+      <ref name="subscript.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="link.char.class"/>
+          <ref name="emphasis"/>
+          <ref name="replaceable"/>
+          <ref name="symbol"/>
+          <ref name="inlinegraphic"/>
+          <ref name="inlinemediaobject"/>
+          <ref name="base.char.class"/>
+          <ref name="other.char.class"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of subscript.element-->
+  <define name="subscript.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="ssscript.role.attrib"/>
+    <ref name="local.ssscript.attrib"/>
+  </define>
+<!--end of subscript.attlist-->
+  <define name="superscript">
+    <element name="superscript">
+      <ref name="superscript.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="link.char.class"/>
+          <ref name="emphasis"/>
+          <ref name="replaceable"/>
+          <ref name="symbol"/>
+          <ref name="inlinegraphic"/>
+          <ref name="inlinemediaobject"/>
+          <ref name="base.char.class"/>
+          <ref name="other.char.class"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of superscript.element-->
+  <define name="superscript.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="ssscript.role.attrib"/>
+    <ref name="local.ssscript.attrib"/>
+  </define>
+<!--end of superscript.attlist-->
+<!--end of ssscript.module-->
+  <define name="local.trademark.attrib">
+    <empty/>
+  </define>
+  <define name="trademark.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <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="base.char.class"/>
+          <ref name="other.char.class"/>
+          <ref name="inlinegraphic"/>
+          <ref name="inlinemediaobject"/>
+          <ref name="emphasis"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of trademark.element-->
+<!-- Class: More precisely identifies the item the element names -->
+  <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>
+<!--end of trademark.attlist-->
+<!--end of trademark.module-->
+  <define name="local.wordasword.attrib">
+    <empty/>
+  </define>
+  <define name="wordasword.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="wordasword">
+    <element name="wordasword">
+      <ref name="wordasword.attlist"/>
+      <zeroOrMore>
+        <ref name="word.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of wordasword.element-->
+  <define name="wordasword.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="wordasword.role.attrib"/>
+    <ref name="local.wordasword.attrib"/>
+  </define>
+<!--end of wordasword.attlist-->
+<!--end of wordasword.module-->
+<!-- Links and cross-references ........................................... -->
+  <define name="local.link.attrib">
+    <empty/>
+  </define>
+  <define name="link.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="link">
+    <element name="link">
+      <ref name="link.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of link.element-->
+<!-- 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 -->
+  <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>
+<!--end of link.attlist-->
+<!--end of link.module-->
+  <define name="local.olink.attrib">
+    <empty/>
+  </define>
+  <define name="olink.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="olink">
+    <element name="olink">
+      <ref name="olink.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of olink.element-->
+<!-- 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 -->
+  <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>
+    <ref name="common.attrib"/>
+    <ref name="olink.role.attrib"/>
+    <ref name="local.olink.attrib"/>
+  </define>
+<!--end of olink.attlist-->
+<!--end of olink.module-->
+  <define name="local.ulink.attrib">
+    <empty/>
+  </define>
+  <define name="ulink.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="ulink">
+    <element name="ulink">
+      <ref name="ulink.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of ulink.element-->
+<!-- URL: uniform resource locator; the target of the ULink -->
+<!-- Type: Freely assignable parameter -->
+  <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>
+<!--end of ulink.attlist-->
+<!--end of ulink.module-->
+  <define name="local.footnoteref.attrib">
+    <empty/>
+  </define>
+  <define name="footnoteref.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="footnoteref">
+    <element name="footnoteref">
+      <ref name="footnoteref.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of footnoteref.element-->
+<!-- to footnote content supplied elsewhere -->
+  <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>
+<!--end of footnoteref.attlist-->
+<!--end of footnoteref.module-->
+  <define name="local.xref.attrib">
+    <empty/>
+  </define>
+  <define name="xref.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="xref">
+    <element name="xref">
+      <ref name="xref.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of xref.element-->
+<!-- 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 -->
+  <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>
+<!--end of xref.attlist-->
+<!--end of xref.module-->
+<!-- Ubiquitous elements .................................................. -->
+  <define name="local.anchor.attrib">
+    <empty/>
+  </define>
+  <define name="anchor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="anchor">
+    <element name="anchor">
+      <ref name="anchor.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of anchor.element-->
+<!-- required -->
+<!-- replaces Lang -->
+  <define name="anchor.attlist" combine="interleave">
+    <ref name="idreq.attrib"/>
+    <ref name="pagenum.attrib"/>
+    <ref name="remap.attrib"/>
+    <ref name="xreflabel.attrib"/>
+    <ref name="revisionflag.attrib"/>
+    <ref name="effectivity.attrib"/>
+    <ref name="anchor.role.attrib"/>
+    <ref name="local.anchor.attrib"/>
+  </define>
+<!--end of anchor.attlist-->
+<!--end of anchor.module-->
+  <define name="local.beginpage.attrib">
+    <empty/>
+  </define>
+  <define name="beginpage.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="beginpage">
+    <element name="beginpage">
+      <ref name="beginpage.attlist"/>
+      <empty/>
+    </element>
+  </define>
+<!--end of beginpage.element-->
+<!-- PageNum: Number of page that begins at this point -->
+  <define name="beginpage.attlist" combine="interleave">
+    <ref name="pagenum.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="beginpage.role.attrib"/>
+    <ref name="local.beginpage.attrib"/>
+  </define>
+<!--end of beginpage.attlist-->
+<!--end of beginpage.module-->
+<!-- IndexTerms appear in the text flow for generating or linking an
+     index. -->
+  <define name="local.indexterm.attrib">
+    <empty/>
+  </define>
+  <define name="indexterm.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="indexterm">
+    <element name="indexterm">
+      <ref name="indexterm.attlist"/>
+      <optional>
+        <ref name="primary"/>
+      </optional>
+      <optional>
+        <choice>
+          <group>
+            <ref name="secondary"/>
+            <optional>
+              <choice>
+                <group>
+                  <ref name="tertiary"/>
+                  <optional>
+                    <choice>
+                      <ref name="see"/>
+                      <oneOrMore>
+                        <ref name="seealso"/>
+                      </oneOrMore>
+                    </choice>
+                  </optional>
+                </group>
+                <ref name="see"/>
+                <oneOrMore>
+                  <ref name="seealso"/>
+                </oneOrMore>
+              </choice>
+            </optional>
+          </group>
+          <ref name="see"/>
+          <oneOrMore>
+            <ref name="seealso"/>
+          </oneOrMore>
+        </choice>
+      </optional>
+    </element>
+  </define>
+<!--end of indexterm.element-->
+<!-- Scope: Indicates which generated indices the IndexTerm
+               should appear in: Global (whole document set), Local (this
+               document only), or All (both) -->
+<!-- Significance: Whether this IndexTerm is the most pertinent
+               of its series (Preferred) or not (Normal, the default) -->
+<!-- Class: Indicates type of IndexTerm; default is Singular, 
+               or EndOfRange if StartRef is supplied; StartOfRange value 
+               must be supplied explicitly on starts of ranges -->
+<!-- StartRef: ID of the IndexTerm that starts the indexing 
+               range ended by this IndexTerm -->
+<!-- Zone: IDs of the elements to which the IndexTerm applies,
+               and indicates that the IndexTerm applies to those entire
+               elements rather than the point at which the IndexTerm
+               occurs -->
+  <define name="indexterm.attlist" combine="interleave">
+    <ref name="pagenum.attrib"/>
+    <optional>
+      <attribute name="scope">
+        <choice>
+          <value>all</value>
+          <value>global</value>
+          <value>local</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="significance" a:defaultValue="normal">
+        <choice>
+          <value>preferred</value>
+          <value>normal</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>singular</value>
+          <value>startofrange</value>
+          <value>endofrange</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="startref">
+        <data type="IDREF"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="zone">
+        <data type="IDREFS"/>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="indexterm.role.attrib"/>
+    <ref name="local.indexterm.attrib"/>
+  </define>
+<!--end of indexterm.attlist-->
+<!--end of indexterm.module-->
+  <define name="local.primsecter.attrib">
+    <empty/>
+  </define>
+  <define name="primsecter.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="primary">
+    <element name="primary">
+      <ref name="primary.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of primary.element-->
+<!-- SortAs: Alternate sort string for index sorting, e.g.,
+               "fourteen" for an element containing "14" -->
+  <define name="primary.attlist" combine="interleave">
+    <optional>
+      <attribute name="sortas"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="primsecter.role.attrib"/>
+    <ref name="local.primsecter.attrib"/>
+  </define>
+<!--end of primary.attlist-->
+  <define name="secondary">
+    <element name="secondary">
+      <ref name="secondary.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of secondary.element-->
+<!-- SortAs: Alternate sort string for index sorting, e.g.,
+               "fourteen" for an element containing "14" -->
+  <define name="secondary.attlist" combine="interleave">
+    <optional>
+      <attribute name="sortas"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="primsecter.role.attrib"/>
+    <ref name="local.primsecter.attrib"/>
+  </define>
+<!--end of secondary.attlist-->
+  <define name="tertiary">
+    <element name="tertiary">
+      <ref name="tertiary.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of tertiary.element-->
+<!-- SortAs: Alternate sort string for index sorting, e.g.,
+               "fourteen" for an element containing "14" -->
+  <define name="tertiary.attlist" combine="interleave">
+    <optional>
+      <attribute name="sortas"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="primsecter.role.attrib"/>
+    <ref name="local.primsecter.attrib"/>
+  </define>
+<!--end of tertiary.attlist-->
+<!--end of primsecter.module-->
+  <define name="local.seeseealso.attrib">
+    <empty/>
+  </define>
+  <define name="seeseealso.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <define name="see">
+    <element name="see">
+      <ref name="see.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of see.element-->
+  <define name="see.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="seeseealso.role.attrib"/>
+    <ref name="local.seeseealso.attrib"/>
+  </define>
+<!--end of see.attlist-->
+  <define name="seealso">
+    <element name="seealso">
+      <ref name="seealso.attlist"/>
+      <zeroOrMore>
+        <ref name="ndxterm.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+<!--end of seealso.element-->
+  <define name="seealso.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="seeseealso.role.attrib"/>
+    <ref name="local.seeseealso.attrib"/>
+  </define>
+<!--end of seealso.attlist-->
+<!--end of seeseealso.module-->
+<!--end of indexterm.content.module-->
+<!-- End of DocBook XML information pool module V4.1.2 ...................... -->
+<!-- ...................................................................... -->
+</grammar>
diff --git a/schema/relaxng/docbook.rng b/schema/relaxng/docbook.rng
new file mode 100644 (file)
index 0000000..5f2f985
--- /dev/null
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+         xmlns="http://relaxng.org/ns/structure/0.9"
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+
+  <start>
+    <choice>
+      <ref name="set"/>
+      <ref name="setindex"/>
+      <ref name="book"/>
+      <ref name="part"/>
+      <ref name="reference"/>
+      <ref name="preface"/>
+      <ref name="chapter"/>
+      <ref name="appendix"/>
+      <ref name="article"/>
+      <ref name="bibliography"/>
+      <ref name="glossary"/>
+      <ref name="index"/>
+      <ref name="refentry"/>
+      <ref name="sect1"/>
+      <ref name="sect2"/>
+      <ref name="sect3"/>
+      <ref name="sect4"/>
+      <ref name="sect5"/>
+      <ref name="section"/>
+    </choice>
+  </start>
+
+<!-- ...................................................................... -->
+<!-- DocBook XML DTD V4.1.2 ................................................. -->
+<!-- File docbookx.dtd .................................................... -->
+<!-- Copyright 1992-2000 HaL Computer Systems, Inc.,
+     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+     Corporation, Norman Walsh, and the Organization for the Advancement
+     of Structured Information Standards (OASIS).
+
+     $Id$
+
+     Permission to use, copy, modify and distribute the DocBook XML 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.
+
+     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.
+
+     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/.
+-->
+<!-- ...................................................................... -->
+<!-- This is the driver file for V4.1.2 of the DocBook DTD.
+     Please use the following formal public identifier to identify it:
+
+     "-//OASIS//DTD DocBook XML V4.1.2//EN"
+
+     For example, if your document's top-level element is Book, and
+     you are using DocBook directly, use the FPI in the DOCTYPE
+     declaration:
+
+     <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+                    "http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd"
+                    [...]>
+
+     Or, if you have a higher-level driver file that customizes DocBook,
+     use the FPI in the parameter entity declaration:
+
+     <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd">
+     %DocBookDTD;
+
+     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.
+-->
+<!-- ...................................................................... -->
+
+<!-- Notation declarations ................................................ -->
+  <include href="dbnotn.rng"/>
+
+<!-- ...................................................................... -->
+<!-- ISO character entity sets ............................................ -->
+<!-- euro sign, U+20AC NEW -->
+  <include href="dbcent.rng"/>
+
+<!-- DTD modules .......................................................... -->
+<!-- Information pool .............. -->
+  <include href="dbpool.rng"/>
+
+<!-- Document hierarchy ............ -->
+  <include href="dbhier.rng"/>
+
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+  <include href="dbgenent.rng"/>
+
+<!-- End of DocBook XML DTD V4.1.2 .......................................... -->
+<!-- ...................................................................... -->
+</grammar>
diff --git a/schema/relaxng/soextblx.rng b/schema/relaxng/soextblx.rng
new file mode 100644 (file)
index 0000000..fc1c5db
--- /dev/null
@@ -0,0 +1,492 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/0.9" xmlns:a="http://relaxng.org/ns/compatibility/annotations/0.9">
+<!-- XML EXCHANGE TABLE MODEL DECLARATION MODULE -->
+<!-- This set of declarations defines the XML version of the Exchange
+     Table Model as of the date shown in the Formal Public Identifier
+     (FPI) for this entity.
+
+     This set of declarations may be referred to using a public external
+     entity declaration and reference as shown in the following three
+     lines:
+
+     <!ENTITY % calstblx
+       PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN">
+       %calstblx;
+
+     If various parameter entities used within this set of declarations
+     are to be given non-default values, the appropriate declarations
+     should be given before calling in this package (i.e., before the
+     "%calstblx;" reference).
+-->
+<!-- The motivation for this XML version of the Exchange Table Model
+     is simply to create an XML version of the SGML Exchange Table
+     Model. By design, no effort has been made to "improve" the model.
+
+     This XML version incorporates the logical bare minimum changes
+     necessary to make the Exchange Table Model a valid XML DTD.
+-->
+<!-- The XML version of the Exchange Table Model differs from
+     the SGML version in the following ways:
+
+     The following parameter entities have been removed:
+
+       - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep
+         There are no exceptions in XML. The following normative statement
+         is made in lieu of exceptions: the exchange table model explicitly
+         forbids a table from occurring within another table. If the
+         content model of an entry includes a table element, then this
+         cannot be enforced by the DTD, but it is a deviation from the
+         exchange table model to include a table within a table.
+
+       - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att
+         The motivation for these elements was to change the table
+         header/footer elements. Since XML does not allow element declarations
+         to contain name groups, and the exchange table model does not
+         allow a table to contain footers, the continued presence of these
+         attributes seems unnecessary.
+
+     The following parameter entity has been added:
+
+       - tbl.thead.att
+         This entity parameterizes the attributes on thead. It replaces
+         the tbl.hdft.att parameter entity.
+
+     Other miscellaneous changes:
+
+       - Tag ommission indicators have been removed
+       - Comments have been removed from declarations
+       - NUMBER attributes have been changed to NMTOKEN
+       - NUTOKEN attributes have been to changed to NMTOKEN
+       - Removed the grouping characters around the content model
+         parameter entry for the 'entry' element. This is necessary
+         so that an entry can contain #PCDATA and be defined as an
+         optional, repeatable OR group beginning with #PCDATA.
+-->
+<!-- This entity includes a set of element and attribute declarations
+     that partially defines the Exchange table model.  However, the model
+     is not well-defined without the accompanying natural language
+     description of the semantics (meanings) of these various elements,
+     attributes, and attribute values.  The semantic writeup, also available
+     from SGML Open, should be used in conjunction with this entity.
+-->
+<!-- In order to use the Exchange table model, various parameter entity
+     declarations are required.  A brief description is as follows:
+
+     ENTITY NAME      WHERE USED              WHAT IT IS
+
+     %yesorno         In ATTLIST of:          An attribute declared value
+                      almost all elements     for a "boolean" attribute
+
+     %paracon         In content model of:    The "text" (logical content)
+                      <entry>                 of the model group for <entry>
+
+     %titles          In content model of:    The "title" part of the model
+                      table element           group for the table element
+
+     %tbl.table.name  In declaration of:      The name of the "table"
+                      table element           element
+
+     %tbl.table-titles.mdl In content model of: The model group for the title
+                      table elements          part of the content model for
+                                              table element
+
+     %tbl.table.mdl   In content model of:    The model group for the content
+                      table elements          model for table element,
+                                              often (and by default) defined
+                                              in terms of %tbl.table-titles.mdl
+                                              and tgroup
+
+     %tbl.table.att   In ATTLIST of:          Additional attributes on the
+                      table element           table element
+
+     %bodyatt         In ATTLIST of:          Additional attributes on the
+                      table element           table element (for backward
+                                              compatibility with the SGML
+                                              model)
+
+     %tbl.tgroup.mdl  In content model of:    The model group for the content
+                      <tgroup>                model for <tgroup>
+
+     %tbl.tgroup.att  In ATTLIST of:          Additional attributes on the
+                      <tgroup>                <tgroup> element
+
+     %tbl.thead.att   In ATTLIST of:          Additional attributes on the
+                      <thead>                 <thead> element
+
+     %tbl.tbody.att   In ATTLIST of:          Additional attributes on the
+                      <tbody>                 <tbody> element
+
+     %tbl.colspec.att In ATTLIST of:          Additional attributes on the
+                      <colspec>               <colspec> element
+
+     %tbl.row.mdl     In content model of:    The model group for the content
+                      <row>                   model for <row>
+
+     %tbl.row.att     In ATTLIST of:          Additional attributes on the
+                      <row>                   <row> element
+
+     %tbl.entry.mdl   In content model of:    The model group for the content
+                      <entry>                 model for <entry>
+
+     %tbl.entry.att   In ATTLIST of:          Additional attributes on the
+                      <entry>                 <entry> element
+
+     This set of declarations will use the default definitions shown below
+     for any of these parameter entities that are not declared before this
+     set of declarations is referenced.
+-->
+<!-- These definitions are not directly related to the table model, but are
+     used in the default CALS table model and may be defined elsewhere (and
+     prior to the inclusion of this table module) in the referencing DTD. -->
+  <define name="yesorno">
+    <data type="NMTOKEN"/>
+  </define>
+<!-- no if zero(s), yes if any other value -->
+  <define name="titles">
+    <optional>
+      <ref name="title"/>
+    </optional>
+  </define>
+  <define name="pcd">
+    <text/>
+  </define>
+  <define name="paracon">
+    <ref name="pcd"/>
+  </define>
+<!-- default for use in entry content -->
+<!--
+The parameter entities as defined below change and simplify the CALS table
+model as published (as part of the Example DTD) in MIL-HDBK-28001.  The
+resulting simplified DTD has support from the SGML Open vendors and is
+therefore more interoperable among different systems.
+
+These following declarations provide the Exchange default definitions
+for these entities.  However, these entities can 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.
+
+Note, however, that changes may have significant effect on the ability to
+interchange table information.  These changes may manifest themselves
+in useability, presentation, and possible structure information degradation.
+-->
+  <define name="tbl.table-titles.mdl">
+    <ref name="titles"/>
+  </define>
+  <define name="tbl.table-main.mdl">
+    <oneOrMore>
+      <ref name="tgroup"/>
+    </oneOrMore>
+  </define>
+  <define name="tbl.table.att">
+    <optional>
+      <attribute name="pgwide">
+        <ref name="yesorno"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="tbl.tgroup.mdl">
+    <zeroOrMore>
+      <ref name="colspec"/>
+    </zeroOrMore>
+    <optional>
+      <ref name="thead"/>
+    </optional>
+    <ref name="tbody"/>
+  </define>
+  <define name="tbl.row.mdl">
+    <oneOrMore>
+      <ref name="entry"/>
+    </oneOrMore>
+  </define>
+<!-- =====  Element and attribute declarations follow. =====  -->
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.table.name       "table"
+     ENTITY % tbl.table-titles.mdl "%titles;,"
+     ENTITY % tbl.table.mdl        "%tbl.table-titles; tgroup+"
+     ENTITY % tbl.table.att        "
+                        pgwide          %yesorno;       #IMPLIED "
+-->
+  <define name="table">
+    <element name="table">
+      <ref name="table.attlist"/>
+      <ref name="tbl.table.mdl"/>
+    </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"/>
+  </define>
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.tgroup.mdl    "colspec*,thead?,tbody"
+     ENTITY % tbl.tgroup.att    ""
+-->
+  <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">
+      <data type="NMTOKEN"/>
+    </attribute>
+    <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>
+    <ref name="tbl.tgroup.att"/>
+  </define>
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.colspec.att   ""
+-->
+  <define name="colspec">
+    <element name="colspec">
+      <ref name="colspec.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <define name="colspec.attlist" combine="interleave">
+    <optional>
+      <attribute name="colnum">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="colname">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </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">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <ref name="tbl.colspec.att"/>
+  </define>
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.thead.att      ""
+-->
+  <define name="thead">
+    <element name="thead">
+      <ref name="thead.attlist"/>
+      <oneOrMore>
+        <ref name="row"/>
+      </oneOrMore>
+    </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="tbl.thead.att"/>
+  </define>
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.tbody.att     ""
+-->
+  <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="tbl.tbody.att"/>
+  </define>
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % tbl.row.mdl       "entry+"
+     ENTITY % tbl.row.att       ""
+-->
+  <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="tbl.row.att"/>
+  </define>
+<!--
+     Default declarations previously defined in this entity and
+     referenced below include:
+     ENTITY % paracon           "#PCDATA"
+     ENTITY % tbl.entry.mdl     "(%paracon;)*"
+     ENTITY % tbl.entry.att     ""
+-->
+  <define name="entry">
+    <element name="entry">
+      <ref name="entry.attlist"/>
+      <ref name="tbl.entry.mdl"/>
+    </element>
+  </define>
+  <define name="entry.attlist" combine="interleave">
+    <optional>
+      <attribute name="colname">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="namest">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="nameend">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="morerows">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </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">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="tbl.entry.att"/>
+  </define>
+</grammar>