Index: BOOK/Makefile
===================================================================
--- BOOK/Makefile	(revision 879785b301d55636dce86b7a66bc8b96cd74ede3)
+++ BOOK/Makefile	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -64,5 +64,6 @@
 	@echo "Validating $(arch) book..."
 	$(Q)mkdir -p $(VALIDATEDIR)
-	$(Q)xmllint --nonet --noent --xinclude --postvalid \
+	$(Q)xmllint --nonet --noent --xinclude \
+	  --relaxng $(TOP)/schema/docbook/4.5/rng/docbook.rng \
 	  -o $(VALIDATEDIR)/$(arch)-full.xml \
 	  $(PWD)/$(arch)-index.xml
@@ -153,6 +154,6 @@
 $(ARCHS_VALIDATE):
 	@echo "Validating $(arch)..."
-	$(Q)xmllint --xinclude --noout \
-	  --nonet --postvalid \
+	$(Q)xmllint --xinclude --noout --nonet \
+	  --relaxng $(TOP)/schema/docbook/4.5/rng/docbook.rng \
 	  $(PWD)/$(arch)-index.xml
 
@@ -164,8 +165,10 @@
 	@echo "Troubleshooting $(arch)..."
 	@mkdir -p $(TROUBLEDIR)
-	$(Q)xmllint --xinclude --nonet --postvalid \
+	$(Q)xmllint --xinclude --nonet \
+	  --relaxng $(TOP)/schema/docbook/4.5/rng/docbook.rng \
 	  -o $(TROUBLEDIR)/dump-$(arch) \
 	  $(PWD)/$(arch)-index.xml
-	$(Q)xmllint --xinclude --noout --nonet --valid \
+	$(Q)xmllint --xinclude --noout --nonet \
+	  --relaxng $(TOP)/schema/docbook/4.5/rng/docbook.rng \
 	  $(TROUBLEDIR)/dump-$(arch)
 	@echo "You can now look at $(TROUBLEDIR)/dump-$(arch) to see the errors"
Index: BOOK/schema/docbook/4.5/rng/calstblx.rnc
===================================================================
--- BOOK/schema/docbook/4.5/rng/calstblx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/calstblx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,164 @@
+# ......................................................................
+
+# DocBook CALS Table Model V4.5 ........................................
+
+# File calstblx.mod ....................................................
+
+# Copyright 1992-2002 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., 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: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+# 
+# Permission to use, copy, modify and distribute the DocBook DTD
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies.  The copyright
+# holders make no representation about the suitability of the DTD for
+# any purpose.  It is provided "as is" without expressed or implied
+# warranty.
+# 
+# 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 definitions for the CALS Table Model
+# converted to XML. It has been modified slightly for use in the
+# combined HTML/CALS models supported by DocBook V4.5.
+
+# 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
+
+yesorno = string
+titles = title?
+# 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.
+tbl.table-titles.mdl = titles
+tbl.table-main.mdl = tgroup+ | graphic+
+tbl.tgroup.mdl = colspec*, spanspec*, thead?, tfoot?, tbody
+tbl.tgroup.att = attribute tgroupstyle { text }?
+tbl.row.mdl = (entry | entrytbl)+
+tbl.entrytbl.mdl = colspec*, spanspec*, thead?, tbody
+# =====  Element and attribute declarations follow. =====
+
+# doc:A formal table in a document.
+table = element table { table.attlist, tbl.table.mdl }
+table.attlist &=
+  attribute frame { tbl.frame.attval }?,
+  attribute colsep { yesorno }?,
+  attribute rowsep { yesorno }?,
+  tbl.table.att,
+  bodyatt,
+  secur
+# doc:A wrapper for the main content of a table, or part of a table.
+tgroup = element tgroup { tgroup.attlist, tbl.tgroup.mdl }
+tgroup.attlist &=
+  attribute cols { text },
+  tbl.tgroup.att,
+  attribute colsep { yesorno }?,
+  attribute rowsep { yesorno }?,
+  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
+  attribute char { text }?,
+  attribute charoff { text }?,
+  secur
+# doc:Specifications for a column in a table.
+colspec = element colspec { colspec.attlist, empty }
+colspec.attlist &=
+  attribute colnum { text }?,
+  attribute colname { text }?,
+  attribute colwidth { text }?,
+  attribute colsep { yesorno }?,
+  attribute rowsep { yesorno }?,
+  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
+  attribute char { text }?,
+  attribute charoff { text }?
+# doc:Formatting information for a spanned column in a table.
+spanspec = element spanspec { spanspec.attlist, empty }
+spanspec.attlist &=
+  attribute namest { text },
+  attribute nameend { text },
+  attribute spanname { text },
+  attribute colsep { yesorno }?,
+  attribute rowsep { yesorno }?,
+  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
+  attribute char { text }?,
+  attribute charoff { text }?
+# doc:A table header consisting of one or more rows.
+thead = element thead { thead.attlist, tbl.hdft.mdl }
+thead.attlist &=
+  attribute valign { "top" | "middle" | "bottom" }?,
+  secur
+# doc:A table footer consisting of one or more rows.
+tfoot = element tfoot { tfoot.attlist, tbl.hdft.mdl }
+tfoot.attlist &=
+  attribute valign { "top" | "middle" | "bottom" }?,
+  secur
+# doc:A wrapper for the rows of a table or informal table.
+tbody = element tbody { tbody.attlist, tbl.tbody.mdl }
+tbody.attlist &=
+  attribute valign { "top" | "middle" | "bottom" }?,
+  secur
+# doc:A row in a table.
+row = element row { row.attlist, tbl.row.mdl }
+row.attlist &=
+  attribute rowsep { yesorno }?,
+  attribute valign { "top" | "middle" | "bottom" }?,
+  secur
+# doc:A subtable appearing in place of an Entry in a table.
+entrytbl = element entrytbl { entrytbl.attlist, tbl.entrytbl.mdl }
+entrytbl.attlist &=
+  attribute cols { text },
+  tbl.tgroup.att,
+  attribute colname { text }?,
+  attribute spanname { text }?,
+  attribute namest { text }?,
+  attribute nameend { text }?,
+  attribute colsep { yesorno }?,
+  attribute rowsep { yesorno }?,
+  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
+  attribute char { text }?,
+  attribute charoff { text }?,
+  secur
+# doc:A cell in a table.
+entry = element entry { entry.attlist, tbl.entry.mdl* }
+entry.attlist &=
+  attribute colname { text }?,
+  attribute namest { text }?,
+  attribute nameend { text }?,
+  attribute spanname { text }?,
+  attribute morerows { text }?,
+  attribute colsep { yesorno }?,
+  attribute rowsep { yesorno }?,
+  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
+  attribute char { text }?,
+  attribute charoff { text }?,
+  attribute rotate { yesorno }?,
+  attribute valign { "top" | "middle" | "bottom" }?,
+  secur
+# End of DocBook CALS Table Model V4.5 .................................
+
+# ......................................................................
Index: BOOK/schema/docbook/4.5/rng/calstblx.rng
===================================================================
--- BOOK/schema/docbook/4.5/rng/calstblx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/calstblx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook CALS Table Model V4.5 ........................................ -->
+<!-- File calstblx.mod .................................................... -->
+<!--
+  Copyright 1992-2002 HaL Computer Systems, Inc.,
+  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+  Corporation, Norman Walsh, Sun Microsystems, Inc., 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: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+  
+  Permission to use, copy, modify and distribute the DocBook DTD
+  and its accompanying documentation for any purpose and without fee
+  is hereby granted in perpetuity, provided that the above copyright
+  notice and this paragraph appear in all copies.  The copyright
+  holders make no representation about the suitability of the DTD for
+  any purpose.  It is provided "as is" without expressed or implied
+  warranty.
+  
+  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 definitions for the CALS Table Model
+  converted to XML. It has been modified slightly for use in the
+  combined HTML/CALS models supported by DocBook V4.5.
+-->
+<!--
+  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
+-->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="">
+  <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.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.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. ===== -->
+  <!-- doc:A formal table in a document. -->
+  <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>
+          <ref name="tbl.frame.attval"/>
+        </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>
+  <!-- doc:A wrapper for the main content of a table, or part of a table. -->
+  <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>
+  <!-- doc:Specifications for a column in a table. -->
+  <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>
+  <!-- doc:Formatting information for a spanned column in a table. -->
+  <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>
+  <!-- doc:A table header consisting of one or more rows. -->
+  <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>
+  <!-- doc:A table footer consisting of one or more rows. -->
+  <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>
+  <!-- doc:A wrapper for the rows of a table or informal table. -->
+  <define name="tbody">
+    <element name="tbody">
+      <ref name="tbody.attlist"/>
+      <ref name="tbl.tbody.mdl"/>
+    </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>
+  <!-- doc:A row in a table. -->
+  <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>
+  <!-- doc:A subtable appearing in place of an Entry in a table. -->
+  <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>
+  <!-- doc:A cell in a table. -->
+  <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>
+</grammar>
+<!-- End of DocBook CALS Table Model V4.5 ................................. -->
+<!-- ...................................................................... -->
Index: BOOK/schema/docbook/4.5/rng/dbhierx.rnc
===================================================================
--- BOOK/schema/docbook/4.5/rng/dbhierx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/dbhierx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,1549 @@
+# ......................................................................
+
+# DocBook document hierarchy module V4.5 ...............................
+
+# File dbhierx.mod .....................................................
+
+# Copyright 1992-2004 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+# 
+# $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+# 
+# Permission to use, copy, modify and distribute the DocBook DTD
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies.  The copyright
+# holders make no representation about the suitability of the DTD for
+# any purpose.  It is provided "as is" without expressed or implied
+# warranty.
+# 
+# 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 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 Document Hierarchy V4.5//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 .........................................
+
+local.appendix.class = notAllowed
+appendix.class = appendix | local.appendix.class
+local.article.class = notAllowed
+article.class = article | local.article.class
+local.book.class = notAllowed
+book.class = book | local.book.class
+local.chapter.class = notAllowed
+chapter.class = chapter | local.chapter.class
+local.index.class = notAllowed
+index.class = index | setindex | local.index.class
+local.refentry.class = notAllowed
+refentry.class = refentry | local.refentry.class
+local.section.class = notAllowed
+section.class = section | local.section.class
+local.nav.class = notAllowed
+nav.class =
+  toc | lot | index | glossary | bibliography | local.nav.class
+# 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 ........................................
+local.divcomponent.mix = notAllowed
+divcomponent.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | compound.class
+  | genobj.class
+  | descobj.class
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.divcomponent.mix
+local.refcomponent.mix = notAllowed
+refcomponent.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | compound.class
+  | genobj.class
+  | descobj.class
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.refcomponent.mix
+local.indexdivcomponent.mix = notAllowed
+indexdivcomponent.mix =
+  itemizedlist
+  | orderedlist
+  | variablelist
+  | simplelist
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | anchor
+  | remark
+  | link.char.class
+  | beginpage
+  | local.indexdivcomponent.mix
+local.refname.char.mix = notAllowed
+refname.char.mix = text | tech.char.class | local.refname.char.mix
+local.partcontent.mix = notAllowed
+partcontent.mix =
+  appendix.class
+  | chapter.class
+  | nav.class
+  | article.class
+  | preface
+  | refentry.class
+  | reference
+  | local.partcontent.mix
+local.refinline.char.mix = notAllowed
+refinline.char.mix =
+  text
+  | xref.char.class
+  | gen.char.class
+  | link.char.class
+  | tech.char.class
+  | base.char.class
+  | docinfo.char.class
+  | other.char.class
+  | ndxterm.class
+  | beginpage
+  | local.refinline.char.mix
+local.refclass.char.mix = notAllowed
+refclass.char.mix = text | application | local.refclass.char.mix
+# 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 ..........................................
+div.title.content = title, subtitle?, titleabbrev?
+bookcomponent.title.content = title, subtitle?, titleabbrev?
+sect.title.content = title, subtitle?, titleabbrev?
+refsect.title.content = title, subtitle?, titleabbrev?
+bookcomponent.content =
+  (divcomponent.mix+,
+   (sect1* | refentry.class* | simplesect* | section.class*))
+  | (sect1+ | refentry.class+ | simplesect+ | section.class+)
+# ......................................................................
+
+# Set and SetInfo ......................................................
+local.set.attrib = empty
+set.role.attrib = role.attrib
+# doc:A collection of books.
+set =
+  element set {
+    set.attlist,
+    div.title.content?,
+    setinfo?,
+    toc?,
+    (set | book.class)+,
+    setindex?
+  }
+# end of set.element
+
+# FPI: SGML formal public identifier
+set.attlist &=
+  attribute fpi { text }?,
+  status.attrib,
+  common.attrib,
+  set.role.attrib,
+  local.set.attrib
+# end of set.attlist
+
+# end of set.module
+local.setinfo.attrib = empty
+setinfo.role.attrib = role.attrib
+# doc:Meta-information for a Set.
+setinfo = element setinfo { setinfo.attlist, info.class+ }
+# end of setinfo.element
+
+# Contents: IDs of the ToC, Books, and SetIndex that comprise
+# the set, in the order of their appearance
+setinfo.attlist &=
+  attribute contents { xsd:IDREFS }?,
+  common.attrib,
+  setinfo.role.attrib,
+  local.setinfo.attrib
+# end of setinfo.attlist
+
+# end of setinfo.module
+
+# end of set.content.module
+
+# ......................................................................
+
+# Book and BookInfo ....................................................
+local.book.attrib = empty
+book.role.attrib = role.attrib
+# doc:A book.
+book =
+  element book {
+    book.attlist,
+    div.title.content?,
+    bookinfo?,
+    (dedication
+     | toc
+     | lot
+     | glossary
+     | bibliography
+     | preface
+     | chapter.class
+     | reference
+     | part
+     | article.class
+     | appendix.class
+     | index.class
+     | colophon)*
+  }
+# end of book.element
+
+# FPI: SGML formal public identifier
+book.attlist &=
+  attribute fpi { text }?,
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  book.role.attrib,
+  local.book.attrib
+# end of book.attlist
+
+# end of book.module
+local.bookinfo.attrib = empty
+bookinfo.role.attrib = role.attrib
+# doc:Meta-information for a Book.
+bookinfo = element bookinfo { bookinfo.attlist, info.class+ }
+# 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
+bookinfo.attlist &=
+  attribute contents { xsd:IDREFS }?,
+  common.attrib,
+  bookinfo.role.attrib,
+  local.bookinfo.attrib
+# end of bookinfo.attlist
+
+# end of bookinfo.module
+
+# end of book.content.module
+
+# ......................................................................
+
+# Dedication, ToC, and LoT .............................................
+local.dedication.attrib = empty
+dedication.role.attrib = role.attrib
+# doc:A wrapper for the dedication section of a book.
+dedication =
+  element dedication {
+    dedication.attlist, sect.title.content?, legalnotice.mix+
+  }
+# end of dedication.element
+dedication.attlist &=
+  status.attrib,
+  common.attrib,
+  dedication.role.attrib,
+  local.dedication.attrib
+# end of dedication.attlist
+
+# end of dedication.module
+local.colophon.attrib = empty
+colophon.role.attrib = role.attrib
+# doc:Text at the back of a book describing facts about its production.
+colophon =
+  element colophon {
+    colophon.attlist, sect.title.content?, textobject.mix+
+  }
+# end of colophon.element
+colophon.attlist &=
+  status.attrib,
+  common.attrib,
+  colophon.role.attrib,
+  local.colophon.attrib
+# end of colophon.attlist
+
+# end of colophon.module
+local.toc.attrib = empty
+toc.role.attrib = role.attrib
+# doc:A table of contents.
+toc =
+  element toc {
+    toc.attlist,
+    beginpage?,
+    bookcomponent.title.content?,
+    tocfront*,
+    (tocpart | tocchap)*,
+    tocback*
+  }
+# end of toc.element
+toc.attlist &=
+  pagenum.attrib, common.attrib, toc.role.attrib, local.toc.attrib
+# end of toc.attlist
+
+# end of toc.module
+local.tocfront.attrib = empty
+tocfront.role.attrib = role.attrib
+# doc:An entry in a table of contents for a front matter component.
+tocfront = element tocfront { tocfront.attlist, para.char.mix* }
+# end of tocfront.element
+
+# to element that this entry represents
+tocfront.attlist &=
+  label.attrib,
+  linkend.attrib,
+  pagenum.attrib,
+  common.attrib,
+  tocfront.role.attrib,
+  local.tocfront.attrib
+# end of tocfront.attlist
+
+# end of tocfront.module
+local.tocentry.attrib = empty
+tocentry.role.attrib = role.attrib
+# doc:A component title in a table of contents.
+tocentry = element tocentry { tocentry.attlist, para.char.mix* }
+# end of tocentry.element
+
+# to element that this entry represents
+tocentry.attlist &=
+  linkend.attrib,
+  pagenum.attrib,
+  common.attrib,
+  tocentry.role.attrib,
+  local.tocentry.attrib
+# end of tocentry.attlist
+
+# end of tocentry.module
+local.tocpart.attrib = empty
+tocpart.role.attrib = role.attrib
+# doc:An entry in a table of contents for a part of a book.
+tocpart = element tocpart { tocpart.attlist, tocentry+, tocchap* }
+# end of tocpart.element
+tocpart.attlist &=
+  common.attrib, tocpart.role.attrib, local.tocpart.attrib
+# end of tocpart.attlist
+
+# end of tocpart.module
+local.tocchap.attrib = empty
+tocchap.role.attrib = role.attrib
+# doc:An entry in a table of contents for a component in the body of a document.
+tocchap = element tocchap { tocchap.attlist, tocentry+, toclevel1* }
+# end of tocchap.element
+tocchap.attlist &=
+  label.attrib, common.attrib, tocchap.role.attrib, local.tocchap.attrib
+# end of tocchap.attlist
+
+# end of tocchap.module
+local.toclevel1.attrib = empty
+toclevel1.role.attrib = role.attrib
+# doc:A top-level entry within a table of contents entry for a chapter-like component.
+toclevel1 =
+  element toclevel1 { toclevel1.attlist, tocentry+, toclevel2* }
+# end of toclevel1.element
+toclevel1.attlist &=
+  common.attrib, toclevel1.role.attrib, local.toclevel1.attrib
+# end of toclevel1.attlist
+
+# end of toclevel1.module
+local.toclevel2.attrib = empty
+toclevel2.role.attrib = role.attrib
+# doc:A second-level entry within a table of contents entry for a chapter-like component.
+toclevel2 =
+  element toclevel2 { toclevel2.attlist, tocentry+, toclevel3* }
+# end of toclevel2.element
+toclevel2.attlist &=
+  common.attrib, toclevel2.role.attrib, local.toclevel2.attrib
+# end of toclevel2.attlist
+
+# end of toclevel2.module
+local.toclevel3.attrib = empty
+toclevel3.role.attrib = role.attrib
+# doc:A third-level entry within a table of contents entry for a chapter-like component.
+toclevel3 =
+  element toclevel3 { toclevel3.attlist, tocentry+, toclevel4* }
+# end of toclevel3.element
+toclevel3.attlist &=
+  common.attrib, toclevel3.role.attrib, local.toclevel3.attrib
+# end of toclevel3.attlist
+
+# end of toclevel3.module
+local.toclevel4.attrib = empty
+toclevel4.role.attrib = role.attrib
+# doc:A fourth-level entry within a table of contents entry for a chapter-like component.
+toclevel4 =
+  element toclevel4 { toclevel4.attlist, tocentry+, toclevel5* }
+# end of toclevel4.element
+toclevel4.attlist &=
+  common.attrib, toclevel4.role.attrib, local.toclevel4.attrib
+# end of toclevel4.attlist
+
+# end of toclevel4.module
+local.toclevel5.attrib = empty
+toclevel5.role.attrib = role.attrib
+# doc:A fifth-level entry within a table of contents entry for a chapter-like component.
+toclevel5 = element toclevel5 { toclevel5.attlist, tocentry+ }
+# end of toclevel5.element
+toclevel5.attlist &=
+  common.attrib, toclevel5.role.attrib, local.toclevel5.attrib
+# end of toclevel5.attlist
+
+# end of toclevel5.module
+local.tocback.attrib = empty
+tocback.role.attrib = role.attrib
+# doc:An entry in a table of contents for a back matter component.
+tocback = element tocback { tocback.attlist, para.char.mix* }
+# end of tocback.element
+
+# to element that this entry represents
+tocback.attlist &=
+  label.attrib,
+  linkend.attrib,
+  pagenum.attrib,
+  common.attrib,
+  tocback.role.attrib,
+  local.tocback.attrib
+# end of tocback.attlist
+
+# end of tocback.module
+
+# end of toc.content.module
+local.lot.attrib = empty
+lot.role.attrib = role.attrib
+# doc:A list of the titles of formal objects (as tables or figures) in a document.
+lot =
+  element lot {
+    lot.attlist, beginpage?, bookcomponent.title.content?, lotentry*
+  }
+# end of lot.element
+lot.attlist &=
+  label.attrib, common.attrib, lot.role.attrib, local.lot.attrib
+# end of lot.attlist
+
+# end of lot.module
+local.lotentry.attrib = empty
+lotentry.role.attrib = role.attrib
+# doc:An entry in a list of titles.
+lotentry = element lotentry { lotentry.attlist, para.char.mix* }
+# 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
+lotentry.attlist &=
+  linkend.attrib,
+  pagenum.attrib,
+  attribute srccredit { text }?,
+  common.attrib,
+  lotentry.role.attrib,
+  local.lotentry.attrib
+# end of lotentry.attlist
+
+# end of lotentry.module
+
+# end of lot.content.module
+
+# ......................................................................
+
+# Appendix, Chapter, Part, Preface, Reference, PartIntro ...............
+local.appendix.attrib = empty
+appendix.role.attrib = role.attrib
+# doc:An appendix in a Book or Article.
+appendix =
+  element appendix {
+    appendix.attlist,
+    beginpage?,
+    appendixinfo?,
+    bookcomponent.title.content,
+    nav.class*,
+    tocchap?,
+    bookcomponent.content,
+    nav.class*
+  }
+# end of appendix.element
+appendix.attlist &=
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  appendix.role.attrib,
+  local.appendix.attrib
+# end of appendix.attlist
+
+# end of appendix.module
+local.chapter.attrib = empty
+chapter.role.attrib = role.attrib
+# doc:A chapter, as of a book.
+chapter =
+  element chapter {
+    chapter.attlist,
+    beginpage?,
+    chapterinfo?,
+    bookcomponent.title.content,
+    nav.class*,
+    tocchap?,
+    bookcomponent.content,
+    nav.class*
+  }
+# end of chapter.element
+chapter.attlist &=
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  chapter.role.attrib,
+  local.chapter.attrib
+# end of chapter.attlist
+
+# end of chapter.module
+
+# Note that Part was to have its content model reduced in V4.5.  This
+# change will not be made after all.
+local.part.attrib = empty
+part.role.attrib = role.attrib
+# doc:A division in a book.
+part =
+  element part {
+    part.attlist,
+    beginpage?,
+    partinfo?,
+    bookcomponent.title.content,
+    partintro?,
+    partcontent.mix+
+  }
+# end of part.element
+part.attlist &=
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  part.role.attrib,
+  local.part.attrib
+# end of part.attlist
+
+# ELEMENT PartIntro (defined below)
+
+# end of part.module
+local.preface.attrib = empty
+preface.role.attrib = role.attrib
+# doc:Introductory matter preceding the first chapter of a book.
+preface =
+  element preface {
+    preface.attlist,
+    beginpage?,
+    prefaceinfo?,
+    bookcomponent.title.content,
+    nav.class*,
+    tocchap?,
+    bookcomponent.content,
+    nav.class*
+  }
+# end of preface.element
+preface.attlist &=
+  status.attrib,
+  common.attrib,
+  preface.role.attrib,
+  local.preface.attrib
+# end of preface.attlist
+
+# end of preface.module
+local.reference.attrib = empty
+reference.role.attrib = role.attrib
+# doc:A collection of reference entries.
+reference =
+  element reference {
+    reference.attlist,
+    beginpage?,
+    referenceinfo?,
+    bookcomponent.title.content,
+    partintro?,
+    refentry.class+
+  }
+# end of reference.element
+reference.attlist &=
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  reference.role.attrib,
+  local.reference.attrib
+# end of reference.attlist
+
+# ELEMENT PartIntro (defined below)
+
+# end of reference.module
+local.partintro.attrib = empty
+partintro.role.attrib = role.attrib
+# doc:An introduction to the contents of a part.
+partintro =
+  element partintro {
+    partintro.attlist, div.title.content?, bookcomponent.content
+  }
+# end of partintro.element
+partintro.attlist &=
+  label.attrib,
+  common.attrib,
+  partintro.role.attrib,
+  local.partintro.attrib
+# end of partintro.attlist
+
+# end of partintro.module
+
+# ......................................................................
+
+# Other Info elements ..................................................
+local.appendixinfo.attrib = empty
+appendixinfo.role.attrib = role.attrib
+# doc:Meta-information for an Appendix.
+appendixinfo =
+  element appendixinfo { appendixinfo.attlist, info.class+ }
+# end of appendixinfo.element
+appendixinfo.attlist &=
+  common.attrib, appendixinfo.role.attrib, local.appendixinfo.attrib
+# end of appendixinfo.attlist
+
+# end of appendixinfo.module
+local.bibliographyinfo.attrib = empty
+bibliographyinfo.role.attrib = role.attrib
+# doc:Meta-information for a Bibliography.
+bibliographyinfo =
+  element bibliographyinfo { bibliographyinfo.attlist, info.class+ }
+# end of bibliographyinfo.element
+bibliographyinfo.attlist &=
+  common.attrib,
+  bibliographyinfo.role.attrib,
+  local.bibliographyinfo.attrib
+# end of bibliographyinfo.attlist
+
+# end of bibliographyinfo.module
+local.chapterinfo.attrib = empty
+chapterinfo.role.attrib = role.attrib
+# doc:Meta-information for a Chapter.
+chapterinfo = element chapterinfo { chapterinfo.attlist, info.class+ }
+# end of chapterinfo.element
+chapterinfo.attlist &=
+  common.attrib, chapterinfo.role.attrib, local.chapterinfo.attrib
+# end of chapterinfo.attlist
+
+# end of chapterinfo.module
+local.glossaryinfo.attrib = empty
+glossaryinfo.role.attrib = role.attrib
+# doc:Meta-information for a Glossary.
+glossaryinfo =
+  element glossaryinfo { glossaryinfo.attlist, info.class+ }
+# end of glossaryinfo.element
+glossaryinfo.attlist &=
+  common.attrib, glossaryinfo.role.attrib, local.glossaryinfo.attrib
+# end of glossaryinfo.attlist
+
+# end of glossaryinfo.module
+local.indexinfo.attrib = empty
+indexinfo.role.attrib = role.attrib
+# doc:Meta-information for an Index.
+indexinfo = element indexinfo { indexinfo.attlist, info.class+ }
+# end of indexinfo.element
+indexinfo.attlist &=
+  common.attrib, indexinfo.role.attrib, local.indexinfo.attrib
+# end of indexinfo.attlist
+
+# end of indexinfo.module
+local.setindexinfo.attrib = empty
+setindexinfo.role.attrib = role.attrib
+# doc:Meta-information for a SetIndex.
+setindexinfo =
+  element setindexinfo { setindexinfo.attlist, info.class+ }
+# end of setindexinfo.element
+setindexinfo.attlist &=
+  common.attrib, setindexinfo.role.attrib, local.setindexinfo.attrib
+# end of setindexinfo.attlist
+
+# end of setindexinfo.module
+local.partinfo.attrib = empty
+partinfo.role.attrib = role.attrib
+# doc:Meta-information for a Part.
+partinfo = element partinfo { partinfo.attlist, info.class+ }
+# end of partinfo.element
+partinfo.attlist &=
+  common.attrib, partinfo.role.attrib, local.partinfo.attrib
+# end of partinfo.attlist
+
+# end of partinfo.module
+local.prefaceinfo.attrib = empty
+prefaceinfo.role.attrib = role.attrib
+# doc:Meta-information for a Preface.
+prefaceinfo = element prefaceinfo { prefaceinfo.attlist, info.class+ }
+# end of prefaceinfo.element
+prefaceinfo.attlist &=
+  common.attrib, prefaceinfo.role.attrib, local.prefaceinfo.attrib
+# end of prefaceinfo.attlist
+
+# end of prefaceinfo.module
+local.refentryinfo.attrib = empty
+refentryinfo.role.attrib = role.attrib
+# doc:Meta-information for a Refentry.
+refentryinfo =
+  element refentryinfo { refentryinfo.attlist, info.class+ }
+# end of refentryinfo.element
+refentryinfo.attlist &=
+  common.attrib, refentryinfo.role.attrib, local.refentryinfo.attrib
+# end of refentryinfo.attlist
+
+# end of refentryinfo.module
+local.refsectioninfo.attrib = empty
+refsectioninfo.role.attrib = role.attrib
+# doc:Meta-information for a refsection.
+refsectioninfo =
+  element refsectioninfo { refsectioninfo.attlist, info.class+ }
+# end of refsectioninfo.element
+refsectioninfo.attlist &=
+  common.attrib, refsectioninfo.role.attrib, local.refsectioninfo.attrib
+# end of refsectioninfo.attlist
+
+# end of refsectioninfo.module
+local.refsect1info.attrib = empty
+refsect1info.role.attrib = role.attrib
+# doc:Meta-information for a RefSect1.
+refsect1info =
+  element refsect1info { refsect1info.attlist, info.class+ }
+# end of refsect1info.element
+refsect1info.attlist &=
+  common.attrib, refsect1info.role.attrib, local.refsect1info.attrib
+# end of refsect1info.attlist
+
+# end of refsect1info.module
+local.refsect2info.attrib = empty
+refsect2info.role.attrib = role.attrib
+# doc:Meta-information for a RefSect2.
+refsect2info =
+  element refsect2info { refsect2info.attlist, info.class+ }
+# end of refsect2info.element
+refsect2info.attlist &=
+  common.attrib, refsect2info.role.attrib, local.refsect2info.attrib
+# end of refsect2info.attlist
+
+# end of refsect2info.module
+local.refsect3info.attrib = empty
+refsect3info.role.attrib = role.attrib
+# doc:Meta-information for a RefSect3.
+refsect3info =
+  element refsect3info { refsect3info.attlist, info.class+ }
+# end of refsect3info.element
+refsect3info.attlist &=
+  common.attrib, refsect3info.role.attrib, local.refsect3info.attrib
+# end of refsect3info.attlist
+
+# end of refsect3info.module
+local.refsynopsisdivinfo.attrib = empty
+refsynopsisdivinfo.role.attrib = role.attrib
+# doc:Meta-information for a RefSynopsisDiv.
+refsynopsisdivinfo =
+  element refsynopsisdivinfo { refsynopsisdivinfo.attlist, info.class+ }
+# end of refsynopsisdivinfo.element
+refsynopsisdivinfo.attlist &=
+  common.attrib,
+  refsynopsisdivinfo.role.attrib,
+  local.refsynopsisdivinfo.attrib
+# end of refsynopsisdivinfo.attlist
+
+# end of refsynopsisdivinfo.module
+local.referenceinfo.attrib = empty
+referenceinfo.role.attrib = role.attrib
+# doc:Meta-information for a Reference.
+referenceinfo =
+  element referenceinfo { referenceinfo.attlist, info.class+ }
+# end of referenceinfo.element
+referenceinfo.attlist &=
+  common.attrib, referenceinfo.role.attrib, local.referenceinfo.attrib
+# end of referenceinfo.attlist
+
+# end of referenceinfo.module
+local.sect1info.attrib = empty
+sect1info.role.attrib = role.attrib
+# doc:Meta-information for a Sect1.
+sect1info = element sect1info { sect1info.attlist, info.class+ }
+# end of sect1info.element
+sect1info.attlist &=
+  common.attrib, sect1info.role.attrib, local.sect1info.attrib
+# end of sect1info.attlist
+local.sect2info.attrib = empty
+sect2info.role.attrib = role.attrib
+# doc:Meta-information for a Sect2.
+sect2info = element sect2info { sect2info.attlist, info.class+ }
+# end of sect2info.element
+sect2info.attlist &=
+  common.attrib, sect2info.role.attrib, local.sect2info.attrib
+# end of sect2info.attlist
+local.sect3info.attrib = empty
+sect3info.role.attrib = role.attrib
+# doc:Meta-information for a Sect3.
+sect3info = element sect3info { sect3info.attlist, info.class+ }
+# end of sect3info.element
+sect3info.attlist &=
+  common.attrib, sect3info.role.attrib, local.sect3info.attrib
+# end of sect3info.attlist
+local.sect4info.attrib = empty
+sect4info.role.attrib = role.attrib
+# doc:Meta-information for a Sect4.
+sect4info = element sect4info { sect4info.attlist, info.class+ }
+# end of sect4info.element
+sect4info.attlist &=
+  common.attrib, sect4info.role.attrib, local.sect4info.attrib
+# end of sect4info.attlist
+local.sect5info.attrib = empty
+sect5info.role.attrib = role.attrib
+# doc:Meta-information for a Sect5.
+sect5info = element sect5info { sect5info.attlist, info.class+ }
+# end of sect5info.element
+sect5info.attlist &=
+  common.attrib, sect5info.role.attrib, local.sect5info.attrib
+# end of sect5info.attlist
+
+# ......................................................................
+
+# Section (parallel to Sect*) .........................................
+local.section.attrib = empty
+section.role.attrib = role.attrib
+# doc:A recursive section.
+section =
+  element section {
+    section.attlist,
+    sectioninfo?,
+    sect.title.content,
+    nav.class*,
+    ((divcomponent.mix+,
+      (refentry.class* | section.class* | simplesect*))
+     | refentry.class+
+     | section.class+
+     | simplesect+),
+    nav.class*
+  }
+# end of section.element
+section.attlist &=
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  section.role.attrib,
+  local.section.attrib
+# end of section.attlist
+
+# end of section.module
+sectioninfo.role.attrib = role.attrib
+local.sectioninfo.attrib = empty
+# doc:Meta-information for a recursive section.
+sectioninfo = element sectioninfo { sectioninfo.attlist, info.class+ }
+# end of sectioninfo.element
+sectioninfo.attlist &=
+  common.attrib, sectioninfo.role.attrib, local.sectioninfo.attrib
+# end of sectioninfo.attlist
+
+# end of sectioninfo.module
+
+# end of section.content.module
+
+# ......................................................................
+
+# Sect1, Sect2, Sect3, Sect4, Sect5 ....................................
+local.sect1.attrib = empty
+sect1.role.attrib = role.attrib
+# doc:A top-level section of document.
+sect1 =
+  element sect1 {
+    sect1.attlist,
+    sect1info?,
+    sect.title.content,
+    nav.class*,
+    ((divcomponent.mix+, (refentry.class* | sect2* | simplesect*))
+     | refentry.class+
+     | sect2+
+     | simplesect+),
+    nav.class*
+  }
+# end of sect1.element
+
+# Renderas: Indicates the format in which the heading should
+# appear
+sect1.attlist &=
+  attribute renderas { "sect2" | "sect3" | "sect4" | "sect5" }?,
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  sect1.role.attrib,
+  local.sect1.attrib
+# end of sect1.attlist
+
+# end of sect1.module
+local.sect2.attrib = empty
+sect2.role.attrib = role.attrib
+# doc:A subsection within a Sect1.
+sect2 =
+  element sect2 {
+    sect2.attlist,
+    sect2info?,
+    sect.title.content,
+    nav.class*,
+    ((divcomponent.mix+, (refentry.class* | sect3* | simplesect*))
+     | refentry.class+
+     | sect3+
+     | simplesect+),
+    nav.class*
+  }
+# end of sect2.element
+
+# Renderas: Indicates the format in which the heading should
+# appear
+sect2.attlist &=
+  attribute renderas { "sect1" | "sect3" | "sect4" | "sect5" }?,
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  sect2.role.attrib,
+  local.sect2.attrib
+# end of sect2.attlist
+
+# end of sect2.module
+local.sect3.attrib = empty
+sect3.role.attrib = role.attrib
+# doc:A subsection within a Sect2.
+sect3 =
+  element sect3 {
+    sect3.attlist,
+    sect3info?,
+    sect.title.content,
+    nav.class*,
+    ((divcomponent.mix+, (refentry.class* | sect4* | simplesect*))
+     | refentry.class+
+     | sect4+
+     | simplesect+),
+    nav.class*
+  }
+# end of sect3.element
+
+# Renderas: Indicates the format in which the heading should
+# appear
+sect3.attlist &=
+  attribute renderas { "sect1" | "sect2" | "sect4" | "sect5" }?,
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  sect3.role.attrib,
+  local.sect3.attrib
+# end of sect3.attlist
+
+# end of sect3.module
+local.sect4.attrib = empty
+sect4.role.attrib = role.attrib
+# doc:A subsection within a Sect3.
+sect4 =
+  element sect4 {
+    sect4.attlist,
+    sect4info?,
+    sect.title.content,
+    nav.class*,
+    ((divcomponent.mix+, (refentry.class* | sect5* | simplesect*))
+     | refentry.class+
+     | sect5+
+     | simplesect+),
+    nav.class*
+  }
+# end of sect4.element
+
+# Renderas: Indicates the format in which the heading should
+# appear
+sect4.attlist &=
+  attribute renderas { "sect1" | "sect2" | "sect3" | "sect5" }?,
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  sect4.role.attrib,
+  local.sect4.attrib
+# end of sect4.attlist
+
+# end of sect4.module
+local.sect5.attrib = empty
+sect5.role.attrib = role.attrib
+# doc:A subsection within a Sect4.
+sect5 =
+  element sect5 {
+    sect5.attlist,
+    sect5info?,
+    sect.title.content,
+    nav.class*,
+    ((divcomponent.mix+, (refentry.class* | simplesect*))
+     | refentry.class+
+     | simplesect+),
+    nav.class*
+  }
+# end of sect5.element
+
+# Renderas: Indicates the format in which the heading should
+# appear
+sect5.attlist &=
+  attribute renderas { "sect1" | "sect2" | "sect3" | "sect4" }?,
+  label.attrib,
+  status.attrib,
+  common.attrib,
+  sect5.role.attrib,
+  local.sect5.attrib
+# end of sect5.attlist
+
+# end of sect5.module
+local.simplesect.attrib = empty
+simplesect.role.attrib = role.attrib
+# doc:A section of a document with no subdivisions.
+simplesect =
+  element simplesect {
+    simplesect.attlist, sect.title.content, divcomponent.mix+
+  }
+# end of simplesect.element
+simplesect.attlist &=
+  common.attrib, simplesect.role.attrib, local.simplesect.attrib
+# end of simplesect.attlist
+
+# end of simplesect.module
+
+# ......................................................................
+
+# Bibliography .........................................................
+local.bibliography.attrib = empty
+bibliography.role.attrib = role.attrib
+# doc:A bibliography.
+bibliography =
+  element bibliography {
+    bibliography.attlist,
+    bibliographyinfo?,
+    bookcomponent.title.content?,
+    component.mix*,
+    (bibliodiv+ | (biblioentry | bibliomixed)+)
+  }
+# end of bibliography.element
+bibliography.attlist &=
+  status.attrib,
+  common.attrib,
+  bibliography.role.attrib,
+  local.bibliography.attrib
+# end of bibliography.attlist
+
+# end of bibliography.module
+local.bibliodiv.attrib = empty
+bibliodiv.role.attrib = role.attrib
+# doc:A section of a Bibliography.
+bibliodiv =
+  element bibliodiv {
+    bibliodiv.attlist,
+    sect.title.content?,
+    component.mix*,
+    (biblioentry | bibliomixed)+
+  }
+# end of bibliodiv.element
+bibliodiv.attlist &=
+  status.attrib,
+  common.attrib,
+  bibliodiv.role.attrib,
+  local.bibliodiv.attrib
+# end of bibliodiv.attlist
+
+# end of bibliodiv.module
+
+# end of bibliography.content.module
+
+# ......................................................................
+
+# Glossary .............................................................
+local.glossary.attrib = empty
+glossary.role.attrib = role.attrib
+# doc:A glossary.
+glossary =
+  element glossary {
+    glossary.attlist,
+    glossaryinfo?,
+    bookcomponent.title.content?,
+    component.mix*,
+    (glossdiv+ | glossentry+),
+    bibliography?
+  }
+# end of glossary.element
+glossary.attlist &=
+  status.attrib,
+  common.attrib,
+  glossary.role.attrib,
+  local.glossary.attrib
+# end of glossary.attlist
+
+# end of glossary.module
+local.glossdiv.attrib = empty
+glossdiv.role.attrib = role.attrib
+# doc:A division in a Glossary.
+glossdiv =
+  element glossdiv {
+    glossdiv.attlist, sect.title.content, component.mix*, glossentry+
+  }
+# end of glossdiv.element
+glossdiv.attlist &=
+  status.attrib,
+  common.attrib,
+  glossdiv.role.attrib,
+  local.glossdiv.attrib
+# end of glossdiv.attlist
+
+# end of glossdiv.module
+
+# end of glossary.content.module
+
+# ......................................................................
+
+# Index and SetIndex ...................................................
+local.indexes.attrib = empty
+indexes.role.attrib = role.attrib
+# doc:An index.
+index =
+  element index {
+    index.attlist,
+    indexinfo?,
+    bookcomponent.title.content?,
+    component.mix*,
+    (indexdiv* | indexentry*)
+  }
+# end of index.element
+index.attlist &=
+  attribute type { text }?,
+  common.attrib,
+  indexes.role.attrib,
+  local.indexes.attrib
+# end of index.attlist
+
+# doc:An index to a set of books.
+setindex =
+  element setindex {
+    setindex.attlist,
+    setindexinfo?,
+    bookcomponent.title.content?,
+    component.mix*,
+    (indexdiv* | indexentry*)
+  }
+# end of setindex.element
+setindex.attlist &=
+  common.attrib, indexes.role.attrib, local.indexes.attrib
+# end of setindex.attlist
+
+# end of indexes.module
+
+# SegmentedList in this content is useful for marking up permuted
+# indices.
+local.indexdiv.attrib = empty
+indexdiv.role.attrib = role.attrib
+# doc:A division in an index.
+indexdiv =
+  element indexdiv {
+    indexdiv.attlist,
+    sect.title.content?,
+    (indexdivcomponent.mix*, (indexentry+ | segmentedlist))
+  }
+# end of indexdiv.element
+indexdiv.attlist &=
+  common.attrib, indexdiv.role.attrib, local.indexdiv.attrib
+# end of indexdiv.attlist
+
+# end of indexdiv.module
+
+# Index entries appear in the index, not the text.
+local.indexentry.attrib = empty
+indexentry.role.attrib = role.attrib
+# doc:An entry in an index.
+indexentry =
+  element indexentry {
+    indexentry.attlist,
+    primaryie,
+    (seeie | seealsoie)*,
+    (secondaryie, (seeie | seealsoie | tertiaryie)*)*
+  }
+# end of indexentry.element
+indexentry.attlist &=
+  common.attrib, indexentry.role.attrib, local.indexentry.attrib
+# end of indexentry.attlist
+
+# end of indexentry.module
+local.primsecterie.attrib = empty
+primsecterie.role.attrib = role.attrib
+# doc:A primary term in an index entry, not in the text.
+primaryie = element primaryie { primaryie.attlist, ndxterm.char.mix* }
+# end of primaryie.element
+
+# to IndexTerms that these entries represent
+primaryie.attlist &=
+  linkends.attrib,
+  common.attrib,
+  primsecterie.role.attrib,
+  local.primsecterie.attrib
+# end of primaryie.attlist
+
+# doc:A secondary term in an index entry, rather than in the text.
+secondaryie =
+  element secondaryie { secondaryie.attlist, ndxterm.char.mix* }
+# end of secondaryie.element
+
+# to IndexTerms that these entries represent
+secondaryie.attlist &=
+  linkends.attrib,
+  common.attrib,
+  primsecterie.role.attrib,
+  local.primsecterie.attrib
+# end of secondaryie.attlist
+
+# doc:A tertiary term in an index entry, rather than in the text.
+tertiaryie =
+  element tertiaryie { tertiaryie.attlist, ndxterm.char.mix* }
+# end of tertiaryie.element
+
+# to IndexTerms that these entries represent
+tertiaryie.attlist &=
+  linkends.attrib,
+  common.attrib,
+  primsecterie.role.attrib,
+  local.primsecterie.attrib
+# end of tertiaryie.attlist
+
+# end of primsecterie.module
+local.seeie.attrib = empty
+seeie.role.attrib = role.attrib
+# doc:A See entry in an index, rather than in the text.
+seeie = element seeie { seeie.attlist, ndxterm.char.mix* }
+# end of seeie.element
+
+# to IndexEntry to look up
+seeie.attlist &=
+  linkend.attrib, common.attrib, seeie.role.attrib, local.seeie.attrib
+# end of seeie.attlist
+
+# end of seeie.module
+local.seealsoie.attrib = empty
+seealsoie.role.attrib = role.attrib
+# doc:A See also entry in an index, rather than in the text.
+seealsoie = element seealsoie { seealsoie.attlist, ndxterm.char.mix* }
+# end of seealsoie.element
+
+# to related IndexEntries
+seealsoie.attlist &=
+  linkends.attrib,
+  common.attrib,
+  seealsoie.role.attrib,
+  local.seealsoie.attrib
+# end of seealsoie.attlist
+
+# end of seealsoie.module
+
+# end of index.content.module
+
+# ......................................................................
+
+# RefEntry .............................................................
+local.refentry.attrib = empty
+refentry.role.attrib = role.attrib
+# doc:A reference page (originally a UNIX man-style reference page).
+refentry =
+  element refentry {
+    refentry.attlist,
+    beginpage?,
+    ndxterm.class*,
+    refentryinfo?,
+    refmeta?,
+    (remark | link.char.class)*,
+    refnamediv+,
+    refsynopsisdiv?,
+    (refsect1+ | refsection+)
+  }
+# end of refentry.element
+refentry.attlist &=
+  status.attrib,
+  common.attrib,
+  refentry.role.attrib,
+  local.refentry.attrib
+# end of refentry.attlist
+
+# end of refentry.module
+local.refmeta.attrib = empty
+refmeta.role.attrib = role.attrib
+# doc:Meta-information for a reference entry.
+refmeta =
+  element refmeta {
+    refmeta.attlist,
+    ndxterm.class*,
+    refentrytitle,
+    manvolnum?,
+    refmiscinfo*,
+    ndxterm.class*
+  }
+# end of refmeta.element
+refmeta.attlist &=
+  common.attrib, refmeta.role.attrib, local.refmeta.attrib
+# end of refmeta.attlist
+
+# end of refmeta.module
+local.refmiscinfo.attrib = empty
+refmiscinfo.role.attrib = role.attrib
+# doc:Meta-information for a reference entry other than the title and volume number.
+refmiscinfo =
+  element refmiscinfo { refmiscinfo.attlist, docinfo.char.mix* }
+# end of refmiscinfo.element
+
+# Class: Freely assignable parameter; no default
+refmiscinfo.attlist &=
+  attribute class { text }?,
+  common.attrib,
+  refmiscinfo.role.attrib,
+  local.refmiscinfo.attrib
+# end of refmiscinfo.attlist
+
+# end of refmiscinfo.module
+local.refnamediv.attrib = empty
+refnamediv.role.attrib = role.attrib
+# doc:The name, purpose, and classification of a reference page.
+refnamediv =
+  element refnamediv {
+    refnamediv.attlist,
+    refdescriptor?,
+    refname+,
+    refpurpose,
+    refclass*,
+    (remark | link.char.class)*
+  }
+# end of refnamediv.element
+refnamediv.attlist &=
+  common.attrib, refnamediv.role.attrib, local.refnamediv.attrib
+# end of refnamediv.attlist
+
+# end of refnamediv.module
+local.refdescriptor.attrib = empty
+refdescriptor.role.attrib = role.attrib
+# doc:A description of the topic of a reference page.
+refdescriptor =
+  element refdescriptor { refdescriptor.attlist, refname.char.mix* }
+# end of refdescriptor.element
+refdescriptor.attlist &=
+  common.attrib, refdescriptor.role.attrib, local.refdescriptor.attrib
+# end of refdescriptor.attlist
+
+# end of refdescriptor.module
+local.refname.attrib = empty
+refname.role.attrib = role.attrib
+# doc:The name of (one of) the subject(s) of a reference page.
+refname = element refname { refname.attlist, refname.char.mix* }
+# end of refname.element
+refname.attlist &=
+  common.attrib, refname.role.attrib, local.refname.attrib
+# end of refname.attlist
+
+# end of refname.module
+local.refpurpose.attrib = empty
+refpurpose.role.attrib = role.attrib
+# doc:A short (one sentence) synopsis of the topic of a reference page.
+refpurpose =
+  element refpurpose { refpurpose.attlist, refinline.char.mix* }
+# end of refpurpose.element
+refpurpose.attlist &=
+  common.attrib, refpurpose.role.attrib, local.refpurpose.attrib
+# end of refpurpose.attlist
+
+# end of refpurpose.module
+local.refclass.attrib = empty
+refclass.role.attrib = role.attrib
+# doc:The scope or other indication of applicability of a reference entry.
+refclass = element refclass { refclass.attlist, refclass.char.mix* }
+# end of refclass.element
+refclass.attlist &=
+  common.attrib, refclass.role.attrib, local.refclass.attrib
+# end of refclass.attlist
+
+# end of refclass.module
+local.refsynopsisdiv.attrib = empty
+refsynopsisdiv.role.attrib = role.attrib
+# doc:A syntactic synopsis of the subject of the reference page.
+refsynopsisdiv =
+  element refsynopsisdiv {
+    refsynopsisdiv.attlist,
+    refsynopsisdivinfo?,
+    refsect.title.content?,
+    ((refcomponent.mix+, refsect2*) | refsect2+)
+  }
+# end of refsynopsisdiv.element
+refsynopsisdiv.attlist &=
+  common.attrib, refsynopsisdiv.role.attrib, local.refsynopsisdiv.attrib
+# end of refsynopsisdiv.attlist
+
+# end of refsynopsisdiv.module
+local.refsection.attrib = empty
+refsection.role.attrib = role.attrib
+# doc:A recursive section in a refentry.
+refsection =
+  element refsection {
+    refsection.attlist,
+    refsectioninfo?,
+    refsect.title.content,
+    ((refcomponent.mix+, refsection*) | refsection+)
+  }
+# end of refsection.element
+refsection.attlist &=
+  status.attrib,
+  common.attrib,
+  refsection.role.attrib,
+  local.refsection.attrib
+# end of refsection.attlist
+
+# end of refsection.module
+local.refsect1.attrib = empty
+refsect1.role.attrib = role.attrib
+# doc:A major subsection of a reference entry.
+refsect1 =
+  element refsect1 {
+    refsect1.attlist,
+    refsect1info?,
+    refsect.title.content,
+    ((refcomponent.mix+, refsect2*) | refsect2+)
+  }
+# end of refsect1.element
+refsect1.attlist &=
+  status.attrib,
+  common.attrib,
+  refsect1.role.attrib,
+  local.refsect1.attrib
+# end of refsect1.attlist
+
+# end of refsect1.module
+local.refsect2.attrib = empty
+refsect2.role.attrib = role.attrib
+# doc:A subsection of a RefSect1.
+refsect2 =
+  element refsect2 {
+    refsect2.attlist,
+    refsect2info?,
+    refsect.title.content,
+    ((refcomponent.mix+, refsect3*) | refsect3+)
+  }
+# end of refsect2.element
+refsect2.attlist &=
+  status.attrib,
+  common.attrib,
+  refsect2.role.attrib,
+  local.refsect2.attrib
+# end of refsect2.attlist
+
+# end of refsect2.module
+local.refsect3.attrib = empty
+refsect3.role.attrib = role.attrib
+# doc:A subsection of a RefSect2.
+refsect3 =
+  element refsect3 {
+    refsect3.attlist,
+    refsect3info?,
+    refsect.title.content,
+    refcomponent.mix+
+  }
+# end of refsect3.element
+refsect3.attlist &=
+  status.attrib,
+  common.attrib,
+  refsect3.role.attrib,
+  local.refsect3.attrib
+# 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.
+local.article.attrib = empty
+article.role.attrib = role.attrib
+# doc:An article.
+article =
+  element article {
+    article.attlist,
+    div.title.content?,
+    articleinfo?,
+    tocchap?,
+    lot*,
+    bookcomponent.content,
+    (nav.class | appendix.class | colophon | ackno)*
+  }
+# 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
+article.attlist &=
+  attribute class {
+    "journalarticle"
+    | "productsheet"
+    | "whitepaper"
+    | "techreport"
+    | "specification"
+    | "faq"
+  }?,
+  attribute parentbook { xsd:IDREF }?,
+  status.attrib,
+  common.attrib,
+  article.role.attrib,
+  local.article.attrib
+# end of article.attlist
+
+# end of article.module
+
+# End of DocBook document hierarchy module V4.5 ........................
+
+# ......................................................................
Index: BOOK/schema/docbook/4.5/rng/dbhierx.rng
===================================================================
--- BOOK/schema/docbook/4.5/rng/dbhierx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/dbhierx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,2978 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook document hierarchy module V4.5 ............................... -->
+<!-- File dbhierx.mod ..................................................... -->
+<!--
+  Copyright 1992-2004 HaL Computer Systems, Inc.,
+  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+  Organization for the Advancement of Structured Information
+  Standards (OASIS).
+  
+  $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+  
+  Permission to use, copy, modify and distribute the DocBook DTD
+  and its accompanying documentation for any purpose and without fee
+  is hereby granted in perpetuity, provided that the above copyright
+  notice and this paragraph appear in all copies.  The copyright
+  holders make no representation about the suitability of the DTD for
+  any purpose.  It is provided "as is" without expressed or implied
+  warranty.
+  
+  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 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 Document Hierarchy V4.5//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 ......................................... -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <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.section.class">
+    <notAllowed/>
+  </define>
+  <define name="section.class">
+    <choice>
+      <ref name="section"/>
+      <ref name="local.section.class"/>
+    </choice>
+  </define>
+  <define name="local.nav.class">
+    <notAllowed/>
+  </define>
+  <define name="nav.class">
+    <choice>
+      <ref name="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 ........................................ -->
+  <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="forms.hook"/>
+      <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.class"/>
+          </zeroOrMore>
+        </choice>
+      </group>
+      <choice>
+        <oneOrMore>
+          <ref name="sect1"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="section.class"/>
+        </oneOrMore>
+      </choice>
+    </choice>
+  </define>
+  <!-- ...................................................................... -->
+  <!-- Set and SetInfo ...................................................... -->
+  <define name="local.set.attrib">
+    <empty/>
+  </define>
+  <define name="set.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A collection of books. -->
+  <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>
+        <choice>
+          <ref name="set"/>
+          <ref name="book.class"/>
+        </choice>
+      </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>
+  <!-- doc:Meta-information for a Set. -->
+  <define name="setinfo">
+    <element name="setinfo">
+      <ref name="setinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:A book. -->
+  <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>
+  <!-- doc:Meta-information for a Book. -->
+  <define name="bookinfo">
+    <element name="bookinfo">
+      <ref name="bookinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:A wrapper for the dedication section of a book. -->
+  <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>
+  <!-- doc:Text at the back of a book describing facts about its production. -->
+  <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>
+  <!-- doc:A table of contents. -->
+  <define name="toc">
+    <element name="toc">
+      <ref name="toc.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+  <!-- doc:An entry in a table of contents for a front matter component. -->
+  <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>
+  <!-- doc:A component title in a table of contents. -->
+  <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>
+  <!-- doc:An entry in a table of contents for a part of a book. -->
+  <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>
+  <!-- doc:An entry in a table of contents for a component in the body of a document. -->
+  <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>
+  <!-- doc:A top-level entry within a table of contents entry for a chapter-like component. -->
+  <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>
+  <!-- doc:A second-level entry within a table of contents entry for a chapter-like component. -->
+  <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>
+  <!-- doc:A third-level entry within a table of contents entry for a chapter-like component. -->
+  <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>
+  <!-- doc:A fourth-level entry within a table of contents entry for a chapter-like component. -->
+  <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>
+  <!-- doc:A fifth-level entry within a table of contents entry for a chapter-like component. -->
+  <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>
+  <!-- doc:An entry in a table of contents for a back matter component. -->
+  <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>
+  <!-- doc:A list of the titles of formal objects (as tables or figures) in a document. -->
+  <define name="lot">
+    <element name="lot">
+      <ref name="lot.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+  <!-- doc:An entry in a list of titles. -->
+  <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">
+    <ref name="linkend.attrib"/>
+    <ref name="pagenum.attrib"/>
+    <optional>
+      <attribute name="srccredit"/>
+    </optional>
+    <ref name="common.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>
+  <!-- doc:An appendix in a Book or Article. -->
+  <define name="appendix">
+    <element name="appendix">
+      <ref name="appendix.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+  <!-- doc:A chapter, as of a book. -->
+  <define name="chapter">
+    <element name="chapter">
+      <ref name="chapter.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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.5.  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>
+  <!-- doc:A division in a book. -->
+  <define name="part">
+    <element name="part">
+      <ref name="part.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+  <!-- doc:Introductory matter preceding the first chapter of a book. -->
+  <define name="preface">
+    <element name="preface">
+      <ref name="preface.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+  <!-- doc:A collection of reference entries. -->
+  <define name="reference">
+    <element name="reference">
+      <ref name="reference.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+  <!-- doc:An introduction to the contents of a part. -->
+  <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="partintro.role.attrib"/>
+    <ref name="local.partintro.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>
+  <!-- doc:Meta-information for an Appendix. -->
+  <define name="appendixinfo">
+    <element name="appendixinfo">
+      <ref name="appendixinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Bibliography. -->
+  <define name="bibliographyinfo">
+    <element name="bibliographyinfo">
+      <ref name="bibliographyinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Chapter. -->
+  <define name="chapterinfo">
+    <element name="chapterinfo">
+      <ref name="chapterinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Glossary. -->
+  <define name="glossaryinfo">
+    <element name="glossaryinfo">
+      <ref name="glossaryinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for an Index. -->
+  <define name="indexinfo">
+    <element name="indexinfo">
+      <ref name="indexinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a SetIndex. -->
+  <define name="setindexinfo">
+    <element name="setindexinfo">
+      <ref name="setindexinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Part. -->
+  <define name="partinfo">
+    <element name="partinfo">
+      <ref name="partinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Preface. -->
+  <define name="prefaceinfo">
+    <element name="prefaceinfo">
+      <ref name="prefaceinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Refentry. -->
+  <define name="refentryinfo">
+    <element name="refentryinfo">
+      <ref name="refentryinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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.refsectioninfo.attrib">
+    <empty/>
+  </define>
+  <define name="refsectioninfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Meta-information for a refsection. -->
+  <define name="refsectioninfo">
+    <element name="refsectioninfo">
+      <ref name="refsectioninfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of refsectioninfo.element -->
+  <define name="refsectioninfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="refsectioninfo.role.attrib"/>
+    <ref name="local.refsectioninfo.attrib"/>
+  </define>
+  <!-- end of refsectioninfo.attlist -->
+  <!-- end of refsectioninfo.module -->
+  <define name="local.refsect1info.attrib">
+    <empty/>
+  </define>
+  <define name="refsect1info.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Meta-information for a RefSect1. -->
+  <define name="refsect1info">
+    <element name="refsect1info">
+      <ref name="refsect1info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a RefSect2. -->
+  <define name="refsect2info">
+    <element name="refsect2info">
+      <ref name="refsect2info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a RefSect3. -->
+  <define name="refsect3info">
+    <element name="refsect3info">
+      <ref name="refsect3info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a RefSynopsisDiv. -->
+  <define name="refsynopsisdivinfo">
+    <element name="refsynopsisdivinfo">
+      <ref name="refsynopsisdivinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Reference. -->
+  <define name="referenceinfo">
+    <element name="referenceinfo">
+      <ref name="referenceinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Sect1. -->
+  <define name="sect1info">
+    <element name="sect1info">
+      <ref name="sect1info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Sect2. -->
+  <define name="sect2info">
+    <element name="sect2info">
+      <ref name="sect2info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Sect3. -->
+  <define name="sect3info">
+    <element name="sect3info">
+      <ref name="sect3info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Sect4. -->
+  <define name="sect4info">
+    <element name="sect4info">
+      <ref name="sect4info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Meta-information for a Sect5. -->
+  <define name="sect5info">
+    <element name="sect5info">
+      <ref name="sect5info.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:A recursive section. -->
+  <define name="section">
+    <element name="section">
+      <ref name="section.attlist"/>
+      <optional>
+        <ref name="sectioninfo"/>
+      </optional>
+      <ref name="sect.title.content"/>
+      <zeroOrMore>
+        <ref name="nav.class"/>
+      </zeroOrMore>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="divcomponent.mix"/>
+          </oneOrMore>
+          <choice>
+            <zeroOrMore>
+              <ref name="refentry.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="section.class"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="simplesect"/>
+            </zeroOrMore>
+          </choice>
+        </group>
+        <oneOrMore>
+          <ref name="refentry.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="section.class"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="simplesect"/>
+        </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>
+  <!-- doc:Meta-information for a recursive section. -->
+  <define name="sectioninfo">
+    <element name="sectioninfo">
+      <ref name="sectioninfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:A top-level section of document. -->
+  <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>
+  <!-- doc:A subsection within a Sect1. -->
+  <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>
+  <!-- doc:A subsection within a Sect2. -->
+  <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>
+  <!-- doc:A subsection within a Sect3. -->
+  <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>
+  <!-- doc:A subsection within a Sect4. -->
+  <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>
+  <!-- doc:A section of a document with no subdivisions. -->
+  <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>
+  <!-- doc:A bibliography. -->
+  <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>
+  <!-- doc:A section of a Bibliography. -->
+  <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>
+  <!-- doc:A glossary. -->
+  <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>
+  <!-- doc:A division in a Glossary. -->
+  <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>
+  <!-- doc:An index. -->
+  <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">
+    <optional>
+      <attribute name="type"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="indexes.role.attrib"/>
+    <ref name="local.indexes.attrib"/>
+  </define>
+  <!-- end of index.attlist -->
+  <!-- doc:An index to a set of books. -->
+  <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>
+  <!-- doc:A division in an index. -->
+  <define name="indexdiv">
+    <element name="indexdiv">
+      <ref name="indexdiv.attlist"/>
+      <optional>
+        <ref name="sect.title.content"/>
+      </optional>
+      <group>
+        <zeroOrMore>
+          <ref name="indexdivcomponent.mix"/>
+        </zeroOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="indexentry"/>
+          </oneOrMore>
+          <ref name="segmentedlist"/>
+        </choice>
+      </group>
+    </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>
+  <!-- doc:An entry in an index. -->
+  <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>
+  <!-- doc:A primary term in an index entry, not in the text. -->
+  <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 -->
+  <!-- doc:A secondary term in an index entry, rather than in the text. -->
+  <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 -->
+  <!-- doc:A tertiary term in an index entry, rather than in the text. -->
+  <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>
+  <!-- doc:A See entry in an index, rather than in the text. -->
+  <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>
+  <!-- doc:A See also entry in an index, rather than in the text. -->
+  <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>
+  <!-- doc:A reference page (originally a UNIX man-style reference page). -->
+  <define name="refentry">
+    <element name="refentry">
+      <ref name="refentry.attlist"/>
+      <optional>
+        <ref name="beginpage"/>
+      </optional>
+      <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>
+      <oneOrMore>
+        <ref name="refnamediv"/>
+      </oneOrMore>
+      <optional>
+        <ref name="refsynopsisdiv"/>
+      </optional>
+      <choice>
+        <oneOrMore>
+          <ref name="refsect1"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="refsection"/>
+        </oneOrMore>
+      </choice>
+    </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>
+  <!-- doc:Meta-information for a reference entry. -->
+  <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>
+  <!-- doc:Meta-information for a reference entry other than the title and volume number. -->
+  <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>
+  <!-- doc:The name, purpose, and classification of a reference page. -->
+  <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>
+  <!-- doc:A description of the topic of a reference page. -->
+  <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>
+  <!-- doc:The name of (one of) the subject(s) of a reference page. -->
+  <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>
+  <!-- doc:A short (one sentence) synopsis of the topic of a reference page. -->
+  <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>
+  <!-- doc:The scope or other indication of applicability of a reference entry. -->
+  <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>
+  <!-- doc:A syntactic synopsis of the subject of the reference page. -->
+  <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.refsection.attrib">
+    <empty/>
+  </define>
+  <define name="refsection.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A recursive section in a refentry. -->
+  <define name="refsection">
+    <element name="refsection">
+      <ref name="refsection.attlist"/>
+      <optional>
+        <ref name="refsectioninfo"/>
+      </optional>
+      <ref name="refsect.title.content"/>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="refcomponent.mix"/>
+          </oneOrMore>
+          <zeroOrMore>
+            <ref name="refsection"/>
+          </zeroOrMore>
+        </group>
+        <oneOrMore>
+          <ref name="refsection"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+  <!-- end of refsection.element -->
+  <define name="refsection.attlist" combine="interleave">
+    <ref name="status.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="refsection.role.attrib"/>
+    <ref name="local.refsection.attrib"/>
+  </define>
+  <!-- end of refsection.attlist -->
+  <!-- end of refsection.module -->
+  <define name="local.refsect1.attrib">
+    <empty/>
+  </define>
+  <define name="refsect1.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A major subsection of a reference entry. -->
+  <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>
+  <!-- doc:A subsection of a RefSect1. -->
+  <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>
+  <!-- doc:A subsection of a RefSect2. -->
+  <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>
+  <!-- doc:An article. -->
+  <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="colophon"/>
+          <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>
+</grammar>
+<!-- end of article.attlist -->
+<!-- end of article.module -->
+<!-- End of DocBook document hierarchy module V4.5 ........................ -->
+<!-- ...................................................................... -->
Index: BOOK/schema/docbook/4.5/rng/dbnotnx.rnc
===================================================================
--- BOOK/schema/docbook/4.5/rng/dbnotnx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/dbnotnx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,85 @@
+# ......................................................................
+
+# DocBook notations module V4.5 ........................................
+
+# File dbnotnx.mod .....................................................
+
+# Copyright 1992-2004 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+# 
+# $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+# 
+# Permission to use, copy, modify and distribute the DocBook DTD
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies.  The copyright
+# holders make no representation about the suitability of the DTD for
+# any purpose.  It is provided "as is" without expressed or implied
+# warranty.
+# 
+# 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 notation declarations 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 Notations V4.5//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.
+
+local.notation.class = notAllowed
+notation.class =
+  "BMP"
+  | "CGM-CHAR"
+  | "CGM-BINARY"
+  | "CGM-CLEAR"
+  | "DITROFF"
+  | "DVI"
+  | "EPS"
+  | "EQN"
+  | "FAX"
+  | "GIF"
+  | "GIF87a"
+  | "GIF89a"
+  | "JPG"
+  | "JPEG"
+  | "IGES"
+  | "PCX"
+  | "PIC"
+  | "PNG"
+  | "PS"
+  | "SGML"
+  | "TBL"
+  | "TEX"
+  | "TIFF"
+  | "WMF"
+  | "WPG"
+  | "SVG"
+  | "PDF"
+  | "SWF"
+  | "linespecific"
+  | local.notation.class
+# WordPerfect Graphic format
+
+# End of DocBook notations module V4.5 .................................
+
+# ......................................................................
Index: BOOK/schema/docbook/4.5/rng/dbnotnx.rng
===================================================================
--- BOOK/schema/docbook/4.5/rng/dbnotnx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/dbnotnx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook notations module V4.5 ........................................ -->
+<!-- File dbnotnx.mod ..................................................... -->
+<!--
+  Copyright 1992-2004 HaL Computer Systems, Inc.,
+  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+  Organization for the Advancement of Structured Information
+  Standards (OASIS).
+  
+  $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+  
+  Permission to use, copy, modify and distribute the DocBook DTD
+  and its accompanying documentation for any purpose and without fee
+  is hereby granted in perpetuity, provided that the above copyright
+  notice and this paragraph appear in all copies.  The copyright
+  holders make no representation about the suitability of the DTD for
+  any purpose.  It is provided "as is" without expressed or implied
+  warranty.
+  
+  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 notation declarations 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 Notations V4.5//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.
+-->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+  <define name="local.notation.class">
+    <notAllowed/>
+  </define>
+  <define name="notation.class">
+    <choice>
+      <value>BMP</value>
+      <value>CGM-CHAR</value>
+      <value>CGM-BINARY</value>
+      <value>CGM-CLEAR</value>
+      <value>DITROFF</value>
+      <value>DVI</value>
+      <value>EPS</value>
+      <value>EQN</value>
+      <value>FAX</value>
+      <value>GIF</value>
+      <value>GIF87a</value>
+      <value>GIF89a</value>
+      <value>JPG</value>
+      <value>JPEG</value>
+      <value>IGES</value>
+      <value>PCX</value>
+      <value>PIC</value>
+      <value>PNG</value>
+      <value>PS</value>
+      <value>SGML</value>
+      <value>TBL</value>
+      <value>TEX</value>
+      <value>TIFF</value>
+      <value>WMF</value>
+      <value>WPG</value>
+      <value>SVG</value>
+      <value>PDF</value>
+      <value>SWF</value>
+      <value>linespecific</value>
+      <ref name="local.notation.class"/>
+    </choice>
+  </define>
+</grammar>
+<!-- WordPerfect Graphic format -->
+<!-- End of DocBook notations module V4.5 ................................. -->
+<!-- ...................................................................... -->
Index: BOOK/schema/docbook/4.5/rng/dbpoolx.rnc
===================================================================
--- BOOK/schema/docbook/4.5/rng/dbpoolx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/dbpoolx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,5785 @@
+# ......................................................................
+
+# DocBook XML information pool module V4.5 .............................
+
+# File dbpoolx.mod .....................................................
+
+# Copyright 1992-2004 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+# 
+# $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+# 
+# 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.5//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.
+
+# ......................................................................
+
+# Forms entities .......................................................
+
+# These PEs provide the hook by which the forms module can be inserted
+
+# into the DTD.
+
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+forminlines.hook = notAllowed
+forms.hook = notAllowed
+# ......................................................................
+
+# General-purpose semantics entities ...................................
+yesorno.attvals = string
+# ......................................................................
+
+# Entities for module inclusions .......................................
+
+# ......................................................................
+
+# Entities for element classes and mixtures ............................
+
+# "Ubiquitous" classes: ndxterm.class and beginpage
+local.ndxterm.class = notAllowed
+ndxterm.class = indexterm | local.ndxterm.class
+# Object-level classes .................................................
+local.list.class = notAllowed
+list.class =
+  calloutlist
+  | glosslist
+  | bibliolist
+  | itemizedlist
+  | orderedlist
+  | segmentedlist
+  | simplelist
+  | variablelist
+  | local.list.class
+local.admon.class = notAllowed
+admon.class =
+  caution | important | note | tip | warning | local.admon.class
+local.linespecific.class = notAllowed
+linespecific.class =
+  literallayout
+  | programlisting
+  | programlistingco
+  | screen
+  | screenco
+  | screenshot
+  | local.linespecific.class
+local.method.synop.class = notAllowed
+method.synop.class =
+  constructorsynopsis
+  | destructorsynopsis
+  | methodsynopsis
+  | local.method.synop.class
+local.synop.class = notAllowed
+synop.class =
+  synopsis
+  | cmdsynopsis
+  | funcsynopsis
+  | classsynopsis
+  | fieldsynopsis
+  | method.synop.class
+  | local.synop.class
+local.para.class = notAllowed
+para.class = formalpara | para | simpara | local.para.class
+local.informal.class = notAllowed
+informal.class =
+  address
+  | blockquote
+  | graphic
+  | graphicco
+  | mediaobject
+  | mediaobjectco
+  | informalequation
+  | informalexample
+  | informalfigure
+  | informaltable
+  | local.informal.class
+local.formal.class = notAllowed
+formal.class = equation | example | figure | table | local.formal.class
+# 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.
+ebnf.block.hook = notAllowed
+local.compound.class = notAllowed
+compound.class =
+  msgset
+  | procedure
+  | sidebar
+  | qandaset
+  | task
+  | ebnf.block.hook
+  | local.compound.class
+local.genobj.class = notAllowed
+genobj.class =
+  anchor | bridgehead | remark | highlights | local.genobj.class
+local.descobj.class = notAllowed
+descobj.class = abstract | authorblurb | epigraph | local.descobj.class
+# Character-level classes ..............................................
+local.xref.char.class = notAllowed
+xref.char.class = footnoteref | xref | biblioref | local.xref.char.class
+local.gen.char.class = notAllowed
+gen.char.class =
+  abbrev
+  | acronym
+  | citation
+  | citerefentry
+  | citetitle
+  | citebiblioid
+  | emphasis
+  | firstterm
+  | foreignphrase
+  | glossterm
+  | termdef
+  | footnote
+  | phrase
+  | orgname
+  | quote
+  | trademark
+  | wordasword
+  | personname
+  | local.gen.char.class
+local.link.char.class = notAllowed
+link.char.class = link | olink | ulink | local.link.char.class
+# 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.
+ebnf.inline.hook = notAllowed
+local.tech.char.class = notAllowed
+tech.char.class =
+  action
+  | application
+  | classname
+  | methodname
+  | interfacename
+  | exceptionname
+  | ooclass
+  | oointerface
+  | ooexception
+  | package
+  | command
+  | computeroutput
+  | database
+  | email
+  | envar
+  | errorcode
+  | errorname
+  | errortype
+  | errortext
+  | filename
+  | function
+  | guibutton
+  | guiicon
+  | guilabel
+  | guimenu
+  | guimenuitem
+  | guisubmenu
+  | hardware
+  | interface
+  | keycap
+  | keycode
+  | keycombo
+  | keysym
+  | literal
+  | code
+  | constant
+  | markup
+  | medialabel
+  | menuchoice
+  | mousebutton
+  | option
+  | optional
+  | parameter
+  | prompt
+  | property
+  | replaceable
+  | returnvalue
+  | sgmltag
+  | structfield
+  | structname
+  | symbol
+  | systemitem
+  | uri
+  | \token
+  | type
+  | userinput
+  | varname
+  | ebnf.inline.hook
+  | local.tech.char.class
+local.base.char.class = notAllowed
+base.char.class = anchor | local.base.char.class
+local.docinfo.char.class = notAllowed
+docinfo.char.class =
+  author
+  | authorinitials
+  | corpauthor
+  | corpcredit
+  | modespec
+  | othercredit
+  | productname
+  | productnumber
+  | revhistory
+  | local.docinfo.char.class
+local.other.char.class = notAllowed
+other.char.class =
+  remark | subscript | superscript | local.other.char.class
+local.inlineobj.char.class = notAllowed
+inlineobj.char.class =
+  inlinegraphic
+  | inlinemediaobject
+  | inlineequation
+  | local.inlineobj.char.class
+# ......................................................................
+
+# Entities for content models ..........................................
+formalobject.title.content = title, titleabbrev?
+# 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.
+local.component.mix = notAllowed
+component.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | compound.class
+  | genobj.class
+  | descobj.class
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.component.mix
+local.sidebar.mix = notAllowed
+sidebar.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | procedure
+  | genobj.class
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.sidebar.mix
+local.qandaset.mix = notAllowed
+qandaset.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | procedure
+  | genobj.class
+  | ndxterm.class
+  | forms.hook
+  | local.qandaset.mix
+local.revdescription.mix = notAllowed
+revdescription.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | procedure
+  | genobj.class
+  | ndxterm.class
+  | local.revdescription.mix
+local.footnote.mix = notAllowed
+footnote.mix =
+  list.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | local.footnote.mix
+local.example.mix = notAllowed
+example.mix =
+  list.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | ndxterm.class
+  | beginpage
+  | procedure
+  | forms.hook
+  | local.example.mix
+local.highlights.mix = notAllowed
+highlights.mix =
+  list.class
+  | admon.class
+  | para.class
+  | ndxterm.class
+  | local.highlights.mix
+# %formal.class; is explicitly excluded from many contexts in which
+# paragraphs are used
+local.para.mix = notAllowed
+para.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | informal.class
+  | formal.class
+  | local.para.mix
+local.admon.mix = notAllowed
+admon.mix =
+  list.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | procedure
+  | sidebar
+  | anchor
+  | bridgehead
+  | remark
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.admon.mix
+local.figure.mix = notAllowed
+figure.mix =
+  linespecific.class
+  | synop.class
+  | informal.class
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.figure.mix
+local.tabentry.mix = notAllowed
+tabentry.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | para.class
+  | graphic
+  | mediaobject
+  | forms.hook
+  | local.tabentry.mix
+local.glossdef.mix = notAllowed
+glossdef.mix =
+  list.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | formal.class
+  | remark
+  | ndxterm.class
+  | beginpage
+  | local.glossdef.mix
+local.legalnotice.mix = notAllowed
+legalnotice.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | para.class
+  | blockquote
+  | ndxterm.class
+  | beginpage
+  | local.legalnotice.mix
+local.textobject.mix = notAllowed
+textobject.mix =
+  list.class
+  | admon.class
+  | linespecific.class
+  | para.class
+  | blockquote
+  | local.textobject.mix
+local.mediaobject.mix = notAllowed
+mediaobject.mix =
+  videoobject
+  | audioobject
+  | imageobject
+  | imageobjectco
+  | textobject
+  | local.mediaobject.mix
+local.listpreamble.mix = notAllowed
+listpreamble.mix =
+  admon.class
+  | linespecific.class
+  | synop.class
+  | para.class
+  | informal.class
+  | genobj.class
+  | descobj.class
+  | ndxterm.class
+  | beginpage
+  | forms.hook
+  | local.listpreamble.mix
+# Character-level mixtures .............................................
+
+# sgml.features
+
+# not [sgml.features[
+
+# ]] not sgml.features
+
+#                     #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.
+local.para.char.mix = notAllowed
+para.char.mix =
+  text
+  | xref.char.class
+  | gen.char.class
+  | link.char.class
+  | tech.char.class
+  | base.char.class
+  | docinfo.char.class
+  | other.char.class
+  | inlineobj.char.class
+  | synop.class
+  | ndxterm.class
+  | beginpage
+  | forminlines.hook
+  | local.para.char.mix
+local.title.char.mix = notAllowed
+title.char.mix =
+  text
+  | xref.char.class
+  | gen.char.class
+  | link.char.class
+  | tech.char.class
+  | base.char.class
+  | docinfo.char.class
+  | other.char.class
+  | inlineobj.char.class
+  | ndxterm.class
+  | local.title.char.mix
+local.ndxterm.char.mix = notAllowed
+ndxterm.char.mix =
+  text
+  | xref.char.class
+  | gen.char.class
+  | link.char.class
+  | tech.char.class
+  | base.char.class
+  | docinfo.char.class
+  | other.char.class
+  | inlinegraphic
+  | inlinemediaobject
+  | local.ndxterm.char.mix
+local.cptr.char.mix = notAllowed
+cptr.char.mix =
+  text
+  | link.char.class
+  | tech.char.class
+  | base.char.class
+  | other.char.class
+  | inlinegraphic
+  | inlinemediaobject
+  | ndxterm.class
+  | beginpage
+  | local.cptr.char.mix
+local.smallcptr.char.mix = notAllowed
+smallcptr.char.mix =
+  text
+  | replaceable
+  | inlinegraphic
+  | inlinemediaobject
+  | ndxterm.class
+  | beginpage
+  | local.smallcptr.char.mix
+local.word.char.mix = notAllowed
+word.char.mix =
+  text
+  | acronym
+  | emphasis
+  | trademark
+  | link.char.class
+  | base.char.class
+  | other.char.class
+  | inlinegraphic
+  | inlinemediaobject
+  | ndxterm.class
+  | beginpage
+  | local.word.char.mix
+local.docinfo.char.mix = notAllowed
+docinfo.char.mix =
+  text
+  | link.char.class
+  | emphasis
+  | trademark
+  | replaceable
+  | other.char.class
+  | inlinegraphic
+  | inlinemediaobject
+  | ndxterm.class
+  | local.docinfo.char.mix
+# ENTITY % bibliocomponent.mix (see Bibliographic section, below)
+
+# ENTITY % person.ident.mix (see Bibliographic section, below)
+
+# ......................................................................
+
+# Entities for attributes and attribute components .....................
+
+# Effectivity attributes ...............................................
+
+# Arch: Computer or chip architecture to which element applies; no
+# default
+arch.attrib = attribute arch { text }?
+# Condition: General-purpose effectivity attribute
+condition.attrib = attribute condition { text }?
+# Conformance: Standards conformance characteristics
+conformance.attrib = attribute conformance { xsd:NMTOKENS }?
+# OS: Operating system to which element applies; no default
+os.attrib = attribute os { text }?
+# Revision: Editorial revision to which element belongs; no default
+revision.attrib = attribute revision { text }?
+# Security: Security classification; no default
+security.attrib = attribute security { text }?
+# UserLevel: Level of user experience to which element applies; no
+# default
+userlevel.attrib = attribute userlevel { text }?
+# Vendor: Computer vendor to which element applies; no default
+vendor.attrib = attribute vendor { text }?
+# Wordsize: Computer word size (32 bit, 64 bit, etc.); no default
+wordsize.attrib = attribute wordsize { text }?
+local.effectivity.attrib = empty
+effectivity.attrib =
+  arch.attrib,
+  condition.attrib,
+  conformance.attrib,
+  os.attrib,
+  revision.attrib,
+  security.attrib,
+  userlevel.attrib,
+  vendor.attrib,
+  wordsize.attrib,
+  local.effectivity.attrib
+# Common attributes ....................................................
+
+# Id: Unique identifier of element; no default
+id.attrib = attribute id { xsd:ID }?
+# Id: Unique identifier of element; a value must be supplied; no
+# default
+idreq.attrib = attribute id { xsd:ID }
+# Lang: Indicator of language in which element is written, for
+# translation, character set management, etc.; no default
+lang.attrib = attribute lang { text }?
+# Remap: Previous role of element before conversion; no default
+remap.attrib = attribute remap { text }?
+# Role: New role of element in local environment; no default
+role.attrib = attribute role { text }?
+# XRefLabel: Alternate labeling string for XRef text generation;
+# default is usually title or other appropriate label text already
+# contained in element
+xreflabel.attrib = attribute xreflabel { text }?
+# RevisionFlag: Revision status of element; default is that element
+# wasn't revised
+revisionflag.attrib =
+  attribute revisionflag { "changed" | "added" | "deleted" | "off" }?
+local.common.attrib = empty
+# dir: Bidirectional override
+dir.attrib = attribute dir { "ltr" | "rtl" | "lro" | "rlo" }?
+# xml:base: base URI
+xml-base.attrib = attribute xml:base { text }?
+# Role is included explicitly on each element
+common.attrib =
+  id.attrib,
+  lang.attrib,
+  remap.attrib,
+  xreflabel.attrib,
+  revisionflag.attrib,
+  effectivity.attrib,
+  dir.attrib,
+  xml-base.attrib,
+  local.common.attrib
+# Role is included explicitly on each element
+idreq.common.attrib =
+  idreq.attrib,
+  lang.attrib,
+  remap.attrib,
+  xreflabel.attrib,
+  revisionflag.attrib,
+  effectivity.attrib,
+  dir.attrib,
+  xml-base.attrib,
+  local.common.attrib
+# Semi-common attributes and other attribute entities ..................
+local.graphics.attrib = empty
+# 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
+graphics.attrib =
+  attribute entityref { xsd:ENTITY }?,
+  attribute fileref { text }?,
+  attribute format { notation.class }?,
+  attribute srccredit { text }?,
+  attribute width { text }?,
+  attribute contentwidth { text }?,
+  attribute depth { text }?,
+  attribute contentdepth { text }?,
+  attribute align { "left" | "right" | "center" }?,
+  attribute valign { "top" | "middle" | "bottom" }?,
+  attribute scale { text }?,
+  attribute scalefit { yesorno.attvals }?,
+  local.graphics.attrib
+local.keyaction.attrib = empty
+# 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
+keyaction.attrib =
+  attribute action {
+    "click" | "double-click" | "press" | "seq" | "simul" | "other"
+  }?,
+  attribute otheraction { text }?,
+  local.keyaction.attrib
+# Label: Identifying number or string; default is usually the
+# appropriate number or string autogenerated by a formatter
+label.attrib = attribute label { text }?
+# xml:space: whitespace treatment
+xml-space.attrib = attribute xml:space { "preserve" }?
+# Format: whether element is assumed to contain significant white
+# space
+linespecific.attrib =
+  [ a:defaultValue = "linespecific" ]
+  attribute format { "linespecific" }?,
+  xml-space.attrib,
+  attribute linenumbering { "numbered" | "unnumbered" }?,
+  attribute continuation { "continues" | "restarts" }?,
+  attribute startinglinenumber { text }?,
+  attribute language { text }?
+# Linkend: link to related information; no default
+linkend.attrib = attribute linkend { xsd:IDREF }?
+# Linkend: required link to related information
+linkendreq.attrib = attribute linkend { xsd:IDREF }
+# Linkends: link to one or more sets of related information; no
+# default
+linkends.attrib = attribute linkends { xsd:IDREFS }?
+local.mark.attrib = empty
+mark.attrib =
+  attribute mark { text }?,
+  local.mark.attrib
+# MoreInfo: whether element's content has an associated RefEntry
+moreinfo.attrib =
+  [ a:defaultValue = "none" ]
+  attribute moreinfo { "refentry" | "none" }?
+# Pagenum: number of page on which element appears; no default
+pagenum.attrib = attribute pagenum { text }?
+local.status.attrib = empty
+# Status: Editorial or publication status of the element
+# it applies to, such as "in review" or "approved for distribution"
+status.attrib =
+  attribute status { text }?,
+  local.status.attrib
+# Width: width of the longest line in the element to which it
+# pertains, in number of characters
+width.attrib = attribute width { text }?
+# ......................................................................
+
+# Title elements .......................................................
+local.title.attrib = empty
+title.role.attrib = role.attrib
+# doc:The text of the title of a section of a document or of a formal block-level element.
+title = element title { title.attlist, title.char.mix* }
+# end of title.element
+title.attlist &=
+  pagenum.attrib, common.attrib, title.role.attrib, local.title.attrib
+# end of title.attlist
+
+# end of title.module
+local.titleabbrev.attrib = empty
+titleabbrev.role.attrib = role.attrib
+# doc:The abbreviation of a Title.
+titleabbrev =
+  element titleabbrev { titleabbrev.attlist, title.char.mix* }
+# end of titleabbrev.element
+titleabbrev.attlist &=
+  common.attrib, titleabbrev.role.attrib, local.titleabbrev.attrib
+# end of titleabbrev.attlist
+
+# end of titleabbrev.module
+local.subtitle.attrib = empty
+subtitle.role.attrib = role.attrib
+# doc:The subtitle of a document.
+subtitle = element subtitle { subtitle.attlist, title.char.mix* }
+# end of subtitle.element
+subtitle.attlist &=
+  common.attrib, subtitle.role.attrib, local.subtitle.attrib
+# 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.
+local.person.ident.mix = notAllowed
+person.ident.mix =
+  honorific
+  | firstname
+  | surname
+  | lineage
+  | othername
+  | affiliation
+  | authorblurb
+  | contrib
+  | local.person.ident.mix
+local.bibliocomponent.mix = notAllowed
+bibliocomponent.mix =
+  abbrev
+  | abstract
+  | address
+  | artpagenums
+  | author
+  | authorgroup
+  | authorinitials
+  | bibliomisc
+  | biblioset
+  | collab
+  | confgroup
+  | contractnum
+  | contractsponsor
+  | copyright
+  | corpauthor
+  | corpname
+  | corpcredit
+  | date
+  | edition
+  | editor
+  | invpartnumber
+  | isbn
+  | issn
+  | issuenum
+  | orgname
+  | biblioid
+  | citebiblioid
+  | bibliosource
+  | bibliorelation
+  | bibliocoverage
+  | othercredit
+  | pagenums
+  | printhistory
+  | productname
+  | productnumber
+  | pubdate
+  | publisher
+  | publishername
+  | pubsnumber
+  | releaseinfo
+  | revhistory
+  | seriesvolnums
+  | subtitle
+  | title
+  | titleabbrev
+  | volumenum
+  | citetitle
+  | personname
+  | person.ident.mix
+  | ndxterm.class
+  | local.bibliocomponent.mix
+# I don't think this is well placed, but it needs to be here because of
+
+# the reference to bibliocomponent.mix
+local.info.class = notAllowed
+info.class =
+  graphic
+  | mediaobject
+  | legalnotice
+  | modespec
+  | subjectset
+  | keywordset
+  | itermset
+  | bibliocomponent.mix
+  | local.info.class
+# BiblioList ........................
+local.bibliolist.attrib = empty
+bibliolist.role.attrib = role.attrib
+# doc:A wrapper for a set of bibliography entries.
+bibliolist =
+  element bibliolist {
+    bibliolist.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    (biblioentry | bibliomixed)+
+  }
+# end of bibliolist.element
+bibliolist.attlist &=
+  common.attrib, bibliolist.role.attrib, local.bibliolist.attrib
+# end of bibliolist.attlist
+
+# end of bibliolist.module
+local.biblioentry.attrib = empty
+biblioentry.role.attrib = role.attrib
+# doc:An entry in a Bibliography.
+biblioentry =
+  element biblioentry {
+    biblioentry.attlist, (articleinfo | bibliocomponent.mix)+
+  }
+# end of biblioentry.element
+biblioentry.attlist &=
+  common.attrib, biblioentry.role.attrib, local.biblioentry.attrib
+# end of biblioentry.attlist
+
+# end of biblioentry.module
+local.bibliomixed.attrib = empty
+bibliomixed.role.attrib = role.attrib
+# doc:An entry in a Bibliography.
+bibliomixed =
+  element bibliomixed {
+    bibliomixed.attlist, (text | bibliocomponent.mix | bibliomset)*
+  }
+# end of bibliomixed.element
+bibliomixed.attlist &=
+  common.attrib, bibliomixed.role.attrib, local.bibliomixed.attrib
+# end of bibliomixed.attlist
+
+# end of bibliomixed.module
+local.articleinfo.attrib = empty
+articleinfo.role.attrib = role.attrib
+# doc:Meta-information for an Article.
+articleinfo = element articleinfo { articleinfo.attlist, info.class+ }
+# end of articleinfo.element
+articleinfo.attlist &=
+  common.attrib, articleinfo.role.attrib, local.articleinfo.attrib
+# end of articleinfo.attlist
+
+# end of articleinfo.module
+local.biblioset.attrib = empty
+biblioset.role.attrib = role.attrib
+# doc:A "raw" container for related bibliographic information.
+biblioset =
+  element biblioset { biblioset.attlist, bibliocomponent.mix+ }
+# end of biblioset.element
+
+# Relation: Relationship of elements contained within BiblioSet
+biblioset.attlist &=
+  attribute relation { text }?,
+  common.attrib,
+  biblioset.role.attrib,
+  local.biblioset.attrib
+# end of biblioset.attlist
+
+# end of biblioset.module
+bibliomset.role.attrib = role.attrib
+local.bibliomset.attrib = empty
+# doc:A "cooked" container for related bibliographic information.
+bibliomset =
+  element bibliomset {
+    bibliomset.attlist, (text | bibliocomponent.mix | bibliomset)*
+  }
+# end of bibliomset.element
+
+# Relation: Relationship of elements contained within BiblioMSet
+bibliomset.attlist &=
+  attribute relation { text }?,
+  common.attrib,
+  bibliomset.role.attrib,
+  local.bibliomset.attrib
+# end of bibliomset.attlist
+
+# end of bibliomset.module
+local.bibliomisc.attrib = empty
+bibliomisc.role.attrib = role.attrib
+# doc:Untyped bibliographic information.
+bibliomisc = element bibliomisc { bibliomisc.attlist, para.char.mix* }
+# end of bibliomisc.element
+bibliomisc.attlist &=
+  common.attrib, bibliomisc.role.attrib, local.bibliomisc.attrib
+# end of bibliomisc.attlist
+
+# end of bibliomisc.module
+
+# ......................................................................
+
+# Subject, Keyword, and ITermSet elements ..............................
+local.subjectset.attrib = empty
+subjectset.role.attrib = role.attrib
+# doc:A set of terms describing the subject matter of a document.
+subjectset = element subjectset { subjectset.attlist, subject+ }
+# end of subjectset.element
+
+# Scheme: Controlled vocabulary employed in SubjectTerms
+subjectset.attlist &=
+  attribute scheme { xsd:NMTOKEN }?,
+  common.attrib,
+  subjectset.role.attrib,
+  local.subjectset.attrib
+# end of subjectset.attlist
+
+# end of subjectset.module
+local.subject.attrib = empty
+subject.role.attrib = role.attrib
+# doc:One of a group of terms describing the subject matter of a document.
+subject = element subject { subject.attlist, subjectterm+ }
+# end of subject.element
+
+# Weight: Ranking of this group of SubjectTerms relative
+# to others, 0 is low, no highest value specified
+subject.attlist &=
+  attribute weight { text }?,
+  common.attrib,
+  subject.role.attrib,
+  local.subject.attrib
+# end of subject.attlist
+
+# end of subject.module
+local.subjectterm.attrib = empty
+subjectterm.role.attrib = role.attrib
+# doc:A term in a group of terms describing the subject matter of a document.
+subjectterm = element subjectterm { subjectterm.attlist, text }
+# end of subjectterm.element
+subjectterm.attlist &=
+  common.attrib, subjectterm.role.attrib, local.subjectterm.attrib
+# end of subjectterm.attlist
+
+# end of subjectterm.module
+
+# end of subjectset.content.module
+local.keywordset.attrib = empty
+keywordset.role.attrib = role.attrib
+# doc:A set of keywords describing the content of a document.
+keywordset = element keywordset { keywordset.attlist, keyword+ }
+# end of keywordset.element
+keywordset.attlist &=
+  common.attrib, keywordset.role.attrib, local.keywordset.attrib
+# end of keywordset.attlist
+
+# end of keywordset.module
+local.keyword.attrib = empty
+keyword.role.attrib = role.attrib
+# doc:One of a set of keywords describing the content of a document.
+keyword = element keyword { keyword.attlist, text }
+# end of keyword.element
+keyword.attlist &=
+  common.attrib, keyword.role.attrib, local.keyword.attrib
+# end of keyword.attlist
+
+# end of keyword.module
+
+# end of keywordset.content.module
+local.itermset.attrib = empty
+itermset.role.attrib = role.attrib
+# doc:A set of index terms in the meta-information of a document.
+itermset = element itermset { itermset.attlist, indexterm+ }
+# end of itermset.element
+itermset.attlist &=
+  common.attrib, itermset.role.attrib, local.itermset.attrib
+# end of itermset.attlist
+
+# end of itermset.module
+
+# Bibliographic info for "blocks"
+local.blockinfo.attrib = empty
+blockinfo.role.attrib = role.attrib
+# doc:Meta-information for a block element.
+blockinfo = element blockinfo { blockinfo.attlist, info.class+ }
+# end of blockinfo.element
+blockinfo.attlist &=
+  common.attrib, blockinfo.role.attrib, local.blockinfo.attrib
+# end of blockinfo.attlist
+
+# end of blockinfo.module
+
+# ......................................................................
+
+# Compound (section-ish) elements ......................................
+
+# Message set ......................
+local.msgset.attrib = empty
+msgset.role.attrib = role.attrib
+# doc:A detailed set of messages, usually error messages.
+msgset =
+  element msgset {
+    msgset.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    (msgentry+ | simplemsgentry+)
+  }
+# end of msgset.element
+msgset.attlist &= common.attrib, msgset.role.attrib, local.msgset.attrib
+# end of msgset.attlist
+
+# end of msgset.module
+local.msgentry.attrib = empty
+msgentry.role.attrib = role.attrib
+# doc:A wrapper for an entry in a message set.
+msgentry =
+  element msgentry { msgentry.attlist, msg+, msginfo?, msgexplan* }
+# end of msgentry.element
+msgentry.attlist &=
+  common.attrib, msgentry.role.attrib, local.msgentry.attrib
+# end of msgentry.attlist
+
+# end of msgentry.module
+local.simplemsgentry.attrib = empty
+simplemsgentry.role.attrib = role.attrib
+# doc:A wrapper for a simpler entry in a message set.
+simplemsgentry =
+  element simplemsgentry { simplemsgentry.attlist, msgtext, msgexplan+ }
+# end of simplemsgentry.element
+simplemsgentry.attlist &=
+  attribute audience { text }?,
+  attribute level { text }?,
+  attribute origin { text }?,
+  common.attrib,
+  simplemsgentry.role.attrib,
+  local.simplemsgentry.attrib
+# end of simplemsgentry.attlist
+
+# end of simplemsgentry.module
+local.msg.attrib = empty
+msg.role.attrib = role.attrib
+# doc:A message in a message set.
+msg = element msg { msg.attlist, title?, msgmain, (msgsub | msgrel)* }
+# end of msg.element
+msg.attlist &= common.attrib, msg.role.attrib, local.msg.attrib
+# end of msg.attlist
+
+# end of msg.module
+local.msgmain.attrib = empty
+msgmain.role.attrib = role.attrib
+# doc:The primary component of a message in a message set.
+msgmain = element msgmain { msgmain.attlist, title?, msgtext }
+# end of msgmain.element
+msgmain.attlist &=
+  common.attrib, msgmain.role.attrib, local.msgmain.attrib
+# end of msgmain.attlist
+
+# end of msgmain.module
+local.msgsub.attrib = empty
+msgsub.role.attrib = role.attrib
+# doc:A subcomponent of a message in a message set.
+msgsub = element msgsub { msgsub.attlist, title?, msgtext }
+# end of msgsub.element
+msgsub.attlist &= common.attrib, msgsub.role.attrib, local.msgsub.attrib
+# end of msgsub.attlist
+
+# end of msgsub.module
+local.msgrel.attrib = empty
+msgrel.role.attrib = role.attrib
+# doc:A related component of a message in a message set.
+msgrel = element msgrel { msgrel.attlist, title?, msgtext }
+# end of msgrel.element
+msgrel.attlist &= common.attrib, msgrel.role.attrib, local.msgrel.attrib
+# end of msgrel.attlist
+
+# end of msgrel.module
+
+# MsgText (defined in the Inlines section, below)
+local.msginfo.attrib = empty
+msginfo.role.attrib = role.attrib
+# doc:Information about a message in a message set.
+msginfo =
+  element msginfo { msginfo.attlist, (msglevel | msgorig | msgaud)* }
+# end of msginfo.element
+msginfo.attlist &=
+  common.attrib, msginfo.role.attrib, local.msginfo.attrib
+# end of msginfo.attlist
+
+# end of msginfo.module
+local.msglevel.attrib = empty
+msglevel.role.attrib = role.attrib
+# doc:The level of importance or severity of a message in a message set.
+msglevel = element msglevel { msglevel.attlist, smallcptr.char.mix* }
+# end of msglevel.element
+msglevel.attlist &=
+  common.attrib, msglevel.role.attrib, local.msglevel.attrib
+# end of msglevel.attlist
+
+# end of msglevel.module
+local.msgorig.attrib = empty
+msgorig.role.attrib = role.attrib
+# doc:The origin of a message in a message set.
+msgorig = element msgorig { msgorig.attlist, smallcptr.char.mix* }
+# end of msgorig.element
+msgorig.attlist &=
+  common.attrib, msgorig.role.attrib, local.msgorig.attrib
+# end of msgorig.attlist
+
+# end of msgorig.module
+local.msgaud.attrib = empty
+msgaud.role.attrib = role.attrib
+# doc:The audience to which a message in a message set is relevant.
+msgaud = element msgaud { msgaud.attlist, para.char.mix* }
+# end of msgaud.element
+msgaud.attlist &= common.attrib, msgaud.role.attrib, local.msgaud.attrib
+# end of msgaud.attlist
+
+# end of msgaud.module
+local.msgexplan.attrib = empty
+msgexplan.role.attrib = role.attrib
+# doc:Explanatory material relating to a message in a message set.
+msgexplan =
+  element msgexplan { msgexplan.attlist, title?, component.mix+ }
+# end of msgexplan.element
+msgexplan.attlist &=
+  common.attrib, msgexplan.role.attrib, local.msgexplan.attrib
+# end of msgexplan.attlist
+
+# end of msgexplan.module
+
+# end of msgset.content.module
+local.task.attrib = empty
+task.role.attrib = role.attrib
+# doc:A task to be completed.
+task =
+  element task {
+    task.attlist,
+    blockinfo?,
+    ndxterm.class*,
+    formalobject.title.content,
+    tasksummary?,
+    taskprerequisites?,
+    procedure,
+    example*,
+    taskrelated?
+  }
+# end of task.element
+task.attlist &= common.attrib, task.role.attrib, local.task.attrib
+# end of task.attlist
+
+# end of task.module
+local.tasksummary.attrib = empty
+tasksummary.role.attrib = role.attrib
+# doc:A summary of a task.
+tasksummary =
+  element tasksummary {
+    tasksummary.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    component.mix+
+  }
+# end of tasksummary.element
+tasksummary.attlist &=
+  common.attrib, tasksummary.role.attrib, local.tasksummary.attrib
+# end of tasksummary.attlist
+
+# end of tasksummary.module
+local.taskprerequisites.attrib = empty
+taskprerequisites.role.attrib = role.attrib
+# doc:The prerequisites for a task.
+taskprerequisites =
+  element taskprerequisites {
+    taskprerequisites.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    component.mix+
+  }
+# end of taskprerequisites.element
+taskprerequisites.attlist &=
+  common.attrib,
+  taskprerequisites.role.attrib,
+  local.taskprerequisites.attrib
+# end of taskprerequisites.attlist
+
+# end of taskprerequisites.module
+local.taskrelated.attrib = empty
+taskrelated.role.attrib = role.attrib
+# doc:Information related to a task.
+taskrelated =
+  element taskrelated {
+    taskrelated.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    component.mix+
+  }
+# end of taskrelated.element
+taskrelated.attlist &=
+  common.attrib, taskrelated.role.attrib, local.taskrelated.attrib
+# end of taskrelated.attlist
+
+# end of taskrelated.module
+
+# end of task.content.module
+
+# QandASet ........................
+local.qandaset.attrib = empty
+qandaset.role.attrib = role.attrib
+# doc:A question-and-answer set.
+qandaset =
+  element qandaset {
+    qandaset.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    qandaset.mix*,
+    (qandadiv+ | qandaentry+)
+  }
+# end of qandaset.element
+qandaset.attlist &=
+  attribute defaultlabel { "qanda" | "number" | "none" }?,
+  common.attrib,
+  qandaset.role.attrib,
+  local.qandaset.attrib
+# end of qandaset.attlist
+
+# end of qandaset.module
+local.qandadiv.attrib = empty
+qandadiv.role.attrib = role.attrib
+# doc:A titled division in a QandASet.
+qandadiv =
+  element qandadiv {
+    qandadiv.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    qandaset.mix*,
+    (qandadiv+ | qandaentry+)
+  }
+# end of qandadiv.element
+qandadiv.attlist &=
+  common.attrib, qandadiv.role.attrib, local.qandadiv.attrib
+# end of qandadiv.attlist
+
+# end of qandadiv.module
+local.qandaentry.attrib = empty
+qandaentry.role.attrib = role.attrib
+# doc:A question/answer set within a QandASet.
+qandaentry =
+  element qandaentry {
+    qandaentry.attlist, blockinfo?, revhistory?, question, answer*
+  }
+# end of qandaentry.element
+qandaentry.attlist &=
+  common.attrib, qandaentry.role.attrib, local.qandaentry.attrib
+# end of qandaentry.attlist
+
+# end of qandaentry.module
+local.question.attrib = empty
+question.role.attrib = role.attrib
+# doc:A question in a QandASet.
+question = element question { question.attlist, label?, qandaset.mix+ }
+# end of question.element
+question.attlist &=
+  common.attrib, question.role.attrib, local.question.attrib
+# end of question.attlist
+
+# end of question.module
+local.answer.attrib = empty
+answer.role.attrib = role.attrib
+# doc:An answer to a question posed in a QandASet.
+answer =
+  element answer { answer.attlist, label?, qandaset.mix*, qandaentry* }
+# end of answer.element
+answer.attlist &= common.attrib, answer.role.attrib, local.answer.attrib
+# end of answer.attlist
+
+# end of answer.module
+local.label.attrib = empty
+label.role.attrib = role.attrib
+# doc:A label on a Question or Answer.
+label = element label { label.attlist, word.char.mix* }
+# end of label.element
+label.attlist &= common.attrib, label.role.attrib, local.label.attrib
+# end of label.attlist
+
+# end of label.module
+
+# end of qandaset.content.module
+
+# Procedure ........................
+local.procedure.attrib = empty
+procedure.role.attrib = role.attrib
+# doc:A list of operations to be performed in a well-defined sequence.
+procedure =
+  element procedure {
+    procedure.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    component.mix*,
+    step+
+  }
+# end of procedure.element
+procedure.attlist &=
+  common.attrib, procedure.role.attrib, local.procedure.attrib
+# end of procedure.attlist
+
+# end of procedure.module
+local.step.attrib = empty
+step.role.attrib = role.attrib
+# doc:A unit of action in a procedure.
+step =
+  element step {
+    step.attlist,
+    title?,
+    ((component.mix+,
+      ((substeps | stepalternatives), component.mix*)?)
+     | ((substeps | stepalternatives), component.mix*))
+  }
+# end of step.element
+
+# Performance: Whether the Step must be performed
+
+# not #REQUIRED!
+step.attlist &=
+  [ a:defaultValue = "required" ]
+  attribute performance { "optional" | "required" }?,
+  common.attrib,
+  step.role.attrib,
+  local.step.attrib
+# end of step.attlist
+
+# end of step.module
+local.substeps.attrib = empty
+substeps.role.attrib = role.attrib
+# doc:A wrapper for steps that occur within steps in a procedure.
+substeps = element substeps { substeps.attlist, step+ }
+# end of substeps.element
+
+# Performance: whether entire set of substeps must be performed
+
+# not #REQUIRED!
+substeps.attlist &=
+  [ a:defaultValue = "required" ]
+  attribute performance { "optional" | "required" }?,
+  common.attrib,
+  substeps.role.attrib,
+  local.substeps.attrib
+# end of substeps.attlist
+
+# end of substeps.module
+local.stepalternatives.attrib = empty
+stepalternatives.role.attrib = role.attrib
+# doc:Alternative steps in a procedure.
+stepalternatives =
+  element stepalternatives { stepalternatives.attlist, step+ }
+# end of stepalternatives.element
+
+# Performance: Whether (one of) the alternatives must be performed
+
+# not #REQUIRED!
+stepalternatives.attlist &=
+  [ a:defaultValue = "required" ]
+  attribute performance { "optional" | "required" }?,
+  common.attrib,
+  stepalternatives.role.attrib,
+  local.stepalternatives.attrib
+# end of stepalternatives.attlist
+
+# end of stepalternatives.module
+
+# end of procedure.content.module
+
+# Sidebar ..........................
+local.sidebarinfo.attrib = empty
+sidebarinfo.role.attrib = role.attrib
+# doc:Meta-information for a Sidebar.
+sidebarinfo = element sidebarinfo { sidebarinfo.attlist, info.class+ }
+# end of sidebarinfo.element
+sidebarinfo.attlist &=
+  common.attrib, sidebarinfo.role.attrib, local.sidebarinfo.attrib
+# end of sidebarinfo.attlist
+
+# end of sidebarinfo.module
+local.sidebar.attrib = empty
+sidebar.role.attrib = role.attrib
+# doc:A portion of a document that is isolated from the main narrative flow.
+sidebar =
+  element sidebar {
+    sidebar.attlist,
+    sidebarinfo?,
+    formalobject.title.content?,
+    sidebar.mix+
+  }
+# end of sidebar.element
+sidebar.attlist &=
+  common.attrib, sidebar.role.attrib, local.sidebar.attrib
+# end of sidebar.attlist
+
+# end of sidebar.module
+
+# end of sidebar.content.model
+
+# ......................................................................
+
+# Paragraph-related elements ...........................................
+local.abstract.attrib = empty
+abstract.role.attrib = role.attrib
+# doc:A summary.
+abstract = element abstract { abstract.attlist, title?, para.class+ }
+# end of abstract.element
+abstract.attlist &=
+  common.attrib, abstract.role.attrib, local.abstract.attrib
+# end of abstract.attlist
+
+# end of abstract.module
+local.authorblurb.attrib = empty
+authorblurb.role.attrib = role.attrib
+# doc:A short description or note about an author.
+authorblurb =
+  element authorblurb { authorblurb.attlist, title?, para.class+ }
+# end of authorblurb.element
+authorblurb.attlist &=
+  common.attrib, authorblurb.role.attrib, local.authorblurb.attrib
+# end of authorblurb.attlist
+
+# end of authorblurb.module
+local.personblurb.attrib = empty
+personblurb.role.attrib = role.attrib
+# doc:A short description or note about a person.
+personblurb =
+  element personblurb { personblurb.attlist, title?, para.class+ }
+# end of personblurb.element
+personblurb.attlist &=
+  common.attrib, personblurb.role.attrib, local.personblurb.attrib
+# end of personblurb.attlist
+
+# end of personblurb.module
+local.blockquote.attrib = empty
+blockquote.role.attrib = role.attrib
+# doc:A quotation set off from the main text.
+blockquote =
+  element blockquote {
+    blockquote.attlist, blockinfo?, title?, attribution?, component.mix+
+  }
+# end of blockquote.element
+blockquote.attlist &=
+  common.attrib, blockquote.role.attrib, local.blockquote.attrib
+# end of blockquote.attlist
+
+# end of blockquote.module
+local.attribution.attrib = empty
+attribution.role.attrib = role.attrib
+# doc:The source of a block quote or epigraph.
+attribution =
+  element attribution { attribution.attlist, para.char.mix* }
+# end of attribution.element
+attribution.attlist &=
+  common.attrib, attribution.role.attrib, local.attribution.attrib
+# end of attribution.attlist
+
+# end of attribution.module
+local.bridgehead.attrib = empty
+bridgehead.role.attrib = role.attrib
+# doc:A free-floating heading.
+bridgehead = element bridgehead { bridgehead.attlist, title.char.mix* }
+# end of bridgehead.element
+
+# Renderas: Indicates the format in which the BridgeHead
+# should appear
+bridgehead.attlist &=
+  attribute renderas {
+    "other" | "sect1" | "sect2" | "sect3" | "sect4" | "sect5"
+  }?,
+  common.attrib,
+  bridgehead.role.attrib,
+  local.bridgehead.attrib
+# end of bridgehead.attlist
+
+# end of bridgehead.module
+local.remark.attrib = empty
+remark.role.attrib = role.attrib
+# doc:A remark (or comment) intended for presentation in a draft manuscript.
+remark = element remark { remark.attlist, para.char.mix* }
+# end of remark.element
+remark.attlist &= common.attrib, remark.role.attrib, local.remark.attrib
+# end of remark.attlist
+
+# end of remark.module
+local.epigraph.attrib = empty
+epigraph.role.attrib = role.attrib
+# doc:A short inscription at the beginning of a document or component.
+epigraph =
+  element epigraph {
+    epigraph.attlist, attribution?, (para.class | literallayout)+
+  }
+# end of epigraph.element
+epigraph.attlist &=
+  common.attrib, epigraph.role.attrib, local.epigraph.attrib
+# end of epigraph.attlist
+
+# Attribution (defined above)
+
+# end of epigraph.module
+local.footnote.attrib = empty
+footnote.role.attrib = role.attrib
+# doc:A footnote.
+footnote = element footnote { footnote.attlist, footnote.mix+ }
+# end of footnote.element
+footnote.attlist &=
+  label.attrib,
+  common.attrib,
+  footnote.role.attrib,
+  local.footnote.attrib
+# end of footnote.attlist
+
+# end of footnote.module
+local.highlights.attrib = empty
+highlights.role.attrib = role.attrib
+# doc:A summary of the main points of the discussed component.
+highlights = element highlights { highlights.attlist, highlights.mix+ }
+# end of highlights.element
+highlights.attlist &=
+  common.attrib, highlights.role.attrib, local.highlights.attrib
+# end of highlights.attlist
+
+# end of highlights.module
+local.formalpara.attrib = empty
+formalpara.role.attrib = role.attrib
+# doc:A paragraph with a title.
+formalpara =
+  element formalpara { formalpara.attlist, title, ndxterm.class*, para }
+# end of formalpara.element
+formalpara.attlist &=
+  common.attrib, formalpara.role.attrib, local.formalpara.attrib
+# end of formalpara.attlist
+
+# end of formalpara.module
+local.para.attrib = empty
+para.role.attrib = role.attrib
+# doc:A paragraph.
+para = element para { para.attlist, (para.char.mix | para.mix)* }
+# end of para.element
+para.attlist &= common.attrib, para.role.attrib, local.para.attrib
+# end of para.attlist
+
+# end of para.module
+local.simpara.attrib = empty
+simpara.role.attrib = role.attrib
+# doc:A paragraph that contains only text and inline markup, no block elements.
+simpara = element simpara { simpara.attlist, para.char.mix* }
+# end of simpara.element
+simpara.attlist &=
+  common.attrib, simpara.role.attrib, local.simpara.attrib
+# end of simpara.attlist
+
+# end of simpara.module
+local.admon.attrib = empty
+admon.role.attrib = role.attrib
+# doc:A note of caution.
+caution = element caution { caution.attlist, title?, admon.mix+ }
+# end of caution.element
+caution.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
+# end of caution.attlist
+
+# doc:An admonition set off from the text.
+important = element important { important.attlist, title?, admon.mix+ }
+# end of important.element
+important.attlist &=
+  common.attrib, admon.role.attrib, local.admon.attrib
+# end of important.attlist
+
+# doc:A message set off from the text.
+note = element note { note.attlist, title?, admon.mix+ }
+# end of note.element
+note.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
+# end of note.attlist
+
+# doc:A suggestion to the user, set off from the text.
+tip = element tip { tip.attlist, title?, admon.mix+ }
+# end of tip.element
+tip.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
+# end of tip.attlist
+
+# doc:An admonition set off from the text.
+warning = element warning { warning.attlist, title?, admon.mix+ }
+# end of warning.element
+warning.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
+# end of warning.attlist
+
+# end of admon.module
+
+# ......................................................................
+
+# Lists ................................................................
+
+# GlossList ........................
+local.glosslist.attrib = empty
+glosslist.role.attrib = role.attrib
+# doc:A wrapper for a set of GlossEntrys.
+glosslist =
+  element glosslist {
+    glosslist.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    glossentry+
+  }
+# end of glosslist.element
+glosslist.attlist &=
+  common.attrib, glosslist.role.attrib, local.glosslist.attrib
+# end of glosslist.attlist
+
+# end of glosslist.module
+local.glossentry.attrib = empty
+glossentry.role.attrib = role.attrib
+# doc:An entry in a Glossary or GlossList.
+glossentry =
+  element glossentry {
+    glossentry.attlist,
+    glossterm,
+    acronym?,
+    abbrev?,
+    ndxterm.class*,
+    revhistory?,
+    (glosssee | glossdef+)
+  }
+# end of glossentry.element
+
+# SortAs: String by which the GlossEntry is to be sorted
+# (alphabetized) in lieu of its proper content
+glossentry.attlist &=
+  attribute sortas { text }?,
+  common.attrib,
+  glossentry.role.attrib,
+  local.glossentry.attrib
+# end of glossentry.attlist
+
+# end of glossentry.module
+
+# GlossTerm (defined in the Inlines section, below)
+local.glossdef.attrib = empty
+glossdef.role.attrib = role.attrib
+# doc:A definition in a GlossEntry.
+glossdef =
+  element glossdef { glossdef.attlist, glossdef.mix+, glossseealso* }
+# end of glossdef.element
+
+# Subject: List of subjects; keywords for the definition
+glossdef.attlist &=
+  attribute subject { text }?,
+  common.attrib,
+  glossdef.role.attrib,
+  local.glossdef.attrib
+# end of glossdef.attlist
+
+# end of glossdef.module
+local.glosssee.attrib = empty
+glosssee.role.attrib = role.attrib
+# doc:A cross-reference from one GlossEntry to another.
+glosssee = element glosssee { glosssee.attlist, para.char.mix* }
+# end of glosssee.element
+
+# OtherTerm: Reference to the GlossEntry whose GlossTerm
+# should be displayed at the point of the GlossSee
+glosssee.attlist &=
+  attribute otherterm { xsd:IDREF }?,
+  common.attrib,
+  glosssee.role.attrib,
+  local.glosssee.attrib
+# end of glosssee.attlist
+
+# end of glosssee.module
+local.glossseealso.attrib = empty
+glossseealso.role.attrib = role.attrib
+# doc:A cross-reference from one GlossEntry to another.
+glossseealso =
+  element glossseealso { glossseealso.attlist, para.char.mix* }
+# end of glossseealso.element
+
+# OtherTerm: Reference to the GlossEntry whose GlossTerm
+# should be displayed at the point of the GlossSeeAlso
+glossseealso.attlist &=
+  attribute otherterm { xsd:IDREF }?,
+  common.attrib,
+  glossseealso.role.attrib,
+  local.glossseealso.attrib
+# end of glossseealso.attlist
+
+# end of glossseealso.module
+
+# end of glossentry.content.module
+
+# ItemizedList and OrderedList .....
+local.itemizedlist.attrib = empty
+itemizedlist.role.attrib = role.attrib
+# doc:A list in which each entry is marked with a bullet or other dingbat.
+itemizedlist =
+  element itemizedlist {
+    itemizedlist.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    listpreamble.mix*,
+    listitem+
+  }
+# 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
+itemizedlist.attlist &=
+  attribute spacing { "normal" | "compact" }?,
+  mark.attrib,
+  common.attrib,
+  itemizedlist.role.attrib,
+  local.itemizedlist.attrib
+# end of itemizedlist.attlist
+
+# end of itemizedlist.module
+local.orderedlist.attrib = empty
+orderedlist.role.attrib = role.attrib
+# doc:A list in which each entry is marked with a sequentially incremented label.
+orderedlist =
+  element orderedlist {
+    orderedlist.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    listpreamble.mix*,
+    listitem+
+  }
+# 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
+orderedlist.attlist &=
+  attribute numeration {
+    "arabic" | "upperalpha" | "loweralpha" | "upperroman" | "lowerroman"
+  }?,
+  [ a:defaultValue = "ignore" ]
+  attribute inheritnum { "inherit" | "ignore" }?,
+  [ a:defaultValue = "restarts" ]
+  attribute continuation { "continues" | "restarts" }?,
+  attribute spacing { "normal" | "compact" }?,
+  common.attrib,
+  orderedlist.role.attrib,
+  local.orderedlist.attrib
+# end of orderedlist.attlist
+
+# end of orderedlist.module
+local.listitem.attrib = empty
+listitem.role.attrib = role.attrib
+# doc:A wrapper for the elements of a list item.
+listitem = element listitem { listitem.attlist, component.mix+ }
+# 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
+listitem.attlist &=
+  attribute override { text }?,
+  common.attrib,
+  listitem.role.attrib,
+  local.listitem.attrib
+# end of listitem.attlist
+
+# end of listitem.module
+
+# SegmentedList ....................
+local.segmentedlist.attrib = empty
+segmentedlist.role.attrib = role.attrib
+# doc:A segmented list, a list of sets of elements.
+segmentedlist =
+  element segmentedlist {
+    segmentedlist.attlist,
+    formalobject.title.content?,
+    segtitle+,
+    seglistitem+
+  }
+# end of segmentedlist.element
+segmentedlist.attlist &=
+  common.attrib, segmentedlist.role.attrib, local.segmentedlist.attrib
+# end of segmentedlist.attlist
+
+# end of segmentedlist.module
+local.segtitle.attrib = empty
+segtitle.role.attrib = role.attrib
+# doc:The title of an element of a list item in a segmented list.
+segtitle = element segtitle { segtitle.attlist, title.char.mix* }
+# end of segtitle.element
+segtitle.attlist &=
+  common.attrib, segtitle.role.attrib, local.segtitle.attrib
+# end of segtitle.attlist
+
+# end of segtitle.module
+local.seglistitem.attrib = empty
+seglistitem.role.attrib = role.attrib
+# doc:A list item in a segmented list.
+seglistitem = element seglistitem { seglistitem.attlist, seg+ }
+# end of seglistitem.element
+seglistitem.attlist &=
+  common.attrib, seglistitem.role.attrib, local.seglistitem.attrib
+# end of seglistitem.attlist
+
+# end of seglistitem.module
+local.seg.attrib = empty
+seg.role.attrib = role.attrib
+# doc:An element of a list item in a segmented list.
+seg = element seg { seg.attlist, para.char.mix* }
+# end of seg.element
+seg.attlist &= common.attrib, seg.role.attrib, local.seg.attrib
+# end of seg.attlist
+
+# end of seg.module
+
+# end of segmentedlist.content.module
+
+# SimpleList .......................
+local.simplelist.attrib = empty
+simplelist.role.attrib = role.attrib
+# doc:An undecorated list of single words or short phrases.
+simplelist = element simplelist { simplelist.attlist, member+ }
+# 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.
+simplelist.attlist &=
+  attribute columns { text }?,
+  [ a:defaultValue = "vert" ]
+  attribute type { "inline" | "vert" | "horiz" }?,
+  common.attrib,
+  simplelist.role.attrib,
+  local.simplelist.attrib
+# end of simplelist.attlist
+
+# end of simplelist.module
+local.member.attrib = empty
+member.role.attrib = role.attrib
+# doc:An element of a simple list.
+member = element member { member.attlist, para.char.mix* }
+# end of member.element
+member.attlist &= common.attrib, member.role.attrib, local.member.attrib
+# end of member.attlist
+
+# end of member.module
+
+# end of simplelist.content.module
+
+# VariableList .....................
+local.variablelist.attrib = empty
+variablelist.role.attrib = role.attrib
+# doc:A list in which each entry is composed of a set of one or more terms and an associated description.
+variablelist =
+  element variablelist {
+    variablelist.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    listpreamble.mix*,
+    varlistentry+
+  }
+# 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.
+variablelist.attlist &=
+  attribute termlength { text }?,
+  attribute spacing { "normal" | "compact" }?,
+  common.attrib,
+  variablelist.role.attrib,
+  local.variablelist.attrib
+# end of variablelist.attlist
+
+# end of variablelist.module
+local.varlistentry.attrib = empty
+varlistentry.role.attrib = role.attrib
+# doc:A wrapper for a set of terms and the associated description in a variable list.
+varlistentry =
+  element varlistentry { varlistentry.attlist, term+, listitem }
+# end of varlistentry.element
+varlistentry.attlist &=
+  common.attrib, varlistentry.role.attrib, local.varlistentry.attrib
+# end of varlistentry.attlist
+
+# end of varlistentry.module
+local.term.attrib = empty
+term.role.attrib = role.attrib
+# doc:The word or phrase being defined or described in a variable list.
+term = element term { term.attlist, para.char.mix* }
+# end of term.element
+term.attlist &= common.attrib, term.role.attrib, local.term.attrib
+# end of term.attlist
+
+# end of term.module
+
+# ListItem (defined above)
+
+# end of variablelist.content.module
+
+# CalloutList ......................
+local.calloutlist.attrib = empty
+calloutlist.role.attrib = role.attrib
+# doc:A list of Callouts.
+calloutlist =
+  element calloutlist {
+    calloutlist.attlist, formalobject.title.content?, callout+
+  }
+# end of calloutlist.element
+calloutlist.attlist &=
+  common.attrib, calloutlist.role.attrib, local.calloutlist.attrib
+# end of calloutlist.attlist
+
+# end of calloutlist.module
+local.callout.attrib = empty
+callout.role.attrib = role.attrib
+# doc:A &ldquo;called out&rdquo; description of a marked Area.
+callout = element callout { callout.attlist, component.mix+ }
+# end of callout.element
+
+# AreaRefs: IDs of one or more Areas or AreaSets described
+# by this Callout
+callout.attlist &=
+  attribute arearefs { xsd:IDREFS },
+  common.attrib,
+  callout.role.attrib,
+  local.callout.attrib
+# end of callout.attlist
+
+# end of callout.module
+
+# end of calloutlist.content.module
+
+# ......................................................................
+
+# Objects ..............................................................
+
+# Examples etc. ....................
+local.example.attrib = empty
+example.role.attrib = role.attrib
+# doc:A formal example, with a title.
+example =
+  element example {
+    example.attlist,
+    blockinfo?,
+    formalobject.title.content,
+    example.mix+
+  }
+# end of example.element
+example.attlist &=
+  attribute floatstyle { text }?,
+  label.attrib,
+  width.attrib,
+  common.attrib,
+  example.role.attrib,
+  local.example.attrib
+# end of example.attlist
+
+# end of example.module
+local.informalexample.attrib = empty
+informalexample.role.attrib = role.attrib
+# doc:A displayed example without a title.
+informalexample =
+  element informalexample {
+    informalexample.attlist, blockinfo?, example.mix+
+  }
+# end of informalexample.element
+informalexample.attlist &=
+  attribute floatstyle { text }?,
+  width.attrib,
+  common.attrib,
+  informalexample.role.attrib,
+  local.informalexample.attrib
+# end of informalexample.attlist
+
+# end of informalexample.module
+local.programlistingco.attrib = empty
+programlistingco.role.attrib = role.attrib
+# doc:A program listing with associated areas used in callouts.
+programlistingco =
+  element programlistingco {
+    programlistingco.attlist, areaspec, programlisting, calloutlist*
+  }
+# end of programlistingco.element
+programlistingco.attlist &=
+  common.attrib,
+  programlistingco.role.attrib,
+  local.programlistingco.attrib
+# end of programlistingco.attlist
+
+# CalloutList (defined above in Lists)
+
+# end of informalexample.module
+local.areaspec.attrib = empty
+areaspec.role.attrib = role.attrib
+# doc:A collection of regions in a graphic or code example.
+areaspec = element areaspec { areaspec.attlist, (area | areaset)+ }
+# 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
+areaspec.attlist &=
+  attribute units {
+    "calspair" | "linecolumn" | "linerange" | "linecolumnpair" | "other"
+  }?,
+  attribute otherunits { xsd:NMTOKEN }?,
+  common.attrib,
+  areaspec.role.attrib,
+  local.areaspec.attrib
+# end of areaspec.attlist
+
+# end of areaspec.module
+local.area.attrib = empty
+area.role.attrib = role.attrib
+# doc:A region defined for a Callout in a graphic or code example.
+area = element area { area.attlist, empty }
+# 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
+area.attlist &=
+  label.attrib,
+  linkends.attrib,
+  attribute units {
+    "calspair" | "linecolumn" | "linerange" | "linecolumnpair" | "other"
+  }?,
+  attribute otherunits { xsd:NMTOKEN }?,
+  attribute coords { text },
+  idreq.common.attrib,
+  area.role.attrib,
+  local.area.attrib
+# end of area.attlist
+
+# end of area.module
+local.areaset.attrib = empty
+areaset.role.attrib = role.attrib
+# doc:A set of related areas in a graphic or code example.
+areaset = element areaset { areaset.attlist, area+ }
+# 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
+areaset.attlist &=
+  label.attrib,
+  attribute units {
+    "calspair" | "linecolumn" | "linerange" | "linecolumnpair" | "other"
+  }?,
+  attribute otherunits { xsd:NMTOKEN }?,
+  attribute coords { text },
+  idreq.common.attrib,
+  areaset.role.attrib,
+  local.areaset.attrib
+# end of areaset.attlist
+
+# end of areaset.module
+
+# end of areaspec.content.module
+local.programlisting.attrib = empty
+programlisting.role.attrib = role.attrib
+# doc:A literal listing of all or part of a program.
+programlisting =
+  element programlisting {
+    programlisting.attlist,
+    (para.char.mix | co | coref | lineannotation | textobject)*
+  }
+# end of programlisting.element
+programlisting.attlist &=
+  width.attrib,
+  linespecific.attrib,
+  common.attrib,
+  programlisting.role.attrib,
+  local.programlisting.attrib
+# end of programlisting.attlist
+
+# end of programlisting.module
+local.literallayout.attrib = empty
+literallayout.role.attrib = role.attrib
+# doc:A block of text in which line breaks and white space are to be reproduced faithfully.
+literallayout =
+  element literallayout {
+    literallayout.attlist,
+    (para.char.mix | co | coref | textobject | lineannotation)*
+  }
+# end of literallayout.element
+literallayout.attlist &=
+  width.attrib,
+  linespecific.attrib,
+  [ a:defaultValue = "normal" ]
+  attribute class { "monospaced" | "normal" }?,
+  common.attrib,
+  literallayout.role.attrib,
+  local.literallayout.attrib
+# end of literallayout.attlist
+
+# LineAnnotation (defined in the Inlines section, below)
+
+# end of literallayout.module
+local.screenco.attrib = empty
+screenco.role.attrib = role.attrib
+# doc:A screen with associated areas used in callouts.
+screenco =
+  element screenco { screenco.attlist, areaspec, screen, calloutlist* }
+# end of screenco.element
+screenco.attlist &=
+  common.attrib, screenco.role.attrib, local.screenco.attrib
+# end of screenco.attlist
+
+# AreaSpec (defined above)
+
+# CalloutList (defined above in Lists)
+
+# end of screenco.module
+local.screen.attrib = empty
+screen.role.attrib = role.attrib
+# doc:Text that a user sees or might see on a computer screen.
+screen =
+  element screen {
+    screen.attlist,
+    (para.char.mix | co | coref | textobject | lineannotation)*
+  }
+# end of screen.element
+screen.attlist &=
+  width.attrib,
+  linespecific.attrib,
+  common.attrib,
+  screen.role.attrib,
+  local.screen.attrib
+# end of screen.attlist
+
+# end of screen.module
+local.screenshot.attrib = empty
+screenshot.role.attrib = role.attrib
+# doc:A representation of what the user sees or might see on a computer screen.
+screenshot =
+  element screenshot {
+    screenshot.attlist,
+    screeninfo?,
+    (graphic | graphicco | mediaobject | mediaobjectco)
+  }
+# end of screenshot.element
+screenshot.attlist &=
+  common.attrib, screenshot.role.attrib, local.screenshot.attrib
+# end of screenshot.attlist
+
+# end of screenshot.module
+local.screeninfo.attrib = empty
+screeninfo.role.attrib = role.attrib
+# doc:Information about how a screen shot was produced.
+screeninfo = element screeninfo { screeninfo.attlist, para.char.mix* }
+# end of screeninfo.element
+screeninfo.attlist &=
+  common.attrib, screeninfo.role.attrib, local.screeninfo.attrib
+# end of screeninfo.attlist
+
+# end of screeninfo.module
+
+# end of screenshot.content.module
+
+# Figures etc. .....................
+local.figure.attrib = empty
+figure.role.attrib = role.attrib
+# doc:A formal figure, generally an illustration, with a title.
+figure =
+  element figure {
+    figure.attlist,
+    blockinfo?,
+    formalobject.title.content,
+    (figure.mix | link.char.class)+
+  }
+# 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)
+figure.attlist &=
+  [ a:defaultValue = "0" ] attribute float { yesorno.attvals }?,
+  attribute floatstyle { text }?,
+  attribute pgwide { yesorno.attvals }?,
+  label.attrib,
+  common.attrib,
+  figure.role.attrib,
+  local.figure.attrib
+# end of figure.attlist
+
+# end of figure.module
+local.informalfigure.attrib = empty
+informalfigure.role.attrib = role.attrib
+# doc:A untitled figure.
+informalfigure =
+  element informalfigure {
+    informalfigure.attlist, blockinfo?, (figure.mix | link.char.class)+
+  }
+# 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)
+informalfigure.attlist &=
+  [ a:defaultValue = "0" ] attribute float { yesorno.attvals }?,
+  attribute floatstyle { text }?,
+  attribute pgwide { yesorno.attvals }?,
+  label.attrib,
+  common.attrib,
+  informalfigure.role.attrib,
+  local.informalfigure.attrib
+# end of informalfigure.attlist
+
+# end of informalfigure.module
+local.graphicco.attrib = empty
+graphicco.role.attrib = role.attrib
+# doc:A graphic that contains callout areas.
+graphicco =
+  element graphicco {
+    graphicco.attlist, areaspec, graphic, calloutlist*
+  }
+# end of graphicco.element
+graphicco.attlist &=
+  common.attrib, graphicco.role.attrib, local.graphicco.attrib
+# 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).
+local.graphic.attrib = empty
+graphic.role.attrib = role.attrib
+# doc:A displayed graphical object (not an inline).
+graphic = element graphic { graphic.attlist, empty }
+# end of graphic.element
+graphic.attlist &=
+  graphics.attrib,
+  common.attrib,
+  graphic.role.attrib,
+  local.graphic.attrib
+# end of graphic.attlist
+
+# end of graphic.module
+local.inlinegraphic.attrib = empty
+inlinegraphic.role.attrib = role.attrib
+# doc:An object containing or pointing to graphical data that will be rendered inline.
+inlinegraphic = element inlinegraphic { inlinegraphic.attlist, empty }
+# end of inlinegraphic.element
+inlinegraphic.attlist &=
+  graphics.attrib,
+  common.attrib,
+  inlinegraphic.role.attrib,
+  local.inlinegraphic.attrib
+# end of inlinegraphic.attlist
+
+# end of inlinegraphic.module
+local.mediaobject.attrib = empty
+mediaobject.role.attrib = role.attrib
+# doc:A displayed media object (video, audio, image, etc.).
+mediaobject =
+  element mediaobject {
+    mediaobject.attlist, objectinfo?, mediaobject.mix+, caption?
+  }
+# end of mediaobject.element
+mediaobject.attlist &=
+  common.attrib, mediaobject.role.attrib, local.mediaobject.attrib
+# end of mediaobject.attlist
+
+# end of mediaobject.module
+local.inlinemediaobject.attrib = empty
+inlinemediaobject.role.attrib = role.attrib
+# doc:An inline media object (video, audio, image, and so on).
+inlinemediaobject =
+  element inlinemediaobject {
+    inlinemediaobject.attlist, objectinfo?, mediaobject.mix+
+  }
+# end of inlinemediaobject.element
+inlinemediaobject.attlist &=
+  common.attrib,
+  inlinemediaobject.role.attrib,
+  local.inlinemediaobject.attrib
+# end of inlinemediaobject.attlist
+
+# end of inlinemediaobject.module
+local.videoobject.attrib = empty
+videoobject.role.attrib = role.attrib
+# doc:A wrapper for video data and its associated meta-information.
+videoobject =
+  element videoobject { videoobject.attlist, objectinfo?, videodata }
+# end of videoobject.element
+videoobject.attlist &=
+  common.attrib, videoobject.role.attrib, local.videoobject.attrib
+# end of videoobject.attlist
+
+# end of videoobject.module
+local.audioobject.attrib = empty
+audioobject.role.attrib = role.attrib
+# doc:A wrapper for audio data and its associated meta-information.
+audioobject =
+  element audioobject { audioobject.attlist, objectinfo?, audiodata }
+# end of audioobject.element
+audioobject.attlist &=
+  common.attrib, audioobject.role.attrib, local.audioobject.attrib
+# end of audioobject.attlist
+
+# end of audioobject.module
+local.imageobject.attrib = empty
+imageobject.role.attrib = role.attrib
+# doc:A wrapper for image data and its associated meta-information.
+imageobject =
+  element imageobject { imageobject.attlist, objectinfo?, imagedata }
+# end of imageobject.element
+imageobject.attlist &=
+  common.attrib, imageobject.role.attrib, local.imageobject.attrib
+# end of imageobject.attlist
+
+# end of imageobject.module
+local.textobject.attrib = empty
+textobject.role.attrib = role.attrib
+# doc:A wrapper for a text description of an object and its associated meta-information.
+textobject =
+  element textobject {
+    textobject.attlist,
+    objectinfo?,
+    (phrase | textdata | textobject.mix+)
+  }
+# end of textobject.element
+textobject.attlist &=
+  common.attrib, textobject.role.attrib, local.textobject.attrib
+# end of textobject.attlist
+
+# end of textobject.module
+local.objectinfo.attrib = empty
+objectinfo.role.attrib = role.attrib
+# doc:Meta-information for an object.
+objectinfo = element objectinfo { objectinfo.attlist, info.class+ }
+# end of objectinfo.element
+objectinfo.attlist &=
+  common.attrib, objectinfo.role.attrib, local.objectinfo.attrib
+# 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
+local.objectdata.attrib = empty
+objectdata.attrib =
+  attribute entityref { xsd:ENTITY }?,
+  attribute fileref { text }?,
+  attribute format { notation.class }?,
+  attribute srccredit { text }?,
+  local.objectdata.attrib
+local.videodata.attrib = empty
+videodata.role.attrib = role.attrib
+# doc:Pointer to external video data.
+videodata = element videodata { videodata.attlist, empty }
+# 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
+videodata.attlist &=
+  attribute width { text }?,
+  attribute contentwidth { text }?,
+  attribute depth { text }?,
+  attribute contentdepth { text }?,
+  attribute align { "left" | "right" | "center" }?,
+  attribute valign { "top" | "middle" | "bottom" }?,
+  attribute scale { text }?,
+  attribute scalefit { yesorno.attvals }?,
+  objectdata.attrib,
+  common.attrib,
+  videodata.role.attrib,
+  local.videodata.attrib
+# end of videodata.attlist
+
+# end of videodata.module
+local.audiodata.attrib = empty
+audiodata.role.attrib = role.attrib
+# doc:Pointer to external audio data.
+audiodata = element audiodata { audiodata.attlist, empty }
+# end of audiodata.element
+audiodata.attlist &=
+  objectdata.attrib,
+  common.attrib,
+  audiodata.role.attrib,
+  local.audiodata.attrib
+# end of audiodata.attlist
+
+# end of audiodata.module
+local.imagedata.attrib = empty
+imagedata.role.attrib = role.attrib
+# doc:Pointer to external image data.
+imagedata = element imagedata { imagedata.attlist, empty }
+# 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
+imagedata.attlist &=
+  attribute width { text }?,
+  attribute contentwidth { text }?,
+  attribute depth { text }?,
+  attribute contentdepth { text }?,
+  attribute align { "left" | "right" | "center" }?,
+  attribute valign { "top" | "middle" | "bottom" }?,
+  attribute scale { text }?,
+  attribute scalefit { yesorno.attvals }?,
+  objectdata.attrib,
+  common.attrib,
+  imagedata.role.attrib,
+  local.imagedata.attrib
+# end of imagedata.attlist
+
+# end of imagedata.module
+local.textdata.attrib = empty
+textdata.role.attrib = role.attrib
+# doc:Pointer to external text data.
+textdata = element textdata { textdata.attlist, empty }
+# end of textdata.element
+textdata.attlist &=
+  attribute encoding { text }?,
+  objectdata.attrib,
+  common.attrib,
+  textdata.role.attrib,
+  local.textdata.attrib
+# end of textdata.attlist
+
+# end of textdata.module
+local.mediaobjectco.attrib = empty
+mediaobjectco.role.attrib = role.attrib
+# doc:A media object that contains callouts.
+mediaobjectco =
+  element mediaobjectco {
+    mediaobjectco.attlist,
+    objectinfo?,
+    imageobjectco,
+    (imageobjectco | textobject)*
+  }
+# end of mediaobjectco.element
+mediaobjectco.attlist &=
+  common.attrib, mediaobjectco.role.attrib, local.mediaobjectco.attrib
+# end of mediaobjectco.attlist
+
+# end of mediaobjectco.module
+local.imageobjectco.attrib = empty
+imageobjectco.role.attrib = role.attrib
+# doc:A wrapper for an image object with callouts.
+imageobjectco =
+  element imageobjectco {
+    imageobjectco.attlist, areaspec, imageobject, calloutlist*
+  }
+# end of imageobjectco.element
+imageobjectco.attlist &=
+  common.attrib, imageobjectco.role.attrib, local.imageobjectco.attrib
+# 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)
+equation.content = alt?, (graphic+ | mediaobject+ | mathphrase+)
+inlineequation.content =
+  alt?, (graphic+ | inlinemediaobject+ | mathphrase+)
+local.equation.attrib = empty
+equation.role.attrib = role.attrib
+# doc:A displayed mathematical equation.
+equation =
+  element equation {
+    equation.attlist,
+    blockinfo?,
+    formalobject.title.content?,
+    (informalequation | equation.content)
+  }
+# end of equation.element
+equation.attlist &=
+  attribute floatstyle { text }?,
+  label.attrib,
+  common.attrib,
+  equation.role.attrib,
+  local.equation.attrib
+# end of equation.attlist
+
+# end of equation.module
+local.informalequation.attrib = empty
+informalequation.role.attrib = role.attrib
+# doc:A displayed mathematical equation without a title.
+informalequation =
+  element informalequation {
+    informalequation.attlist, blockinfo?, equation.content
+  }
+# end of informalequation.element
+informalequation.attlist &=
+  attribute floatstyle { text }?,
+  common.attrib,
+  informalequation.role.attrib,
+  local.informalequation.attrib
+# end of informalequation.attlist
+
+# end of informalequation.module
+local.inlineequation.attrib = empty
+inlineequation.role.attrib = role.attrib
+# doc:A mathematical equation or expression occurring inline.
+inlineequation =
+  element inlineequation {
+    inlineequation.attlist, inlineequation.content
+  }
+# end of inlineequation.element
+inlineequation.attlist &=
+  common.attrib, inlineequation.role.attrib, local.inlineequation.attrib
+# end of inlineequation.attlist
+
+# end of inlineequation.module
+local.alt.attrib = empty
+alt.role.attrib = role.attrib
+# doc:Text representation for a graphical element.
+alt = element alt { alt.attlist, text }
+# end of alt.element
+alt.attlist &= common.attrib, alt.role.attrib, local.alt.attrib
+# end of alt.attlist
+
+# end of alt.module
+local.mathphrase.attrib = empty
+mathphrase.role.attrib = role.attrib
+# doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup.
+mathphrase =
+  element mathphrase {
+    mathphrase.attlist, (text | subscript | superscript | emphasis)*
+  }
+# end of mathphrase.element
+mathphrase.attlist &=
+  common.attrib, mathphrase.role.attrib, local.mathphrase.attrib
+# end of mathphrase.attlist
+
+# end of mathphrase.module
+
+# Tables ...........................
+
+# Choose a table model. CALS or OASIS XML Exchange
+
+# Do we allow the HTML table model as well?
+
+# ======================================================
+
+# xhtmltbl.mod defines HTML tables and sets parameter
+# entities so that, when the CALS table module is read,
+# we end up allowing any table to be CALS or HTML.
+# i.e. This include must come first!
+
+# ======================================================
+include "htmltblx.rnc"
+# end of allow.html.tables
+
+# Add label and role attributes to table and informaltable
+
+# Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+# EntryTbl, and Entry (and InformalTable element).
+
+# Content model for Table.
+
+# Allow either objects or inlines; beware of REs between elements.
+
+# Reference CALS Table Model
+include "calstblx.rnc"
+# end of table.module
+
+# Note that InformalTable is dependent on some of the entity
+# declarations that customize Table.
+local.informaltable.attrib = empty
+# the following entity may have been declared by the XHTML table module
+
+# doc:A table without a title.
+informaltable =
+  element informaltable {
+    informaltable.attlist, blockinfo?, informal.tbl.table.mdl
+  }
+# 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
+informaltable.attlist &=
+  attribute frame { tbl.frame.attval }?,
+  attribute colsep { yesorno.attvals }?,
+  attribute rowsep { yesorno.attvals }?,
+  common.table.attribs,
+  tbl.table.att,
+  local.informaltable.attrib
+# end of informaltable.attlist
+
+# end of informaltable.module
+local.caption.attrib = empty
+caption.role.attrib = role.attrib
+# doc:A caption.
+caption = element caption { caption.attlist, (text | textobject.mix)* }
+# end of caption.element
+
+# attrs comes from HTML tables ...
+
+# common.attrib, but without ID because ID is in attrs
+caption.attlist.content =
+  caption.role.attrib,
+  attrs,
+  attribute align { "top" | "bottom" | "left" | "right" }?,
+  local.caption.attrib
+caption.attlist &= caption.attlist.content
+# end of caption.attlist
+
+# end of caption.module
+
+# ......................................................................
+
+# Synopses .............................................................
+
+# Synopsis .........................
+local.synopsis.attrib = empty
+synopsis.role.attrib = role.attrib
+# doc:A general-purpose element for representing the syntax of commands or functions.
+synopsis =
+  element synopsis {
+    synopsis.attlist,
+    (para.char.mix
+     | graphic
+     | mediaobject
+     | co
+     | coref
+     | textobject
+     | lineannotation)*
+  }
+# end of synopsis.element
+synopsis.attlist &=
+  label.attrib,
+  linespecific.attrib,
+  common.attrib,
+  synopsis.role.attrib,
+  local.synopsis.attrib
+# end of synopsis.attlist
+
+# LineAnnotation (defined in the Inlines section, below)
+
+# end of synopsis.module
+
+# CmdSynopsis ......................
+local.cmdsynopsis.attrib = empty
+cmdsynopsis.role.attrib = role.attrib
+# doc:A syntax summary for a software command.
+cmdsynopsis =
+  element cmdsynopsis {
+    cmdsynopsis.attlist, (command | arg | group | sbr)+, synopfragment*
+  }
+# end of cmdsynopsis.element
+
+# Sepchar: Character that should separate command and all
+# top-level arguments; alternate value might be e.g., &Delta;
+cmdsynopsis.attlist &=
+  label.attrib,
+  [ a:defaultValue = " " ] attribute sepchar { text }?,
+  attribute cmdlength { text }?,
+  common.attrib,
+  cmdsynopsis.role.attrib,
+  local.cmdsynopsis.attrib
+# end of cmdsynopsis.attlist
+
+# end of cmdsynopsis.module
+local.arg.attrib = empty
+arg.role.attrib = role.attrib
+# doc:An argument in a CmdSynopsis.
+arg =
+  element arg {
+    arg.attlist,
+    (text
+     | arg
+     | group
+     | option
+     | synopfragmentref
+     | replaceable
+     | sbr)*
+  }
+# 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...)
+arg.attlist &=
+  [ a:defaultValue = "opt" ]
+  attribute choice { "opt" | "req" | "plain" }?,
+  [ a:defaultValue = "norepeat" ]
+  attribute rep { "norepeat" | "repeat" }?,
+  common.attrib,
+  arg.role.attrib,
+  local.arg.attrib
+# end of arg.attlist
+
+# end of arg.module
+local.group.attrib = empty
+group.role.attrib = role.attrib
+# doc:A group of elements in a CmdSynopsis.
+group =
+  element group {
+    group.attlist,
+    (arg | group | option | synopfragmentref | replaceable | sbr)+
+  }
+# 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...)
+group.attlist &=
+  [ a:defaultValue = "opt" ]
+  attribute choice { "opt" | "req" | "plain" }?,
+  [ a:defaultValue = "norepeat" ]
+  attribute rep { "norepeat" | "repeat" }?,
+  common.attrib,
+  group.role.attrib,
+  local.group.attrib
+# end of group.attlist
+
+# end of group.module
+local.sbr.attrib = empty
+# Synopsis break
+sbr.role.attrib = role.attrib
+# doc:An explicit line break in a command synopsis.
+sbr = element sbr { sbr.attlist, empty }
+# end of sbr.element
+sbr.attlist &= common.attrib, sbr.role.attrib, local.sbr.attrib
+# end of sbr.attlist
+
+# end of sbr.module
+local.synopfragmentref.attrib = empty
+synopfragmentref.role.attrib = role.attrib
+# doc:A reference to a fragment of a command synopsis.
+synopfragmentref =
+  element synopfragmentref { synopfragmentref.attlist, text }
+# end of synopfragmentref.element
+
+# to SynopFragment of complex synopsis
+# material for separate referencing
+synopfragmentref.attlist &=
+  linkendreq.attrib,
+  common.attrib,
+  synopfragmentref.role.attrib,
+  local.synopfragmentref.attrib
+# end of synopfragmentref.attlist
+
+# end of synopfragmentref.module
+local.synopfragment.attrib = empty
+synopfragment.role.attrib = role.attrib
+# doc:A portion of a CmdSynopsis broken out from the main body of the synopsis.
+synopfragment =
+  element synopfragment { synopfragment.attlist, (arg | group)+ }
+# end of synopfragment.element
+synopfragment.attlist &=
+  idreq.common.attrib,
+  synopfragment.role.attrib,
+  local.synopfragment.attrib
+# 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 .....................
+local.funcsynopsis.attrib = empty
+funcsynopsis.role.attrib = role.attrib
+# doc:The syntax summary for a function definition.
+funcsynopsis =
+  element funcsynopsis {
+    funcsynopsis.attlist, (funcsynopsisinfo | funcprototype)+
+  }
+# end of funcsynopsis.element
+funcsynopsis.attlist &=
+  label.attrib,
+  common.attrib,
+  funcsynopsis.role.attrib,
+  local.funcsynopsis.attrib
+# end of funcsynopsis.attlist
+
+# end of funcsynopsis.module
+local.funcsynopsisinfo.attrib = empty
+funcsynopsisinfo.role.attrib = role.attrib
+# doc:Information supplementing the FuncDefs of a FuncSynopsis.
+funcsynopsisinfo =
+  element funcsynopsisinfo {
+    funcsynopsisinfo.attlist,
+    (cptr.char.mix | textobject | lineannotation)*
+  }
+# end of funcsynopsisinfo.element
+funcsynopsisinfo.attlist &=
+  linespecific.attrib,
+  common.attrib,
+  funcsynopsisinfo.role.attrib,
+  local.funcsynopsisinfo.attrib
+# end of funcsynopsisinfo.attlist
+
+# end of funcsynopsisinfo.module
+local.funcprototype.attrib = empty
+funcprototype.role.attrib = role.attrib
+# doc:The prototype of a function.
+funcprototype =
+  element funcprototype {
+    funcprototype.attlist,
+    modifier*,
+    funcdef,
+    (void | varargs | (paramdef+, varargs?)),
+    modifier*
+  }
+# end of funcprototype.element
+funcprototype.attlist &=
+  common.attrib, funcprototype.role.attrib, local.funcprototype.attrib
+# end of funcprototype.attlist
+
+# end of funcprototype.module
+local.funcdef.attrib = empty
+funcdef.role.attrib = role.attrib
+# doc:A function (subroutine) name and its return type.
+funcdef =
+  element funcdef {
+    funcdef.attlist, (text | type | replaceable | function)*
+  }
+# end of funcdef.element
+funcdef.attlist &=
+  common.attrib, funcdef.role.attrib, local.funcdef.attrib
+# end of funcdef.attlist
+
+# end of funcdef.module
+local.void.attrib = empty
+void.role.attrib = role.attrib
+# doc:An empty element in a function synopsis indicating that the function in question takes no arguments.
+void = element void { void.attlist, empty }
+# end of void.element
+void.attlist &= common.attrib, void.role.attrib, local.void.attrib
+# end of void.attlist
+
+# end of void.module
+local.varargs.attrib = empty
+varargs.role.attrib = role.attrib
+# doc:An empty element in a function synopsis indicating a variable number of arguments.
+varargs = element varargs { varargs.attlist, empty }
+# end of varargs.element
+varargs.attlist &=
+  common.attrib, varargs.role.attrib, local.varargs.attrib
+# 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.
+local.paramdef.attrib = empty
+paramdef.role.attrib = role.attrib
+# doc:Information about a function parameter in a programming language.
+paramdef =
+  element paramdef {
+    paramdef.attlist,
+    (text | initializer | type | replaceable | parameter | funcparams)*
+  }
+# end of paramdef.element
+paramdef.attlist &=
+  attribute choice { "opt" | "req" }?,
+  common.attrib,
+  paramdef.role.attrib,
+  local.paramdef.attrib
+# end of paramdef.attlist
+
+# end of paramdef.module
+local.funcparams.attrib = empty
+funcparams.role.attrib = role.attrib
+# doc:Parameters for a function referenced through a function pointer in a synopsis.
+funcparams = element funcparams { funcparams.attlist, cptr.char.mix* }
+# end of funcparams.element
+funcparams.attlist &=
+  common.attrib, funcparams.role.attrib, local.funcparams.attrib
+# 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 .....................
+local.classsynopsis.attrib = empty
+classsynopsis.role.attrib = role.attrib
+# doc:The syntax summary for a class definition.
+classsynopsis =
+  element classsynopsis {
+    classsynopsis.attlist,
+    (ooclass | oointerface | ooexception)+,
+    (classsynopsisinfo | fieldsynopsis | method.synop.class)*
+  }
+# end of classsynopsis.element
+classsynopsis.attlist &=
+  attribute language { text }?,
+  [ a:defaultValue = "class" ]
+  attribute class { "class" | "interface" }?,
+  common.attrib,
+  classsynopsis.role.attrib,
+  local.classsynopsis.attrib
+# end of classsynopsis.attlist
+
+# end of classsynopsis.module
+local.classsynopsisinfo.attrib = empty
+classsynopsisinfo.role.attrib = role.attrib
+# doc:Information supplementing the contents of a ClassSynopsis.
+classsynopsisinfo =
+  element classsynopsisinfo {
+    classsynopsisinfo.attlist,
+    (cptr.char.mix | textobject | lineannotation)*
+  }
+# end of classsynopsisinfo.element
+classsynopsisinfo.attlist &=
+  linespecific.attrib,
+  common.attrib,
+  classsynopsisinfo.role.attrib,
+  local.classsynopsisinfo.attrib
+# end of classsynopsisinfo.attlist
+
+# end of classsynopsisinfo.module
+local.ooclass.attrib = empty
+ooclass.role.attrib = role.attrib
+# doc:A class in an object-oriented programming language.
+ooclass =
+  element ooclass { ooclass.attlist, (modifier | package)*, classname }
+# end of ooclass.element
+ooclass.attlist &=
+  common.attrib, ooclass.role.attrib, local.ooclass.attrib
+# end of ooclass.attlist
+
+# end of ooclass.module
+local.oointerface.attrib = empty
+oointerface.role.attrib = role.attrib
+# doc:An interface in an object-oriented programming language.
+oointerface =
+  element oointerface {
+    oointerface.attlist, (modifier | package)*, interfacename
+  }
+# end of oointerface.element
+oointerface.attlist &=
+  common.attrib, oointerface.role.attrib, local.oointerface.attrib
+# end of oointerface.attlist
+
+# end of oointerface.module
+local.ooexception.attrib = empty
+ooexception.role.attrib = role.attrib
+# doc:An exception in an object-oriented programming language.
+ooexception =
+  element ooexception {
+    ooexception.attlist, (modifier | package)*, exceptionname
+  }
+# end of ooexception.element
+ooexception.attlist &=
+  common.attrib, ooexception.role.attrib, local.ooexception.attrib
+# end of ooexception.attlist
+
+# end of ooexception.module
+local.modifier.attrib = empty
+modifier.role.attrib = role.attrib
+# doc:Modifiers in a synopsis.
+modifier = element modifier { modifier.attlist, smallcptr.char.mix* }
+# end of modifier.element
+modifier.attlist &=
+  common.attrib, modifier.role.attrib, local.modifier.attrib
+# end of modifier.attlist
+
+# end of modifier.module
+local.interfacename.attrib = empty
+interfacename.role.attrib = role.attrib
+# doc:The name of an interface.
+interfacename =
+  element interfacename { interfacename.attlist, cptr.char.mix* }
+# end of interfacename.element
+interfacename.attlist &=
+  common.attrib, interfacename.role.attrib, local.interfacename.attrib
+# end of interfacename.attlist
+
+# end of interfacename.module
+local.exceptionname.attrib = empty
+exceptionname.role.attrib = role.attrib
+# doc:The name of an exception.
+exceptionname =
+  element exceptionname { exceptionname.attlist, smallcptr.char.mix* }
+# end of exceptionname.element
+exceptionname.attlist &=
+  common.attrib, exceptionname.role.attrib, local.exceptionname.attrib
+# end of exceptionname.attlist
+
+# end of exceptionname.module
+local.fieldsynopsis.attrib = empty
+fieldsynopsis.role.attrib = role.attrib
+# doc:The name of a field in a class definition.
+fieldsynopsis =
+  element fieldsynopsis {
+    fieldsynopsis.attlist, modifier*, type?, varname, initializer?
+  }
+# end of fieldsynopsis.element
+fieldsynopsis.attlist &=
+  attribute language { text }?,
+  common.attrib,
+  fieldsynopsis.role.attrib,
+  local.fieldsynopsis.attrib
+# end of fieldsynopsis.attlist
+
+# end of fieldsynopsis.module
+local.initializer.attrib = empty
+initializer.role.attrib = role.attrib
+# doc:The initializer for a FieldSynopsis.
+initializer =
+  element initializer { initializer.attlist, smallcptr.char.mix* }
+# end of initializer.element
+initializer.attlist &=
+  common.attrib, initializer.role.attrib, local.initializer.attrib
+# end of initializer.attlist
+
+# end of initializer.module
+local.constructorsynopsis.attrib = empty
+constructorsynopsis.role.attrib = role.attrib
+# doc:A syntax summary for a constructor.
+constructorsynopsis =
+  element constructorsynopsis {
+    constructorsynopsis.attlist,
+    modifier*,
+    methodname?,
+    (methodparam+ | void?),
+    exceptionname*
+  }
+# end of constructorsynopsis.element
+constructorsynopsis.attlist &=
+  attribute language { text }?,
+  common.attrib,
+  constructorsynopsis.role.attrib,
+  local.constructorsynopsis.attrib
+# end of constructorsynopsis.attlist
+
+# end of constructorsynopsis.module
+local.destructorsynopsis.attrib = empty
+destructorsynopsis.role.attrib = role.attrib
+# doc:A syntax summary for a destructor.
+destructorsynopsis =
+  element destructorsynopsis {
+    destructorsynopsis.attlist,
+    modifier*,
+    methodname?,
+    (methodparam+ | void?),
+    exceptionname*
+  }
+# end of destructorsynopsis.element
+destructorsynopsis.attlist &=
+  attribute language { text }?,
+  common.attrib,
+  destructorsynopsis.role.attrib,
+  local.destructorsynopsis.attrib
+# end of destructorsynopsis.attlist
+
+# end of destructorsynopsis.module
+local.methodsynopsis.attrib = empty
+methodsynopsis.role.attrib = role.attrib
+# doc:A syntax summary for a method.
+methodsynopsis =
+  element methodsynopsis {
+    methodsynopsis.attlist,
+    modifier*,
+    (type | void)?,
+    methodname,
+    (methodparam+ | void?),
+    exceptionname*,
+    modifier*
+  }
+# end of methodsynopsis.element
+methodsynopsis.attlist &=
+  attribute language { text }?,
+  common.attrib,
+  methodsynopsis.role.attrib,
+  local.methodsynopsis.attrib
+# end of methodsynopsis.attlist
+
+# end of methodsynopsis.module
+local.methodname.attrib = empty
+methodname.role.attrib = role.attrib
+# doc:The name of a method.
+methodname =
+  element methodname { methodname.attlist, smallcptr.char.mix* }
+# end of methodname.element
+methodname.attlist &=
+  common.attrib, methodname.role.attrib, local.methodname.attrib
+# end of methodname.attlist
+
+# end of methodname.module
+local.methodparam.attrib = empty
+methodparam.role.attrib = role.attrib
+# doc:Parameters to a method.
+methodparam =
+  element methodparam {
+    methodparam.attlist,
+    modifier*,
+    type?,
+    ((parameter, initializer?) | funcparams),
+    modifier*
+  }
+# end of methodparam.element
+methodparam.attlist &=
+  [ a:defaultValue = "req" ]
+  attribute choice { "opt" | "req" | "plain" }?,
+  [ a:defaultValue = "norepeat" ]
+  attribute rep { "norepeat" | "repeat" }?,
+  common.attrib,
+  methodparam.role.attrib,
+  local.methodparam.attrib
+# 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 ............................
+local.ackno.attrib = empty
+ackno.role.attrib = role.attrib
+# doc:Acknowledgements in an Article.
+ackno = element ackno { ackno.attlist, docinfo.char.mix* }
+# end of ackno.element
+ackno.attlist &= common.attrib, ackno.role.attrib, local.ackno.attrib
+# end of ackno.attlist
+
+# end of ackno.module
+
+# Address ..........................
+local.address.attrib = empty
+address.role.attrib = role.attrib
+# doc:A real-world address, generally a postal address.
+address =
+  element address {
+    address.attlist,
+    (text
+     | personname
+     | person.ident.mix
+     | street
+     | pob
+     | postcode
+     | city
+     | state
+     | country
+     | phone
+     | fax
+     | email
+     | otheraddr)*
+  }
+# end of address.element
+address.attlist &=
+  linespecific.attrib,
+  common.attrib,
+  address.role.attrib,
+  local.address.attrib
+# end of address.attlist
+
+# end of address.module
+local.street.attrib = empty
+street.role.attrib = role.attrib
+# doc:A street address in an address.
+street = element street { street.attlist, docinfo.char.mix* }
+# end of street.element
+street.attlist &= common.attrib, street.role.attrib, local.street.attrib
+# end of street.attlist
+
+# end of street.module
+local.pob.attrib = empty
+pob.role.attrib = role.attrib
+# doc:A post office box in an address.
+pob = element pob { pob.attlist, docinfo.char.mix* }
+# end of pob.element
+pob.attlist &= common.attrib, pob.role.attrib, local.pob.attrib
+# end of pob.attlist
+
+# end of pob.module
+local.postcode.attrib = empty
+postcode.role.attrib = role.attrib
+# doc:A postal code in an address.
+postcode = element postcode { postcode.attlist, docinfo.char.mix* }
+# end of postcode.element
+postcode.attlist &=
+  common.attrib, postcode.role.attrib, local.postcode.attrib
+# end of postcode.attlist
+
+# end of postcode.module
+local.city.attrib = empty
+city.role.attrib = role.attrib
+# doc:The name of a city in an address.
+city = element city { city.attlist, docinfo.char.mix* }
+# end of city.element
+city.attlist &= common.attrib, city.role.attrib, local.city.attrib
+# end of city.attlist
+
+# end of city.module
+local.state.attrib = empty
+state.role.attrib = role.attrib
+# doc:A state or province in an address.
+state = element state { state.attlist, docinfo.char.mix* }
+# end of state.element
+state.attlist &= common.attrib, state.role.attrib, local.state.attrib
+# end of state.attlist
+
+# end of state.module
+local.country.attrib = empty
+country.role.attrib = role.attrib
+# doc:The name of a country.
+country = element country { country.attlist, docinfo.char.mix* }
+# end of country.element
+country.attlist &=
+  common.attrib, country.role.attrib, local.country.attrib
+# end of country.attlist
+
+# end of country.module
+local.phone.attrib = empty
+phone.role.attrib = role.attrib
+# doc:A telephone number.
+phone = element phone { phone.attlist, docinfo.char.mix* }
+# end of phone.element
+phone.attlist &= common.attrib, phone.role.attrib, local.phone.attrib
+# end of phone.attlist
+
+# end of phone.module
+local.fax.attrib = empty
+fax.role.attrib = role.attrib
+# doc:A fax number.
+fax = element fax { fax.attlist, docinfo.char.mix* }
+# end of fax.element
+fax.attlist &= common.attrib, fax.role.attrib, local.fax.attrib
+# end of fax.attlist
+
+# end of fax.module
+
+# Email (defined in the Inlines section, below)
+local.otheraddr.attrib = empty
+otheraddr.role.attrib = role.attrib
+# doc:Uncategorized information in address.
+otheraddr = element otheraddr { otheraddr.attlist, docinfo.char.mix* }
+# end of otheraddr.element
+otheraddr.attlist &=
+  common.attrib, otheraddr.role.attrib, local.otheraddr.attrib
+# end of otheraddr.attlist
+
+# end of otheraddr.module
+
+# end of address.content.module
+
+# Affiliation ......................
+local.affiliation.attrib = empty
+affiliation.role.attrib = role.attrib
+# doc:The institutional affiliation of an individual.
+affiliation =
+  element affiliation {
+    affiliation.attlist,
+    shortaffil?,
+    jobtitle*,
+    orgname?,
+    orgdiv*,
+    address*
+  }
+# end of affiliation.element
+affiliation.attlist &=
+  common.attrib, affiliation.role.attrib, local.affiliation.attrib
+# end of affiliation.attlist
+
+# end of affiliation.module
+local.shortaffil.attrib = empty
+shortaffil.role.attrib = role.attrib
+# doc:A brief description of an affiliation.
+shortaffil =
+  element shortaffil { shortaffil.attlist, docinfo.char.mix* }
+# end of shortaffil.element
+shortaffil.attlist &=
+  common.attrib, shortaffil.role.attrib, local.shortaffil.attrib
+# end of shortaffil.attlist
+
+# end of shortaffil.module
+local.jobtitle.attrib = empty
+jobtitle.role.attrib = role.attrib
+# doc:The title of an individual in an organization.
+jobtitle = element jobtitle { jobtitle.attlist, docinfo.char.mix* }
+# end of jobtitle.element
+jobtitle.attlist &=
+  common.attrib, jobtitle.role.attrib, local.jobtitle.attrib
+# end of jobtitle.attlist
+
+# end of jobtitle.module
+
+# OrgName (defined elsewhere in this section)
+local.orgdiv.attrib = empty
+orgdiv.role.attrib = role.attrib
+# doc:A division of an organization.
+orgdiv = element orgdiv { orgdiv.attlist, docinfo.char.mix* }
+# end of orgdiv.element
+orgdiv.attlist &= common.attrib, orgdiv.role.attrib, local.orgdiv.attrib
+# end of orgdiv.attlist
+
+# end of orgdiv.module
+
+# Address (defined elsewhere in this section)
+
+# end of affiliation.content.module
+
+# ArtPageNums ......................
+local.artpagenums.attrib = empty
+artpagenums.role.attrib = role.attrib
+# doc:The page numbers of an article as published.
+artpagenums =
+  element artpagenums { artpagenums.attlist, docinfo.char.mix* }
+# end of artpagenums.element
+artpagenums.attlist &=
+  common.attrib, artpagenums.role.attrib, local.artpagenums.attrib
+# end of artpagenums.attlist
+
+# end of artpagenums.module
+
+# PersonName
+local.personname.attrib = empty
+personname.role.attrib = role.attrib
+# doc:The personal name of an individual.
+personname =
+  element personname {
+    personname.attlist,
+    (honorific | firstname | surname | lineage | othername)+
+  }
+# end of personname.element
+personname.attlist &=
+  common.attrib, personname.role.attrib, local.personname.attrib
+# end of personname.attlist
+
+# end of personname.module
+
+# Author ...........................
+local.author.attrib = empty
+author.role.attrib = role.attrib
+# doc:The name of an individual author.
+author =
+  element author {
+    author.attlist,
+    (personname | person.ident.mix+),
+    (personblurb | email | address)*
+  }
+# end of author.element
+author.attlist &= common.attrib, author.role.attrib, local.author.attrib
+# end of author.attlist
+
+# (see "Personal identity elements" for %person.ident.mix;)
+
+# end of author.module
+
+# AuthorGroup ......................
+local.authorgroup.attrib = empty
+authorgroup.role.attrib = role.attrib
+# doc:Wrapper for author information when a document has multiple authors or collabarators.
+authorgroup =
+  element authorgroup {
+    authorgroup.attlist,
+    (author | editor | collab | corpauthor | corpcredit | othercredit)+
+  }
+# end of authorgroup.element
+authorgroup.attlist &=
+  common.attrib, authorgroup.role.attrib, local.authorgroup.attrib
+# end of authorgroup.attlist
+
+# end of authorgroup.module
+
+# Author (defined elsewhere in this section)
+
+# Editor (defined elsewhere in this section)
+local.collab.attrib = empty
+collab.role.attrib = role.attrib
+# doc:Identifies a collaborator.
+collab = element collab { collab.attlist, collabname, affiliation* }
+# end of collab.element
+collab.attlist &= common.attrib, collab.role.attrib, local.collab.attrib
+# end of collab.attlist
+
+# end of collab.module
+local.collabname.attrib = empty
+collabname.role.attrib = role.attrib
+# doc:The name of a collaborator.
+collabname =
+  element collabname { collabname.attlist, docinfo.char.mix* }
+# end of collabname.element
+collabname.attlist &=
+  common.attrib, collabname.role.attrib, local.collabname.attrib
+# 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 ...................
+local.authorinitials.attrib = empty
+authorinitials.role.attrib = role.attrib
+# doc:The initials or other short identifier for an author.
+authorinitials =
+  element authorinitials { authorinitials.attlist, docinfo.char.mix* }
+# end of authorinitials.element
+authorinitials.attlist &=
+  common.attrib, authorinitials.role.attrib, local.authorinitials.attrib
+# end of authorinitials.attlist
+
+# end of authorinitials.module
+
+# ConfGroup ........................
+local.confgroup.attrib = empty
+confgroup.role.attrib = role.attrib
+# doc:A wrapper for document meta-information about a conference.
+confgroup =
+  element confgroup {
+    confgroup.attlist,
+    (confdates | conftitle | confnum | address | confsponsor)*
+  }
+# end of confgroup.element
+confgroup.attlist &=
+  common.attrib, confgroup.role.attrib, local.confgroup.attrib
+# end of confgroup.attlist
+
+# end of confgroup.module
+local.confdates.attrib = empty
+confdates.role.attrib = role.attrib
+# doc:The dates of a conference for which a document was written.
+confdates = element confdates { confdates.attlist, docinfo.char.mix* }
+# end of confdates.element
+confdates.attlist &=
+  common.attrib, confdates.role.attrib, local.confdates.attrib
+# end of confdates.attlist
+
+# end of confdates.module
+local.conftitle.attrib = empty
+conftitle.role.attrib = role.attrib
+# doc:The title of a conference for which a document was written.
+conftitle = element conftitle { conftitle.attlist, docinfo.char.mix* }
+# end of conftitle.element
+conftitle.attlist &=
+  common.attrib, conftitle.role.attrib, local.conftitle.attrib
+# end of conftitle.attlist
+
+# end of conftitle.module
+local.confnum.attrib = empty
+confnum.role.attrib = role.attrib
+# doc:An identifier, frequently numerical, associated with a conference for which a document was written.
+confnum = element confnum { confnum.attlist, docinfo.char.mix* }
+# end of confnum.element
+confnum.attlist &=
+  common.attrib, confnum.role.attrib, local.confnum.attrib
+# end of confnum.attlist
+
+# end of confnum.module
+
+# Address (defined elsewhere in this section)
+local.confsponsor.attrib = empty
+confsponsor.role.attrib = role.attrib
+# doc:The sponsor of a conference for which a document was written.
+confsponsor =
+  element confsponsor { confsponsor.attlist, docinfo.char.mix* }
+# end of confsponsor.element
+confsponsor.attlist &=
+  common.attrib, confsponsor.role.attrib, local.confsponsor.attrib
+# end of confsponsor.attlist
+
+# end of confsponsor.module
+
+# end of confgroup.content.module
+
+# ContractNum ......................
+local.contractnum.attrib = empty
+contractnum.role.attrib = role.attrib
+# doc:The contract number of a document.
+contractnum =
+  element contractnum { contractnum.attlist, docinfo.char.mix* }
+# end of contractnum.element
+contractnum.attlist &=
+  common.attrib, contractnum.role.attrib, local.contractnum.attrib
+# end of contractnum.attlist
+
+# end of contractnum.module
+
+# ContractSponsor ..................
+local.contractsponsor.attrib = empty
+contractsponsor.role.attrib = role.attrib
+# doc:The sponsor of a contract.
+contractsponsor =
+  element contractsponsor { contractsponsor.attlist, docinfo.char.mix* }
+# end of contractsponsor.element
+contractsponsor.attlist &=
+  common.attrib,
+  contractsponsor.role.attrib,
+  local.contractsponsor.attrib
+# end of contractsponsor.attlist
+
+# end of contractsponsor.module
+
+# Copyright ........................
+local.copyright.attrib = empty
+copyright.role.attrib = role.attrib
+# doc:Copyright information about a document.
+copyright = element copyright { copyright.attlist, year+, holder* }
+# end of copyright.element
+copyright.attlist &=
+  common.attrib, copyright.role.attrib, local.copyright.attrib
+# end of copyright.attlist
+
+# end of copyright.module
+local.year.attrib = empty
+year.role.attrib = role.attrib
+# doc:The year of publication of a document.
+year = element year { year.attlist, docinfo.char.mix* }
+# end of year.element
+year.attlist &= common.attrib, year.role.attrib, local.year.attrib
+# end of year.attlist
+
+# end of year.module
+local.holder.attrib = empty
+holder.role.attrib = role.attrib
+# doc:The name of the individual or organization that holds a copyright.
+holder = element holder { holder.attlist, docinfo.char.mix* }
+# end of holder.element
+holder.attlist &= common.attrib, holder.role.attrib, local.holder.attrib
+# end of holder.attlist
+
+# end of holder.module
+
+# end of copyright.content.module
+
+# CorpAuthor .......................
+local.corpauthor.attrib = empty
+corpauthor.role.attrib = role.attrib
+# doc:A corporate author, as opposed to an individual.
+corpauthor =
+  element corpauthor { corpauthor.attlist, docinfo.char.mix* }
+# end of corpauthor.element
+corpauthor.attlist &=
+  common.attrib, corpauthor.role.attrib, local.corpauthor.attrib
+# end of corpauthor.attlist
+
+# end of corpauthor.module
+
+# CorpCredit ......................
+local.corpcredit.attrib = empty
+corpcredit.role.attrib = role.attrib
+# doc:A corporation or organization credited in a document.
+corpcredit =
+  element corpcredit { corpcredit.attlist, docinfo.char.mix* }
+# end of corpcredit.element
+corpcredit.attlist &=
+  attribute class {
+    "graphicdesigner"
+    | "productioneditor"
+    | "copyeditor"
+    | "technicaleditor"
+    | "translator"
+    | "other"
+  }?,
+  common.attrib,
+  corpcredit.role.attrib,
+  local.corpcredit.attrib
+# end of corpcredit.attlist
+
+# end of corpcredit.module
+
+# CorpName .........................
+local.corpname.attrib = empty
+# doc:The name of a corporation.
+corpname = element corpname { corpname.attlist, docinfo.char.mix* }
+# end of corpname.element
+corpname.role.attrib = role.attrib
+corpname.attlist &=
+  common.attrib, corpname.role.attrib, local.corpname.attrib
+# end of corpname.attlist
+
+# end of corpname.module
+
+# Date .............................
+local.date.attrib = empty
+date.role.attrib = role.attrib
+# doc:The date of publication or revision of a document.
+date = element date { date.attlist, docinfo.char.mix* }
+# end of date.element
+date.attlist &= common.attrib, date.role.attrib, local.date.attrib
+# end of date.attlist
+
+# end of date.module
+
+# Edition ..........................
+local.edition.attrib = empty
+edition.role.attrib = role.attrib
+# doc:The name or number of an edition of a document.
+edition = element edition { edition.attlist, docinfo.char.mix* }
+# end of edition.element
+edition.attlist &=
+  common.attrib, edition.role.attrib, local.edition.attrib
+# end of edition.attlist
+
+# end of edition.module
+
+# Editor ...........................
+local.editor.attrib = empty
+editor.role.attrib = role.attrib
+# doc:The name of the editor of a document.
+editor =
+  element editor {
+    editor.attlist,
+    (personname | person.ident.mix+),
+    (personblurb | email | address)*
+  }
+# end of editor.element
+editor.attlist &= common.attrib, editor.role.attrib, local.editor.attrib
+# end of editor.attlist
+
+# (see "Personal identity elements" for %person.ident.mix;)
+
+# end of editor.module
+
+# ISBN .............................
+local.isbn.attrib = empty
+isbn.role.attrib = role.attrib
+# doc:The International Standard Book Number of a document.
+isbn = element isbn { isbn.attlist, docinfo.char.mix* }
+# end of isbn.element
+isbn.attlist &= common.attrib, isbn.role.attrib, local.isbn.attrib
+# end of isbn.attlist
+
+# end of isbn.module
+
+# ISSN .............................
+local.issn.attrib = empty
+issn.role.attrib = role.attrib
+# doc:The International Standard Serial Number of a periodical.
+issn = element issn { issn.attlist, docinfo.char.mix* }
+# end of issn.element
+issn.attlist &= common.attrib, issn.role.attrib, local.issn.attrib
+# end of issn.attlist
+
+# end of issn.module
+
+# BiblioId .................
+biblio.class.attrib =
+  attribute class {
+    "uri"
+    | "doi"
+    | "isbn"
+    | "isrn"
+    | "issn"
+    | "libraryofcongress"
+    | "pubnumber"
+    | "other"
+  }?,
+  attribute otherclass { text }?
+local.biblioid.attrib = empty
+biblioid.role.attrib = role.attrib
+# doc:An identifier for a document.
+biblioid = element biblioid { biblioid.attlist, docinfo.char.mix* }
+# end of biblioid.element
+biblioid.attlist &=
+  biblio.class.attrib,
+  common.attrib,
+  biblioid.role.attrib,
+  local.biblioid.attrib
+# end of biblioid.attlist
+
+# end of biblioid.module
+
+# CiteBiblioId .................
+local.citebiblioid.attrib = empty
+citebiblioid.role.attrib = role.attrib
+# doc:A citation of a bibliographic identifier.
+citebiblioid =
+  element citebiblioid { citebiblioid.attlist, docinfo.char.mix* }
+# end of citebiblioid.element
+citebiblioid.attlist &=
+  biblio.class.attrib,
+  common.attrib,
+  citebiblioid.role.attrib,
+  local.citebiblioid.attrib
+# end of citebiblioid.attlist
+
+# end of citebiblioid.module
+
+# BiblioSource .................
+local.bibliosource.attrib = empty
+bibliosource.role.attrib = role.attrib
+# doc:The source of a document.
+bibliosource =
+  element bibliosource { bibliosource.attlist, docinfo.char.mix* }
+# end of bibliosource.element
+bibliosource.attlist &=
+  biblio.class.attrib,
+  common.attrib,
+  bibliosource.role.attrib,
+  local.bibliosource.attrib
+# end of bibliosource.attlist
+
+# end of bibliosource.module
+
+# BiblioRelation .................
+local.bibliorelation.attrib = empty
+local.bibliorelation.types = notAllowed
+bibliorelation.type.attrib =
+  attribute type {
+    "isversionof"
+    | "hasversion"
+    | "isreplacedby"
+    | "replaces"
+    | "isrequiredby"
+    | "requires"
+    | "ispartof"
+    | "haspart"
+    | "isreferencedby"
+    | "references"
+    | "isformatof"
+    | "hasformat"
+    | "othertype"
+    | local.bibliorelation.types
+  }?,
+  attribute othertype { text }?
+bibliorelation.role.attrib = role.attrib
+# doc:The relationship of a document to another.
+bibliorelation =
+  element bibliorelation { bibliorelation.attlist, docinfo.char.mix* }
+# end of bibliorelation.element
+bibliorelation.attlist &=
+  biblio.class.attrib,
+  bibliorelation.type.attrib,
+  common.attrib,
+  bibliorelation.role.attrib,
+  local.bibliorelation.attrib
+# end of bibliorelation.attlist
+
+# end of bibliorelation.module
+
+# BiblioCoverage .................
+local.bibliocoverage.attrib = empty
+bibliocoverage.role.attrib = role.attrib
+# doc:The spatial or temporal coverage of a document.
+bibliocoverage =
+  element bibliocoverage { bibliocoverage.attlist, docinfo.char.mix* }
+# end of bibliocoverage.element
+bibliocoverage.attlist &=
+  attribute spatial {
+    "dcmipoint" | "iso3166" | "dcmibox" | "tgn" | "otherspatial"
+  }?,
+  attribute otherspatial { text }?,
+  attribute temporal { "dcmiperiod" | "w3c-dtf" | "othertemporal" }?,
+  attribute othertemporal { text }?,
+  common.attrib,
+  bibliocoverage.role.attrib,
+  local.bibliocoverage.attrib
+# end of bibliocoverage.attlist
+
+# end of bibliocoverage.module
+
+# InvPartNumber ....................
+local.invpartnumber.attrib = empty
+invpartnumber.role.attrib = role.attrib
+# doc:An inventory part number.
+invpartnumber =
+  element invpartnumber { invpartnumber.attlist, docinfo.char.mix* }
+# end of invpartnumber.element
+invpartnumber.attlist &=
+  common.attrib, invpartnumber.role.attrib, local.invpartnumber.attrib
+# end of invpartnumber.attlist
+
+# end of invpartnumber.module
+
+# IssueNum .........................
+local.issuenum.attrib = empty
+issuenum.role.attrib = role.attrib
+# doc:The number of an issue of a journal.
+issuenum = element issuenum { issuenum.attlist, docinfo.char.mix* }
+# end of issuenum.element
+issuenum.attlist &=
+  common.attrib, issuenum.role.attrib, local.issuenum.attrib
+# end of issuenum.attlist
+
+# end of issuenum.module
+
+# LegalNotice ......................
+local.legalnotice.attrib = empty
+legalnotice.role.attrib = role.attrib
+# doc:A statement of legal obligations or requirements.
+legalnotice =
+  element legalnotice {
+    legalnotice.attlist, blockinfo?, title?, legalnotice.mix+
+  }
+# end of legalnotice.element
+legalnotice.attlist &=
+  common.attrib, legalnotice.role.attrib, local.legalnotice.attrib
+# end of legalnotice.attlist
+
+# end of legalnotice.module
+
+# ModeSpec .........................
+local.modespec.attrib = empty
+modespec.role.attrib = role.attrib
+# doc:Application-specific information necessary for the completion of an OLink.
+modespec = element modespec { modespec.attlist, docinfo.char.mix* }
+# end of modespec.element
+
+# Application: Type of action required for completion
+# of the links to which the ModeSpec is relevant (e.g.,
+# retrieval query)
+modespec.attlist &=
+  attribute application { notation.class }?,
+  common.attrib,
+  modespec.role.attrib,
+  local.modespec.attrib
+# end of modespec.attlist
+
+# end of modespec.module
+
+# OrgName ..........................
+local.orgname.attrib = empty
+orgname.role.attrib = role.attrib
+# doc:The name of an organization other than a corporation.
+orgname = element orgname { orgname.attlist, docinfo.char.mix* }
+# end of orgname.element
+orgname.attlist &=
+  common.attrib,
+  attribute class {
+    "corporation" | "nonprofit" | "consortium" | "informal" | "other"
+  }?,
+  attribute otherclass { text }?,
+  orgname.role.attrib,
+  local.orgname.attrib
+# end of orgname.attlist
+
+# end of orgname.module
+
+# OtherCredit ......................
+local.othercredit.attrib = empty
+othercredit.role.attrib = role.attrib
+# doc:A person or entity, other than an author or editor, credited in a document.
+othercredit =
+  element othercredit {
+    othercredit.attlist,
+    (personname | person.ident.mix+),
+    (personblurb | email | address)*
+  }
+# end of othercredit.element
+othercredit.attlist &=
+  attribute class {
+    "graphicdesigner"
+    | "productioneditor"
+    | "copyeditor"
+    | "technicaleditor"
+    | "translator"
+    | "other"
+  }?,
+  common.attrib,
+  othercredit.role.attrib,
+  local.othercredit.attrib
+# end of othercredit.attlist
+
+# (see "Personal identity elements" for %person.ident.mix;)
+
+# end of othercredit.module
+
+# PageNums .........................
+local.pagenums.attrib = empty
+pagenums.role.attrib = role.attrib
+# doc:The numbers of the pages in a book, for use in a bibliographic entry.
+pagenums = element pagenums { pagenums.attlist, docinfo.char.mix* }
+# end of pagenums.element
+pagenums.attlist &=
+  common.attrib, pagenums.role.attrib, local.pagenums.attrib
+# end of pagenums.attlist
+
+# end of pagenums.module
+
+# Personal identity elements .......
+
+# These elements are used only within Author, Editor, and
+# OtherCredit.
+local.contrib.attrib = empty
+contrib.role.attrib = role.attrib
+# doc:A summary of the contributions made to a document by a credited source.
+contrib = element contrib { contrib.attlist, docinfo.char.mix* }
+# end of contrib.element
+contrib.attlist &=
+  common.attrib, contrib.role.attrib, local.contrib.attrib
+# end of contrib.attlist
+
+# end of contrib.module
+local.firstname.attrib = empty
+firstname.role.attrib = role.attrib
+# doc:The first name of a person.
+firstname = element firstname { firstname.attlist, docinfo.char.mix* }
+# end of firstname.element
+firstname.attlist &=
+  common.attrib, firstname.role.attrib, local.firstname.attrib
+# end of firstname.attlist
+
+# end of firstname.module
+local.honorific.attrib = empty
+honorific.role.attrib = role.attrib
+# doc:The title of a person.
+honorific = element honorific { honorific.attlist, docinfo.char.mix* }
+# end of honorific.element
+honorific.attlist &=
+  common.attrib, honorific.role.attrib, local.honorific.attrib
+# end of honorific.attlist
+
+# end of honorific.module
+local.lineage.attrib = empty
+lineage.role.attrib = role.attrib
+# doc:The portion of a person's name indicating a relationship to ancestors.
+lineage = element lineage { lineage.attlist, docinfo.char.mix* }
+# end of lineage.element
+lineage.attlist &=
+  common.attrib, lineage.role.attrib, local.lineage.attrib
+# end of lineage.attlist
+
+# end of lineage.module
+local.othername.attrib = empty
+othername.role.attrib = role.attrib
+# doc:A component of a persons name that is not a first name, surname, or lineage.
+othername = element othername { othername.attlist, docinfo.char.mix* }
+# end of othername.element
+othername.attlist &=
+  common.attrib, othername.role.attrib, local.othername.attrib
+# end of othername.attlist
+
+# end of othername.module
+local.surname.attrib = empty
+surname.role.attrib = role.attrib
+# doc:A family name; in western cultures the last name.
+surname = element surname { surname.attlist, docinfo.char.mix* }
+# end of surname.element
+surname.attlist &=
+  common.attrib, surname.role.attrib, local.surname.attrib
+# end of surname.attlist
+
+# end of surname.module
+
+# end of person.ident.module
+
+# PrintHistory .....................
+local.printhistory.attrib = empty
+printhistory.role.attrib = role.attrib
+# doc:The printing history of a document.
+printhistory =
+  element printhistory { printhistory.attlist, para.class+ }
+# end of printhistory.element
+printhistory.attlist &=
+  common.attrib, printhistory.role.attrib, local.printhistory.attrib
+# end of printhistory.attlist
+
+# end of printhistory.module
+
+# ProductName ......................
+local.productname.attrib = empty
+productname.role.attrib = role.attrib
+# doc:The formal name of a product.
+productname =
+  element productname { productname.attlist, para.char.mix* }
+# end of productname.element
+
+# Class: More precisely identifies the item the element names
+productname.attlist &=
+  [ a:defaultValue = "trade" ]
+  attribute class { "service" | "trade" | "registered" | "copyright" }?,
+  common.attrib,
+  productname.role.attrib,
+  local.productname.attrib
+# end of productname.attlist
+
+# end of productname.module
+
+# ProductNumber ....................
+local.productnumber.attrib = empty
+productnumber.role.attrib = role.attrib
+# doc:A number assigned to a product.
+productnumber =
+  element productnumber { productnumber.attlist, docinfo.char.mix* }
+# end of productnumber.element
+productnumber.attlist &=
+  common.attrib, productnumber.role.attrib, local.productnumber.attrib
+# end of productnumber.attlist
+
+# end of productnumber.module
+
+# PubDate ..........................
+local.pubdate.attrib = empty
+pubdate.role.attrib = role.attrib
+# doc:The date of publication of a document.
+pubdate = element pubdate { pubdate.attlist, docinfo.char.mix* }
+# end of pubdate.element
+pubdate.attlist &=
+  common.attrib, pubdate.role.attrib, local.pubdate.attrib
+# end of pubdate.attlist
+
+# end of pubdate.module
+
+# Publisher ........................
+local.publisher.attrib = empty
+publisher.role.attrib = role.attrib
+# doc:The publisher of a document.
+publisher =
+  element publisher { publisher.attlist, publishername, address* }
+# end of publisher.element
+publisher.attlist &=
+  common.attrib, publisher.role.attrib, local.publisher.attrib
+# end of publisher.attlist
+
+# end of publisher.module
+local.publishername.attrib = empty
+publishername.role.attrib = role.attrib
+# doc:The name of the publisher of a document.
+publishername =
+  element publishername { publishername.attlist, docinfo.char.mix* }
+# end of publishername.element
+publishername.attlist &=
+  common.attrib, publishername.role.attrib, local.publishername.attrib
+# end of publishername.attlist
+
+# end of publishername.module
+
+# Address (defined elsewhere in this section)
+
+# end of publisher.content.module
+
+# PubsNumber .......................
+local.pubsnumber.attrib = empty
+pubsnumber.role.attrib = role.attrib
+# doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number.
+pubsnumber =
+  element pubsnumber { pubsnumber.attlist, docinfo.char.mix* }
+# end of pubsnumber.element
+pubsnumber.attlist &=
+  common.attrib, pubsnumber.role.attrib, local.pubsnumber.attrib
+# end of pubsnumber.attlist
+
+# end of pubsnumber.module
+
+# ReleaseInfo ......................
+local.releaseinfo.attrib = empty
+releaseinfo.role.attrib = role.attrib
+# doc:Information about a particular release of a document.
+releaseinfo =
+  element releaseinfo { releaseinfo.attlist, docinfo.char.mix* }
+# end of releaseinfo.element
+releaseinfo.attlist &=
+  common.attrib, releaseinfo.role.attrib, local.releaseinfo.attrib
+# end of releaseinfo.attlist
+
+# end of releaseinfo.module
+
+# RevHistory .......................
+local.revhistory.attrib = empty
+revhistory.role.attrib = role.attrib
+# doc:A history of the revisions to a document.
+revhistory = element revhistory { revhistory.attlist, revision+ }
+# end of revhistory.element
+revhistory.attlist &=
+  common.attrib, revhistory.role.attrib, local.revhistory.attrib
+# end of revhistory.attlist
+
+# end of revhistory.module
+local.revision.attrib = empty
+revision.role.attrib = role.attrib
+# doc:An entry describing a single revision in the history of the revisions to a document.
+revision =
+  element revision {
+    revision.attlist,
+    revnumber?,
+    date,
+    (author | authorinitials)*,
+    (revremark | revdescription)?
+  }
+# end of revision.element
+revision.attlist &=
+  common.attrib, revision.role.attrib, local.revision.attrib
+# end of revision.attlist
+
+# end of revision.module
+local.revnumber.attrib = empty
+revnumber.role.attrib = role.attrib
+# doc:A document revision number.
+revnumber = element revnumber { revnumber.attlist, docinfo.char.mix* }
+# end of revnumber.element
+revnumber.attlist &=
+  common.attrib, revnumber.role.attrib, local.revnumber.attrib
+# end of revnumber.attlist
+
+# end of revnumber.module
+
+# Date (defined elsewhere in this section)
+
+# AuthorInitials (defined elsewhere in this section)
+local.revremark.attrib = empty
+revremark.role.attrib = role.attrib
+# doc:A description of a revision to a document.
+revremark = element revremark { revremark.attlist, docinfo.char.mix* }
+# end of revremark.element
+revremark.attlist &=
+  common.attrib, revremark.role.attrib, local.revremark.attrib
+# end of revremark.attlist
+
+# end of revremark.module
+local.revdescription.attrib = empty
+revdescription.role.attrib = role.attrib
+# doc:A extended description of a revision to a document.
+revdescription =
+  element revdescription { revdescription.attlist, revdescription.mix+ }
+# end of revdescription.element
+revdescription.attlist &=
+  common.attrib, revdescription.role.attrib, local.revdescription.attrib
+# end of revdescription.attlist
+
+# end of revdescription.module
+
+# end of revhistory.content.module
+
+# SeriesVolNums ....................
+local.seriesvolnums.attrib = empty
+seriesvolnums.role.attrib = role.attrib
+# doc:Numbers of the volumes in a series of books.
+seriesvolnums =
+  element seriesvolnums { seriesvolnums.attlist, docinfo.char.mix* }
+# end of seriesvolnums.element
+seriesvolnums.attlist &=
+  common.attrib, seriesvolnums.role.attrib, local.seriesvolnums.attrib
+# end of seriesvolnums.attlist
+
+# end of seriesvolnums.module
+
+# VolumeNum ........................
+local.volumenum.attrib = empty
+volumenum.role.attrib = role.attrib
+# doc:The volume number of a document in a set (as of books in a set or articles in a journal).
+volumenum = element volumenum { volumenum.attlist, docinfo.char.mix* }
+# end of volumenum.element
+volumenum.attlist &=
+  common.attrib, volumenum.role.attrib, local.volumenum.attrib
+# end of volumenum.attlist
+
+# end of volumenum.module
+
+# ..................................
+
+# end of docinfo.content.module
+
+# ......................................................................
+
+# Inline, link, and ubiquitous elements ................................
+
+# Technical and computer terms .........................................
+local.accel.attrib = empty
+accel.role.attrib = role.attrib
+# doc:A graphical user interface (GUI) keyboard shortcut.
+accel = element accel { accel.attlist, smallcptr.char.mix* }
+# end of accel.element
+accel.attlist &= common.attrib, accel.role.attrib, local.accel.attrib
+# end of accel.attlist
+
+# end of accel.module
+local.action.attrib = empty
+action.role.attrib = role.attrib
+# doc:A response to a user event.
+action = element action { action.attlist, cptr.char.mix* }
+# end of action.element
+action.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  action.role.attrib,
+  local.action.attrib
+# end of action.attlist
+
+# end of action.module
+local.application.attrib = empty
+application.role.attrib = role.attrib
+# doc:The name of a software program.
+application =
+  element application { application.attlist, para.char.mix* }
+# end of application.element
+application.attlist &=
+  attribute class { "hardware" | "software" }?,
+  moreinfo.attrib,
+  common.attrib,
+  application.role.attrib,
+  local.application.attrib
+# end of application.attlist
+
+# end of application.module
+local.classname.attrib = empty
+classname.role.attrib = role.attrib
+# doc:The name of a class, in the object-oriented programming sense.
+classname = element classname { classname.attlist, smallcptr.char.mix* }
+# end of classname.element
+classname.attlist &=
+  common.attrib, classname.role.attrib, local.classname.attrib
+# end of classname.attlist
+
+# end of classname.module
+local.package.attrib = empty
+package.role.attrib = role.attrib
+# doc:A package.
+package = element package { package.attlist, smallcptr.char.mix* }
+# end of package.element
+package.attlist &=
+  common.attrib, package.role.attrib, local.package.attrib
+# end of package.attlist
+
+# end of package.module
+local.co.attrib = empty
+# CO is a callout area of the LineColumn unit type (a single character
+# position); the position is directly indicated by the location of CO.
+co.role.attrib = role.attrib
+# doc:The location of a callout embedded in text.
+co = element co { co.attlist, empty }
+# end of co.element
+
+# bug number/symbol override or initialization
+
+# to any related information
+co.attlist &=
+  label.attrib,
+  linkends.attrib,
+  idreq.common.attrib,
+  co.role.attrib,
+  local.co.attrib
+# end of co.attlist
+
+# end of co.module
+local.coref.attrib = empty
+# COREF is a reference to a CO
+coref.role.attrib = role.attrib
+# doc:A cross reference to a co.
+coref = element coref { coref.attlist, empty }
+# end of coref.element
+
+# bug number/symbol override or initialization
+
+# to any related information
+coref.attlist &=
+  label.attrib,
+  linkendreq.attrib,
+  common.attrib,
+  coref.role.attrib,
+  local.coref.attrib
+# end of coref.attlist
+
+# end of coref.module
+local.command.attrib = empty
+command.role.attrib = role.attrib
+# doc:The name of an executable program or other software command.
+command = element command { command.attlist, cptr.char.mix* }
+# end of command.element
+command.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  command.role.attrib,
+  local.command.attrib
+# end of command.attlist
+
+# end of command.module
+local.computeroutput.attrib = empty
+computeroutput.role.attrib = role.attrib
+# doc:Data, generally text, displayed or presented by a computer.
+computeroutput =
+  element computeroutput {
+    computeroutput.attlist, (cptr.char.mix | co)*
+  }
+# end of computeroutput.element
+computeroutput.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  computeroutput.role.attrib,
+  local.computeroutput.attrib
+# end of computeroutput.attlist
+
+# end of computeroutput.module
+local.database.attrib = empty
+database.role.attrib = role.attrib
+# doc:The name of a database, or part of a database.
+database = element database { database.attlist, cptr.char.mix* }
+# end of database.element
+
+# Class: Type of database the element names; no default
+database.attlist &=
+  attribute class {
+    "name"
+    | "table"
+    | "field"
+    | "key1"
+    | "key2"
+    | "record"
+    | "index"
+    | "view"
+    | "primarykey"
+    | "secondarykey"
+    | "foreignkey"
+    | "altkey"
+    | "procedure"
+    | "datatype"
+    | "constraint"
+    | "rule"
+    | "user"
+    | "group"
+  }?,
+  moreinfo.attrib,
+  common.attrib,
+  database.role.attrib,
+  local.database.attrib
+# end of database.attlist
+
+# end of database.module
+local.email.attrib = empty
+email.role.attrib = role.attrib
+# doc:An email address.
+email = element email { email.attlist, docinfo.char.mix* }
+# end of email.element
+email.attlist &= common.attrib, email.role.attrib, local.email.attrib
+# end of email.attlist
+
+# end of email.module
+local.envar.attrib = empty
+envar.role.attrib = role.attrib
+# doc:A software environment variable.
+envar = element envar { envar.attlist, smallcptr.char.mix* }
+# end of envar.element
+envar.attlist &= common.attrib, envar.role.attrib, local.envar.attrib
+# end of envar.attlist
+
+# end of envar.module
+local.errorcode.attrib = empty
+errorcode.role.attrib = role.attrib
+# doc:An error code.
+errorcode = element errorcode { errorcode.attlist, smallcptr.char.mix* }
+# end of errorcode.element
+errorcode.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  errorcode.role.attrib,
+  local.errorcode.attrib
+# end of errorcode.attlist
+
+# end of errorcode.module
+local.errorname.attrib = empty
+errorname.role.attrib = role.attrib
+# doc:An error name.
+errorname = element errorname { errorname.attlist, smallcptr.char.mix* }
+# end of errorname.element
+errorname.attlist &=
+  common.attrib, errorname.role.attrib, local.errorname.attrib
+# end of errorname.attlist
+
+# end of errorname.module
+local.errortext.attrib = empty
+errortext.role.attrib = role.attrib
+# doc:An error message..
+errortext = element errortext { errortext.attlist, smallcptr.char.mix* }
+# end of errortext.element
+errortext.attlist &=
+  common.attrib, errortext.role.attrib, local.errortext.attrib
+# end of errortext.attlist
+
+# end of errortext.module
+local.errortype.attrib = empty
+errortype.role.attrib = role.attrib
+# doc:The classification of an error message.
+errortype = element errortype { errortype.attlist, smallcptr.char.mix* }
+# end of errortype.element
+errortype.attlist &=
+  common.attrib, errortype.role.attrib, local.errortype.attrib
+# end of errortype.attlist
+
+# end of errortype.module
+local.filename.attrib = empty
+filename.role.attrib = role.attrib
+# doc:The name of a file.
+filename = element filename { filename.attlist, cptr.char.mix* }
+# 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
+filename.attlist &=
+  attribute class {
+    "headerfile"
+    | "partition"
+    | "devicefile"
+    | "libraryfile"
+    | "directory"
+    | "extension"
+    | "symlink"
+  }?,
+  attribute path { text }?,
+  moreinfo.attrib,
+  common.attrib,
+  filename.role.attrib,
+  local.filename.attrib
+# end of filename.attlist
+
+# end of filename.module
+local.function.attrib = empty
+function.role.attrib = role.attrib
+# doc:The name of a function or subroutine, as in a programming language.
+function = element function { function.attlist, cptr.char.mix* }
+# end of function.element
+function.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  function.role.attrib,
+  local.function.attrib
+# end of function.attlist
+
+# end of function.module
+local.guibutton.attrib = empty
+guibutton.role.attrib = role.attrib
+# doc:The text on a button in a GUI.
+guibutton =
+  element guibutton {
+    guibutton.attlist,
+    (smallcptr.char.mix | accel | superscript | subscript)*
+  }
+# end of guibutton.element
+guibutton.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  guibutton.role.attrib,
+  local.guibutton.attrib
+# end of guibutton.attlist
+
+# end of guibutton.module
+local.guiicon.attrib = empty
+guiicon.role.attrib = role.attrib
+# doc:Graphic and/or text appearing as a icon in a GUI.
+guiicon =
+  element guiicon {
+    guiicon.attlist,
+    (smallcptr.char.mix | accel | superscript | subscript)*
+  }
+# end of guiicon.element
+guiicon.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  guiicon.role.attrib,
+  local.guiicon.attrib
+# end of guiicon.attlist
+
+# end of guiicon.module
+local.guilabel.attrib = empty
+guilabel.role.attrib = role.attrib
+# doc:The text of a label in a GUI.
+guilabel =
+  element guilabel {
+    guilabel.attlist,
+    (smallcptr.char.mix | accel | superscript | subscript)*
+  }
+# end of guilabel.element
+guilabel.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  guilabel.role.attrib,
+  local.guilabel.attrib
+# end of guilabel.attlist
+
+# end of guilabel.module
+local.guimenu.attrib = empty
+guimenu.role.attrib = role.attrib
+# doc:The name of a menu in a GUI.
+guimenu =
+  element guimenu {
+    guimenu.attlist,
+    (smallcptr.char.mix | accel | superscript | subscript)*
+  }
+# end of guimenu.element
+guimenu.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  guimenu.role.attrib,
+  local.guimenu.attrib
+# end of guimenu.attlist
+
+# end of guimenu.module
+local.guimenuitem.attrib = empty
+guimenuitem.role.attrib = role.attrib
+# doc:The name of a terminal menu item in a GUI.
+guimenuitem =
+  element guimenuitem {
+    guimenuitem.attlist,
+    (smallcptr.char.mix | accel | superscript | subscript)*
+  }
+# end of guimenuitem.element
+guimenuitem.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  guimenuitem.role.attrib,
+  local.guimenuitem.attrib
+# end of guimenuitem.attlist
+
+# end of guimenuitem.module
+local.guisubmenu.attrib = empty
+guisubmenu.role.attrib = role.attrib
+# doc:The name of a submenu in a GUI.
+guisubmenu =
+  element guisubmenu {
+    guisubmenu.attlist,
+    (smallcptr.char.mix | accel | superscript | subscript)*
+  }
+# end of guisubmenu.element
+guisubmenu.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  guisubmenu.role.attrib,
+  local.guisubmenu.attrib
+# end of guisubmenu.attlist
+
+# end of guisubmenu.module
+local.hardware.attrib = empty
+hardware.role.attrib = role.attrib
+# doc:A physical part of a computer system.
+hardware = element hardware { hardware.attlist, cptr.char.mix* }
+# end of hardware.element
+hardware.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  hardware.role.attrib,
+  local.hardware.attrib
+# end of hardware.attlist
+
+# end of hardware.module
+local.interface.attrib = empty
+interface.role.attrib = role.attrib
+# doc:An element of a GUI.
+interface =
+  element interface { interface.attlist, (smallcptr.char.mix | accel)* }
+# end of interface.element
+
+# Class: Type of the Interface item; no default
+interface.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  interface.role.attrib,
+  local.interface.attrib
+# end of interface.attlist
+
+# end of interface.module
+local.keycap.attrib = empty
+keycap.role.attrib = role.attrib
+# doc:The text printed on a key on a keyboard.
+keycap = element keycap { keycap.attlist, cptr.char.mix* }
+# end of keycap.element
+keycap.attlist &=
+  attribute function {
+    "alt"
+    | "control"
+    | "shift"
+    | "meta"
+    | "escape"
+    | "enter"
+    | "tab"
+    | "backspace"
+    | "command"
+    | "option"
+    | "space"
+    | "delete"
+    | "insert"
+    | "up"
+    | "down"
+    | "left"
+    | "right"
+    | "home"
+    | "end"
+    | "pageup"
+    | "pagedown"
+    | "other"
+  }?,
+  attribute otherfunction { text }?,
+  moreinfo.attrib,
+  common.attrib,
+  keycap.role.attrib,
+  local.keycap.attrib
+# end of keycap.attlist
+
+# end of keycap.module
+local.keycode.attrib = empty
+keycode.role.attrib = role.attrib
+# doc:The internal, frequently numeric, identifier for a key on a keyboard.
+keycode = element keycode { keycode.attlist, smallcptr.char.mix* }
+# end of keycode.element
+keycode.attlist &=
+  common.attrib, keycode.role.attrib, local.keycode.attrib
+# end of keycode.attlist
+
+# end of keycode.module
+local.keycombo.attrib = empty
+keycombo.role.attrib = role.attrib
+# doc:A combination of input actions.
+keycombo =
+  element keycombo {
+    keycombo.attlist, (keycap | keycombo | keysym | mousebutton)+
+  }
+# end of keycombo.element
+keycombo.attlist &=
+  keyaction.attrib,
+  moreinfo.attrib,
+  common.attrib,
+  keycombo.role.attrib,
+  local.keycombo.attrib
+# end of keycombo.attlist
+
+# end of keycombo.module
+local.keysym.attrib = empty
+keysysm.role.attrib = role.attrib
+# doc:The symbolic name of a key on a keyboard.
+keysym = element keysym { keysym.attlist, smallcptr.char.mix* }
+# end of keysym.element
+keysym.attlist &=
+  common.attrib, keysysm.role.attrib, local.keysym.attrib
+# end of keysym.attlist
+
+# end of keysym.module
+local.lineannotation.attrib = empty
+lineannotation.role.attrib = role.attrib
+# doc:A comment on a line in a verbatim listing.
+lineannotation =
+  element lineannotation { lineannotation.attlist, para.char.mix* }
+# end of lineannotation.element
+lineannotation.attlist &=
+  common.attrib, lineannotation.role.attrib, local.lineannotation.attrib
+# end of lineannotation.attlist
+
+# end of lineannotation.module
+local.literal.attrib = empty
+literal.role.attrib = role.attrib
+# doc:Inline text that is some literal value.
+literal = element literal { literal.attlist, cptr.char.mix* }
+# end of literal.element
+literal.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  literal.role.attrib,
+  local.literal.attrib
+# end of literal.attlist
+
+# end of literal.module
+local.code.attrib = empty
+code.role.attrib = role.attrib
+# doc:An inline code fragment.
+code = element code { code.attlist, cptr.char.mix* }
+# end of code.element
+code.attlist &=
+  attribute language { text }?,
+  common.attrib,
+  code.role.attrib,
+  local.code.attrib
+# end of code.attlist
+
+# end of code.module
+local.constant.attrib = empty
+constant.role.attrib = role.attrib
+# doc:A programming or system constant.
+constant = element constant { constant.attlist, smallcptr.char.mix* }
+# end of constant.element
+constant.attlist &=
+  attribute class { "limit" }?,
+  common.attrib,
+  constant.role.attrib,
+  local.constant.attrib
+# end of constant.attlist
+
+# end of constant.module
+local.varname.attrib = empty
+varname.role.attrib = role.attrib
+# doc:The name of a variable.
+varname = element varname { varname.attlist, smallcptr.char.mix* }
+# end of varname.element
+varname.attlist &=
+  common.attrib, varname.role.attrib, local.varname.attrib
+# end of varname.attlist
+
+# end of varname.module
+local.markup.attrib = empty
+markup.role.attrib = role.attrib
+# doc:A string of formatting markup in text that is to be represented literally.
+markup = element markup { markup.attlist, smallcptr.char.mix* }
+# end of markup.element
+markup.attlist &= common.attrib, markup.role.attrib, local.markup.attrib
+# end of markup.attlist
+
+# end of markup.module
+local.medialabel.attrib = empty
+medialabel.role.attrib = role.attrib
+# doc:A name that identifies the physical medium on which some information resides.
+medialabel =
+  element medialabel { medialabel.attlist, smallcptr.char.mix* }
+# end of medialabel.element
+
+# Class: Type of medium named by the element; no default
+medialabel.attlist &=
+  attribute class { "cartridge" | "cdrom" | "disk" | "tape" }?,
+  common.attrib,
+  medialabel.role.attrib,
+  local.medialabel.attrib
+# end of medialabel.attlist
+
+# end of medialabel.module
+local.menuchoice.attrib = empty
+menuchoice.role.attrib = role.attrib
+# doc:A selection or series of selections from a menu.
+menuchoice =
+  element menuchoice {
+    menuchoice.attlist,
+    shortcut?,
+    (guibutton
+     | guiicon
+     | guilabel
+     | guimenu
+     | guimenuitem
+     | guisubmenu
+     | interface)+
+  }
+# end of menuchoice.element
+menuchoice.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  menuchoice.role.attrib,
+  local.menuchoice.attrib
+# end of menuchoice.attlist
+
+# end of menuchoice.module
+
+# See also KeyCombo
+local.shortcut.attrib = empty
+shortcut.role.attrib = role.attrib
+# doc:A key combination for an action that is also accessible through a menu.
+shortcut =
+  element shortcut {
+    shortcut.attlist, (keycap | keycombo | keysym | mousebutton)+
+  }
+# end of shortcut.element
+shortcut.attlist &=
+  keyaction.attrib,
+  moreinfo.attrib,
+  common.attrib,
+  shortcut.role.attrib,
+  local.shortcut.attrib
+# end of shortcut.attlist
+
+# end of shortcut.module
+
+# end of menuchoice.content.module
+local.mousebutton.attrib = empty
+mousebutton.role.attrib = role.attrib
+# doc:The conventional name of a mouse button.
+mousebutton =
+  element mousebutton { mousebutton.attlist, smallcptr.char.mix* }
+# end of mousebutton.element
+mousebutton.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  mousebutton.role.attrib,
+  local.mousebutton.attrib
+# end of mousebutton.attlist
+
+# end of mousebutton.module
+local.msgtext.attrib = empty
+msgtext.role.attrib = role.attrib
+# doc:The actual text of a message component in a message set.
+msgtext = element msgtext { msgtext.attlist, component.mix+ }
+# end of msgtext.element
+msgtext.attlist &=
+  common.attrib, msgtext.role.attrib, local.msgtext.attrib
+# end of msgtext.attlist
+
+# end of msgtext.module
+local.option.attrib = empty
+option.role.attrib = role.attrib
+# doc:An option for a software command.
+option = element option { option.attlist, cptr.char.mix* }
+# end of option.element
+option.attlist &= common.attrib, option.role.attrib, local.option.attrib
+# end of option.attlist
+
+# end of option.module
+local.optional.attrib = empty
+optional.role.attrib = role.attrib
+# doc:Optional information.
+optional = element optional { optional.attlist, cptr.char.mix* }
+# end of optional.element
+optional.attlist &=
+  common.attrib, optional.role.attrib, local.optional.attrib
+# end of optional.attlist
+
+# end of optional.module
+local.parameter.attrib = empty
+parameter.role.attrib = role.attrib
+# doc:A value or a symbolic reference to a value.
+parameter = element parameter { parameter.attlist, cptr.char.mix* }
+# end of parameter.element
+
+# Class: Type of the Parameter; no default
+parameter.attlist &=
+  attribute class { "command" | "function" | "option" }?,
+  moreinfo.attrib,
+  common.attrib,
+  parameter.role.attrib,
+  local.parameter.attrib
+# end of parameter.attlist
+
+# end of parameter.module
+local.prompt.attrib = empty
+prompt.role.attrib = role.attrib
+# doc:A character or string indicating the start of an input field in a  computer display.
+prompt = element prompt { prompt.attlist, (smallcptr.char.mix | co)* }
+# end of prompt.element
+prompt.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  prompt.role.attrib,
+  local.prompt.attrib
+# end of prompt.attlist
+
+# end of prompt.module
+local.property.attrib = empty
+property.role.attrib = role.attrib
+# doc:A unit of data associated with some part of a computer system.
+property = element property { property.attlist, cptr.char.mix* }
+# end of property.element
+property.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  property.role.attrib,
+  local.property.attrib
+# end of property.attlist
+
+# end of property.module
+local.replaceable.attrib = empty
+replaceable.role.attrib = role.attrib
+# doc:Content that may or must be replaced by the user.
+replaceable =
+  element replaceable {
+    replaceable.attlist,
+    (text
+     | link.char.class
+     | optional
+     | base.char.class
+     | other.char.class
+     | inlinegraphic
+     | inlinemediaobject
+     | co)*
+  }
+# end of replaceable.element
+
+# Class: Type of information the element represents; no
+# default
+replaceable.attlist &=
+  attribute class { "command" | "function" | "option" | "parameter" }?,
+  common.attrib,
+  replaceable.role.attrib,
+  local.replaceable.attrib
+# end of replaceable.attlist
+
+# end of replaceable.module
+local.returnvalue.attrib = empty
+returnvalue.role.attrib = role.attrib
+# doc:The value returned by a function.
+returnvalue =
+  element returnvalue { returnvalue.attlist, smallcptr.char.mix* }
+# end of returnvalue.element
+returnvalue.attlist &=
+  common.attrib, returnvalue.role.attrib, local.returnvalue.attrib
+# end of returnvalue.attlist
+
+# end of returnvalue.module
+local.sgmltag.attrib = empty
+sgmltag.role.attrib = role.attrib
+# doc:A component of SGML markup.
+sgmltag = element sgmltag { sgmltag.attlist, smallcptr.char.mix* }
+# end of sgmltag.element
+
+# Class: Type of SGML construct the element names; no default
+sgmltag.attlist &=
+  attribute class {
+    "attribute"
+    | "attvalue"
+    | "element"
+    | "endtag"
+    | "emptytag"
+    | "genentity"
+    | "numcharref"
+    | "paramentity"
+    | "pi"
+    | "xmlpi"
+    | "starttag"
+    | "sgmlcomment"
+    | "prefix"
+    | "namespace"
+    | "localname"
+  }?,
+  attribute namespace { text }?,
+  common.attrib,
+  sgmltag.role.attrib,
+  local.sgmltag.attrib
+# end of sgmltag.attlist
+
+# end of sgmltag.module
+local.structfield.attrib = empty
+structfield.role.attrib = role.attrib
+# doc:A field in a structure (in the programming language sense).
+structfield =
+  element structfield { structfield.attlist, smallcptr.char.mix* }
+# end of structfield.element
+structfield.attlist &=
+  common.attrib, structfield.role.attrib, local.structfield.attrib
+# end of structfield.attlist
+
+# end of structfield.module
+local.structname.attrib = empty
+structname.role.attrib = role.attrib
+# doc:The name of a structure (in the programming language sense).
+structname =
+  element structname { structname.attlist, smallcptr.char.mix* }
+# end of structname.element
+structname.attlist &=
+  common.attrib, structname.role.attrib, local.structname.attrib
+# end of structname.attlist
+
+# end of structname.module
+local.symbol.attrib = empty
+symbol.role.attrib = role.attrib
+# doc:A name that is replaced by a value before processing.
+symbol = element symbol { symbol.attlist, smallcptr.char.mix* }
+# end of symbol.element
+
+# Class: Type of symbol; no default
+symbol.attlist &=
+  attribute class { "limit" }?,
+  common.attrib,
+  symbol.role.attrib,
+  local.symbol.attrib
+# end of symbol.attlist
+
+# end of symbol.module
+local.systemitem.attrib = empty
+systemitem.role.attrib = role.attrib
+# doc:A system-related item or term.
+systemitem =
+  element systemitem {
+    systemitem.attlist, (cptr.char.mix | acronym | co)*
+  }
+# end of systemitem.element
+
+# Class: Type of system item the element names; no default
+systemitem.attlist &=
+  attribute class {
+    "constant"
+    | "daemon"
+    | "domainname"
+    | "etheraddress"
+    | "event"
+    | "eventhandler"
+    | "filesystem"
+    | "fqdomainname"
+    | "groupname"
+    | "ipaddress"
+    | "library"
+    | "macro"
+    | "netmask"
+    | "newsgroup"
+    | "osname"
+    | "protocol"
+    | "resource"
+    | "systemname"
+    | "username"
+    | "process"
+    | "server"
+    | "service"
+  }?,
+  moreinfo.attrib,
+  common.attrib,
+  systemitem.role.attrib,
+  local.systemitem.attrib
+# end of systemitem.attlist
+
+# end of systemitem.module
+local.uri.attrib = empty
+uri.role.attrib = role.attrib
+# doc:A Uniform Resource Identifier.
+uri = element uri { uri.attlist, smallcptr.char.mix* }
+# end of uri.element
+
+# Type: Type of URI; no default
+uri.attlist &=
+  attribute type { text }?,
+  common.attrib,
+  uri.role.attrib,
+  local.uri.attrib
+# end of uri.attlist
+
+# end of uri.module
+local.token.attrib = empty
+token.role.attrib = role.attrib
+# doc:A unit of information.
+\token = element token { token.attlist, smallcptr.char.mix* }
+# end of token.element
+token.attlist &= common.attrib, token.role.attrib, local.token.attrib
+# end of token.attlist
+
+# end of token.module
+local.type.attrib = empty
+type.role.attrib = role.attrib
+# doc:The classification of a value.
+type = element type { type.attlist, smallcptr.char.mix* }
+# end of type.element
+type.attlist &= common.attrib, type.role.attrib, local.type.attrib
+# end of type.attlist
+
+# end of type.module
+local.userinput.attrib = empty
+userinput.role.attrib = role.attrib
+# doc:Data entered by the user.
+userinput =
+  element userinput { userinput.attlist, (cptr.char.mix | co)* }
+# end of userinput.element
+userinput.attlist &=
+  moreinfo.attrib,
+  common.attrib,
+  userinput.role.attrib,
+  local.userinput.attrib
+# end of userinput.attlist
+
+# end of userinput.module
+local.termdef.attrib = empty
+termdef.role.attrib = role.attrib
+# doc:An inline definition of a term.
+termdef = element termdef { termdef.attlist, para.char.mix* }
+# end of termdef.element
+termdef.attlist &=
+  common.attrib, termdef.role.attrib, local.termdef.attrib
+# end of termdef.attlist
+
+# end of termdef.module
+
+# General words and phrases ............................................
+local.abbrev.attrib = empty
+abbrev.role.attrib = role.attrib
+# doc:An abbreviation, especially one followed by a period.
+abbrev = element abbrev { abbrev.attlist, word.char.mix* }
+# end of abbrev.element
+abbrev.attlist &= common.attrib, abbrev.role.attrib, local.abbrev.attrib
+# end of abbrev.attlist
+
+# end of abbrev.module
+local.acronym.attrib = empty
+acronym.role.attrib = role.attrib
+# doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase.
+acronym = element acronym { acronym.attlist, word.char.mix* }
+# end of acronym.element
+acronym.attlist &=
+  common.attrib, acronym.role.attrib, local.acronym.attrib
+# end of acronym.attlist
+
+# end of acronym.module
+local.citation.attrib = empty
+citation.role.attrib = role.attrib
+# doc:An inline bibliographic reference to another published work.
+citation = element citation { citation.attlist, para.char.mix* }
+# end of citation.element
+citation.attlist &=
+  common.attrib, citation.role.attrib, local.citation.attrib
+# end of citation.attlist
+
+# end of citation.module
+local.citerefentry.attrib = empty
+citerefentry.role.attrib = role.attrib
+# doc:A citation to a reference page.
+citerefentry =
+  element citerefentry {
+    citerefentry.attlist, refentrytitle, manvolnum?
+  }
+# end of citerefentry.element
+citerefentry.attlist &=
+  common.attrib, citerefentry.role.attrib, local.citerefentry.attrib
+# end of citerefentry.attlist
+
+# end of citerefentry.module
+local.refentrytitle.attrib = empty
+refentrytitle.role.attrib = role.attrib
+# doc:The title of a reference page.
+refentrytitle =
+  element refentrytitle { refentrytitle.attlist, para.char.mix* }
+# end of refentrytitle.element
+refentrytitle.attlist &=
+  common.attrib, refentrytitle.role.attrib, local.refentrytitle.attrib
+# end of refentrytitle.attlist
+
+# end of refentrytitle.module
+local.manvolnum.attrib = empty
+namvolnum.role.attrib = role.attrib
+# doc:A reference volume number.
+manvolnum = element manvolnum { manvolnum.attlist, word.char.mix* }
+# end of manvolnum.element
+manvolnum.attlist &=
+  common.attrib, namvolnum.role.attrib, local.manvolnum.attrib
+# end of manvolnum.attlist
+
+# end of manvolnum.module
+local.citetitle.attrib = empty
+citetitle.role.attrib = role.attrib
+# doc:The title of a cited work.
+citetitle = element citetitle { citetitle.attlist, para.char.mix* }
+# end of citetitle.element
+
+# Pubwork: Genre of published work cited; no default
+citetitle.attlist &=
+  attribute pubwork {
+    "article"
+    | "book"
+    | "chapter"
+    | "part"
+    | "refentry"
+    | "section"
+    | "journal"
+    | "series"
+    | "set"
+    | "manuscript"
+    | "cdrom"
+    | "dvd"
+    | "wiki"
+    | "gopher"
+    | "bbs"
+    | "emailmessage"
+    | "webpage"
+    | "newsposting"
+  }?,
+  common.attrib,
+  citetitle.role.attrib,
+  local.citetitle.attrib
+# end of citetitle.attlist
+
+# end of citetitle.module
+local.emphasis.attrib = empty
+emphasis.role.attrib = role.attrib
+# doc:Emphasized text.
+emphasis = element emphasis { emphasis.attlist, para.char.mix* }
+# end of emphasis.element
+emphasis.attlist &=
+  common.attrib, emphasis.role.attrib, local.emphasis.attrib
+# end of emphasis.attlist
+
+# end of emphasis.module
+local.foreignphrase.attrib = empty
+foreignphrase.role.attrib = role.attrib
+# doc:A word or phrase in a language other than the primary language of the document.
+foreignphrase =
+  element foreignphrase { foreignphrase.attlist, para.char.mix* }
+# end of foreignphrase.element
+foreignphrase.attlist &=
+  common.attrib, foreignphrase.role.attrib, local.foreignphrase.attrib
+# end of foreignphrase.attlist
+
+# end of foreignphrase.module
+local.glossterm.attrib = empty
+glossterm.role.attrib = role.attrib
+# doc:A glossary term.
+glossterm = element glossterm { glossterm.attlist, para.char.mix* }
+# end of glossterm.element
+
+# to GlossEntry if Glossterm used in text
+
+# BaseForm: Provides the form of GlossTerm to be used
+# for indexing
+glossterm.attlist &=
+  attribute baseform { text }?,
+  linkend.attrib,
+  common.attrib,
+  glossterm.role.attrib,
+  local.glossterm.attrib
+# end of glossterm.attlist
+
+# end of glossterm.module
+local.firstterm.attrib = empty
+firstterm.role.attrib = role.attrib
+# doc:The first occurrence of a term.
+firstterm = element firstterm { firstterm.attlist, para.char.mix* }
+# end of firstterm.element
+
+# to GlossEntry or other explanation
+firstterm.attlist &=
+  attribute baseform { text }?,
+  linkend.attrib,
+  common.attrib,
+  firstterm.role.attrib,
+  local.firstterm.attrib
+# end of firstterm.attlist
+
+# end of firstterm.module
+local.phrase.attrib = empty
+phrase.role.attrib = role.attrib
+# doc:A span of text.
+phrase = element phrase { phrase.attlist, para.char.mix* }
+# end of phrase.element
+phrase.attlist &= common.attrib, phrase.role.attrib, local.phrase.attrib
+# end of phrase.attlist
+
+# end of phrase.module
+local.quote.attrib = empty
+quote.role.attrib = role.attrib
+# doc:An inline quotation.
+quote = element quote { quote.attlist, para.char.mix* }
+# end of quote.element
+quote.attlist &= common.attrib, quote.role.attrib, local.quote.attrib
+# end of quote.attlist
+
+# end of quote.module
+local.ssscript.attrib = empty
+ssscript.role.attrib = role.attrib
+# doc:A subscript (as in H{^2}O, the molecular formula for water).
+subscript =
+  element subscript {
+    subscript.attlist,
+    (text
+     | link.char.class
+     | emphasis
+     | replaceable
+     | symbol
+     | inlinegraphic
+     | inlinemediaobject
+     | base.char.class
+     | other.char.class)*
+  }
+# end of subscript.element
+subscript.attlist &=
+  common.attrib, ssscript.role.attrib, local.ssscript.attrib
+# end of subscript.attlist
+
+# doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself).
+superscript =
+  element superscript {
+    superscript.attlist,
+    (text
+     | link.char.class
+     | emphasis
+     | replaceable
+     | symbol
+     | inlinegraphic
+     | inlinemediaobject
+     | base.char.class
+     | other.char.class)*
+  }
+# end of superscript.element
+superscript.attlist &=
+  common.attrib, ssscript.role.attrib, local.ssscript.attrib
+# end of superscript.attlist
+
+# end of ssscript.module
+local.trademark.attrib = empty
+trademark.role.attrib = role.attrib
+# doc:A trademark.
+trademark =
+  element trademark {
+    trademark.attlist,
+    (text
+     | link.char.class
+     | tech.char.class
+     | base.char.class
+     | other.char.class
+     | inlinegraphic
+     | inlinemediaobject
+     | emphasis)*
+  }
+# end of trademark.element
+
+# Class: More precisely identifies the item the element names
+trademark.attlist &=
+  [ a:defaultValue = "trade" ]
+  attribute class { "service" | "trade" | "registered" | "copyright" }?,
+  common.attrib,
+  trademark.role.attrib,
+  local.trademark.attrib
+# end of trademark.attlist
+
+# end of trademark.module
+local.wordasword.attrib = empty
+wordasword.role.attrib = role.attrib
+# doc:A word meant specifically as a word and not representing anything else.
+wordasword = element wordasword { wordasword.attlist, word.char.mix* }
+# end of wordasword.element
+wordasword.attlist &=
+  common.attrib, wordasword.role.attrib, local.wordasword.attrib
+# end of wordasword.attlist
+
+# end of wordasword.module
+
+# Links and cross-references ...........................................
+local.link.attrib = empty
+link.role.attrib = role.attrib
+# doc:A hypertext link.
+link = element link { link.attlist, para.char.mix* }
+# 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
+link.attlist &=
+  attribute endterm { xsd:IDREF }?,
+  attribute xrefstyle { text }?,
+  attribute type { text }?,
+  linkendreq.attrib,
+  common.attrib,
+  link.role.attrib,
+  local.link.attrib
+# end of link.attlist
+
+# end of link.module
+local.olink.attrib = empty
+olink.role.attrib = role.attrib
+# doc:A link that addresses its target indirectly, through an entity.
+olink = element olink { olink.attlist, para.char.mix* }
+# 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
+olink.attlist &=
+  attribute targetdocent { xsd:ENTITY }?,
+  attribute linkmode { xsd:IDREF }?,
+  attribute localinfo { text }?,
+  attribute type { text }?,
+  attribute targetdoc { text }?,
+  attribute targetptr { text }?,
+  attribute xrefstyle { text }?,
+  common.attrib,
+  olink.role.attrib,
+  local.olink.attrib
+# end of olink.attlist
+
+# end of olink.module
+local.ulink.attrib = empty
+ulink.role.attrib = role.attrib
+# doc:A link that addresses its target by means of a URL (Uniform Resource Locator).
+ulink = element ulink { ulink.attlist, para.char.mix* }
+# end of ulink.element
+
+# URL: uniform resource locator; the target of the ULink
+
+# Type: Freely assignable parameter
+ulink.attlist &=
+  attribute url { text },
+  attribute type { text }?,
+  attribute xrefstyle { text }?,
+  common.attrib,
+  ulink.role.attrib,
+  local.ulink.attrib
+# end of ulink.attlist
+
+# end of ulink.module
+local.footnoteref.attrib = empty
+footnoteref.role.attrib = role.attrib
+# doc:A cross reference to a footnote (a footnote mark).
+footnoteref = element footnoteref { footnoteref.attlist, empty }
+# end of footnoteref.element
+
+# to footnote content supplied elsewhere
+footnoteref.attlist &=
+  linkendreq.attrib,
+  label.attrib,
+  common.attrib,
+  footnoteref.role.attrib,
+  local.footnoteref.attrib
+# end of footnoteref.attlist
+
+# end of footnoteref.module
+local.xref.attrib = empty
+xref.role.attrib = role.attrib
+# doc:A cross reference to another part of the document.
+xref = element xref { xref.attlist, empty }
+# 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
+xref.attlist &=
+  attribute endterm { xsd:IDREF }?,
+  attribute xrefstyle { text }?,
+  common.attrib,
+  linkendreq.attrib,
+  xref.role.attrib,
+  local.xref.attrib
+# end of xref.attlist
+
+# end of xref.module
+local.biblioref.attrib = empty
+biblioref.role.attrib = role.attrib
+# doc:A cross reference to a bibliographic entry.
+biblioref = element biblioref { biblioref.attlist, empty }
+# end of biblioref.element
+biblioref.attlist &=
+  attribute endterm { xsd:IDREF }?,
+  attribute xrefstyle { text }?,
+  attribute units { text }?,
+  attribute begin { text }?,
+  attribute end { text }?,
+  common.attrib,
+  linkendreq.attrib,
+  biblioref.role.attrib,
+  local.biblioref.attrib
+# end of biblioref.attlist
+
+# end of biblioref.module
+
+# Ubiquitous elements ..................................................
+local.anchor.attrib = empty
+anchor.role.attrib = role.attrib
+# doc:A spot in the document.
+anchor = element anchor { anchor.attlist, empty }
+# end of anchor.element
+
+# required
+
+# replaces Lang
+anchor.attlist &=
+  idreq.attrib,
+  pagenum.attrib,
+  remap.attrib,
+  xreflabel.attrib,
+  revisionflag.attrib,
+  effectivity.attrib,
+  anchor.role.attrib,
+  local.anchor.attrib
+# end of anchor.attlist
+
+# end of anchor.module
+local.beginpage.attrib = empty
+beginpage.role.attrib = role.attrib
+# doc:The location of a page break in a print version of the document.
+beginpage = element beginpage { beginpage.attlist, empty }
+# end of beginpage.element
+
+# PageNum: Number of page that begins at this point
+beginpage.attlist &=
+  pagenum.attrib,
+  common.attrib,
+  beginpage.role.attrib,
+  local.beginpage.attrib
+# end of beginpage.attlist
+
+# end of beginpage.module
+
+# IndexTerms appear in the text flow for generating or linking an
+# index.
+local.indexterm.attrib = empty
+indexterm.role.attrib = role.attrib
+# doc:A wrapper for terms to be indexed.
+indexterm =
+  element indexterm {
+    indexterm.attlist,
+    primary?,
+    ((secondary,
+      ((tertiary, (see | seealso+)?)
+       | see
+       | seealso+)?)
+     | see
+     | seealso+)?
+  }
+# 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
+indexterm.attlist &=
+  pagenum.attrib,
+  attribute scope { "all" | "global" | "local" }?,
+  [ a:defaultValue = "normal" ]
+  attribute significance { "preferred" | "normal" }?,
+  attribute class { "singular" | "startofrange" | "endofrange" }?,
+  attribute startref { xsd:IDREF }?,
+  attribute zone { xsd:IDREFS }?,
+  attribute type { text }?,
+  common.attrib,
+  indexterm.role.attrib,
+  local.indexterm.attrib
+# end of indexterm.attlist
+
+# end of indexterm.module
+local.primsecter.attrib = empty
+primsecter.role.attrib = role.attrib
+# doc:The primary word or phrase under which an index term should be sorted.
+primary = element primary { primary.attlist, ndxterm.char.mix* }
+# end of primary.element
+
+# SortAs: Alternate sort string for index sorting, e.g.,
+# "fourteen" for an element containing "14"
+primary.attlist &=
+  attribute sortas { text }?,
+  common.attrib,
+  primsecter.role.attrib,
+  local.primsecter.attrib
+# end of primary.attlist
+
+# doc:A secondary word or phrase in an index term.
+secondary = element secondary { secondary.attlist, ndxterm.char.mix* }
+# end of secondary.element
+
+# SortAs: Alternate sort string for index sorting, e.g.,
+# "fourteen" for an element containing "14"
+secondary.attlist &=
+  attribute sortas { text }?,
+  common.attrib,
+  primsecter.role.attrib,
+  local.primsecter.attrib
+# end of secondary.attlist
+
+# doc:A tertiary word or phrase in an index term.
+tertiary = element tertiary { tertiary.attlist, ndxterm.char.mix* }
+# end of tertiary.element
+
+# SortAs: Alternate sort string for index sorting, e.g.,
+# "fourteen" for an element containing "14"
+tertiary.attlist &=
+  attribute sortas { text }?,
+  common.attrib,
+  primsecter.role.attrib,
+  local.primsecter.attrib
+# end of tertiary.attlist
+
+# end of primsecter.module
+local.seeseealso.attrib = empty
+seeseealso.role.attrib = role.attrib
+# doc:Part of an index term directing the reader instead to another entry in the index.
+see = element see { see.attlist, ndxterm.char.mix* }
+# end of see.element
+see.attlist &=
+  common.attrib, seeseealso.role.attrib, local.seeseealso.attrib
+# end of see.attlist
+
+# doc:Part of an index term directing the reader also to another entry in the index.
+seealso = element seealso { seealso.attlist, ndxterm.char.mix* }
+# end of seealso.element
+seealso.attlist &=
+  common.attrib, seeseealso.role.attrib, local.seeseealso.attrib
+# end of seealso.attlist
+
+# end of seeseealso.module
+
+# end of indexterm.content.module
+
+# End of DocBook XML information pool module V4.5 ......................
+
+# ......................................................................
Index: BOOK/schema/docbook/4.5/rng/dbpoolx.rng
===================================================================
--- BOOK/schema/docbook/4.5/rng/dbpoolx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/dbpoolx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,10774 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook XML information pool module V4.5 ............................. -->
+<!-- File dbpoolx.mod ..................................................... -->
+<!--
+  Copyright 1992-2004 HaL Computer Systems, Inc.,
+  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+  Organization for the Advancement of Structured Information
+  Standards (OASIS).
+  
+  $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+  
+  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.5//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.
+-->
+<!-- ...................................................................... -->
+<!-- Forms entities ....................................................... -->
+<!-- These PEs provide the hook by which the forms module can be inserted -->
+<!-- into the DTD. -->
+<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <define name="forminlines.hook">
+    <notAllowed/>
+  </define>
+  <define name="forms.hook">
+    <notAllowed/>
+  </define>
+  <!-- ...................................................................... -->
+  <!-- General-purpose semantics entities ................................... -->
+  <define name="yesorno.attvals">
+    <data type="string" datatypeLibrary=""/>
+  </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="bibliolist"/>
+      <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="task"/>
+      <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="biblioref"/>
+      <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="citebiblioid"/>
+      <ref name="emphasis"/>
+      <ref name="firstterm"/>
+      <ref name="foreignphrase"/>
+      <ref name="glossterm"/>
+      <ref name="termdef"/>
+      <ref name="footnote"/>
+      <ref name="phrase"/>
+      <ref name="orgname"/>
+      <ref name="quote"/>
+      <ref name="trademark"/>
+      <ref name="wordasword"/>
+      <ref name="personname"/>
+      <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="package"/>
+      <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="errortext"/>
+      <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="code"/>
+      <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="uri"/>
+      <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="corpcredit"/>
+      <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>
+  <!-- ...................................................................... -->
+  <!-- Entities for content models .......................................... -->
+  <define name="formalobject.title.content">
+    <ref name="title"/>
+    <optional>
+      <ref name="titleabbrev"/>
+    </optional>
+  </define>
+  <!-- Redeclaration placeholder ............................................ -->
+  <!--
+    For redeclaring entities that are declared after this point while
+    retaining their references to the entities that are declared before
+    this point
+  -->
+  <!-- Object-level mixtures ................................................ -->
+  <!--
+                          list admn line synp para infm form cmpd gen  desc
+    Component mixture       X    X    X    X    X    X    X    X    X    X
+    Sidebar mixture         X    X    X    X    X    X    X    a    X
+    Footnote mixture        X         X    X    X    X
+    Example mixture         X         X    X    X    X
+    Highlights mixture      X    X              X
+    Paragraph mixture       X         X    X         X
+    Admonition mixture      X         X    X    X    X    X    b    c
+    Figure mixture                    X    X         X
+    Table entry mixture     X    X    X         X    d
+    Glossary def mixture    X         X    X    X    X         e
+    Legal notice mixture    X    X    X         X    f
+    
+    a. Just Procedure; not Sidebar itself or MsgSet.
+    b. No MsgSet.
+    c. No Highlights.
+    d. Just Graphic; no other informal objects.
+    e. No Anchor, BridgeHead, or Highlights.
+    f. Just BlockQuote; no other informal objects.
+  -->
+  <define name="local.component.mix">
+    <notAllowed/>
+  </define>
+  <define name="component.mix">
+    <choice>
+      <ref name="list.class"/>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="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.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="forms.hook"/>
+      <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="forms.hook"/>
+      <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="procedure"/>
+      <ref name="forms.hook"/>
+      <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="forms.hook"/>
+      <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="forms.hook"/>
+      <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="forms.hook"/>
+      <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="imageobjectco"/>
+      <ref name="textobject"/>
+      <ref name="local.mediaobject.mix"/>
+    </choice>
+  </define>
+  <define name="local.listpreamble.mix">
+    <notAllowed/>
+  </define>
+  <define name="listpreamble.mix">
+    <choice>
+      <ref name="admon.class"/>
+      <ref name="linespecific.class"/>
+      <ref name="synop.class"/>
+      <ref name="para.class"/>
+      <ref name="informal.class"/>
+      <ref name="genobj.class"/>
+      <ref name="descobj.class"/>
+      <ref name="ndxterm.class"/>
+      <ref name="beginpage"/>
+      <ref name="forms.hook"/>
+      <ref name="local.listpreamble.mix"/>
+    </choice>
+  </define>
+  <!-- Character-level mixtures ............................................. -->
+  <!-- sgml.features -->
+  <!-- not [sgml.features[ -->
+  <!-- ]] not sgml.features -->
+  <!--
+                        #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.
+  -->
+  <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 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>
+  <!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
+  <define name="wordsize.attrib">
+    <optional>
+      <attribute name="wordsize"/>
+    </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="wordsize.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>
+  <!-- dir: Bidirectional override -->
+  <define name="dir.attrib">
+    <optional>
+      <attribute name="dir">
+        <choice>
+          <value>ltr</value>
+          <value>rtl</value>
+          <value>lro</value>
+          <value>rlo</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <!-- xml:base: base URI -->
+  <define name="xml-base.attrib">
+    <optional>
+      <attribute name="xml:base"/>
+    </optional>
+  </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="dir.attrib"/>
+    <ref name="xml-base.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="dir.attrib"/>
+    <ref name="xml-base.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="contentwidth"/>
+    </optional>
+    <optional>
+      <attribute name="depth"/>
+    </optional>
+    <optional>
+      <attribute name="contentdepth"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scale"/>
+    </optional>
+    <optional>
+      <attribute name="scalefit">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="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>
+  <!-- xml:space: whitespace treatment -->
+  <define name="xml-space.attrib">
+    <optional>
+      <attribute name="xml:space">
+        <choice>
+          <value>preserve</value>
+        </choice>
+      </attribute>
+    </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>
+    <ref name="xml-space.attrib"/>
+    <optional>
+      <attribute name="linenumbering">
+        <choice>
+          <value>numbered</value>
+          <value>unnumbered</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="continuation">
+        <choice>
+          <value>continues</value>
+          <value>restarts</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="startinglinenumber"/>
+    </optional>
+    <optional>
+      <attribute name="language"/>
+    </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>
+  <!-- doc:The text of the title of a section of a document or of a formal block-level element. -->
+  <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>
+  <!-- doc:The abbreviation of a Title. -->
+  <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>
+  <!-- doc:The subtitle of a document. -->
+  <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="corpcredit"/>
+      <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="biblioid"/>
+      <ref name="citebiblioid"/>
+      <ref name="bibliosource"/>
+      <ref name="bibliorelation"/>
+      <ref name="bibliocoverage"/>
+      <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="personname"/>
+      <ref name="person.ident.mix"/>
+      <ref name="ndxterm.class"/>
+      <ref name="local.bibliocomponent.mix"/>
+    </choice>
+  </define>
+  <!-- I don't think this is well placed, but it needs to be here because of -->
+  <!-- the reference to bibliocomponent.mix -->
+  <define name="local.info.class">
+    <notAllowed/>
+  </define>
+  <define name="info.class">
+    <choice>
+      <ref name="graphic"/>
+      <ref name="mediaobject"/>
+      <ref name="legalnotice"/>
+      <ref name="modespec"/>
+      <ref name="subjectset"/>
+      <ref name="keywordset"/>
+      <ref name="itermset"/>
+      <ref name="bibliocomponent.mix"/>
+      <ref name="local.info.class"/>
+    </choice>
+  </define>
+  <!-- BiblioList ........................ -->
+  <define name="local.bibliolist.attrib">
+    <empty/>
+  </define>
+  <define name="bibliolist.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A wrapper for a set of bibliography entries. -->
+  <define name="bibliolist">
+    <element name="bibliolist">
+      <ref name="bibliolist.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <choice>
+          <ref name="biblioentry"/>
+          <ref name="bibliomixed"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of bibliolist.element -->
+  <define name="bibliolist.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="bibliolist.role.attrib"/>
+    <ref name="local.bibliolist.attrib"/>
+  </define>
+  <!-- end of bibliolist.attlist -->
+  <!-- end of bibliolist.module -->
+  <define name="local.biblioentry.attrib">
+    <empty/>
+  </define>
+  <define name="biblioentry.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An entry in a Bibliography. -->
+  <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>
+  <!-- doc:An entry in a Bibliography. -->
+  <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>
+  <!-- doc:Meta-information for an Article. -->
+  <define name="articleinfo">
+    <element name="articleinfo">
+      <ref name="articleinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:A "raw" container for related bibliographic information. -->
+  <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>
+  <!-- doc:A "cooked" container for related bibliographic information. -->
+  <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="common.attrib"/>
+    <ref name="bibliomset.role.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>
+  <!-- doc:Untyped bibliographic information. -->
+  <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>
+  <!-- doc:A set of terms describing the subject matter of a document. -->
+  <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>
+  <!-- doc:One of a group of terms describing the subject matter of a document. -->
+  <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>
+  <!-- doc:A term in a group of terms describing the subject matter of a document. -->
+  <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>
+  <!-- doc:A set of keywords describing the content of a document. -->
+  <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>
+  <!-- doc:One of a set of keywords describing the content of a document. -->
+  <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>
+  <!-- doc:A set of index terms in the meta-information of a document. -->
+  <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 -->
+  <!-- Bibliographic info for "blocks" -->
+  <define name="local.blockinfo.attrib">
+    <empty/>
+  </define>
+  <define name="blockinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Meta-information for a block element. -->
+  <define name="blockinfo">
+    <element name="blockinfo">
+      <ref name="blockinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of blockinfo.element -->
+  <define name="blockinfo.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="blockinfo.role.attrib"/>
+    <ref name="local.blockinfo.attrib"/>
+  </define>
+  <!-- end of blockinfo.attlist -->
+  <!-- end of blockinfo.module -->
+  <!-- ...................................................................... -->
+  <!-- Compound (section-ish) elements ...................................... -->
+  <!-- Message set ...................... -->
+  <define name="local.msgset.attrib">
+    <empty/>
+  </define>
+  <define name="msgset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A detailed set of messages, usually error messages. -->
+  <define name="msgset">
+    <element name="msgset">
+      <ref name="msgset.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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>
+  <!-- doc:A wrapper for an entry in a message set. -->
+  <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>
+  <!-- doc:A wrapper for a simpler entry in a message set. -->
+  <define name="simplemsgentry">
+    <element name="simplemsgentry">
+      <ref name="simplemsgentry.attlist"/>
+      <ref name="msgtext"/>
+      <oneOrMore>
+        <ref name="msgexplan"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of simplemsgentry.element -->
+  <define name="simplemsgentry.attlist" combine="interleave">
+    <optional>
+      <attribute name="audience"/>
+    </optional>
+    <optional>
+      <attribute name="level"/>
+    </optional>
+    <optional>
+      <attribute name="origin"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="simplemsgentry.role.attrib"/>
+    <ref name="local.simplemsgentry.attrib"/>
+  </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>
+  <!-- doc:A message in a message set. -->
+  <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>
+  <!-- doc:The primary component of a message in a message set. -->
+  <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>
+  <!-- doc:A subcomponent of a message in a message set. -->
+  <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>
+  <!-- doc:A related component of a message in a message set. -->
+  <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>
+  <!-- doc:Information about a message in a message set. -->
+  <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>
+  <!-- doc:The level of importance or severity of a message in a message set. -->
+  <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>
+  <!-- doc:The origin of a message in a message set. -->
+  <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>
+  <!-- doc:The audience to which a message in a message set is relevant. -->
+  <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>
+  <!-- doc:Explanatory material relating to a message in a message set. -->
+  <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 -->
+  <define name="local.task.attrib">
+    <empty/>
+  </define>
+  <define name="task.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A task to be completed. -->
+  <define name="task">
+    <element name="task">
+      <ref name="task.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="ndxterm.class"/>
+      </zeroOrMore>
+      <ref name="formalobject.title.content"/>
+      <optional>
+        <ref name="tasksummary"/>
+      </optional>
+      <optional>
+        <ref name="taskprerequisites"/>
+      </optional>
+      <ref name="procedure"/>
+      <zeroOrMore>
+        <ref name="example"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="taskrelated"/>
+      </optional>
+    </element>
+  </define>
+  <!-- end of task.element -->
+  <define name="task.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="task.role.attrib"/>
+    <ref name="local.task.attrib"/>
+  </define>
+  <!-- end of task.attlist -->
+  <!-- end of task.module -->
+  <define name="local.tasksummary.attrib">
+    <empty/>
+  </define>
+  <define name="tasksummary.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A summary of a task. -->
+  <define name="tasksummary">
+    <element name="tasksummary">
+      <ref name="tasksummary.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of tasksummary.element -->
+  <define name="tasksummary.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="tasksummary.role.attrib"/>
+    <ref name="local.tasksummary.attrib"/>
+  </define>
+  <!-- end of tasksummary.attlist -->
+  <!-- end of tasksummary.module -->
+  <define name="local.taskprerequisites.attrib">
+    <empty/>
+  </define>
+  <define name="taskprerequisites.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The prerequisites for a task. -->
+  <define name="taskprerequisites">
+    <element name="taskprerequisites">
+      <ref name="taskprerequisites.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of taskprerequisites.element -->
+  <define name="taskprerequisites.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="taskprerequisites.role.attrib"/>
+    <ref name="local.taskprerequisites.attrib"/>
+  </define>
+  <!-- end of taskprerequisites.attlist -->
+  <!-- end of taskprerequisites.module -->
+  <define name="local.taskrelated.attrib">
+    <empty/>
+  </define>
+  <define name="taskrelated.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Information related to a task. -->
+  <define name="taskrelated">
+    <element name="taskrelated">
+      <ref name="taskrelated.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <oneOrMore>
+        <ref name="component.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of taskrelated.element -->
+  <define name="taskrelated.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="taskrelated.role.attrib"/>
+    <ref name="local.taskrelated.attrib"/>
+  </define>
+  <!-- end of taskrelated.attlist -->
+  <!-- end of taskrelated.module -->
+  <!-- end of task.content.module -->
+  <!-- QandASet ........................ -->
+  <define name="local.qandaset.attrib">
+    <empty/>
+  </define>
+  <define name="qandaset.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A question-and-answer set. -->
+  <define name="qandaset">
+    <element name="qandaset">
+      <ref name="qandaset.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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 qandaset.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="qandaset.role.attrib"/>
+    <ref name="local.qandaset.attrib"/>
+  </define>
+  <!-- end of qandaset.attlist -->
+  <!-- end of qandaset.module -->
+  <define name="local.qandadiv.attrib">
+    <empty/>
+  </define>
+  <define name="qandadiv.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A titled division in a QandASet. -->
+  <define name="qandadiv">
+    <element name="qandadiv">
+      <ref name="qandadiv.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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>
+  <!-- doc:A question/answer set within a QandASet. -->
+  <define name="qandaentry">
+    <element name="qandaentry">
+      <ref name="qandaentry.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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>
+  <!-- doc:A question in a QandASet. -->
+  <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>
+  <!-- doc:An answer to a question posed in a QandASet. -->
+  <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>
+  <!-- doc:A label on a Question or Answer. -->
+  <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 qandaset.content.module -->
+  <!-- Procedure ........................ -->
+  <define name="local.procedure.attrib">
+    <empty/>
+  </define>
+  <define name="procedure.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A list of operations to be performed in a well-defined sequence. -->
+  <define name="procedure">
+    <element name="procedure">
+      <ref name="procedure.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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>
+  <!-- doc:A unit of action in a procedure. -->
+  <define name="step">
+    <element name="step">
+      <ref name="step.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="component.mix"/>
+          </oneOrMore>
+          <optional>
+            <choice>
+              <ref name="substeps"/>
+              <ref name="stepalternatives"/>
+            </choice>
+            <zeroOrMore>
+              <ref name="component.mix"/>
+            </zeroOrMore>
+          </optional>
+        </group>
+        <group>
+          <choice>
+            <ref name="substeps"/>
+            <ref name="stepalternatives"/>
+          </choice>
+          <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>
+  <!-- doc:A wrapper for steps that occur within steps in a procedure. -->
+  <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 -->
+  <define name="local.stepalternatives.attrib">
+    <empty/>
+  </define>
+  <define name="stepalternatives.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Alternative steps in a procedure. -->
+  <define name="stepalternatives">
+    <element name="stepalternatives">
+      <ref name="stepalternatives.attlist"/>
+      <oneOrMore>
+        <ref name="step"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of stepalternatives.element -->
+  <!-- Performance: Whether (one of) the alternatives must be performed -->
+  <!-- not #REQUIRED! -->
+  <define name="stepalternatives.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="stepalternatives.role.attrib"/>
+    <ref name="local.stepalternatives.attrib"/>
+  </define>
+  <!-- end of stepalternatives.attlist -->
+  <!-- end of stepalternatives.module -->
+  <!-- end of procedure.content.module -->
+  <!-- Sidebar .......................... -->
+  <define name="local.sidebarinfo.attrib">
+    <empty/>
+  </define>
+  <define name="sidebarinfo.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Meta-information for a Sidebar. -->
+  <define name="sidebarinfo">
+    <element name="sidebarinfo">
+      <ref name="sidebarinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:A portion of a document that is isolated from the main narrative flow. -->
+  <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>
+  <!-- doc:A summary. -->
+  <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>
+  <!-- doc:A short description or note about an author. -->
+  <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.personblurb.attrib">
+    <empty/>
+  </define>
+  <define name="personblurb.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A short description or note about a person. -->
+  <define name="personblurb">
+    <element name="personblurb">
+      <ref name="personblurb.attlist"/>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <oneOrMore>
+        <ref name="para.class"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of personblurb.element -->
+  <define name="personblurb.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="personblurb.role.attrib"/>
+    <ref name="local.personblurb.attrib"/>
+  </define>
+  <!-- end of personblurb.attlist -->
+  <!-- end of personblurb.module -->
+  <define name="local.blockquote.attrib">
+    <empty/>
+  </define>
+  <define name="blockquote.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A quotation set off from the main text. -->
+  <define name="blockquote">
+    <element name="blockquote">
+      <ref name="blockquote.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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>
+  <!-- doc:The source of a block quote or epigraph. -->
+  <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>
+  <!-- doc:A free-floating heading. -->
+  <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>
+  <!-- doc:A remark (or comment) intended for presentation in a draft manuscript. -->
+  <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>
+  <!-- doc:A short inscription at the beginning of a document or component. -->
+  <define name="epigraph">
+    <element name="epigraph">
+      <ref name="epigraph.attlist"/>
+      <optional>
+        <ref name="attribution"/>
+      </optional>
+      <oneOrMore>
+        <choice>
+          <ref name="para.class"/>
+          <ref name="literallayout"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- 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>
+  <!-- doc:A footnote. -->
+  <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>
+  <!-- doc:A summary of the main points of the discussed component. -->
+  <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>
+  <!-- doc:A paragraph with a title. -->
+  <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>
+  <!-- doc:A paragraph. -->
+  <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>
+  <!-- doc:A paragraph that contains only text and inline markup, no block elements. -->
+  <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>
+  <!-- doc:A note of caution. -->
+  <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 -->
+  <!-- doc:An admonition set off from the text. -->
+  <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 -->
+  <!-- doc:A message set off from the text. -->
+  <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 -->
+  <!-- doc:A suggestion to the user, set off from the text. -->
+  <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 -->
+  <!-- doc:An admonition set off from the text. -->
+  <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>
+  <!-- doc:A wrapper for a set of GlossEntrys. -->
+  <define name="glosslist">
+    <element name="glosslist">
+      <ref name="glosslist.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <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>
+  <!-- doc:An entry in a Glossary or GlossList. -->
+  <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>
+  <!-- doc:A definition in a GlossEntry. -->
+  <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>
+  <!-- doc:A cross-reference from one GlossEntry to another. -->
+  <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>
+  <!-- doc:A cross-reference from one GlossEntry to another. -->
+  <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>
+  <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+  <define name="itemizedlist">
+    <element name="itemizedlist">
+      <ref name="itemizedlist.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="listpreamble.mix"/>
+      </zeroOrMore>
+      <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>
+  <!-- doc:A list in which each entry is marked with a sequentially incremented label. -->
+  <define name="orderedlist">
+    <element name="orderedlist">
+      <ref name="orderedlist.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="listpreamble.mix"/>
+      </zeroOrMore>
+      <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>
+  <!-- doc:A wrapper for the elements of a list item. -->
+  <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>
+  <!-- doc:A segmented list, a list of sets of elements. -->
+  <define name="segmentedlist">
+    <element name="segmentedlist">
+      <ref name="segmentedlist.attlist"/>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <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>
+  <!-- doc:The title of an element of a list item in a segmented list. -->
+  <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>
+  <!-- doc:A list item in a segmented list. -->
+  <define name="seglistitem">
+    <element name="seglistitem">
+      <ref name="seglistitem.attlist"/>
+      <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>
+  <!-- doc:An element of a list item in a segmented list. -->
+  <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>
+  <!-- doc:An undecorated list of single words or short phrases. -->
+  <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>
+  <!-- doc:An element of a simple list. -->
+  <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>
+  <!-- doc:A list in which each entry is composed of a set of one or more terms and an associated description. -->
+  <define name="variablelist">
+    <element name="variablelist">
+      <ref name="variablelist.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <optional>
+        <ref name="formalobject.title.content"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="listpreamble.mix"/>
+      </zeroOrMore>
+      <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>
+    <optional>
+      <attribute name="spacing">
+        <choice>
+          <value>normal</value>
+          <value>compact</value>
+        </choice>
+      </attribute>
+    </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>
+  <!-- doc:A wrapper for a set of terms and the associated description in a variable list. -->
+  <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>
+  <!-- doc:The word or phrase being defined or described in a variable list. -->
+  <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>
+  <!-- doc:A list of Callouts. -->
+  <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>
+  <!-- doc:A &ldquo;called out&rdquo; description of a marked Area. -->
+  <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>
+  <!-- doc:A formal example, with a title. -->
+  <define name="example">
+    <element name="example">
+      <ref name="example.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <ref name="formalobject.title.content"/>
+      <oneOrMore>
+        <ref name="example.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of example.element -->
+  <define name="example.attlist" combine="interleave">
+    <optional>
+      <attribute name="floatstyle"/>
+    </optional>
+    <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>
+  <!-- doc:A displayed example without a title. -->
+  <define name="informalexample">
+    <element name="informalexample">
+      <ref name="informalexample.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <oneOrMore>
+        <ref name="example.mix"/>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of informalexample.element -->
+  <define name="informalexample.attlist" combine="interleave">
+    <optional>
+      <attribute name="floatstyle"/>
+    </optional>
+    <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>
+  <!-- doc:A program listing with associated areas used in callouts. -->
+  <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>
+  <!-- doc:A collection of regions in a graphic or code example. -->
+  <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>
+  <!-- doc:A region defined for a Callout in a graphic or code example. -->
+  <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>
+  <!-- doc:A set of related areas in a graphic or code example. -->
+  <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>
+  <!-- doc:A literal listing of all or part of a program. -->
+  <define name="programlisting">
+    <element name="programlisting">
+      <ref name="programlisting.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="co"/>
+          <ref name="coref"/>
+          <ref name="lineannotation"/>
+          <ref name="textobject"/>
+        </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>
+  <!-- doc:A block of text in which line breaks and white space are to be reproduced faithfully. -->
+  <define name="literallayout">
+    <element name="literallayout">
+      <ref name="literallayout.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="co"/>
+          <ref name="coref"/>
+          <ref name="textobject"/>
+          <ref name="lineannotation"/>
+        </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>
+  <!-- doc:A screen with associated areas used in callouts. -->
+  <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>
+  <!-- doc:Text that a user sees or might see on a computer screen. -->
+  <define name="screen">
+    <element name="screen">
+      <ref name="screen.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="co"/>
+          <ref name="coref"/>
+          <ref name="textobject"/>
+          <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>
+  <!-- doc:A representation of what the user sees or might see on a computer screen. -->
+  <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>
+  <!-- doc:Information about how a screen shot was produced. -->
+  <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>
+  <!-- doc:A formal figure, generally an illustration, with a title. -->
+  <define name="figure">
+    <element name="figure">
+      <ref name="figure.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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="floatstyle"/>
+    </optional>
+    <optional>
+      <attribute name="pgwide">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="label.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="figure.role.attrib"/>
+    <ref name="local.figure.attrib"/>
+  </define>
+  <!-- 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>
+  <!-- doc:A untitled figure. -->
+  <define name="informalfigure">
+    <element name="informalfigure">
+      <ref name="informalfigure.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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="floatstyle"/>
+    </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>
+  <!-- doc:A graphic that contains callout areas. -->
+  <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>
+  <!-- doc:A displayed graphical object (not an inline). -->
+  <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>
+  <!-- doc:An object containing or pointing to graphical data that will be rendered inline. -->
+  <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>
+  <!-- doc:A displayed media object (video, audio, image, etc.). -->
+  <define name="mediaobject">
+    <element name="mediaobject">
+      <ref name="mediaobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <oneOrMore>
+        <ref name="mediaobject.mix"/>
+      </oneOrMore>
+      <optional>
+        <ref name="caption"/>
+      </optional>
+    </element>
+  </define>
+  <!-- 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>
+  <!-- doc:An inline media object (video, audio, image, and so on). -->
+  <define name="inlinemediaobject">
+    <element name="inlinemediaobject">
+      <ref name="inlinemediaobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <oneOrMore>
+        <ref name="mediaobject.mix"/>
+      </oneOrMore>
+    </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>
+  <!-- doc:A wrapper for video data and its associated meta-information. -->
+  <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>
+  <!-- doc:A wrapper for audio data and its associated meta-information. -->
+  <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>
+  <!-- doc:A wrapper for image data and its associated meta-information. -->
+  <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>
+  <!-- doc:A wrapper for a text description of an object and its associated meta-information. -->
+  <define name="textobject">
+    <element name="textobject">
+      <ref name="textobject.attlist"/>
+      <optional>
+        <ref name="objectinfo"/>
+      </optional>
+      <choice>
+        <ref name="phrase"/>
+        <ref name="textdata"/>
+        <oneOrMore>
+          <ref name="textobject.mix"/>
+        </oneOrMore>
+      </choice>
+    </element>
+  </define>
+  <!-- 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>
+  <!-- doc:Meta-information for an object. -->
+  <define name="objectinfo">
+    <element name="objectinfo">
+      <ref name="objectinfo.attlist"/>
+      <oneOrMore>
+        <ref name="info.class"/>
+      </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>
+  <!-- doc:Pointer to external video data. -->
+  <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">
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="contentwidth"/>
+    </optional>
+    <optional>
+      <attribute name="depth"/>
+    </optional>
+    <optional>
+      <attribute name="contentdepth"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scale"/>
+    </optional>
+    <optional>
+      <attribute name="scalefit">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="objectdata.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="videodata.role.attrib"/>
+    <ref name="local.videodata.attrib"/>
+  </define>
+  <!-- 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>
+  <!-- doc:Pointer to external audio data. -->
+  <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="objectdata.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="audiodata.role.attrib"/>
+    <ref name="local.audiodata.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>
+  <!-- doc:Pointer to external image data. -->
+  <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">
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="contentwidth"/>
+    </optional>
+    <optional>
+      <attribute name="depth"/>
+    </optional>
+    <optional>
+      <attribute name="contentdepth"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>right</value>
+          <value>center</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scale"/>
+    </optional>
+    <optional>
+      <attribute name="scalefit">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <ref name="objectdata.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="imagedata.role.attrib"/>
+    <ref name="local.imagedata.attrib"/>
+  </define>
+  <!-- end of imagedata.attlist -->
+  <!-- end of imagedata.module -->
+  <define name="local.textdata.attrib">
+    <empty/>
+  </define>
+  <define name="textdata.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:Pointer to external text data. -->
+  <define name="textdata">
+    <element name="textdata">
+      <ref name="textdata.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <!-- end of textdata.element -->
+  <define name="textdata.attlist" combine="interleave">
+    <optional>
+      <attribute name="encoding"/>
+    </optional>
+    <ref name="objectdata.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="textdata.role.attrib"/>
+    <ref name="local.textdata.attrib"/>
+  </define>
+  <!-- end of textdata.attlist -->
+  <!-- end of textdata.module -->
+  <define name="local.mediaobjectco.attrib">
+    <empty/>
+  </define>
+  <define name="mediaobjectco.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A media object that contains callouts. -->
+  <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>
+  <!-- doc:A wrapper for an image object with callouts. -->
+  <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>
+      <oneOrMore>
+        <ref name="mathphrase"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="inlineequation.content">
+    <optional>
+      <ref name="alt"/>
+    </optional>
+    <choice>
+      <oneOrMore>
+        <ref name="graphic"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="inlinemediaobject"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="mathphrase"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="local.equation.attrib">
+    <empty/>
+  </define>
+  <define name="equation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A displayed mathematical equation. -->
+  <define name="equation">
+    <element name="equation">
+      <ref name="equation.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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">
+    <optional>
+      <attribute name="floatstyle"/>
+    </optional>
+    <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>
+  <!-- doc:A displayed mathematical equation without a title. -->
+  <define name="informalequation">
+    <element name="informalequation">
+      <ref name="informalequation.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <ref name="equation.content"/>
+    </element>
+  </define>
+  <!-- end of informalequation.element -->
+  <define name="informalequation.attlist" combine="interleave">
+    <optional>
+      <attribute name="floatstyle"/>
+    </optional>
+    <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>
+  <!-- doc:A mathematical equation or expression occurring inline. -->
+  <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>
+  <!-- doc:Text representation for a graphical element. -->
+  <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 -->
+  <define name="local.mathphrase.attrib">
+    <empty/>
+  </define>
+  <define name="mathphrase.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup. -->
+  <define name="mathphrase">
+    <element name="mathphrase">
+      <ref name="mathphrase.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="subscript"/>
+          <ref name="superscript"/>
+          <ref name="emphasis"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of mathphrase.element -->
+  <define name="mathphrase.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="mathphrase.role.attrib"/>
+    <ref name="local.mathphrase.attrib"/>
+  </define>
+  <!-- end of mathphrase.attlist -->
+  <!-- end of mathphrase.module -->
+  <!-- Tables ........................... -->
+  <!-- Choose a table model. CALS or OASIS XML Exchange -->
+  <!-- Do we allow the HTML table model as well? -->
+  <!-- ====================================================== -->
+  <!--
+    xhtmltbl.mod defines HTML tables and sets parameter
+    entities so that, when the CALS table module is read,
+    we end up allowing any table to be CALS or HTML.
+    i.e. This include must come first!
+  -->
+  <!-- ====================================================== -->
+  <include href="htmltblx.rng"/>
+  <!-- end of allow.html.tables -->
+  <!-- Add label and role attributes to table and informaltable -->
+  <!--
+    Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+    EntryTbl, and Entry (and InformalTable element).
+  -->
+  <!-- Content model for Table. -->
+  <!-- Allow either objects or inlines; beware of REs between elements. -->
+  <!-- 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>
+  <!-- the following entity may have been declared by the XHTML table module -->
+  <!-- doc:A table without a title. -->
+  <define name="informaltable">
+    <element name="informaltable">
+      <ref name="informaltable.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <ref name="informal.tbl.table.mdl"/>
+    </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>
+          <ref name="tbl.frame.attval"/>
+        </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 -->
+  <define name="local.caption.attrib">
+    <empty/>
+  </define>
+  <define name="caption.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A caption. -->
+  <define name="caption">
+    <element name="caption">
+      <ref name="caption.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="textobject.mix"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of caption.element -->
+  <!-- attrs comes from HTML tables ... -->
+  <!-- common.attrib, but without ID because ID is in attrs -->
+  <define name="caption.attlist.content">
+    <ref name="caption.role.attrib"/>
+    <ref name="attrs"/>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>top</value>
+          <value>bottom</value>
+          <value>left</value>
+          <value>right</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="local.caption.attrib"/>
+  </define>
+  <define name="caption.attlist" combine="interleave">
+    <ref name="caption.attlist.content"/>
+  </define>
+  <!-- end of caption.attlist -->
+  <!-- end of caption.module -->
+  <!-- ...................................................................... -->
+  <!-- Synopses ............................................................. -->
+  <!-- Synopsis ......................... -->
+  <define name="local.synopsis.attrib">
+    <empty/>
+  </define>
+  <define name="synopsis.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+  <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="co"/>
+          <ref name="coref"/>
+          <ref name="textobject"/>
+          <ref name="lineannotation"/>
+        </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>
+  <!-- doc:A syntax summary for a software command. -->
+  <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>
+  <!-- doc:An argument in a CmdSynopsis. -->
+  <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>
+  <!-- doc:A group of elements in a CmdSynopsis. -->
+  <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>
+  <!-- doc:An explicit line break in a command synopsis. -->
+  <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>
+  <!-- doc:A reference to a fragment of a command synopsis. -->
+  <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>
+  <!-- doc:A portion of a CmdSynopsis broken out from the main body of the synopsis. -->
+  <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>
+  <!-- doc:The syntax summary for a function definition. -->
+  <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>
+  <!-- doc:Information supplementing the FuncDefs of a FuncSynopsis. -->
+  <define name="funcsynopsisinfo">
+    <element name="funcsynopsisinfo">
+      <ref name="funcsynopsisinfo.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="textobject"/>
+          <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>
+  <!-- doc:The prototype of a function. -->
+  <define name="funcprototype">
+    <element name="funcprototype">
+      <ref name="funcprototype.attlist"/>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+      <ref name="funcdef"/>
+      <choice>
+        <ref name="void"/>
+        <ref name="varargs"/>
+        <group>
+          <oneOrMore>
+            <ref name="paramdef"/>
+          </oneOrMore>
+          <optional>
+            <ref name="varargs"/>
+          </optional>
+        </group>
+      </choice>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+    </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>
+  <!-- doc:A function (subroutine) name and its return type. -->
+  <define name="funcdef">
+    <element name="funcdef">
+      <ref name="funcdef.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="type"/>
+          <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>
+  <!-- doc:An empty element in a function synopsis indicating that the function in question takes no arguments. -->
+  <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>
+  <!-- doc:An empty element in a function synopsis indicating a variable number of arguments. -->
+  <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>
+  <!-- doc:Information about a function parameter in a programming language. -->
+  <define name="paramdef">
+    <element name="paramdef">
+      <ref name="paramdef.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="initializer"/>
+          <ref name="type"/>
+          <ref name="replaceable"/>
+          <ref name="parameter"/>
+          <ref name="funcparams"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of paramdef.element -->
+  <define name="paramdef.attlist" combine="interleave">
+    <optional>
+      <attribute name="choice">
+        <choice>
+          <value>opt</value>
+          <value>req</value>
+        </choice>
+      </attribute>
+    </optional>
+    <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>
+  <!-- doc:Parameters for a function referenced through a function pointer in a synopsis. -->
+  <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>
+  <!-- doc:The syntax summary for a class definition. -->
+  <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">
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <optional>
+      <attribute name="class" a:defaultValue="class">
+        <choice>
+          <value>class</value>
+          <value>interface</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="classsynopsis.role.attrib"/>
+    <ref name="local.classsynopsis.attrib"/>
+  </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>
+  <!-- doc:Information supplementing the contents of a ClassSynopsis. -->
+  <define name="classsynopsisinfo">
+    <element name="classsynopsisinfo">
+      <ref name="classsynopsisinfo.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="textobject"/>
+          <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>
+  <!-- doc:A class in an object-oriented programming language. -->
+  <define name="ooclass">
+    <element name="ooclass">
+      <ref name="ooclass.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="modifier"/>
+          <ref name="package"/>
+        </choice>
+      </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>
+  <!-- doc:An interface in an object-oriented programming language. -->
+  <define name="oointerface">
+    <element name="oointerface">
+      <ref name="oointerface.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="modifier"/>
+          <ref name="package"/>
+        </choice>
+      </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>
+  <!-- doc:An exception in an object-oriented programming language. -->
+  <define name="ooexception">
+    <element name="ooexception">
+      <ref name="ooexception.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="modifier"/>
+          <ref name="package"/>
+        </choice>
+      </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>
+  <!-- doc:Modifiers in a synopsis. -->
+  <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>
+  <!-- doc:The name of an interface. -->
+  <define name="interfacename">
+    <element name="interfacename">
+      <ref name="interfacename.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+  <!-- doc:The name of an exception. -->
+  <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>
+  <!-- doc:The name of a field in a class definition. -->
+  <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">
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <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>
+  <!-- doc:The initializer for a FieldSynopsis. -->
+  <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>
+  <!-- doc:A syntax summary for a constructor. -->
+  <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>
+        <optional>
+          <ref name="void"/>
+        </optional>
+      </choice>
+      <zeroOrMore>
+        <ref name="exceptionname"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of constructorsynopsis.element -->
+  <define name="constructorsynopsis.attlist" combine="interleave">
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <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>
+  <!-- doc:A syntax summary for a destructor. -->
+  <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>
+        <optional>
+          <ref name="void"/>
+        </optional>
+      </choice>
+      <zeroOrMore>
+        <ref name="exceptionname"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of destructorsynopsis.element -->
+  <define name="destructorsynopsis.attlist" combine="interleave">
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <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>
+  <!-- doc:A syntax summary for a method. -->
+  <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>
+        <optional>
+          <ref name="void"/>
+        </optional>
+      </choice>
+      <zeroOrMore>
+        <ref name="exceptionname"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="modifier"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of methodsynopsis.element -->
+  <define name="methodsynopsis.attlist" combine="interleave">
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <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>
+  <!-- doc:The name of a method. -->
+  <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>
+  <!-- doc:Parameters to a method. -->
+  <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">
+    <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>
+    <ref name="common.attrib"/>
+    <ref name="methodparam.role.attrib"/>
+    <ref name="local.methodparam.attrib"/>
+  </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>
+  <!-- doc:Acknowledgements in an Article. -->
+  <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>
+  <!-- doc:A real-world address, generally a postal address. -->
+  <define name="address">
+    <element name="address">
+      <ref name="address.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="personname"/>
+          <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>
+  <!-- doc:A street address in an address. -->
+  <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>
+  <!-- doc:A post office box in an address. -->
+  <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>
+  <!-- doc:A postal code in an address. -->
+  <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>
+  <!-- doc:The name of a city in an address. -->
+  <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>
+  <!-- doc:A state or province in an address. -->
+  <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>
+  <!-- doc:The name of a country. -->
+  <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>
+  <!-- doc:A telephone number. -->
+  <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>
+  <!-- doc:A fax number. -->
+  <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>
+  <!-- doc:Uncategorized information in address. -->
+  <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>
+  <!-- doc:The institutional affiliation of an individual. -->
+  <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>
+  <!-- doc:A brief description of an affiliation. -->
+  <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>
+  <!-- doc:The title of an individual in an organization. -->
+  <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>
+  <!-- doc:A division of an organization. -->
+  <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>
+  <!-- doc:The page numbers of an article as published. -->
+  <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 -->
+  <!-- PersonName -->
+  <define name="local.personname.attrib">
+    <empty/>
+  </define>
+  <define name="personname.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The personal name of an individual. -->
+  <define name="personname">
+    <element name="personname">
+      <ref name="personname.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="honorific"/>
+          <ref name="firstname"/>
+          <ref name="surname"/>
+          <ref name="lineage"/>
+          <ref name="othername"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- end of personname.element -->
+  <define name="personname.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="personname.role.attrib"/>
+    <ref name="local.personname.attrib"/>
+  </define>
+  <!-- end of personname.attlist -->
+  <!-- end of personname.module -->
+  <!-- Author ........................... -->
+  <define name="local.author.attrib">
+    <empty/>
+  </define>
+  <define name="author.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The name of an individual author. -->
+  <define name="author">
+    <element name="author">
+      <ref name="author.attlist"/>
+      <choice>
+        <ref name="personname"/>
+        <oneOrMore>
+          <ref name="person.ident.mix"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <choice>
+          <ref name="personblurb"/>
+          <ref name="email"/>
+          <ref name="address"/>
+        </choice>
+      </zeroOrMore>
+    </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>
+  <!-- doc:Wrapper for author information when a document has multiple authors or collabarators. -->
+  <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="corpcredit"/>
+          <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>
+  <!-- doc:Identifies a collaborator. -->
+  <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>
+  <!-- doc:The name of a collaborator. -->
+  <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>
+  <!-- doc:The initials or other short identifier for an author. -->
+  <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>
+  <!-- doc:A wrapper for document meta-information about a conference. -->
+  <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>
+  <!-- doc:The dates of a conference for which a document was written. -->
+  <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>
+  <!-- doc:The title of a conference for which a document was written. -->
+  <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>
+  <!-- doc:An identifier, frequently numerical, associated with a conference for which a document was written. -->
+  <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>
+  <!-- doc:The sponsor of a conference for which a document was written. -->
+  <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>
+  <!-- doc:The contract number of a document. -->
+  <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>
+  <!-- doc:The sponsor of a contract. -->
+  <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>
+  <!-- doc:Copyright information about a document. -->
+  <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>
+  <!-- doc:The year of publication of a document. -->
+  <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>
+  <!-- doc:The name of the individual or organization that holds a copyright. -->
+  <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>
+  <!-- doc:A corporate author, as opposed to an individual. -->
+  <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 -->
+  <!-- CorpCredit ...................... -->
+  <define name="local.corpcredit.attrib">
+    <empty/>
+  </define>
+  <define name="corpcredit.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A corporation or organization credited in a document. -->
+  <define name="corpcredit">
+    <element name="corpcredit">
+      <ref name="corpcredit.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of corpcredit.element -->
+  <define name="corpcredit.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>graphicdesigner</value>
+          <value>productioneditor</value>
+          <value>copyeditor</value>
+          <value>technicaleditor</value>
+          <value>translator</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="corpcredit.role.attrib"/>
+    <ref name="local.corpcredit.attrib"/>
+  </define>
+  <!-- end of corpcredit.attlist -->
+  <!-- end of corpcredit.module -->
+  <!-- CorpName ......................... -->
+  <define name="local.corpname.attrib">
+    <empty/>
+  </define>
+  <!-- doc:The name of a corporation. -->
+  <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>
+  <!-- doc:The date of publication or revision of a document. -->
+  <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>
+  <!-- doc:The name or number of an edition of a document. -->
+  <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>
+  <!-- doc:The name of the editor of a document. -->
+  <define name="editor">
+    <element name="editor">
+      <ref name="editor.attlist"/>
+      <choice>
+        <ref name="personname"/>
+        <oneOrMore>
+          <ref name="person.ident.mix"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <choice>
+          <ref name="personblurb"/>
+          <ref name="email"/>
+          <ref name="address"/>
+        </choice>
+      </zeroOrMore>
+    </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>
+  <!-- doc:The International Standard Book Number of a document. -->
+  <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>
+  <!-- doc:The International Standard Serial Number of a periodical. -->
+  <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 -->
+  <!-- BiblioId ................. -->
+  <define name="biblio.class.attrib">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>uri</value>
+          <value>doi</value>
+          <value>isbn</value>
+          <value>isrn</value>
+          <value>issn</value>
+          <value>libraryofcongress</value>
+          <value>pubnumber</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherclass"/>
+    </optional>
+  </define>
+  <define name="local.biblioid.attrib">
+    <empty/>
+  </define>
+  <define name="biblioid.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An identifier for a document. -->
+  <define name="biblioid">
+    <element name="biblioid">
+      <ref name="biblioid.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of biblioid.element -->
+  <define name="biblioid.attlist" combine="interleave">
+    <ref name="biblio.class.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="biblioid.role.attrib"/>
+    <ref name="local.biblioid.attrib"/>
+  </define>
+  <!-- end of biblioid.attlist -->
+  <!-- end of biblioid.module -->
+  <!-- CiteBiblioId ................. -->
+  <define name="local.citebiblioid.attrib">
+    <empty/>
+  </define>
+  <define name="citebiblioid.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A citation of a bibliographic identifier. -->
+  <define name="citebiblioid">
+    <element name="citebiblioid">
+      <ref name="citebiblioid.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of citebiblioid.element -->
+  <define name="citebiblioid.attlist" combine="interleave">
+    <ref name="biblio.class.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="citebiblioid.role.attrib"/>
+    <ref name="local.citebiblioid.attrib"/>
+  </define>
+  <!-- end of citebiblioid.attlist -->
+  <!-- end of citebiblioid.module -->
+  <!-- BiblioSource ................. -->
+  <define name="local.bibliosource.attrib">
+    <empty/>
+  </define>
+  <define name="bibliosource.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The source of a document. -->
+  <define name="bibliosource">
+    <element name="bibliosource">
+      <ref name="bibliosource.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of bibliosource.element -->
+  <define name="bibliosource.attlist" combine="interleave">
+    <ref name="biblio.class.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="bibliosource.role.attrib"/>
+    <ref name="local.bibliosource.attrib"/>
+  </define>
+  <!-- end of bibliosource.attlist -->
+  <!-- end of bibliosource.module -->
+  <!-- BiblioRelation ................. -->
+  <define name="local.bibliorelation.attrib">
+    <empty/>
+  </define>
+  <define name="local.bibliorelation.types">
+    <notAllowed/>
+  </define>
+  <define name="bibliorelation.type.attrib">
+    <optional>
+      <attribute name="type">
+        <choice>
+          <value>isversionof</value>
+          <value>hasversion</value>
+          <value>isreplacedby</value>
+          <value>replaces</value>
+          <value>isrequiredby</value>
+          <value>requires</value>
+          <value>ispartof</value>
+          <value>haspart</value>
+          <value>isreferencedby</value>
+          <value>references</value>
+          <value>isformatof</value>
+          <value>hasformat</value>
+          <value>othertype</value>
+          <ref name="local.bibliorelation.types"/>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="othertype"/>
+    </optional>
+  </define>
+  <define name="bibliorelation.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The relationship of a document to another. -->
+  <define name="bibliorelation">
+    <element name="bibliorelation">
+      <ref name="bibliorelation.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of bibliorelation.element -->
+  <define name="bibliorelation.attlist" combine="interleave">
+    <ref name="biblio.class.attrib"/>
+    <ref name="bibliorelation.type.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="bibliorelation.role.attrib"/>
+    <ref name="local.bibliorelation.attrib"/>
+  </define>
+  <!-- end of bibliorelation.attlist -->
+  <!-- end of bibliorelation.module -->
+  <!-- BiblioCoverage ................. -->
+  <define name="local.bibliocoverage.attrib">
+    <empty/>
+  </define>
+  <define name="bibliocoverage.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The spatial or temporal coverage of a document. -->
+  <define name="bibliocoverage">
+    <element name="bibliocoverage">
+      <ref name="bibliocoverage.attlist"/>
+      <zeroOrMore>
+        <ref name="docinfo.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of bibliocoverage.element -->
+  <define name="bibliocoverage.attlist" combine="interleave">
+    <optional>
+      <attribute name="spatial">
+        <choice>
+          <value>dcmipoint</value>
+          <value>iso3166</value>
+          <value>dcmibox</value>
+          <value>tgn</value>
+          <value>otherspatial</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherspatial"/>
+    </optional>
+    <optional>
+      <attribute name="temporal">
+        <choice>
+          <value>dcmiperiod</value>
+          <value>w3c-dtf</value>
+          <value>othertemporal</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="othertemporal"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="bibliocoverage.role.attrib"/>
+    <ref name="local.bibliocoverage.attrib"/>
+  </define>
+  <!-- end of bibliocoverage.attlist -->
+  <!-- end of bibliocoverage.module -->
+  <!-- InvPartNumber .................... -->
+  <define name="local.invpartnumber.attrib">
+    <empty/>
+  </define>
+  <define name="invpartnumber.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An inventory part number. -->
+  <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>
+  <!-- doc:The number of an issue of a journal. -->
+  <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>
+  <!-- doc:A statement of legal obligations or requirements. -->
+  <define name="legalnotice">
+    <element name="legalnotice">
+      <ref name="legalnotice.attlist"/>
+      <optional>
+        <ref name="blockinfo"/>
+      </optional>
+      <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>
+  <!-- doc:Application-specific information necessary for the completion of an OLink. -->
+  <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>
+  <!-- doc:The name of an organization other than a corporation. -->
+  <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"/>
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>corporation</value>
+          <value>nonprofit</value>
+          <value>consortium</value>
+          <value>informal</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherclass"/>
+    </optional>
+    <ref name="orgname.role.attrib"/>
+    <ref name="local.orgname.attrib"/>
+  </define>
+  <!-- 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>
+  <!-- doc:A person or entity, other than an author or editor, credited in a document. -->
+  <define name="othercredit">
+    <element name="othercredit">
+      <ref name="othercredit.attlist"/>
+      <choice>
+        <ref name="personname"/>
+        <oneOrMore>
+          <ref name="person.ident.mix"/>
+        </oneOrMore>
+      </choice>
+      <zeroOrMore>
+        <choice>
+          <ref name="personblurb"/>
+          <ref name="email"/>
+          <ref name="address"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of othercredit.element -->
+  <define name="othercredit.attlist" combine="interleave">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>graphicdesigner</value>
+          <value>productioneditor</value>
+          <value>copyeditor</value>
+          <value>technicaleditor</value>
+          <value>translator</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <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>
+  <!-- doc:The numbers of the pages in a book, for use in a bibliographic entry. -->
+  <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>
+  <!-- doc:A summary of the contributions made to a document by a credited source. -->
+  <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>
+  <!-- doc:The first name of a person. -->
+  <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>
+  <!-- doc:The title of a person. -->
+  <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>
+  <!-- doc:The portion of a person's name indicating a relationship to ancestors. -->
+  <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>
+  <!-- doc:A component of a persons name that is not a first name, surname, or lineage. -->
+  <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>
+  <!-- doc:A family name; in western cultures the last name. -->
+  <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>
+  <!-- doc:The printing history of a document. -->
+  <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>
+  <!-- doc:The formal name of a product. -->
+  <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>
+  <!-- doc:A number assigned to a product. -->
+  <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>
+  <!-- doc:The date of publication of a document. -->
+  <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>
+  <!-- doc:The publisher of a document. -->
+  <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>
+  <!-- doc:The name of the publisher of a document. -->
+  <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>
+  <!-- doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number. -->
+  <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>
+  <!-- doc:Information about a particular release of a document. -->
+  <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>
+  <!-- doc:A history of the revisions to a document. -->
+  <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>
+  <!-- doc:An entry describing a single revision in the history of the revisions to a document. -->
+  <define name="revision">
+    <element name="revision">
+      <ref name="revision.attlist"/>
+      <optional>
+        <ref name="revnumber"/>
+      </optional>
+      <ref name="date"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="author"/>
+          <ref name="authorinitials"/>
+        </choice>
+      </zeroOrMore>
+      <optional>
+        <choice>
+          <ref name="revremark"/>
+          <ref name="revdescription"/>
+        </choice>
+      </optional>
+    </element>
+  </define>
+  <!-- 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>
+  <!-- doc:A document revision number. -->
+  <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>
+  <!-- doc:A description of a revision to a document. -->
+  <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>
+  <!-- doc:A extended description of a revision to a document. -->
+  <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>
+  <!-- doc:Numbers of the volumes in a series of books. -->
+  <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>
+  <!-- doc:The volume number of a document in a set (as of books in a set or articles in a journal). -->
+  <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>
+  <!-- doc:A graphical user interface (GUI) keyboard shortcut. -->
+  <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>
+  <!-- doc:A response to a user event. -->
+  <define name="action">
+    <element name="action">
+      <ref name="action.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+  <!-- doc:The name of a software program. -->
+  <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>
+  <!-- doc:The name of a class, in the object-oriented programming sense. -->
+  <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.package.attrib">
+    <empty/>
+  </define>
+  <define name="package.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A package. -->
+  <define name="package">
+    <element name="package">
+      <ref name="package.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of package.element -->
+  <define name="package.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="package.role.attrib"/>
+    <ref name="local.package.attrib"/>
+  </define>
+  <!-- end of package.attlist -->
+  <!-- end of package.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>
+  <!-- doc:The location of a callout embedded in text. -->
+  <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.coref.attrib">
+    <empty/>
+  </define>
+  <!-- COREF is a reference to a CO -->
+  <define name="coref.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A cross reference to a co. -->
+  <define name="coref">
+    <element name="coref">
+      <ref name="coref.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <!-- end of coref.element -->
+  <!-- bug number/symbol override or initialization -->
+  <!-- to any related information -->
+  <define name="coref.attlist" combine="interleave">
+    <ref name="label.attrib"/>
+    <ref name="linkendreq.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="coref.role.attrib"/>
+    <ref name="local.coref.attrib"/>
+  </define>
+  <!-- end of coref.attlist -->
+  <!-- end of coref.module -->
+  <define name="local.command.attrib">
+    <empty/>
+  </define>
+  <define name="command.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The name of an executable program or other software command. -->
+  <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>
+  <!-- doc:Data, generally text, displayed or presented by a computer. -->
+  <define name="computeroutput">
+    <element name="computeroutput">
+      <ref name="computeroutput.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="co"/>
+        </choice>
+      </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>
+  <!-- doc:The name of a database, or part of a database. -->
+  <define name="database">
+    <element name="database">
+      <ref name="database.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+          <value>index</value>
+          <value>view</value>
+          <value>primarykey</value>
+          <value>secondarykey</value>
+          <value>foreignkey</value>
+          <value>altkey</value>
+          <value>procedure</value>
+          <value>datatype</value>
+          <value>constraint</value>
+          <value>rule</value>
+          <value>user</value>
+          <value>group</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>
+  <!-- doc:An email address. -->
+  <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>
+  <!-- doc:A software environment variable. -->
+  <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>
+  <!-- doc:An error code. -->
+  <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>
+  <!-- doc:An error name. -->
+  <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.errortext.attrib">
+    <empty/>
+  </define>
+  <define name="errortext.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An error message.. -->
+  <define name="errortext">
+    <element name="errortext">
+      <ref name="errortext.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of errortext.element -->
+  <define name="errortext.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="errortext.role.attrib"/>
+    <ref name="local.errortext.attrib"/>
+  </define>
+  <!-- end of errortext.attlist -->
+  <!-- end of errortext.module -->
+  <define name="local.errortype.attrib">
+    <empty/>
+  </define>
+  <define name="errortype.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The classification of an error message. -->
+  <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>
+  <!-- doc:The name of a file. -->
+  <define name="filename">
+    <element name="filename">
+      <ref name="filename.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>partition</value>
+          <value>devicefile</value>
+          <value>libraryfile</value>
+          <value>directory</value>
+          <value>extension</value>
+          <value>symlink</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="path"/>
+    </optional>
+    <ref name="moreinfo.attrib"/>
+    <ref name="common.attrib"/>
+    <ref name="filename.role.attrib"/>
+    <ref name="local.filename.attrib"/>
+  </define>
+  <!-- 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>
+  <!-- doc:The name of a function or subroutine, as in a programming language. -->
+  <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>
+  <!-- doc:The text on a button in a GUI. -->
+  <define name="guibutton">
+    <element name="guibutton">
+      <ref name="guibutton.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+          <ref name="superscript"/>
+          <ref name="subscript"/>
+        </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>
+  <!-- doc:Graphic and/or text appearing as a icon in a GUI. -->
+  <define name="guiicon">
+    <element name="guiicon">
+      <ref name="guiicon.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+          <ref name="superscript"/>
+          <ref name="subscript"/>
+        </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>
+  <!-- doc:The text of a label in a GUI. -->
+  <define name="guilabel">
+    <element name="guilabel">
+      <ref name="guilabel.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+          <ref name="superscript"/>
+          <ref name="subscript"/>
+        </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>
+  <!-- doc:The name of a menu in a GUI. -->
+  <define name="guimenu">
+    <element name="guimenu">
+      <ref name="guimenu.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+          <ref name="superscript"/>
+          <ref name="subscript"/>
+        </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>
+  <!-- doc:The name of a terminal menu item in a GUI. -->
+  <define name="guimenuitem">
+    <element name="guimenuitem">
+      <ref name="guimenuitem.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+          <ref name="superscript"/>
+          <ref name="subscript"/>
+        </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>
+  <!-- doc:The name of a submenu in a GUI. -->
+  <define name="guisubmenu">
+    <element name="guisubmenu">
+      <ref name="guisubmenu.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="accel"/>
+          <ref name="superscript"/>
+          <ref name="subscript"/>
+        </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>
+  <!-- doc:A physical part of a computer system. -->
+  <define name="hardware">
+    <element name="hardware">
+      <ref name="hardware.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+  <!-- doc:An element of a GUI. -->
+  <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>
+  <!-- doc:The text printed on a key on a keyboard. -->
+  <define name="keycap">
+    <element name="keycap">
+      <ref name="keycap.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of keycap.element -->
+  <define name="keycap.attlist" combine="interleave">
+    <optional>
+      <attribute name="function">
+        <choice>
+          <value>alt</value>
+          <value>control</value>
+          <value>shift</value>
+          <value>meta</value>
+          <value>escape</value>
+          <value>enter</value>
+          <value>tab</value>
+          <value>backspace</value>
+          <value>command</value>
+          <value>option</value>
+          <value>space</value>
+          <value>delete</value>
+          <value>insert</value>
+          <value>up</value>
+          <value>down</value>
+          <value>left</value>
+          <value>right</value>
+          <value>home</value>
+          <value>end</value>
+          <value>pageup</value>
+          <value>pagedown</value>
+          <value>other</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="otherfunction"/>
+    </optional>
+    <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>
+  <!-- doc:The internal, frequently numeric, identifier for a key on a keyboard. -->
+  <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>
+  <!-- doc:A combination of input actions. -->
+  <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>
+  <!-- doc:The symbolic name of a key on a keyboard. -->
+  <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>
+  <!-- doc:A comment on a line in a verbatim listing. -->
+  <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>
+  <!-- doc:Inline text that is some literal value. -->
+  <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.code.attrib">
+    <empty/>
+  </define>
+  <define name="code.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An inline code fragment. -->
+  <define name="code">
+    <element name="code">
+      <ref name="code.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of code.element -->
+  <define name="code.attlist" combine="interleave">
+    <optional>
+      <attribute name="language"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="code.role.attrib"/>
+    <ref name="local.code.attrib"/>
+  </define>
+  <!-- end of code.attlist -->
+  <!-- end of code.module -->
+  <define name="local.constant.attrib">
+    <empty/>
+  </define>
+  <define name="constant.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A programming or system constant. -->
+  <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">
+    <optional>
+      <attribute name="class">
+        <choice>
+          <value>limit</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="constant.role.attrib"/>
+    <ref name="local.constant.attrib"/>
+  </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>
+  <!-- doc:The name of a variable. -->
+  <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>
+  <!-- doc:A string of formatting markup in text that is to be represented literally. -->
+  <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>
+  <!-- doc:A name that identifies the physical medium on which some information resides. -->
+  <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>
+  <!-- doc:A selection or series of selections from a menu. -->
+  <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>
+  <!-- doc:A key combination for an action that is also accessible through a menu. -->
+  <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>
+  <!-- doc:The conventional name of a mouse button. -->
+  <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>
+  <!-- doc:The actual text of a message component in a message set. -->
+  <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>
+  <!-- doc:An option for a software command. -->
+  <define name="option">
+    <element name="option">
+      <ref name="option.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+  <!-- doc:Optional information. -->
+  <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>
+  <!-- doc:A value or a symbolic reference to a value. -->
+  <define name="parameter">
+    <element name="parameter">
+      <ref name="parameter.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+  <!-- doc:A character or string indicating the start of an input field in a  computer display. -->
+  <define name="prompt">
+    <element name="prompt">
+      <ref name="prompt.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="smallcptr.char.mix"/>
+          <ref name="co"/>
+        </choice>
+      </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>
+  <!-- doc:A unit of data associated with some part of a computer system. -->
+  <define name="property">
+    <element name="property">
+      <ref name="property.attlist"/>
+      <zeroOrMore>
+        <ref name="cptr.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>
+  <!-- doc:Content that may or must be replaced by the user. -->
+  <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"/>
+          <ref name="co"/>
+        </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>
+  <!-- doc:The value returned by a function. -->
+  <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>
+  <!-- doc:A component of SGML markup. -->
+  <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>
+          <value>prefix</value>
+          <value>namespace</value>
+          <value>localname</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="namespace"/>
+    </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>
+  <!-- doc:A field in a structure (in the programming language sense). -->
+  <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>
+  <!-- doc:The name of a structure (in the programming language sense). -->
+  <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>
+  <!-- doc:A name that is replaced by a value before processing. -->
+  <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>
+  <!-- doc:A system-related item or term. -->
+  <define name="systemitem">
+    <element name="systemitem">
+      <ref name="systemitem.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="acronym"/>
+          <ref name="co"/>
+        </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>daemon</value>
+          <value>domainname</value>
+          <value>etheraddress</value>
+          <value>event</value>
+          <value>eventhandler</value>
+          <value>filesystem</value>
+          <value>fqdomainname</value>
+          <value>groupname</value>
+          <value>ipaddress</value>
+          <value>library</value>
+          <value>macro</value>
+          <value>netmask</value>
+          <value>newsgroup</value>
+          <value>osname</value>
+          <value>protocol</value>
+          <value>resource</value>
+          <value>systemname</value>
+          <value>username</value>
+          <value>process</value>
+          <value>server</value>
+          <value>service</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.uri.attrib">
+    <empty/>
+  </define>
+  <define name="uri.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A Uniform Resource Identifier. -->
+  <define name="uri">
+    <element name="uri">
+      <ref name="uri.attlist"/>
+      <zeroOrMore>
+        <ref name="smallcptr.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of uri.element -->
+  <!-- Type: Type of URI; no default -->
+  <define name="uri.attlist" combine="interleave">
+    <optional>
+      <attribute name="type"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="uri.role.attrib"/>
+    <ref name="local.uri.attrib"/>
+  </define>
+  <!-- end of uri.attlist -->
+  <!-- end of uri.module -->
+  <define name="local.token.attrib">
+    <empty/>
+  </define>
+  <define name="token.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A unit of information. -->
+  <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>
+  <!-- doc:The classification of a value. -->
+  <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>
+  <!-- doc:Data entered by the user. -->
+  <define name="userinput">
+    <element name="userinput">
+      <ref name="userinput.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="cptr.char.mix"/>
+          <ref name="co"/>
+        </choice>
+      </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 -->
+  <define name="local.termdef.attrib">
+    <empty/>
+  </define>
+  <define name="termdef.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An inline definition of a term. -->
+  <define name="termdef">
+    <element name="termdef">
+      <ref name="termdef.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of termdef.element -->
+  <define name="termdef.attlist" combine="interleave">
+    <ref name="common.attrib"/>
+    <ref name="termdef.role.attrib"/>
+    <ref name="local.termdef.attrib"/>
+  </define>
+  <!-- end of termdef.attlist -->
+  <!-- end of termdef.module -->
+  <!-- General words and phrases ............................................ -->
+  <define name="local.abbrev.attrib">
+    <empty/>
+  </define>
+  <define name="abbrev.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:An abbreviation, especially one followed by a period. -->
+  <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>
+  <!-- doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase. -->
+  <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>
+  <!-- doc:An inline bibliographic reference to another published work. -->
+  <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>
+  <!-- doc:A citation to a reference page. -->
+  <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>
+  <!-- doc:The title of a reference page. -->
+  <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>
+  <!-- doc:A reference volume number. -->
+  <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>
+  <!-- doc:The title of a cited work. -->
+  <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>
+          <value>cdrom</value>
+          <value>dvd</value>
+          <value>wiki</value>
+          <value>gopher</value>
+          <value>bbs</value>
+          <value>emailmessage</value>
+          <value>webpage</value>
+          <value>newsposting</value>
+        </choice>
+      </attribute>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="citetitle.role.attrib"/>
+    <ref name="local.citetitle.attrib"/>
+  </define>
+  <!-- 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>
+  <!-- doc:Emphasized text. -->
+  <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.foreignphrase.attrib">
+    <empty/>
+  </define>
+  <define name="foreignphrase.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A word or phrase in a language other than the primary language of the document. -->
+  <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>
+  <!-- doc:A glossary term. -->
+  <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">
+    <optional>
+      <attribute name="baseform"/>
+    </optional>
+    <ref name="linkend.attrib"/>
+    <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.firstterm.attrib">
+    <empty/>
+  </define>
+  <define name="firstterm.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:The first occurrence of a term. -->
+  <define name="firstterm">
+    <element name="firstterm">
+      <ref name="firstterm.attlist"/>
+      <zeroOrMore>
+        <ref name="para.char.mix"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- end of firstterm.element -->
+  <!-- to GlossEntry or other explanation -->
+  <define name="firstterm.attlist" combine="interleave">
+    <optional>
+      <attribute name="baseform"/>
+    </optional>
+    <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.phrase.attrib">
+    <empty/>
+  </define>
+  <define name="phrase.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A span of text. -->
+  <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>
+  <!-- doc:An inline quotation. -->
+  <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>
+  <!-- doc:A subscript (as in H{^2}O, the molecular formula for water). -->
+  <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 -->
+  <!-- doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself). -->
+  <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>
+  <!-- doc:A trademark. -->
+  <define name="trademark">
+    <element name="trademark">
+      <ref name="trademark.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <text/>
+          <ref name="link.char.class"/>
+          <ref name="tech.char.class"/>
+          <ref name="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>
+  <!-- doc:A word meant specifically as a word and not representing anything else. -->
+  <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>
+  <!-- doc:A hypertext link. -->
+  <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>
+    <optional>
+      <attribute name="xrefstyle"/>
+    </optional>
+    <optional>
+      <attribute name="type"/>
+    </optional>
+    <ref name="linkendreq.attrib"/>
+    <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>
+  <!-- doc:A link that addresses its target indirectly, through an entity. -->
+  <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>
+    <optional>
+      <attribute name="targetdoc"/>
+    </optional>
+    <optional>
+      <attribute name="targetptr"/>
+    </optional>
+    <optional>
+      <attribute name="xrefstyle"/>
+    </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>
+  <!-- doc:A link that addresses its target by means of a URL (Uniform Resource Locator). -->
+  <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>
+    <optional>
+      <attribute name="xrefstyle"/>
+    </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>
+  <!-- doc:A cross reference to a footnote (a footnote mark). -->
+  <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>
+  <!-- doc:A cross reference to another part of the document. -->
+  <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>
+    <optional>
+      <attribute name="xrefstyle"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="linkendreq.attrib"/>
+    <ref name="xref.role.attrib"/>
+    <ref name="local.xref.attrib"/>
+  </define>
+  <!-- end of xref.attlist -->
+  <!-- end of xref.module -->
+  <define name="local.biblioref.attrib">
+    <empty/>
+  </define>
+  <define name="biblioref.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A cross reference to a bibliographic entry. -->
+  <define name="biblioref">
+    <element name="biblioref">
+      <ref name="biblioref.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <!-- end of biblioref.element -->
+  <define name="biblioref.attlist" combine="interleave">
+    <optional>
+      <attribute name="endterm">
+        <data type="IDREF"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="xrefstyle"/>
+    </optional>
+    <optional>
+      <attribute name="units"/>
+    </optional>
+    <optional>
+      <attribute name="begin"/>
+    </optional>
+    <optional>
+      <attribute name="end"/>
+    </optional>
+    <ref name="common.attrib"/>
+    <ref name="linkendreq.attrib"/>
+    <ref name="biblioref.role.attrib"/>
+    <ref name="local.biblioref.attrib"/>
+  </define>
+  <!-- end of biblioref.attlist -->
+  <!-- end of biblioref.module -->
+  <!-- Ubiquitous elements .................................................. -->
+  <define name="local.anchor.attrib">
+    <empty/>
+  </define>
+  <define name="anchor.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- doc:A spot in the document. -->
+  <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>
+  <!-- doc:The location of a page break in a print version of the document. -->
+  <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>
+  <!-- doc:A wrapper for terms to be indexed. -->
+  <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>
+    <optional>
+      <attribute name="type"/>
+    </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>
+  <!-- doc:The primary word or phrase under which an index term should be sorted. -->
+  <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 -->
+  <!-- doc:A secondary word or phrase in an index term. -->
+  <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 -->
+  <!-- doc:A tertiary word or phrase in an index term. -->
+  <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>
+  <!-- doc:Part of an index term directing the reader instead to another entry in the index. -->
+  <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 -->
+  <!-- doc:Part of an index term directing the reader also to another entry in the index. -->
+  <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>
+</grammar>
+<!-- end of seealso.attlist -->
+<!-- end of seeseealso.module -->
+<!-- end of indexterm.content.module -->
+<!-- End of DocBook XML information pool module V4.5 ...................... -->
+<!-- ...................................................................... -->
Index: BOOK/schema/docbook/4.5/rng/docbook.rnc
===================================================================
--- BOOK/schema/docbook/4.5/rng/docbook.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/docbook.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,499 @@
+# ......................................................................
+
+# DocBook XML DTD V4.5 .................................................
+
+# File docbookx.dtd ....................................................
+
+# Copyright 1992-2006 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+# 
+# See also http://docbook.org/specs/
+# 
+# $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+# 
+# 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.5 of the DocBook DTD.
+# Please use the following formal public identifier to identify it:
+# 
+# "-//OASIS//DTD DocBook XML V4.5//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.5//EN"
+#                "http://www.oasis-open.org/docbook/xml/4.5/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.5//EN"
+#            "http://www.oasis-open.org/docbook/xml/4.5/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.
+
+# ......................................................................
+
+# Enable SGML features .................................................
+
+# ......................................................................
+
+# Notation declarations ................................................
+
+include "dbnotnx.rnc"
+# ......................................................................
+
+# ISO character entity sets ............................................
+
+# euro sign, U+20AC NEW
+
+# ......................................................................
+
+# DTD modules ..........................................................
+
+# Information pool ..............
+include "dbpoolx.rnc"
+# Redeclaration placeholder .....
+
+# Document hierarchy ............
+include "dbhierx.rnc"
+start =
+  articleinfo
+  | honorific
+  | legalnotice
+  | procedure
+  | simplelist
+  | keycode
+  | refsynopsisdiv
+  | article
+  | phrase
+  | destructorsynopsis
+  | itemizedlist
+  | audioobject
+  | link
+  | sect1info
+  | xref
+  | glossaryinfo
+  | varname
+  | keywordset
+  | informalequation
+  | toc
+  | pagenums
+  | lot
+  | shortcut
+  | glosslist
+  | option
+  | bibliosource
+  | variablelist
+  | filename
+  | pob
+  | colgroup
+  | foreignphrase
+  | group
+  | substeps
+  | conftitle
+  | textobject
+  | menuchoice
+  | colspec
+  | contractsponsor
+  | tocback
+  | contractnum
+  | constant
+  | dedication
+  | inlineequation
+  | bibliographyinfo
+  | country
+  | glossseealso
+  | bridgehead
+  | mousebutton
+  | surname
+  | stepalternatives
+  | tertiaryie
+  | mediaobject
+  | msgentry
+  | fax
+  | initializer
+  | table
+  | task
+  | setinfo
+  | videodata
+  | bibliodiv
+  | issuenum
+  | phone
+  | state
+  | refsynopsisdivinfo
+  | member
+  | glossentry
+  | term
+  | msgtext
+  | tr
+  | errortype
+  | confdates
+  | inlinegraphic
+  | th
+  | segmentedlist
+  | remark
+  | preface
+  | structname
+  | publisher
+  | td
+  | oointerface
+  | refsection
+  | type
+  | taskrelated
+  | msgrel
+  | artpagenums
+  | bibliomixed
+  | revnumber
+  | firstterm
+  | seeie
+  | spanspec
+  | toclevel5
+  | trademark
+  | toclevel4
+  | toclevel3
+  | toclevel2
+  | indexentry
+  | toclevel1
+  | colophon
+  | methodparam
+  | sidebarinfo
+  | productnumber
+  | funcprototype
+  | inlinemediaobject
+  | refclass
+  | lotentry
+  | paramdef
+  | classsynopsisinfo
+  | qandaset
+  | footnote
+  | msglevel
+  | keysym
+  | citation
+  | simplemsgentry
+  | othercredit
+  | subjectset
+  | keycap
+  | orderedlist
+  | refmiscinfo
+  | blockinfo
+  | programlistingco
+  | abbrev
+  | sidebar
+  | informalfigure
+  | tip
+  | primaryie
+  | appendixinfo
+  | partintro
+  | glossdiv
+  | confgroup
+  | segtitle
+  | taskprerequisites
+  | street
+  | tbody
+  | caption
+  | markup
+  | setindex
+  | msgsub
+  | subscript
+  | orgname
+  | fieldsynopsis
+  | refname
+  | void
+  | sect5
+  | sect4
+  | sect3
+  | chapter
+  | sect2
+  | sect1
+  | modifier
+  | col
+  | orgdiv
+  | city
+  | bibliolist
+  | funcparams
+  | application
+  | \token
+  | imageobject
+  | literal
+  | funcsynopsis
+  | olink
+  | package
+  | collab
+  | seealsoie
+  | primary
+  | glossterm
+  | termdef
+  | area
+  | ackno
+  | function
+  | collabname
+  | lineannotation
+  | guisubmenu
+  | msgexplan
+  | errorname
+  | property
+  | synopfragmentref
+  | refentryinfo
+  | entry
+  | manvolnum
+  | synopsis
+  | emphasis
+  | appendix
+  | bookinfo
+  | contrib
+  | otheraddr
+  | copyright
+  | methodname
+  | email
+  | ooclass
+  | videoobject
+  | abstract
+  | firstname
+  | revremark
+  | glossdef
+  | guibutton
+  | informalexample
+  | screen
+  | errorcode
+  | command
+  | seriesvolnums
+  | refpurpose
+  | parameter
+  | equation
+  | tfoot
+  | code
+  | jobtitle
+  | sgmltag
+  | screenco
+  | holder
+  | isbn
+  | corpcredit
+  | biblioset
+  | part
+  | symbol
+  | row
+  | bibliomisc
+  | imagedata
+  | secondary
+  | classname
+  | callout
+  | screenshot
+  | bibliomset
+  | indexterm
+  | refsect3
+  | tocchap
+  | para
+  | refsect2
+  | refsect1
+  | date
+  | refdescriptor
+  | wordasword
+  | epigraph
+  | audiodata
+  | hardware
+  | confsponsor
+  | authorgroup
+  | warning
+  | authorinitials
+  | medialabel
+  | varlistentry
+  | authorblurb
+  | itermset
+  | refsect3info
+  | informaltable
+  | guimenuitem
+  | postcode
+  | subjectterm
+  | refnamediv
+  | note
+  | figure
+  | envar
+  | listitem
+  | methodsynopsis
+  | affiliation
+  | funcsynopsisinfo
+  | structfield
+  | blockquote
+  | keyword
+  | chapterinfo
+  | tertiary
+  | year
+  | subtitle
+  | personblurb
+  | refentry
+  | citebiblioid
+  | seglistitem
+  | bibliography
+  | msg
+  | constructorsynopsis
+  | refsect2info
+  | volumenum
+  | database
+  | funcdef
+  | uri
+  | graphicco
+  | biblioid
+  | msgmain
+  | printhistory
+  | glosssee
+  | beginpage
+  | glossary
+  | set
+  | highlights
+  | objectinfo
+  | tocpart
+  | guiicon
+  | revhistory
+  | seg
+  | see
+  | msgorig
+  | areaspec
+  | partinfo
+  | index
+  | sectioninfo
+  | refsectioninfo
+  | optional
+  | confnum
+  | replaceable
+  | refsect1info
+  | corpauthor
+  | step
+  | anchor
+  | arg
+  | mathphrase
+  | setindexinfo
+  | keycombo
+  | address
+  | cmdsynopsis
+  | computeroutput
+  | literallayout
+  | qandaentry
+  | sect5info
+  | bibliocoverage
+  | coref
+  | editor
+  | superscript
+  | personname
+  | pubsnumber
+  | graphic
+  | simplesect
+  | accel
+  | secondaryie
+  | biblioref
+  | publishername
+  | bibliorelation
+  | prefaceinfo
+  | revision
+  | screeninfo
+  | sbr
+  | example
+  | citetitle
+  | issn
+  | invpartnumber
+  | indexdiv
+  | sect4info
+  | corpname
+  | lineage
+  | ooexception
+  | reference
+  | revdescription
+  | title
+  | edition
+  | co
+  | msgaud
+  | guimenu
+  | shortaffil
+  | titleabbrev
+  | msginfo
+  | refmeta
+  | qandadiv
+  | mediaobjectco
+  | seealso
+  | exceptionname
+  | answer
+  | programlisting
+  | tgroup
+  | refentrytitle
+  | book
+  | errortext
+  | varargs
+  | sect3info
+  | citerefentry
+  | tasksummary
+  | quote
+  | othername
+  | prompt
+  | entrytbl
+  | interfacename
+  | acronym
+  | modespec
+  | msgset
+  | thead
+  | textdata
+  | userinput
+  | attribution
+  | footnoteref
+  | action
+  | tocentry
+  | tocfront
+  | author
+  | imageobjectco
+  | alt
+  | question
+  | ulink
+  | subject
+  | pubdate
+  | returnvalue
+  | label
+  | caution
+  | section
+  | systemitem
+  | referenceinfo
+  | sect2info
+  | calloutlist
+  | classsynopsis
+  | productname
+  | simpara
+  | synopfragment
+  | important
+  | interface
+  | releaseinfo
+  | formalpara
+  | areaset
+  | biblioentry
+  | indexinfo
+  | guilabel
+# ......................................................................
+
+# Other general entities ...............................................
+
+# End of DocBook XML DTD V4.5 ..........................................
+
+# ......................................................................
Index: BOOK/schema/docbook/4.5/rng/docbook.rng
===================================================================
--- BOOK/schema/docbook/4.5/rng/docbook.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/docbook.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook XML DTD V4.5 ................................................. -->
+<!-- File docbookx.dtd .................................................... -->
+<!--
+  Copyright 1992-2006 HaL Computer Systems, Inc.,
+  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+  Organization for the Advancement of Structured Information
+  Standards (OASIS).
+  
+  See also http://docbook.org/specs/
+  
+  $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+  
+  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.5 of the DocBook DTD.
+  Please use the following formal public identifier to identify it:
+  
+  "-//OASIS//DTD DocBook XML V4.5//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.5//EN"
+                 "http://www.oasis-open.org/docbook/xml/4.5/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.5//EN"
+             "http://www.oasis-open.org/docbook/xml/4.5/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.
+-->
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+  <include href="dbnotnx.rng"/>
+  <!-- ...................................................................... -->
+  <!-- ISO character entity sets ............................................ -->
+  <!-- euro sign, U+20AC NEW -->
+  <!-- ...................................................................... -->
+  <!-- DTD modules .......................................................... -->
+  <!-- Information pool .............. -->
+  <include href="dbpoolx.rng"/>
+  <!-- Redeclaration placeholder ..... -->
+  <!-- Document hierarchy ............ -->
+  <include href="dbhierx.rng"/>
+  <start>
+    <choice>
+      <ref name="articleinfo"/>
+      <ref name="honorific"/>
+      <ref name="legalnotice"/>
+      <ref name="procedure"/>
+      <ref name="simplelist"/>
+      <ref name="keycode"/>
+      <ref name="refsynopsisdiv"/>
+      <ref name="article"/>
+      <ref name="phrase"/>
+      <ref name="destructorsynopsis"/>
+      <ref name="itemizedlist"/>
+      <ref name="audioobject"/>
+      <ref name="link"/>
+      <ref name="sect1info"/>
+      <ref name="xref"/>
+      <ref name="glossaryinfo"/>
+      <ref name="varname"/>
+      <ref name="keywordset"/>
+      <ref name="informalequation"/>
+      <ref name="toc"/>
+      <ref name="pagenums"/>
+      <ref name="lot"/>
+      <ref name="shortcut"/>
+      <ref name="glosslist"/>
+      <ref name="option"/>
+      <ref name="bibliosource"/>
+      <ref name="variablelist"/>
+      <ref name="filename"/>
+      <ref name="pob"/>
+      <ref name="colgroup"/>
+      <ref name="foreignphrase"/>
+      <ref name="group"/>
+      <ref name="substeps"/>
+      <ref name="conftitle"/>
+      <ref name="textobject"/>
+      <ref name="menuchoice"/>
+      <ref name="colspec"/>
+      <ref name="contractsponsor"/>
+      <ref name="tocback"/>
+      <ref name="contractnum"/>
+      <ref name="constant"/>
+      <ref name="dedication"/>
+      <ref name="inlineequation"/>
+      <ref name="bibliographyinfo"/>
+      <ref name="country"/>
+      <ref name="glossseealso"/>
+      <ref name="bridgehead"/>
+      <ref name="mousebutton"/>
+      <ref name="surname"/>
+      <ref name="stepalternatives"/>
+      <ref name="tertiaryie"/>
+      <ref name="mediaobject"/>
+      <ref name="msgentry"/>
+      <ref name="fax"/>
+      <ref name="initializer"/>
+      <ref name="table"/>
+      <ref name="task"/>
+      <ref name="setinfo"/>
+      <ref name="videodata"/>
+      <ref name="bibliodiv"/>
+      <ref name="issuenum"/>
+      <ref name="phone"/>
+      <ref name="state"/>
+      <ref name="refsynopsisdivinfo"/>
+      <ref name="member"/>
+      <ref name="glossentry"/>
+      <ref name="term"/>
+      <ref name="msgtext"/>
+      <ref name="tr"/>
+      <ref name="errortype"/>
+      <ref name="confdates"/>
+      <ref name="inlinegraphic"/>
+      <ref name="th"/>
+      <ref name="segmentedlist"/>
+      <ref name="remark"/>
+      <ref name="preface"/>
+      <ref name="structname"/>
+      <ref name="publisher"/>
+      <ref name="td"/>
+      <ref name="oointerface"/>
+      <ref name="refsection"/>
+      <ref name="type"/>
+      <ref name="taskrelated"/>
+      <ref name="msgrel"/>
+      <ref name="artpagenums"/>
+      <ref name="bibliomixed"/>
+      <ref name="revnumber"/>
+      <ref name="firstterm"/>
+      <ref name="seeie"/>
+      <ref name="spanspec"/>
+      <ref name="toclevel5"/>
+      <ref name="trademark"/>
+      <ref name="toclevel4"/>
+      <ref name="toclevel3"/>
+      <ref name="toclevel2"/>
+      <ref name="indexentry"/>
+      <ref name="toclevel1"/>
+      <ref name="colophon"/>
+      <ref name="methodparam"/>
+      <ref name="sidebarinfo"/>
+      <ref name="productnumber"/>
+      <ref name="funcprototype"/>
+      <ref name="inlinemediaobject"/>
+      <ref name="refclass"/>
+      <ref name="lotentry"/>
+      <ref name="paramdef"/>
+      <ref name="classsynopsisinfo"/>
+      <ref name="qandaset"/>
+      <ref name="footnote"/>
+      <ref name="msglevel"/>
+      <ref name="keysym"/>
+      <ref name="citation"/>
+      <ref name="simplemsgentry"/>
+      <ref name="othercredit"/>
+      <ref name="subjectset"/>
+      <ref name="keycap"/>
+      <ref name="orderedlist"/>
+      <ref name="refmiscinfo"/>
+      <ref name="blockinfo"/>
+      <ref name="programlistingco"/>
+      <ref name="abbrev"/>
+      <ref name="sidebar"/>
+      <ref name="informalfigure"/>
+      <ref name="tip"/>
+      <ref name="primaryie"/>
+      <ref name="appendixinfo"/>
+      <ref name="partintro"/>
+      <ref name="glossdiv"/>
+      <ref name="confgroup"/>
+      <ref name="segtitle"/>
+      <ref name="taskprerequisites"/>
+      <ref name="street"/>
+      <ref name="tbody"/>
+      <ref name="caption"/>
+      <ref name="markup"/>
+      <ref name="setindex"/>
+      <ref name="msgsub"/>
+      <ref name="subscript"/>
+      <ref name="orgname"/>
+      <ref name="fieldsynopsis"/>
+      <ref name="refname"/>
+      <ref name="void"/>
+      <ref name="sect5"/>
+      <ref name="sect4"/>
+      <ref name="sect3"/>
+      <ref name="chapter"/>
+      <ref name="sect2"/>
+      <ref name="sect1"/>
+      <ref name="modifier"/>
+      <ref name="col"/>
+      <ref name="orgdiv"/>
+      <ref name="city"/>
+      <ref name="bibliolist"/>
+      <ref name="funcparams"/>
+      <ref name="application"/>
+      <ref name="token"/>
+      <ref name="imageobject"/>
+      <ref name="literal"/>
+      <ref name="funcsynopsis"/>
+      <ref name="olink"/>
+      <ref name="package"/>
+      <ref name="collab"/>
+      <ref name="seealsoie"/>
+      <ref name="primary"/>
+      <ref name="glossterm"/>
+      <ref name="termdef"/>
+      <ref name="area"/>
+      <ref name="ackno"/>
+      <ref name="function"/>
+      <ref name="collabname"/>
+      <ref name="lineannotation"/>
+      <ref name="guisubmenu"/>
+      <ref name="msgexplan"/>
+      <ref name="errorname"/>
+      <ref name="property"/>
+      <ref name="synopfragmentref"/>
+      <ref name="refentryinfo"/>
+      <ref name="entry"/>
+      <ref name="manvolnum"/>
+      <ref name="synopsis"/>
+      <ref name="emphasis"/>
+      <ref name="appendix"/>
+      <ref name="bookinfo"/>
+      <ref name="contrib"/>
+      <ref name="otheraddr"/>
+      <ref name="copyright"/>
+      <ref name="methodname"/>
+      <ref name="email"/>
+      <ref name="ooclass"/>
+      <ref name="videoobject"/>
+      <ref name="abstract"/>
+      <ref name="firstname"/>
+      <ref name="revremark"/>
+      <ref name="glossdef"/>
+      <ref name="guibutton"/>
+      <ref name="informalexample"/>
+      <ref name="screen"/>
+      <ref name="errorcode"/>
+      <ref name="command"/>
+      <ref name="seriesvolnums"/>
+      <ref name="refpurpose"/>
+      <ref name="parameter"/>
+      <ref name="equation"/>
+      <ref name="tfoot"/>
+      <ref name="code"/>
+      <ref name="jobtitle"/>
+      <ref name="sgmltag"/>
+      <ref name="screenco"/>
+      <ref name="holder"/>
+      <ref name="isbn"/>
+      <ref name="corpcredit"/>
+      <ref name="biblioset"/>
+      <ref name="part"/>
+      <ref name="symbol"/>
+      <ref name="row"/>
+      <ref name="bibliomisc"/>
+      <ref name="imagedata"/>
+      <ref name="secondary"/>
+      <ref name="classname"/>
+      <ref name="callout"/>
+      <ref name="screenshot"/>
+      <ref name="bibliomset"/>
+      <ref name="indexterm"/>
+      <ref name="refsect3"/>
+      <ref name="tocchap"/>
+      <ref name="para"/>
+      <ref name="refsect2"/>
+      <ref name="refsect1"/>
+      <ref name="date"/>
+      <ref name="refdescriptor"/>
+      <ref name="wordasword"/>
+      <ref name="epigraph"/>
+      <ref name="audiodata"/>
+      <ref name="hardware"/>
+      <ref name="confsponsor"/>
+      <ref name="authorgroup"/>
+      <ref name="warning"/>
+      <ref name="authorinitials"/>
+      <ref name="medialabel"/>
+      <ref name="varlistentry"/>
+      <ref name="authorblurb"/>
+      <ref name="itermset"/>
+      <ref name="refsect3info"/>
+      <ref name="informaltable"/>
+      <ref name="guimenuitem"/>
+      <ref name="postcode"/>
+      <ref name="subjectterm"/>
+      <ref name="refnamediv"/>
+      <ref name="note"/>
+      <ref name="figure"/>
+      <ref name="envar"/>
+      <ref name="listitem"/>
+      <ref name="methodsynopsis"/>
+      <ref name="affiliation"/>
+      <ref name="funcsynopsisinfo"/>
+      <ref name="structfield"/>
+      <ref name="blockquote"/>
+      <ref name="keyword"/>
+      <ref name="chapterinfo"/>
+      <ref name="tertiary"/>
+      <ref name="year"/>
+      <ref name="subtitle"/>
+      <ref name="personblurb"/>
+      <ref name="refentry"/>
+      <ref name="citebiblioid"/>
+      <ref name="seglistitem"/>
+      <ref name="bibliography"/>
+      <ref name="msg"/>
+      <ref name="constructorsynopsis"/>
+      <ref name="refsect2info"/>
+      <ref name="volumenum"/>
+      <ref name="database"/>
+      <ref name="funcdef"/>
+      <ref name="uri"/>
+      <ref name="graphicco"/>
+      <ref name="biblioid"/>
+      <ref name="msgmain"/>
+      <ref name="printhistory"/>
+      <ref name="glosssee"/>
+      <ref name="beginpage"/>
+      <ref name="glossary"/>
+      <ref name="set"/>
+      <ref name="highlights"/>
+      <ref name="objectinfo"/>
+      <ref name="tocpart"/>
+      <ref name="guiicon"/>
+      <ref name="revhistory"/>
+      <ref name="seg"/>
+      <ref name="see"/>
+      <ref name="msgorig"/>
+      <ref name="areaspec"/>
+      <ref name="partinfo"/>
+      <ref name="index"/>
+      <ref name="sectioninfo"/>
+      <ref name="refsectioninfo"/>
+      <ref name="optional"/>
+      <ref name="confnum"/>
+      <ref name="replaceable"/>
+      <ref name="refsect1info"/>
+      <ref name="corpauthor"/>
+      <ref name="step"/>
+      <ref name="anchor"/>
+      <ref name="arg"/>
+      <ref name="mathphrase"/>
+      <ref name="setindexinfo"/>
+      <ref name="keycombo"/>
+      <ref name="address"/>
+      <ref name="cmdsynopsis"/>
+      <ref name="computeroutput"/>
+      <ref name="literallayout"/>
+      <ref name="qandaentry"/>
+      <ref name="sect5info"/>
+      <ref name="bibliocoverage"/>
+      <ref name="coref"/>
+      <ref name="editor"/>
+      <ref name="superscript"/>
+      <ref name="personname"/>
+      <ref name="pubsnumber"/>
+      <ref name="graphic"/>
+      <ref name="simplesect"/>
+      <ref name="accel"/>
+      <ref name="secondaryie"/>
+      <ref name="biblioref"/>
+      <ref name="publishername"/>
+      <ref name="bibliorelation"/>
+      <ref name="prefaceinfo"/>
+      <ref name="revision"/>
+      <ref name="screeninfo"/>
+      <ref name="sbr"/>
+      <ref name="example"/>
+      <ref name="citetitle"/>
+      <ref name="issn"/>
+      <ref name="invpartnumber"/>
+      <ref name="indexdiv"/>
+      <ref name="sect4info"/>
+      <ref name="corpname"/>
+      <ref name="lineage"/>
+      <ref name="ooexception"/>
+      <ref name="reference"/>
+      <ref name="revdescription"/>
+      <ref name="title"/>
+      <ref name="edition"/>
+      <ref name="co"/>
+      <ref name="msgaud"/>
+      <ref name="guimenu"/>
+      <ref name="shortaffil"/>
+      <ref name="titleabbrev"/>
+      <ref name="msginfo"/>
+      <ref name="refmeta"/>
+      <ref name="qandadiv"/>
+      <ref name="mediaobjectco"/>
+      <ref name="seealso"/>
+      <ref name="exceptionname"/>
+      <ref name="answer"/>
+      <ref name="programlisting"/>
+      <ref name="tgroup"/>
+      <ref name="refentrytitle"/>
+      <ref name="book"/>
+      <ref name="errortext"/>
+      <ref name="varargs"/>
+      <ref name="sect3info"/>
+      <ref name="citerefentry"/>
+      <ref name="tasksummary"/>
+      <ref name="quote"/>
+      <ref name="othername"/>
+      <ref name="prompt"/>
+      <ref name="entrytbl"/>
+      <ref name="interfacename"/>
+      <ref name="acronym"/>
+      <ref name="modespec"/>
+      <ref name="msgset"/>
+      <ref name="thead"/>
+      <ref name="textdata"/>
+      <ref name="userinput"/>
+      <ref name="attribution"/>
+      <ref name="footnoteref"/>
+      <ref name="action"/>
+      <ref name="tocentry"/>
+      <ref name="tocfront"/>
+      <ref name="author"/>
+      <ref name="imageobjectco"/>
+      <ref name="alt"/>
+      <ref name="question"/>
+      <ref name="ulink"/>
+      <ref name="subject"/>
+      <ref name="pubdate"/>
+      <ref name="returnvalue"/>
+      <ref name="label"/>
+      <ref name="caution"/>
+      <ref name="section"/>
+      <ref name="systemitem"/>
+      <ref name="referenceinfo"/>
+      <ref name="sect2info"/>
+      <ref name="calloutlist"/>
+      <ref name="classsynopsis"/>
+      <ref name="productname"/>
+      <ref name="simpara"/>
+      <ref name="synopfragment"/>
+      <ref name="important"/>
+      <ref name="interface"/>
+      <ref name="releaseinfo"/>
+      <ref name="formalpara"/>
+      <ref name="areaset"/>
+      <ref name="biblioentry"/>
+      <ref name="indexinfo"/>
+      <ref name="guilabel"/>
+    </choice>
+  </start>
+</grammar>
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+<!-- End of DocBook XML DTD V4.5 .......................................... -->
+<!-- ...................................................................... -->
Index: BOOK/schema/docbook/4.5/rng/htmltblx.rnc
===================================================================
--- BOOK/schema/docbook/4.5/rng/htmltblx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/htmltblx.rnc	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,225 @@
+# ......................................................................
+
+# DocBook XML HTML Table Module V4.5 ...................................
+
+# File htmltblx.mod ....................................................
+
+# Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+# Inc., and the Organization for the Advancement of Structured Information
+# Standards (OASIS).
+# 
+# $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+# 
+# 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 elements that are
+# isomorphic to the HTML elements. One could argue we should
+# instead have based ourselves on the XHTML Table Module, but the
+# HTML one is more like what browsers are likely to accept today
+# and users are likely to use.
+# 
+# This module has been developed for use with the DocBook V4.5
+# "union table model" in which elements and attlists common to both
+# models are defined (as the union) in the CALS table module by
+# setting various parameter entities appropriately in this file.
+# 
+# In DTD driver files referring to this module, please use an entity
+# declaration that uses the public identifier shown below:
+# 
+# <!ENTITY % htmltbl PUBLIC
+# "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+# "htmltblx.mod">
+# %htmltbl;
+# 
+# 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.
+
+# ======================= XHTML Tables =======================================
+
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+html.coreattrs =
+  common.attrib,
+  attribute class { text }?,
+  attribute style { text }?,
+  attribute title { text }?
+# Does not contain lang or dir because they are in %common.attribs
+i18n = attribute xml:lang { xsd:NMTOKEN }?
+events =
+  attribute onclick { text }?,
+  attribute ondblclick { text }?,
+  attribute onmousedown { text }?,
+  attribute onmouseup { text }?,
+  attribute onmouseover { text }?,
+  attribute onmousemove { text }?,
+  attribute onmouseout { text }?,
+  attribute onkeypress { text }?,
+  attribute onkeydown { text }?,
+  attribute onkeyup { text }?
+attrs = html.coreattrs, i18n, events
+cellhalign =
+  attribute align { "left" | "center" | "right" | "justify" | "char" }?,
+  attribute char { text }?,
+  attribute charoff { text }?
+cellvalign =
+  attribute valign { "top" | "middle" | "bottom" | "baseline" }?
+# doc:A group of columns in an HTML table.
+colgroup = element colgroup { colgroup.attlist, col* }
+# doc:Specifications for a column in an HTML table.
+col = element col { col.attlist, empty }
+# doc:A row in an HTML table.
+tr = element tr { tr.attlist, (th | td)+ }
+# doc:A table header entry in an HTML table.
+th =
+  element th {
+    th.attlist, (para.char.mix | tabentry.mix | table | informaltable)*
+  }
+# doc:A table ntry in an HTML table.
+td =
+  element td {
+    td.attlist, (para.char.mix | tabentry.mix | table | informaltable)*
+  }
+colgroup.attlist &=
+  attrs,
+  [ a:defaultValue = "1" ] attribute span { text }?,
+  attribute width { text }?,
+  cellhalign,
+  cellvalign
+col.attlist &=
+  attrs,
+  [ a:defaultValue = "1" ] attribute span { text }?,
+  attribute width { text }?,
+  cellhalign,
+  cellvalign
+tr.attlist &=
+  attrs,
+  cellhalign,
+  cellvalign,
+  attribute bgcolor { text }?
+th.attlist &=
+  attrs,
+  attribute abbr { text }?,
+  attribute axis { text }?,
+  attribute headers { xsd:IDREFS }?,
+  attribute scope { "row" | "col" | "rowgroup" | "colgroup" }?,
+  [ a:defaultValue = "1" ] attribute rowspan { text }?,
+  [ a:defaultValue = "1" ] attribute colspan { text }?,
+  cellhalign,
+  cellvalign,
+  attribute nowrap { "nowrap" }?,
+  attribute bgcolor { text }?,
+  attribute width { text }?,
+  attribute height { text }?
+td.attlist &=
+  attrs,
+  attribute abbr { text }?,
+  attribute axis { text }?,
+  attribute headers { xsd:IDREFS }?,
+  attribute scope { "row" | "col" | "rowgroup" | "colgroup" }?,
+  [ a:defaultValue = "1" ] attribute rowspan { text }?,
+  [ a:defaultValue = "1" ] attribute colspan { text }?,
+  cellhalign,
+  cellvalign,
+  attribute nowrap { "nowrap" }?,
+  attribute bgcolor { text }?,
+  attribute width { text }?,
+  attribute height { text }?
+# ======================================================
+
+# Set up to read in the CALS model configured to
+# merge with the XHTML table model
+
+# ======================================================
+tables.role.attrib = role.attrib
+# Add label and role attributes to table and informaltable
+bodyatt =
+  attribute floatstyle { text }?,
+  attribute rowheader { "firstcol" | "norowheader" }?,
+  label.attrib
+# Add common attributes to Table, TGroup, TBody, THead, TFoot, Row, 
+# EntryTbl, and Entry (and InformalTable element).
+secur =
+  common.attrib,
+  attribute class { text }?,
+  attribute style { text }?,
+  attribute title { text }?,
+  i18n,
+  events,
+  tables.role.attrib
+common.table.attribs = bodyatt, secur
+# Content model for Table (that also allows HTML tables)
+tbl.table.mdl =
+  (blockinfo?,
+   formalobject.title.content,
+   ndxterm.class*,
+   textobject*,
+   (graphic+ | mediaobject+ | tgroup+))
+  | (caption, (col* | colgroup*), thead?, tfoot?, (tbody+ | tr+))
+informal.tbl.table.mdl =
+  (textobject*, (graphic+ | mediaobject+ | tgroup+))
+  | ((col* | colgroup*), thead?, tfoot?, (tbody+ | tr+))
+# Attributes for Table (including HTML ones)
+
+# N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd
+
+# that way because 'all' already occurs in a different enumeration in
+
+# CALS tables (frame).
+tbl.table.att =
+  attribute tabstyle { text }?,
+  attribute tocentry { yesorno.attvals }?,
+  attribute shortentry { yesorno.attvals }?,
+  attribute orient { "port" | "land" }?,
+  attribute pgwide { yesorno.attvals }?,
+  attribute summary { text }?,
+  attribute width { text }?,
+  attribute border { text }?,
+  attribute rules { text }?,
+  attribute cellspacing { text }?,
+  attribute cellpadding { text }?,
+  attribute align { "left" | "center" | "right" }?,
+  attribute bgcolor { text }?
+tbl.frame.attval =
+  "void"
+  | "above"
+  | "below"
+  | "hsides"
+  | "lhs"
+  | "rhs"
+  | "vsides"
+  | "box"
+  | "border"
+  | "top"
+  | "bottom"
+  | "topbot"
+  | "all"
+  | "sides"
+  | "none"
+# Allow either objects or inlines; beware of REs between elements.
+tbl.entry.mdl = para.char.mix | tabentry.mix
+# thead, tfoot, and tbody are defined in both table models,
+# so we set up parameter entities to define union models for them
+tbl.hdft.mdl = tr+ | (colspec*, row+)
+tbl.tbody.mdl = tr+ | row+
+# End of DocBook XML HTML Table Module V4.5 ............................
+
+# ......................................................................
Index: BOOK/schema/docbook/4.5/rng/htmltblx.rng
===================================================================
--- BOOK/schema/docbook/4.5/rng/htmltblx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
+++ BOOK/schema/docbook/4.5/rng/htmltblx.rng	(revision da28cc39be3d27782a526cb4350b643baa136390)
@@ -0,0 +1,590 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- DocBook XML HTML Table Module V4.5 ................................... -->
+<!-- File htmltblx.mod .................................................... -->
+<!--
+  Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+  Inc., and the Organization for the Advancement of Structured Information
+  Standards (OASIS).
+  
+  $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+  
+  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 elements that are
+  isomorphic to the HTML elements. One could argue we should
+  instead have based ourselves on the XHTML Table Module, but the
+  HTML one is more like what browsers are likely to accept today
+  and users are likely to use.
+  
+  This module has been developed for use with the DocBook V4.5
+  "union table model" in which elements and attlists common to both
+  models are defined (as the union) in the CALS table module by
+  setting various parameter entities appropriately in this file.
+  
+  In DTD driver files referring to this module, please use an entity
+  declaration that uses the public identifier shown below:
+  
+  <!ENTITY % htmltbl PUBLIC
+  "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+  "htmltblx.mod">
+  %htmltbl;
+  
+  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.
+-->
+<!-- ======================= XHTML Tables ======================================= -->
+<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <define name="html.coreattrs">
+    <ref name="common.attrib"/>
+    <optional>
+      <attribute name="class"/>
+    </optional>
+    <optional>
+      <attribute name="style"/>
+    </optional>
+    <optional>
+      <attribute name="title"/>
+    </optional>
+  </define>
+  <!-- Does not contain lang or dir because they are in %common.attribs -->
+  <define name="i18n">
+    <optional>
+      <attribute name="xml:lang">
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="events">
+    <optional>
+      <attribute name="onclick"/>
+    </optional>
+    <optional>
+      <attribute name="ondblclick"/>
+    </optional>
+    <optional>
+      <attribute name="onmousedown"/>
+    </optional>
+    <optional>
+      <attribute name="onmouseup"/>
+    </optional>
+    <optional>
+      <attribute name="onmouseover"/>
+    </optional>
+    <optional>
+      <attribute name="onmousemove"/>
+    </optional>
+    <optional>
+      <attribute name="onmouseout"/>
+    </optional>
+    <optional>
+      <attribute name="onkeypress"/>
+    </optional>
+    <optional>
+      <attribute name="onkeydown"/>
+    </optional>
+    <optional>
+      <attribute name="onkeyup"/>
+    </optional>
+  </define>
+  <define name="attrs">
+    <ref name="html.coreattrs"/>
+    <ref name="i18n"/>
+    <ref name="events"/>
+  </define>
+  <define name="cellhalign">
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>center</value>
+          <value>right</value>
+          <value>justify</value>
+          <value>char</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="char"/>
+    </optional>
+    <optional>
+      <attribute name="charoff"/>
+    </optional>
+  </define>
+  <define name="cellvalign">
+    <optional>
+      <attribute name="valign">
+        <choice>
+          <value>top</value>
+          <value>middle</value>
+          <value>bottom</value>
+          <value>baseline</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <!-- doc:A group of columns in an HTML table. -->
+  <define name="colgroup">
+    <element name="colgroup">
+      <ref name="colgroup.attlist"/>
+      <zeroOrMore>
+        <ref name="col"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- doc:Specifications for a column in an HTML table. -->
+  <define name="col">
+    <element name="col">
+      <ref name="col.attlist"/>
+      <empty/>
+    </element>
+  </define>
+  <!-- doc:A row in an HTML table. -->
+  <define name="tr">
+    <element name="tr">
+      <ref name="tr.attlist"/>
+      <oneOrMore>
+        <choice>
+          <ref name="th"/>
+          <ref name="td"/>
+        </choice>
+      </oneOrMore>
+    </element>
+  </define>
+  <!-- doc:A table header entry in an HTML table. -->
+  <define name="th">
+    <element name="th">
+      <ref name="th.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="tabentry.mix"/>
+          <ref name="table"/>
+          <ref name="informaltable"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <!-- doc:A table ntry in an HTML table. -->
+  <define name="td">
+    <element name="td">
+      <ref name="td.attlist"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="para.char.mix"/>
+          <ref name="tabentry.mix"/>
+          <ref name="table"/>
+          <ref name="informaltable"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <define name="colgroup.attlist" combine="interleave">
+    <ref name="attrs"/>
+    <optional>
+      <attribute name="span" a:defaultValue="1"/>
+    </optional>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <ref name="cellhalign"/>
+    <ref name="cellvalign"/>
+  </define>
+  <define name="col.attlist" combine="interleave">
+    <ref name="attrs"/>
+    <optional>
+      <attribute name="span" a:defaultValue="1"/>
+    </optional>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <ref name="cellhalign"/>
+    <ref name="cellvalign"/>
+  </define>
+  <define name="tr.attlist" combine="interleave">
+    <ref name="attrs"/>
+    <ref name="cellhalign"/>
+    <ref name="cellvalign"/>
+    <optional>
+      <attribute name="bgcolor"/>
+    </optional>
+  </define>
+  <define name="th.attlist" combine="interleave">
+    <ref name="attrs"/>
+    <optional>
+      <attribute name="abbr"/>
+    </optional>
+    <optional>
+      <attribute name="axis"/>
+    </optional>
+    <optional>
+      <attribute name="headers">
+        <data type="IDREFS"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scope">
+        <choice>
+          <value>row</value>
+          <value>col</value>
+          <value>rowgroup</value>
+          <value>colgroup</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowspan" a:defaultValue="1"/>
+    </optional>
+    <optional>
+      <attribute name="colspan" a:defaultValue="1"/>
+    </optional>
+    <ref name="cellhalign"/>
+    <ref name="cellvalign"/>
+    <optional>
+      <attribute name="nowrap">
+        <choice>
+          <value>nowrap</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="bgcolor"/>
+    </optional>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="height"/>
+    </optional>
+  </define>
+  <define name="td.attlist" combine="interleave">
+    <ref name="attrs"/>
+    <optional>
+      <attribute name="abbr"/>
+    </optional>
+    <optional>
+      <attribute name="axis"/>
+    </optional>
+    <optional>
+      <attribute name="headers">
+        <data type="IDREFS"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="scope">
+        <choice>
+          <value>row</value>
+          <value>col</value>
+          <value>rowgroup</value>
+          <value>colgroup</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="rowspan" a:defaultValue="1"/>
+    </optional>
+    <optional>
+      <attribute name="colspan" a:defaultValue="1"/>
+    </optional>
+    <ref name="cellhalign"/>
+    <ref name="cellvalign"/>
+    <optional>
+      <attribute name="nowrap">
+        <choice>
+          <value>nowrap</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="bgcolor"/>
+    </optional>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="height"/>
+    </optional>
+  </define>
+  <!-- ====================================================== -->
+  <!--
+    Set up to read in the CALS model configured to
+    merge with the XHTML table model
+  -->
+  <!-- ====================================================== -->
+  <define name="tables.role.attrib">
+    <ref name="role.attrib"/>
+  </define>
+  <!-- Add label and role attributes to table and informaltable -->
+  <define name="bodyatt">
+    <optional>
+      <attribute name="floatstyle"/>
+    </optional>
+    <optional>
+      <attribute name="rowheader">
+        <choice>
+          <value>firstcol</value>
+          <value>norowheader</value>
+        </choice>
+      </attribute>
+    </optional>
+    <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"/>
+    <optional>
+      <attribute name="class"/>
+    </optional>
+    <optional>
+      <attribute name="style"/>
+    </optional>
+    <optional>
+      <attribute name="title"/>
+    </optional>
+    <ref name="i18n"/>
+    <ref name="events"/>
+    <ref name="tables.role.attrib"/>
+  </define>
+  <define name="common.table.attribs">
+    <ref name="bodyatt"/>
+    <ref name="secur"/>
+  </define>
+  <!-- Content model for Table (that also allows HTML tables) -->
+  <define name="tbl.table.mdl">
+    <choice>
+      <group>
+        <optional>
+          <ref name="blockinfo"/>
+        </optional>
+        <ref name="formalobject.title.content"/>
+        <zeroOrMore>
+          <ref name="ndxterm.class"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="textobject"/>
+        </zeroOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="graphic"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="mediaobject"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="tgroup"/>
+          </oneOrMore>
+        </choice>
+      </group>
+      <group>
+        <ref name="caption"/>
+        <choice>
+          <zeroOrMore>
+            <ref name="col"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="colgroup"/>
+          </zeroOrMore>
+        </choice>
+        <optional>
+          <ref name="thead"/>
+        </optional>
+        <optional>
+          <ref name="tfoot"/>
+        </optional>
+        <choice>
+          <oneOrMore>
+            <ref name="tbody"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="tr"/>
+          </oneOrMore>
+        </choice>
+      </group>
+    </choice>
+  </define>
+  <define name="informal.tbl.table.mdl">
+    <choice>
+      <group>
+        <zeroOrMore>
+          <ref name="textobject"/>
+        </zeroOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="graphic"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="mediaobject"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="tgroup"/>
+          </oneOrMore>
+        </choice>
+      </group>
+      <group>
+        <choice>
+          <zeroOrMore>
+            <ref name="col"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="colgroup"/>
+          </zeroOrMore>
+        </choice>
+        <optional>
+          <ref name="thead"/>
+        </optional>
+        <optional>
+          <ref name="tfoot"/>
+        </optional>
+        <choice>
+          <oneOrMore>
+            <ref name="tbody"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="tr"/>
+          </oneOrMore>
+        </choice>
+      </group>
+    </choice>
+  </define>
+  <!-- Attributes for Table (including HTML ones) -->
+  <!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd -->
+  <!-- that way because 'all' already occurs in a different enumeration in -->
+  <!-- CALS tables (frame). -->
+  <define name="tbl.table.att">
+    <optional>
+      <attribute name="tabstyle"/>
+    </optional>
+    <optional>
+      <attribute name="tocentry">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="shortentry">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="orient">
+        <choice>
+          <value>port</value>
+          <value>land</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="pgwide">
+        <ref name="yesorno.attvals"/>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="summary"/>
+    </optional>
+    <optional>
+      <attribute name="width"/>
+    </optional>
+    <optional>
+      <attribute name="border"/>
+    </optional>
+    <optional>
+      <attribute name="rules"/>
+    </optional>
+    <optional>
+      <attribute name="cellspacing"/>
+    </optional>
+    <optional>
+      <attribute name="cellpadding"/>
+    </optional>
+    <optional>
+      <attribute name="align">
+        <choice>
+          <value>left</value>
+          <value>center</value>
+          <value>right</value>
+        </choice>
+      </attribute>
+    </optional>
+    <optional>
+      <attribute name="bgcolor"/>
+    </optional>
+  </define>
+  <define name="tbl.frame.attval">
+    <choice>
+      <value>void</value>
+      <value>above</value>
+      <value>below</value>
+      <value>hsides</value>
+      <value>lhs</value>
+      <value>rhs</value>
+      <value>vsides</value>
+      <value>box</value>
+      <value>border</value>
+      <value>top</value>
+      <value>bottom</value>
+      <value>topbot</value>
+      <value>all</value>
+      <value>sides</value>
+      <value>none</value>
+    </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>
+  <!--
+    thead, tfoot, and tbody are defined in both table models,
+    so we set up parameter entities to define union models for them
+  -->
+  <define name="tbl.hdft.mdl">
+    <choice>
+      <oneOrMore>
+        <ref name="tr"/>
+      </oneOrMore>
+      <group>
+        <zeroOrMore>
+          <ref name="colspec"/>
+        </zeroOrMore>
+        <oneOrMore>
+          <ref name="row"/>
+        </oneOrMore>
+      </group>
+    </choice>
+  </define>
+  <define name="tbl.tbody.mdl">
+    <choice>
+      <oneOrMore>
+        <ref name="tr"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="row"/>
+      </oneOrMore>
+    </choice>
+  </define>
+</grammar>
+<!-- End of DocBook XML HTML Table Module V4.5 ............................ -->
+<!-- ...................................................................... -->
