]> granicus.if.org Git - docbook-dsssl/commitdiff
Updated from RELAX NG Grammar
authorNorman Walsh <ndw@nwalsh.com>
Fri, 27 Dec 2002 19:23:46 +0000 (19:23 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Fri, 27 Dec 2002 19:23:46 +0000 (19:23 +0000)
12 files changed:
schema/xmlschema/.cvsignore [deleted file]
schema/xmlschema/README [new file with mode: 0644]
schema/xmlschema/README.xml [deleted file]
schema/xmlschema/calstbl.xsd [new file with mode: 0644]
schema/xmlschema/dbcent.xsd [new file with mode: 0644]
schema/xmlschema/dbhier.xsd
schema/xmlschema/dbnotn.xsd
schema/xmlschema/dbpool.xsd
schema/xmlschema/dbtables.xsd [deleted file]
schema/xmlschema/docbook.xsd
schema/xmlschema/soextblx.xsd [deleted file]
schema/xmlschema/test.xml

diff --git a/schema/xmlschema/.cvsignore b/schema/xmlschema/.cvsignore
deleted file mode 100644 (file)
index daa30a3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-README.html
diff --git a/schema/xmlschema/README b/schema/xmlschema/README
new file mode 100644 (file)
index 0000000..a36462b
--- /dev/null
@@ -0,0 +1,11 @@
+README for the DocBook W3C XML Schema
+
+For more information about DocBook, please see
+
+  http://www.oasis-open.org/docbook/
+
+Please send all questions, comments, concerns, and bug reports to the
+DocBook mailing list: docbook@lists.oasis-open.org
+
+These files were generated with RELAX NG schema with Trang,
+http://www.thaiopensource.com/trang/
diff --git a/schema/xmlschema/README.xml b/schema/xmlschema/README.xml
deleted file mode 100644 (file)
index 295db70..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE article
-  PUBLIC "-//Norman Walsh//DTD Simplified DocBook XML V4.1.2.4//EN"
-  "http://nwalsh.com/docbook/simple/4.1.2.4/sdocbook.dtd" [
-<!ENTITY version "V4.1.2.3">
-]>
-<article>
-<articleinfo>
-<title>DocBook XML Schema</title>
-<pubdate>12 Jan 2001</pubdate>
-<releaseinfo role="meta">
-$Id$
-</releaseinfo>
-
-<revhistory>
-<revision>
-<revnumber>4.1.2.3</revnumber>
-<date>12 Jan 2001</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Updated experimental release.</revremark>
-</revision>
-<revision>
-<revnumber>4.1.2.2</revnumber>
-<date>10 Jan 2001</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Updated experimental release.</revremark>
-</revision>
-<revision>
-<revnumber>4.1.2.1</revnumber>
-<date>16 Oct 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Initial experimental release.</revremark>
-</revision>
-</revhistory>
-
-<author><firstname>Norman</firstname><surname>Walsh</surname>
-</author>
-</articleinfo>
-
-<para>This is the README for the
-<ulink role="linktable" url="http://www.oasis-open.org/docbook/">DocBook</ulink>
-<ulink role="linktable" url="http://www.w3.org/XML/Schema">XML Schema</ulink>.
-</para>
-
-<para>
-The <ulink role="linktable" url="dbxs4121.zip">DocBook
-XML Schema &version;</ulink> attempts to be an accurate translation of the
-<ulink url="http://www.oasis-open.org/docbook/xml">DocBook
-XML V4.1.2 DTD</ulink>.</para>
-
-<para>In this version, the parameterization of the schema is roughly
-identical to the parameterization of the DTD. This may change as I
-begin to experiment with the construction of derivative schemas.</para>
-
-<note><title>Alpha Release</title>
-<para>DocBook XML Schema &version; is an experimental release.
-It validates with
-<ulink role="linktable" url="http://www.w3.org/2000/06/webdata/xsv">XSV</ulink>
-version SV 1.173.2.10/1.82 of 2000/10/31 16:30:47 on my system.</para>
-<para>I welcome reports of success or failure with other XML Schema
-validation tools.</para>
-</note>
-
-<para>
-The namespace names (URIs) used in this schema are purely
-imaginary. They have no official status, nor do they foreshadow the
-future existence of any similar official URIs. I had to use something.
-</para>
-
-<para>The DocBook XML Schema is known to differ from the DocBook
-DTD in the following ways:</para>
-
-<itemizedlist>
-<listitem><para>There are no named character entities. You can't
-define those in XML Schema.</para></listitem>
-
-<listitem><para>The table model is the OASIS Exchange Table Model,
-not the CALS Table Model. This table model is less rich than the 
-CALS model, lacking <literal>spanspec</literal>, <literal>tfoot</literal>,
-and a few other things.
-</para></listitem>
-
-<listitem><para>Inside the table model, the <literal>tgroup</literal>
-element and all of its descendants are in a different namespace.
-</para></listitem>
-
-<listitem><para>There are bugs, perhaps dozens, possibly hundreds.
-</para></listitem>
-</itemizedlist>
-
-<para>With the exception of tables, which will definitely require some
-markup changes in the instances, documents that are valid against the
-DTD should be valid against this schema.</para>
-
-</article>
diff --git a/schema/xmlschema/calstbl.xsd b/schema/xmlschema/calstbl.xsd
new file mode 100644 (file)
index 0000000..e8b6ce9
--- /dev/null
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
+  <xs:simpleType name="yesorno">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:group name="titles">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="title"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="tbl.table-titles.mdl">
+    <xs:sequence>
+      <xs:group ref="titles"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="tbl.table-main.mdl">
+    <xs:choice>
+      <xs:element maxOccurs="unbounded" ref="tgroup"/>
+      <xs:element maxOccurs="unbounded" ref="graphic"/>
+    </xs:choice>
+  </xs:group>
+  <xs:attributeGroup name="tbl.table.att">
+    <xs:attribute name="tabstyle"/>
+    <xs:attribute name="tocentry" type="yesorno"/>
+    <xs:attribute name="shortentry" type="yesorno"/>
+    <xs:attribute name="orient">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="port"/>
+          <xs:enumeration value="land"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="pgwide" type="yesorno"/>
+  </xs:attributeGroup>
+  <xs:complexType name="tbl.tgroup.mdl">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+      <xs:element minOccurs="0" ref="thead"/>
+      <xs:element minOccurs="0" ref="tfoot"/>
+      <xs:element ref="tbody"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:attributeGroup name="tbl.tgroup.att">
+    <xs:attribute name="tgroupstyle"/>
+  </xs:attributeGroup>
+  <xs:complexType name="tbl.hdft.mdl">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+      <xs:element maxOccurs="unbounded" ref="row"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="tbl.row.mdl">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element ref="entry"/>
+      <xs:element ref="entrytbl"/>
+    </xs:choice>
+  </xs:complexType>
+  <xs:complexType name="tbl.entrytbl.mdl">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+      <xs:element minOccurs="0" ref="thead"/>
+      <xs:element ref="tbody"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="table">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="tbl.table.mdl">
+          <xs:attributeGroup ref="table.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="table.attlist">
+    <xs:attribute name="frame">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="bottom"/>
+          <xs:enumeration value="topbot"/>
+          <xs:enumeration value="all"/>
+          <xs:enumeration value="sides"/>
+          <xs:enumeration value="none"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="colsep" type="yesorno"/>
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attributeGroup ref="tbl.table.att"/>
+    <xs:attributeGroup ref="bodyatt"/>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="tgroup">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="tbl.tgroup.mdl">
+          <xs:attributeGroup ref="tgroup.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tgroup.attlist">
+    <xs:attribute name="cols" use="required"/>
+    <xs:attributeGroup ref="tbl.tgroup.att"/>
+    <xs:attribute name="colsep" type="yesorno"/>
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+          <xs:enumeration value="justify"/>
+          <xs:enumeration value="char"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="char"/>
+    <xs:attribute name="charoff"/>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="colspec">
+    <xs:complexType>
+      <xs:attributeGroup ref="colspec.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="colspec.attlist">
+    <xs:attribute name="colnum"/>
+    <xs:attribute name="colname"/>
+    <xs:attribute name="colwidth"/>
+    <xs:attribute name="colsep" type="yesorno"/>
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+          <xs:enumeration value="justify"/>
+          <xs:enumeration value="char"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="char"/>
+    <xs:attribute name="charoff"/>
+  </xs:attributeGroup>
+  <xs:element name="spanspec">
+    <xs:complexType>
+      <xs:attributeGroup ref="spanspec.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="spanspec.attlist">
+    <xs:attribute name="namest" use="required"/>
+    <xs:attribute name="nameend" use="required"/>
+    <xs:attribute name="spanname" use="required"/>
+    <xs:attribute name="colsep" type="yesorno"/>
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+          <xs:enumeration value="justify"/>
+          <xs:enumeration value="char"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="char"/>
+    <xs:attribute name="charoff"/>
+  </xs:attributeGroup>
+  <xs:element name="thead">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="tbl.hdft.mdl">
+          <xs:attributeGroup ref="thead.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="thead.attlist">
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="tfoot">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="tbl.hdft.mdl">
+          <xs:attributeGroup ref="tfoot.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tfoot.attlist">
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="tbody">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="row"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="tbody.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tbody.attlist">
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="row">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="tbl.row.mdl">
+          <xs:attributeGroup ref="row.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="row.attlist">
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="entrytbl">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="tbl.entrytbl.mdl">
+          <xs:attributeGroup ref="entrytbl.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="entrytbl.attlist">
+    <xs:attribute name="cols" use="required"/>
+    <xs:attributeGroup ref="tbl.tgroup.att"/>
+    <xs:attribute name="colname"/>
+    <xs:attribute name="spanname"/>
+    <xs:attribute name="namest"/>
+    <xs:attribute name="nameend"/>
+    <xs:attribute name="colsep" type="yesorno"/>
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+          <xs:enumeration value="justify"/>
+          <xs:enumeration value="char"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="char"/>
+    <xs:attribute name="charoff"/>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:element name="entry">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="tbl.entry.mdl"/>
+      <xs:attributeGroup ref="entry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="entry.attlist">
+    <xs:attribute name="colname"/>
+    <xs:attribute name="namest"/>
+    <xs:attribute name="nameend"/>
+    <xs:attribute name="spanname"/>
+    <xs:attribute name="morerows"/>
+    <xs:attribute name="colsep" type="yesorno"/>
+    <xs:attribute name="rowsep" type="yesorno"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+          <xs:enumeration value="justify"/>
+          <xs:enumeration value="char"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="char"/>
+    <xs:attribute name="charoff"/>
+    <xs:attribute name="rotate" type="yesorno"/>
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+</xs:schema>
diff --git a/schema/xmlschema/dbcent.xsd b/schema/xmlschema/dbcent.xsd
new file mode 100644 (file)
index 0000000..4405e40
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0"/>
index b052499cec4bb26e2bd1989af90ddbe83627caa3..e35773ea2414e2c77d0265492ae0bd9dd94b6feb 100644 (file)
-<!DOCTYPE xsd:schema SYSTEM
-  "http://www.w3.org/2001/XMLSchema.dtd" [
-
-<!ENTITY % p 'xsd:'>
-<!ENTITY % s ':xsd'>
-<!ENTITY % schemaAttrs "
-       xmlns:db        CDATA   #IMPLIED
-       xmlns:xml       CDATA   #IMPLIED
-       xmlns:tbl       CDATA   #IMPLIED
-">
-]>
-
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  xmlns:xml='http://www.w3.org/XML/1998/namespace'
-  elementFormDefault='qualified'>
-
-<!-- ...................................................................... -->
-<!-- DocBook XML Schema V4.1.2.3........................................... -->
-<!-- ...................................................................... -->
-<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
-     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
-<!-- ...................................................................... -->
-<!-- Entities for module inclusions ....................................... -->
-
-<!--ENTITY % dbhier.redecl.module              "IGNORE"-->
-<!--ENTITY % dbhier.redecl2.module     "IGNORE"-->
-
-<!-- ...................................................................... -->
-<!-- Entities for element classes ......................................... -->
-
-<!--ENTITY % local.appendix.class ""-->
-<xsd:group name='appendix.class'>
-  <xsd:choice>
-    <xsd:element ref='db:appendix'/>
-    <!-- %local.appendix.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.article.class ""-->
-<xsd:group name='article.class'>
-  <xsd:choice>
-    <xsd:element ref='db:article'/>
-    <!-- %local.article.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.book.class ""-->
-<xsd:group name='book.class'>
-  <xsd:choice>
-    <xsd:element ref='db:book'/>
-    <!-- %local.book.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.chapter.class ""-->
-<xsd:group name='chapter.class'>
-  <xsd:choice>
-    <xsd:element ref='db:chapter'/>
-    <!-- %local.chapter.class; -->
-  </xsd:choice>
-</xsd:group>
-
-<!--ENTITY % local.index.class ""-->
-<xsd:group name='index.class'>
-  <xsd:choice>
-    <xsd:element ref='db:index'/>
-    <xsd:element ref='db:setindex'/>
-    <!-- %local.index.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.refentry.class ""-->
-<xsd:group name='refentry.class'>
-  <xsd:choice>
-    <xsd:element ref='db:refentry'/>
-    <!-- %local.refentry.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.nav.class ""-->
-<xsd:group name='nav.class'>
-  <xsd:choice>
-    <xsd:element ref='db:toc'/>
-    <xsd:element ref='db:lot'/>
-    <xsd:element ref='db:index'/>
-    <xsd:element ref='db:glossary'/>
-    <xsd:element ref='db:bibliography'/>
-    <!-- %local.nav.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- Redeclaration placeholder ............................................ -->
-
-<!-- For redeclaring entities that are declared after this point while
-     retaining their references to the entities that are declared before
-     this point -->
-
-<!-- Defining rdbhier here makes some buggy XML parsers happy. -->
-<!--ENTITY % rdbhier ""-->
-<!--%rdbhier;-->
-
-<!-- ...................................................................... -->
-<!-- Entities for element mixtures ........................................ -->
-
-<!-- The DocBook TC may produce an official forms module for DocBook. -->
-<!-- This PE provides the hook by which it can be inserted into the DTD. -->
-<!--ENTITY % forms.hook ""-->
-
-<!--ENTITY % local.divcomponent.mix ""-->
-<xsd:group name='divcomponent.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:group ref='db:compound.class'/>
-    <xsd:group ref='db:genobj.class'/>
-    <xsd:group ref='db:descobj.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.divcomponent.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.refcomponent.mix ""-->
-<xsd:group name='refcomponent.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:group ref='db:compound.class'/>
-    <xsd:group ref='db:genobj.class'/>
-    <xsd:group ref='db:descobj.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.refcomponent.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.indexdivcomponent.mix ""-->
-<xsd:group name='indexdivcomponent.mix'>
-  <xsd:choice>
-    <xsd:element ref='db:itemizedlist'/>
-    <xsd:element ref='db:orderedlist'/>
-    <xsd:element ref='db:variablelist'/>
-    <xsd:element ref='db:simplelist'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:element ref='db:anchor'/>
-    <xsd:element ref='db:remark'/>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.indexdivcomponent.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.refname.char.mix ""-->
-<xsd:group name='refname.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:tech.char.class'/>
-    <!-- %local.refname.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.partcontent.mix ""-->
-<xsd:group name='partcontent.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:appendix.class'/>
-    <xsd:group ref='db:chapter.class'/>
-    <xsd:group ref='db:nav.class'/>
-    <xsd:group ref='db:article.class'/>
-    <xsd:element ref='db:preface'/>
-    <xsd:group ref='db:refentry.class'/>
-    <xsd:element ref='db:reference'/>
-    <!-- %local.partcontent.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.refinline.char.mix ""-->
-<xsd:group name='refinline.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:xref.char.class'/>
-    <xsd:group ref='db:gen.char.class'/>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:tech.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:docinfo.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.refinline.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.refclass.char.mix ""-->
-<xsd:group name='refclass.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:element ref='db:application'/>
-    <!-- %local.refclass.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- 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 -->
-
-<!-- Defining rdbhier2 here makes some buggy XML parsers happy. -->
-<!--ENTITY % rdbhier2 ""-->
-<!--%rdbhier2;-->
-
-<!-- ...................................................................... -->
-<!-- Entities for content models .......................................... -->
-
-<xsd:group name='div.title.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:title'/>
-    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-</xsd:group>
-
-<xsd:group name='bookcomponent.title.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:title'/>
-    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-</xsd:group>
-
-<xsd:group name='sect.title.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:title'/>
-    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-</xsd:group>
-
-<xsd:group name='refsect.title.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:title'/>
-    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-</xsd:group>
-
-<xsd:group name='bookcomponent.content'>
-  <xsd:choice>
-    <xsd:sequence>
-      <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-        <xsd:group ref='db:divcomponent.mix'/>
-      </xsd:choice>
-      <xsd:choice>
-        <xsd:element ref='db:sect1' minOccurs='0' maxOccurs='unbounded'/>
-        <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-        <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
-        <xsd:element ref='db:section' minOccurs='0' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:sequence>
-    <xsd:choice>
-      <xsd:element ref='db:sect1' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:section' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:choice>
-  <!-- "((%divcomponent.mix;)+,
-         (sect1*|(%refentry.class;)*|simplesect*|section*))
-        | (sect1+|(%refentry.class;)+|simplesect+|section+)" -->
-</xsd:group>
-
-<!-- ...................................................................... -->
-<!-- Set and SetInfo ...................................................... -->
-
-<xsd:attributeGroup name='set.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='set'>
-  <xsd:sequence>
-    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:setinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:toc' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:book.class' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:setindex' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-  <!-- ((%div.title.content;)?, setinfo?, toc?, (%book.class;)+,
-               setindex?) -->
-
-  <!-- FPI: SGML formal public identifier -->
-  <xsd:attribute name='fpi' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:set.role.attrib'/>
-  <!-- %local.set.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='setinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='setinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
-           the set, in the order of their appearance -->
-      <xsd:attribute name='contents' type='xsd:IDREFS'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:setinfo.role.attrib'/>
-      <!-- %local.setinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Book and BookInfo .................................................... -->
-
-<xsd:attributeGroup name='book.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='book'>
-  <xsd:sequence>
-    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:bookinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:dedication'/>
-      <xsd:element ref='db:toc'/>
-      <xsd:element ref='db:lot'/>
-      <xsd:element ref='db:glossary'/>
-      <xsd:element ref='db:bibliography'/>
-      <xsd:element ref='db:preface'/>
-      <xsd:group ref='db:chapter.class'/>
-      <xsd:element ref='db:reference'/>
-      <xsd:element ref='db:part'/>
-      <xsd:group ref='db:article.class'/>
-      <xsd:group ref='db:appendix.class'/>
-      <xsd:group ref='db:index.class'/>
-      <xsd:element ref='db:colophon'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%div.title.content;)?, bookinfo?,
-               (dedication | toc | lot
-               | glossary | bibliography | preface
-               | %chapter.class; | reference | part
-               | %article.class;
-               | %appendix.class;
-               | %index.class;
-               | colophon)*) -->
-
-  <!-- FPI: SGML formal public identifier -->
-  <xsd:attribute name='fpi' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:book.role.attrib'/>
-  <!-- %local.book.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='bookinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bookinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
-           the set, in the order of their appearance -->
-      <xsd:attribute name='contents' type='xsd:IDREFS'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:bookinfo.role.attrib'/>
-      <!-- %local.bookinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Dedication, ToC, and LoT ............................................. -->
-
-<xsd:attributeGroup name='dedication.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='dedication'>
-  <xsd:sequence>
-    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:legalnotice.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%sect.title.content;)?, (%legalnotice.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:dedication.role.attrib'/>
-  <!-- %local.dedication.attrib -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='colophon.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='colophon'>
-  <xsd:sequence>
-    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:textobject.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%sect.title.content;)?, (%textobject.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:colophon.role.attrib'/>
-  <!-- %local.colophon.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='toc.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='toc'>
-  <xsd:sequence>
-    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:tocfront' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:tocpart'/>
-      <xsd:element ref='db:tocchap'/>
-    </xsd:choice>
-    <xsd:element ref='db:tocback' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%bookcomponent.title.content;)?, tocfront*,
-               (tocpart | tocchap)*, tocback*) -->
-
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:toc.role.attrib'/>
-  <!-- %local.toc.attrib -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='tocfront.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='tocfront' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:tocfront.role.attrib'/>
-  <!-- %local.tocfront.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='tocentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='tocentry' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:tocentry.role.attrib'/>
-  <!-- %local.tocentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='tocpart.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='tocpart'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+, tocchap*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:tocpart.role.attrib'/>
-  <!-- %local.tocpart.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='tocchap.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='tocchap'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:toclevel1' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+, toclevel1*) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:tocchap.role.attrib'/>
-  <!-- %local.tocchap.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='toclevel1.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='toclevel1'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:toclevel2' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+, toclevel2*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:toclevel1.role.attrib'/>
-  <!-- %local.toclevel1.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='toclevel2.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='toclevel2'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:toclevel3' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+, toclevel3*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:toclevel2.role.attrib'/>
-  <!-- %local.toclevel2.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='toclevel3.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='toclevel3'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:toclevel4' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+, toclevel4*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:toclevel3.role.attrib'/>
-  <!-- %local.toclevel3.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='toclevel4.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='toclevel4'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:toclevel5' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+, toclevel5*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:toclevel4.role.attrib'/>
-  <!-- %local.toclevel4.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='toclevel5.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='toclevel5'>
-  <xsd:sequence>
-    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (tocentry+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:toclevel5.role.attrib'/>
-  <!-- %local.toclevel5.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='tocback.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='tocback' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:tocback.role.attrib'/>
-  <!-- %local.tocback.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='lot.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='lot'>
-  <xsd:sequence>
-    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:lotentry' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%bookcomponent.title.content;)?, lotentry*) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:lot.role.attrib'/>
-  <!-- %local.lot.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='lotentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='lotentry' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- SrcCredit: Information about the source of the entry,
-       as for a list of illustrations -->
-  <xsd:attribute name='srccredit' type='xsd:string'/>
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-  <xsd:attributeGroup ref='db:lotentry.role.attrib'/>
-  <!-- %local.lotentry.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
-
-<xsd:attributeGroup name='appendix.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='appendix'>
-  <xsd:sequence>
-    <xsd:element ref='db:appendixinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (appendixinfo?,
-                     (%bookcomponent.title.content;),
-                     (%nav.class;)*,
-                     tocchap?,
-                     (%bookcomponent.content;),
-                     (%nav.class;)*) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:appendix.role.attrib'/>
-  <!-- %local.appendix.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='chapter.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='chapter'>
-  <xsd:sequence>
-    <xsd:element ref='db:chapterinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (chapterinfo?,
-                    (%bookcomponent.title.content;),
-                    (%nav.class;)*,
-                    tocchap?,
-                    (%bookcomponent.content;),
-                    (%nav.class;)*) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:chapter.role.attrib'/>
-  <!-- %local.chapter.attrib; -->
-</xsd:complexType>
-
-<!-- Note that Part was to have its content model reduced in V4.1.2.  This
-change will not be made after all. -->
-
-<xsd:attributeGroup name='part.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='part'>
-  <xsd:sequence>
-    <xsd:element ref='db:partinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.title.content'/>
-    <xsd:element ref='db:partintro' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:partcontent.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (partinfo?, (%bookcomponent.title.content;), partintro?,
-               (%partcontent.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:part.role.attrib'/>
-  <!-- %local.part.attrib; -->
-</xsd:complexType>
-
-<!--ELEMENT PartIntro (defined below)-->
-
-<xsd:attributeGroup name='preface.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='preface'>
-  <xsd:sequence>
-    <xsd:element ref='db:prefaceinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (prefaceinfo?,
-                    (%bookcomponent.title.content;),
-                    (%nav.class;)*,
-                    tocchap?,
-                    (%bookcomponent.content;),
-                    (%nav.class;)*) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:preface.role.attrib'/>
-  <!-- %local.preface.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='reference.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='reference'>
-  <xsd:sequence>
-    <xsd:element ref='db:referenceinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.title.content'/>
-    <xsd:element ref='db:partintro' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (referenceinfo?,
-                     (%bookcomponent.title.content;), partintro?,
-                     (%refentry.class;)+) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:reference.role.attrib'/>
-  <!-- %local.reference.attrib; -->
-</xsd:complexType>
-<!--ELEMENT PartIntro (defined below)-->
-
-<xsd:attributeGroup name='partintro.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='partintro'>
-  <xsd:sequence>
-    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:bookcomponent.content'/>
-  </xsd:sequence>
-  <!-- ((%div.title.content;)?, (%bookcomponent.content;)) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <!-- %local.partintro.attrib; -->
-  <xsd:attributeGroup ref='db:partintro.role.attrib'/>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Other Info elements .................................................. -->
-
-<xsd:attributeGroup name='appendixinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='appendixinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:appendixinfo.role.attrib'/>
-      <!-- %local.appendixinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='bibliographyinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bibliographyinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:bibliographyinfo.role.attrib'/>
-      <!-- %local.bibliographyinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='chapterinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='chapterinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:chapterinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='glossaryinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossaryinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:glossaryinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='indexinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='indexinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:indexinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='setindexinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='setindexinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:setindexinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='partinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='partinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:partinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='prefaceinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='prefaceinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:prefaceinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='refentryinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refentryinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:refentryinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsect1info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsect1info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:refsect1info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsect2info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsect2info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:refsect2info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsect3info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsect3info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:refsect3info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsynopsisdivinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsynopsisdivinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:refsynopsisdivinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='referenceinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='referenceinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:referenceinfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect1info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect1info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sect1info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect2info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect2info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sect2info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect3info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect3info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sect3info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect4info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect4info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sect4info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect5info.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect5info'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sect5info.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Section (parallel to Sect*) ......................................... -->
-
-<xsd:attributeGroup name='section.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='section'>
-  <xsd:sequence>
-    <xsd:element ref='db:sectioninfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:choice>
-          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:section' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:choice>
-        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:section' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:choice>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sectioninfo?,
-                       (%sect.title.content;),
-                       (%nav.class;)*,
-                       (((%divcomponent.mix;)+,
-                         ((%refentry.class;)*|section*))
-                        | (%refentry.class;)+|section+),
-                       (%nav.class;)*) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:section.role.attrib'/>
-  <!-- %local.section.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='sectioninfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sectioninfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sectioninfo.role.attrib'/>
-      <!-- %local.chapterinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
-
-<xsd:attributeGroup name='sect1.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect1'>
-  <xsd:sequence>
-    <xsd:element ref='db:sect1info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:choice>
-          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:sect2' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:choice>
-        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:sect2' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:choice>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sect1info?, (%sect.title.content;), (%nav.class;)*,
-               (((%divcomponent.mix;)+,
-               ((%refentry.class;)* | sect2* | simplesect*))
-               | (%refentry.class;)+ | sect2+ | simplesect+), (%nav.class;)*)
-   -->
-
-  <!-- Renderas: Indicates the format in which the heading should
-       appear -->
-  <xsd:attribute name='renderas'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='sect2'/>
-        <xsd:enumeration value='sect3'/>
-        <xsd:enumeration value='sect4'/>
-        <xsd:enumeration value='sect5'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sect1.role.attrib'/>
-  <!-- %local.sect1.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect2.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect2'>
-  <xsd:sequence>
-    <xsd:element ref='db:sect2info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:choice>
-          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:sect3' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:choice>
-        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:sect3' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:choice>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sect2info?, (%sect.title.content;), (%nav.class;)*,
-               (((%divcomponent.mix;)+,
-               ((%refentry.class;)* | sect3* | simplesect*))
-               | (%refentry.class;)+ | sect3+ | simplesect+), (%nav.class;)*)
-   -->
-
-  <!-- Renderas: Indicates the format in which the heading should
-       appear -->
-  <xsd:attribute name='renderas'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='sect1'/>
-        <xsd:enumeration value='sect3'/>
-        <xsd:enumeration value='sect4'/>
-        <xsd:enumeration value='sect5'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sect2.role.attrib'/>
-  <!-- %local.sect2.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect3.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect3'>
-  <xsd:sequence>
-    <xsd:element ref='db:sect3info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:choice>
-          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:sect4' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:choice>
-        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:sect4' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:choice>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sect3info?, (%sect.title.content;), (%nav.class;)*,
-               (((%divcomponent.mix;)+,
-               ((%refentry.class;)* | sect4* | simplesect*))
-               | (%refentry.class;)+ | sect4+ | simplesect+), (%nav.class;)*) -->
-
-  <!-- Renderas: Indicates the format in which the heading should
-       appear -->
-  <xsd:attribute name='renderas'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='sect1'/>
-        <xsd:enumeration value='sect2'/>
-        <xsd:enumeration value='sect4'/>
-        <xsd:enumeration value='sect5'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sect3.role.attrib'/>
-  <!-- %local.sect3.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect4.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect4'>
-  <xsd:sequence>
-    <xsd:element ref='db:sect4info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:choice>
-          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:sect5' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:choice>
-        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:sect5' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:choice>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sect4info?, (%sect.title.content;), (%nav.class;)*,
-               (((%divcomponent.mix;)+,
-               ((%refentry.class;)* | sect5* | simplesect*))
-               | (%refentry.class;)+ | sect5+ | simplesect+), (%nav.class;)*) -->
-
-  <!-- Renderas: Indicates the format in which the heading should
-       appear -->
-  <xsd:attribute name='renderas'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='sect1'/>
-        <xsd:enumeration value='sect2'/>
-        <xsd:enumeration value='sect3'/>
-        <xsd:enumeration value='sect5'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sect4.role.attrib'/>
-  <!-- %local.sect4.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='sect5.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sect5'>
-  <xsd:sequence>
-    <xsd:element ref='db:sect5info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:choice>
-          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
-          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:choice>
-        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:choice>
-    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sect5info?, (%sect.title.content;), (%nav.class;)*,
-               (((%divcomponent.mix;)+, ((%refentry.class;)* | simplesect*))
-               | (%refentry.class;)+ | simplesect+), (%nav.class;)*) -->
-
-  <!-- Renderas: Indicates the format in which the heading should
-       appear -->
-  <xsd:attribute name='renderas'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='sect1'/>
-        <xsd:enumeration value='sect2'/>
-        <xsd:enumeration value='sect3'/>
-        <xsd:enumeration value='sect4'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sect5.role.attrib'/>
-  <!-- %local.sect5.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='simplesect.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='simplesect'>
-  <xsd:sequence>
-    <xsd:group ref='db:sect.title.content'/>
-    <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%sect.title.content;), (%divcomponent.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:simplesect.role.attrib'/>
-  <!-- %local.simplesect.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Bibliography ......................................................... -->
-
-<xsd:attributeGroup name='bibliography.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bibliography'>
-  <xsd:sequence>
-    <xsd:element ref='db:bibliographyinfo' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:element ref='db:bibliodiv' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-        <xsd:element ref='db:biblioentry'/>
-        <xsd:element ref='db:bibliomixed'/>
-      </xsd:choice>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (bibliographyinfo?,
-                        (%bookcomponent.title.content;)?,
-                        (%component.mix;)*,
-                        (bibliodiv+ | (biblioentry|bibliomixed)+)) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:bibliography.role.attrib'/>
-  <!-- %local.bibliography.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='bibliodiv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bibliodiv'>
-  <xsd:sequence>
-    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-      <xsd:element ref='db:biblioentry'/>
-      <xsd:element ref='db:bibliomixed'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%sect.title.content;)?, (%component.mix;)*,
-               (biblioentry|bibliomixed)+) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:bibliodiv.role.attrib'/>
-  <!-- %local.bibliodiv.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Glossary ............................................................. -->
-
-<xsd:attributeGroup name='glossary.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossary'>
-  <xsd:sequence>
-    <xsd:element ref='db:glossaryinfo' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:element ref='db:glossdiv' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:glossentry' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-    <xsd:element ref='db:bibliography' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-  <!-- (glossaryinfo?,
-                    (%bookcomponent.title.content;)?,
-                    (%component.mix;)*,
-                    (glossdiv+ | glossentry+), bibliography?) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glossary.role.attrib'/>
-  <!-- %local.glossary.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='glossdiv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossdiv'>
-  <xsd:sequence>
-    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:glossentry' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%sect.title.content;), (%component.mix;)*,
-               glossentry+) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glossdiv.role.attrib'/>
-  <!-- %local.glossdiv.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Index and SetIndex ................................................... -->
-
-<xsd:attributeGroup name='indexes.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='index'>
-  <xsd:sequence>
-    <xsd:element ref='db:indexinfo' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:element ref='db:indexdiv' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:indexentry' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (indexinfo?,
-                 (%bookcomponent.title.content;)?,
-                 (%component.mix;)*,
-                 (indexdiv* | indexentry*)) -->
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:indexes.role.attrib'/>
-  <!-- %local.indexes.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='setindex'>
-  <xsd:sequence>
-    <xsd:element ref='db:setindexinfo' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:element ref='db:indexdiv' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:indexentry' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (setindexinfo?,
-                    (%bookcomponent.title.content;)?,
-                    (%component.mix;)*, (indexdiv* | indexentry*)) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:indexes.role.attrib'/>
-  <!-- %local.indexes.attrib; -->
-</xsd:complexType>
-
-<!-- SegmentedList in this content is useful for marking up permuted
-     indices. -->
-
-<xsd:attributeGroup name='indexdiv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='indexdiv'>
-  <xsd:sequence>
-    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:sequence>
-      <xsd:group ref='db:indexdivcomponent.mix' minOccurs='0' maxOccurs='unbounded'/>
-      <xsd:element ref='db:indexentry' minOccurs='0' maxOccurs='unbounded'/>
-      <xsd:element ref='db:segmentedlist'/>
-    </xsd:sequence>
-  </xsd:sequence>
-  <!-- ((%sect.title.content;)?, ((%indexdivcomponent.mix;)*,
-               (indexentry+ | segmentedlist))) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:indexdiv.role.attrib'/>
-  <!-- %local.indexdiv.attrib; -->
-</xsd:complexType>
-
-<!-- Index entries appear in the index, not the text. -->
-
-<xsd:attributeGroup name='indexentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='indexentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:primaryie'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:seeie'/>
-      <xsd:element ref='db:seealsoie'/>
-    </xsd:choice>
-    <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:secondaryie'/>
-      <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-        <xsd:element ref='db:seeie'/>
-        <xsd:element ref='db:seealsoie'/>
-        <xsd:element ref='db:tertiaryie'/>
-      </xsd:choice>
-    </xsd:sequence>
-  </xsd:sequence>
-  <!-- (primaryie, (seeie|seealsoie)*,
-               (secondaryie, (seeie|seealsoie|tertiaryie)*)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:indexentry.role.attrib'/>
-  <!-- %local.indexentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='primsecterie.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='primaryie' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- to IndexTerms that these entries represent -->
-  <!-- FIXME: constrain -->
-
-  <xsd:attributeGroup ref='db:linkends.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:primsecterie.role.attrib'/>
-  <!-- %local.primsecterie.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='secondaryie' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- to IndexTerms that these entries represent -->
-  <!-- FIXME: constrain -->
-
-  <xsd:attributeGroup ref='db:linkends.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:primsecterie.role.attrib'/>
-  <!-- %local.primsecterie.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='tertiaryie' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- to IndexTerms that these entries represent -->
-  <!-- FIXME: constrain -->
-
-  <xsd:attributeGroup ref='db:linkends.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:primsecterie.role.attrib'/>
-  <!-- %local.primsecterie.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='seeie.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='seeie' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- to IndexEntry to look up -->
-  <!-- FIXME: constrain -->
-
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seeie.role.attrib'/>
-  <!-- %local.seeie.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='seealsoie.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='seealsoie'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- to related IndexEntries -->
-  <!-- FIXME: constrain -->
-
-  <xsd:attributeGroup ref='db:linkends.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seealsoie.role.attrib'/>
-  <!-- %local.seealsoie.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- RefEntry ............................................................. -->
-
-<xsd:attributeGroup name='refentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refentry'>
-  <xsd:sequence>
-    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:refentryinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:refmeta' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:remark'/>
-      <xsd:group ref='db:link.char.class'/>
-    </xsd:choice>
-    <xsd:element ref='db:refnamediv'/>
-    <xsd:element ref='db:refsynopsisdiv' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:refsect1' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%ndxterm.class;)*,
-                    refentryinfo?, refmeta?, (remark|%link.char.class;)*,
-                    refnamediv, refsynopsisdiv?, refsect1+) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refentry.role.attrib'/>
-  <!-- %local.refentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refmeta.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refmeta'>
-  <xsd:sequence>
-    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:refentrytitle'/>
-    <xsd:element ref='db:manvolnum' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:refmiscinfo' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%ndxterm.class;)*,
-                   refentrytitle, manvolnum?, refmiscinfo*,
-                   (%ndxterm.class;)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refmeta.role.attrib'/>
-  <!-- %local.refmeta.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refmiscinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refmiscinfo' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <!-- Class: Freely assignable parameter; no default -->
-  <xsd:attribute name='class' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refmiscinfo.role.attrib'/>
-  <!-- %local.refmiscinfo.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refnamediv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refnamediv'>
-  <xsd:sequence>
-    <xsd:element ref='db:refdescriptor' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:refname' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:refpurpose'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:remark'/>
-      <xsd:group ref='db:link.char.class'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (refdescriptor?, refname+, refpurpose, refclass*,
-               (remark|%link.char.class;)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refnamediv.role.attrib'/>
-  <!-- %local.refnamediv.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refdescriptor.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refdescriptor' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:refname.char.mix'/>
-  </xsd:sequence>
-  <!-- (%refname.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refdescriptor.role.attrib'/>
-  <!-- %local.refdescriptor.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:refname.char.mix'/>
-  </xsd:sequence>
-  <!-- (%refname.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refname.role.attrib'/>
-  <!-- %local.refname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refpurpose.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refpurpose' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:refinline.char.mix'/>
-  </xsd:sequence>
-  <!-- (%refinline.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refpurpose.role.attrib'/>
-  <!-- %local.refpurpose.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refclass.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refclass' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:refclass.char.mix'/>
-  </xsd:sequence>
-  <!-- (%refclass.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refclass.role.attrib'/>
-  <!-- %local.refclass.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsynopsisdiv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsynopsisdiv'>
-  <xsd:sequence>
-    <xsd:element ref='db:refsynopsisdivinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:refsect.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:refsect2' minOccurs='0' maxOccurs='unbounded'/>
-      </xsd:sequence>
-      <xsd:element ref='db:refsect2' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (refsynopsisdivinfo?, (%refsect.title.content;)?,
-               (((%refcomponent.mix;)+, refsect2*) | (refsect2+))) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refsynopsisdiv.role.attrib'/>
-  <!-- %local.refsynopsisdiv.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsect1.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsect1'>
-  <xsd:sequence>
-    <xsd:element ref='db:refsect1info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:refsect.title.content'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:refsect2' minOccurs='0' maxOccurs='unbounded'/>
-      </xsd:sequence>
-      <xsd:element ref='db:refsect2' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (refsect1info?, (%refsect.title.content;),
-               (((%refcomponent.mix;)+, refsect2*) | refsect2+)) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refsect1.role.attrib'/>
-  <!-- %local.refsect1.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsect2.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsect2'>
-  <xsd:sequence>
-    <xsd:element ref='db:refsect2info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:refsect.title.content'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:refsect3' minOccurs='0' maxOccurs='unbounded'/>
-      </xsd:sequence>
-      <xsd:element ref='db:refsect3' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (refsect2info?, (%refsect.title.content;),
-       (((%refcomponent.mix;)+, refsect3*) | refsect3+)) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refsect2.role.attrib'/>
-  <!-- %local.refsect2.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refsect3.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refsect3'>
-  <xsd:sequence>
-    <xsd:element ref='db:refsect3info' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:refsect.title.content'/>
-    <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (refsect3info?, (%refsect.title.content;),
-       (%refcomponent.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refsect3.role.attrib'/>
-  <!-- %local.refsect3.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Article .............................................................. -->
-
-<!-- An Article is a chapter-level, stand-alone document that is often,
-     but need not be, collected into a Book. -->
-
-<xsd:attributeGroup name='article.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='article'>
-  <xsd:sequence>
-    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:articleinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:lot' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:group ref='db:bookcomponent.content'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:group ref='db:nav.class'/>
-      <xsd:group ref='db:appendix.class'/>
-      <xsd:element ref='db:ackno'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%div.title.content;)?, articleinfo?, tocchap?, lot*,
-                       (%bookcomponent.content;),
-                       ((%nav.class;) | (%appendix.class;) | ackno)*) -->
-
-  <!-- Class: Indicates the type of a particular article;
-       all articles have the same structure and general purpose.
-       No default. -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='journalarticle'/>
-        <xsd:enumeration value='productsheet'/>
-        <xsd:enumeration value='whitepaper'/>
-        <xsd:enumeration value='techreport'/>
-        <xsd:enumeration value='specification'/>
-        <xsd:enumeration value='faq'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- ParentBook: ID of the enclosing Book -->
-  <xsd:attribute name='parentbook' type='xsd:IDREF'/>
-
-  <xsd:attributeGroup ref='db:status.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:article.role.attrib'/>
-  <!-- %local.article.attrib; -->
-</xsd:complexType>
-
-<xsd:element name='appendix' type='db:appendix'/>
-<xsd:element name='appendixinfo' type='db:appendixinfo'/>
-<xsd:element name='article' type='db:article'/>
-<xsd:element name='bibliodiv' type='db:bibliodiv'/>
-<xsd:element name='bibliography' type='db:bibliography'/>
-<xsd:element name='bibliographyinfo' type='db:bibliographyinfo'/>
-<xsd:element name='book' type='db:book'/>
-<xsd:element name='bookinfo' type='db:bookinfo'/>
-<xsd:element name='chapter' type='db:chapter'/>
-<xsd:element name='chapterinfo' type='db:chapterinfo'/>
-<xsd:element name='colophon' type='db:colophon'/>
-<xsd:element name='dedication' type='db:dedication'/>
-<xsd:element name='glossary' type='db:glossary'/>
-<xsd:element name='glossaryinfo' type='db:glossaryinfo'/>
-<xsd:element name='glossdiv' type='db:glossdiv'/>
-<xsd:element name='index' type='db:index'/>
-<xsd:element name='indexdiv' type='db:indexdiv'/>
-<xsd:element name='indexentry' type='db:indexentry'/>
-<xsd:element name='indexinfo' type='db:indexinfo'/>
-<xsd:element name='lot' type='db:lot'/>
-<xsd:element name='lotentry' type='db:lotentry'/>
-<xsd:element name='part' type='db:part'/>
-<xsd:element name='partinfo' type='db:partinfo'/>
-<xsd:element name='partintro' type='db:partintro'/>
-<xsd:element name='preface' type='db:preface'/>
-<xsd:element name='prefaceinfo' type='db:prefaceinfo'/>
-<xsd:element name='primaryie' type='db:primaryie'/>
-<xsd:element name='refclass' type='db:refclass'/>
-<xsd:element name='refdescriptor' type='db:refdescriptor'/>
-<xsd:element name='refentry' type='db:refentry'/>
-<xsd:element name='refentryinfo' type='db:refentryinfo'/>
-<xsd:element name='reference' type='db:reference'/>
-<xsd:element name='referenceinfo' type='db:referenceinfo'/>
-<xsd:element name='refmeta' type='db:refmeta'/>
-<xsd:element name='refmiscinfo' type='db:refmiscinfo'/>
-<xsd:element name='refname' type='db:refname'/>
-<xsd:element name='refnamediv' type='db:refnamediv'/>
-<xsd:element name='refpurpose' type='db:refpurpose'/>
-<xsd:element name='refsect1' type='db:refsect1'/>
-<xsd:element name='refsect1info' type='db:refsect1info'/>
-<xsd:element name='refsect2' type='db:refsect2'/>
-<xsd:element name='refsect2info' type='db:refsect2info'/>
-<xsd:element name='refsect3' type='db:refsect3'/>
-<xsd:element name='refsect3info' type='db:refsect3info'/>
-<xsd:element name='refsynopsisdiv' type='db:refsynopsisdiv'/>
-<xsd:element name='refsynopsisdivinfo' type='db:refsynopsisdivinfo'/>
-<xsd:element name='secondaryie' type='db:secondaryie'/>
-<xsd:element name='sect1' type='db:sect1'/>
-<xsd:element name='sect1info' type='db:sect1info'/>
-<xsd:element name='sect2' type='db:sect2'/>
-<xsd:element name='sect2info' type='db:sect2info'/>
-<xsd:element name='sect3' type='db:sect3'/>
-<xsd:element name='sect3info' type='db:sect3info'/>
-<xsd:element name='sect4' type='db:sect4'/>
-<xsd:element name='sect4info' type='db:sect4info'/>
-<xsd:element name='sect5' type='db:sect5'/>
-<xsd:element name='sect5info' type='db:sect5info'/>
-<xsd:element name='section' type='db:section'/>
-<xsd:element name='sectioninfo' type='db:sectioninfo'/>
-<xsd:element name='seealsoie' type='db:seealsoie'/>
-<xsd:element name='seeie' type='db:seeie'/>
-<xsd:element name='set' type='db:set'/>
-<xsd:element name='setindex' type='db:setindex'/>
-<xsd:element name='setindexinfo' type='db:setindexinfo'/>
-<xsd:element name='setinfo' type='db:setinfo'/>
-<xsd:element name='simplesect' type='db:simplesect'/>
-<xsd:element name='tertiaryie' type='db:tertiaryie'/>
-<xsd:element name='toc' type='db:toc'/>
-<xsd:element name='tocback' type='db:tocback'/>
-<xsd:element name='tocchap' type='db:tocchap'/>
-<xsd:element name='tocentry' type='db:tocentry'/>
-<xsd:element name='tocfront' type='db:tocfront'/>
-<xsd:element name='toclevel1' type='db:toclevel1'/>
-<xsd:element name='toclevel2' type='db:toclevel2'/>
-<xsd:element name='toclevel3' type='db:toclevel3'/>
-<xsd:element name='toclevel4' type='db:toclevel4'/>
-<xsd:element name='toclevel5' type='db:toclevel5'/>
-<xsd:element name='tocpart' type='db:tocpart'/>
-
-</xsd:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
+  <xs:group name="appendix.class">
+    <xs:sequence>
+      <xs:element ref="appendix"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="article.class">
+    <xs:sequence>
+      <xs:element ref="article"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="book.class">
+    <xs:sequence>
+      <xs:element ref="book"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="chapter.class">
+    <xs:sequence>
+      <xs:element ref="chapter"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="index.class">
+    <xs:choice>
+      <xs:element ref="index"/>
+      <xs:element ref="setindex"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="refentry.class">
+    <xs:sequence>
+      <xs:element ref="refentry"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="section.class">
+    <xs:sequence>
+      <xs:element ref="section"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="nav.class">
+    <xs:choice>
+      <xs:element ref="toc"/>
+      <xs:element ref="lot"/>
+      <xs:element ref="index"/>
+      <xs:element ref="glossary"/>
+      <xs:element ref="bibliography"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="divcomponent.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:group ref="compound.class"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="descobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="refcomponent.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:group ref="compound.class"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="descobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="indexdivcomponent.mix">
+    <xs:choice>
+      <xs:element ref="itemizedlist"/>
+      <xs:element ref="orderedlist"/>
+      <xs:element ref="variablelist"/>
+      <xs:element ref="simplelist"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:element ref="anchor"/>
+      <xs:element ref="remark"/>
+      <xs:group ref="link.char.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="refname.char.mix">
+    <xs:sequence>
+      <xs:group minOccurs="0" ref="tech.char.class"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="partcontent.mix">
+    <xs:choice>
+      <xs:group ref="appendix.class"/>
+      <xs:group ref="chapter.class"/>
+      <xs:group ref="nav.class"/>
+      <xs:group ref="article.class"/>
+      <xs:element ref="preface"/>
+      <xs:group ref="refentry.class"/>
+      <xs:element ref="reference"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="refinline.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:group ref="xref.char.class"/>
+        <xs:group ref="gen.char.class"/>
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="tech.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="docinfo.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:group ref="ndxterm.class"/>
+        <xs:element ref="beginpage"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="refclass.char.mix">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="application"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="div.title.content">
+    <xs:sequence>
+      <xs:element ref="title"/>
+      <xs:element minOccurs="0" ref="subtitle"/>
+      <xs:element minOccurs="0" ref="titleabbrev"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="bookcomponent.title.content">
+    <xs:sequence>
+      <xs:element ref="title"/>
+      <xs:element minOccurs="0" ref="subtitle"/>
+      <xs:element minOccurs="0" ref="titleabbrev"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="sect.title.content">
+    <xs:sequence>
+      <xs:element ref="title"/>
+      <xs:element minOccurs="0" ref="subtitle"/>
+      <xs:element minOccurs="0" ref="titleabbrev"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="refsect.title.content">
+    <xs:sequence>
+      <xs:element ref="title"/>
+      <xs:element minOccurs="0" ref="subtitle"/>
+      <xs:element minOccurs="0" ref="titleabbrev"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="bookcomponent.content">
+    <xs:choice>
+      <xs:sequence>
+        <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect1"/>
+          <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+          <xs:group minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:element maxOccurs="unbounded" ref="sect1"/>
+      <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+      <xs:element maxOccurs="unbounded" ref="simplesect"/>
+      <xs:group maxOccurs="unbounded" ref="section.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:attributeGroup name="set.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="set">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="div.title.content"/>
+        <xs:element minOccurs="0" ref="setinfo"/>
+        <xs:element minOccurs="0" ref="toc"/>
+        <xs:group maxOccurs="unbounded" ref="book.class"/>
+        <xs:element minOccurs="0" ref="setindex"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="set.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="set.attlist">
+    <xs:attribute name="fpi"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="set.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="setinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="setinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="setinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="setinfo.attlist">
+    <xs:attribute name="contents" type="xs:IDREFS"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="setinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="book.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="book">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="div.title.content"/>
+        <xs:element minOccurs="0" ref="bookinfo"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="dedication"/>
+          <xs:element ref="toc"/>
+          <xs:element ref="lot"/>
+          <xs:element ref="glossary"/>
+          <xs:element ref="bibliography"/>
+          <xs:element ref="preface"/>
+          <xs:group ref="chapter.class"/>
+          <xs:element ref="reference"/>
+          <xs:element ref="part"/>
+          <xs:group ref="article.class"/>
+          <xs:group ref="appendix.class"/>
+          <xs:group ref="index.class"/>
+          <xs:element ref="colophon"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="book.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="book.attlist">
+    <xs:attribute name="fpi"/>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="book.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bookinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bookinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="bookinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bookinfo.attlist">
+    <xs:attribute name="contents" type="xs:IDREFS"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bookinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="dedication.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="dedication">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="sect.title.content"/>
+        <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="dedication.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="dedication.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="dedication.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="colophon.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="colophon">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="sect.title.content"/>
+        <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="colophon.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="colophon.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="colophon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="toc.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="toc">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocfront"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tocpart"/>
+          <xs:element ref="tocchap"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocback"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="toc.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="toc.attlist">
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="toc.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="tocfront.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tocfront">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="tocfront.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tocfront.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="tocfront.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="tocentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tocentry">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="tocentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tocentry.attlist">
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="tocentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="tocpart.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tocpart">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocchap"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="tocpart.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tocpart.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="tocpart.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="tocchap.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tocchap">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel1"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="tocchap.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tocchap.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="tocchap.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="toclevel1.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="toclevel1">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel2"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="toclevel1.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="toclevel1.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="toclevel1.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="toclevel2.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="toclevel2">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel3"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="toclevel2.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="toclevel2.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="toclevel2.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="toclevel3.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="toclevel3">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel4"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="toclevel3.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="toclevel3.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="toclevel3.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="toclevel4.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="toclevel4">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel5"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="toclevel4.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="toclevel4.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="toclevel4.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="toclevel5.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="toclevel5">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tocentry"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="toclevel5.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="toclevel5.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="toclevel5.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="tocback.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tocback">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="tocback.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tocback.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="tocback.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="lot.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="lot">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="lotentry"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="lot.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="lot.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="lot.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="lotentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="lotentry">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="lotentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="lotentry.attlist">
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attribute name="srccredit"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="lotentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="appendix.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="appendix">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:element minOccurs="0" ref="appendixinfo"/>
+        <xs:group ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:element minOccurs="0" ref="tocchap"/>
+        <xs:group ref="bookcomponent.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="appendix.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="appendix.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="appendix.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="chapter.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="chapter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:element minOccurs="0" ref="chapterinfo"/>
+        <xs:group ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:element minOccurs="0" ref="tocchap"/>
+        <xs:group ref="bookcomponent.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="chapter.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="chapter.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="chapter.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="part.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="part">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:element minOccurs="0" ref="partinfo"/>
+        <xs:group ref="bookcomponent.title.content"/>
+        <xs:element minOccurs="0" ref="partintro"/>
+        <xs:group maxOccurs="unbounded" ref="partcontent.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="part.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="part.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="part.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="preface.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="preface">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:element minOccurs="0" ref="prefaceinfo"/>
+        <xs:group ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:element minOccurs="0" ref="tocchap"/>
+        <xs:group ref="bookcomponent.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="preface.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="preface.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="preface.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="reference.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="reference">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:element minOccurs="0" ref="referenceinfo"/>
+        <xs:group ref="bookcomponent.title.content"/>
+        <xs:element minOccurs="0" ref="partintro"/>
+        <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="reference.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="reference.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="reference.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="partintro.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="partintro">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="div.title.content"/>
+        <xs:group ref="bookcomponent.content"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="partintro.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="partintro.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="partintro.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="appendixinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="appendixinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="appendixinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="appendixinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="appendixinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliographyinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliographyinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="bibliographyinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliographyinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliographyinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="chapterinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="chapterinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="chapterinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="chapterinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="chapterinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossaryinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossaryinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="glossaryinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossaryinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossaryinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="indexinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="indexinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="indexinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="indexinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="indexinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="setindexinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="setindexinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="setindexinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="setindexinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="setindexinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="partinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="partinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="partinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="partinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="partinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="prefaceinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="prefaceinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="prefaceinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="prefaceinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="prefaceinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refentryinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refentryinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="refentryinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refentryinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refentryinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsectioninfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsectioninfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="refsectioninfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsectioninfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsectioninfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsect1info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsect1info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="refsect1info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsect1info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsect1info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsect2info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsect2info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="refsect2info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsect2info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsect2info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsect3info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsect3info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="refsect3info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsect3info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsect3info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsynopsisdivinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsynopsisdivinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="refsynopsisdivinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsynopsisdivinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsynopsisdivinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="referenceinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="referenceinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="referenceinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="referenceinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="referenceinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect1info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect1info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sect1info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect1info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect1info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect2info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect2info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sect2info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect2info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect2info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect3info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect3info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sect3info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect3info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect3info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect4info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect4info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sect4info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect4info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect4info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect5info.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect5info">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sect5info.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect5info.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect5info.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="section.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="section">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sectioninfo"/>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+            <xs:choice>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:group maxOccurs="unbounded" ref="section.class"/>
+          <xs:element maxOccurs="unbounded" ref="simplesect"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="section.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="section.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="section.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sectioninfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sectioninfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sectioninfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sectioninfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sectioninfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect1.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect1">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sect1info"/>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+            <xs:choice>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect2"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:element maxOccurs="unbounded" ref="sect2"/>
+          <xs:element maxOccurs="unbounded" ref="simplesect"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="sect1.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect1.attlist">
+    <xs:attribute name="renderas">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="sect2"/>
+          <xs:enumeration value="sect3"/>
+          <xs:enumeration value="sect4"/>
+          <xs:enumeration value="sect5"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect1.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect2.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect2">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sect2info"/>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+            <xs:choice>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect3"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:element maxOccurs="unbounded" ref="sect3"/>
+          <xs:element maxOccurs="unbounded" ref="simplesect"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="sect2.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect2.attlist">
+    <xs:attribute name="renderas">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="sect1"/>
+          <xs:enumeration value="sect3"/>
+          <xs:enumeration value="sect4"/>
+          <xs:enumeration value="sect5"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect2.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect3.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect3">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sect3info"/>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+            <xs:choice>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect4"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:element maxOccurs="unbounded" ref="sect4"/>
+          <xs:element maxOccurs="unbounded" ref="simplesect"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="sect3.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect3.attlist">
+    <xs:attribute name="renderas">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="sect1"/>
+          <xs:enumeration value="sect2"/>
+          <xs:enumeration value="sect4"/>
+          <xs:enumeration value="sect5"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect3.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect4.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect4">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sect4info"/>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+            <xs:choice>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect5"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:element maxOccurs="unbounded" ref="sect5"/>
+          <xs:element maxOccurs="unbounded" ref="simplesect"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="sect4.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect4.attlist">
+    <xs:attribute name="renderas">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="sect1"/>
+          <xs:enumeration value="sect2"/>
+          <xs:enumeration value="sect3"/>
+          <xs:enumeration value="sect5"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect4.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sect5.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sect5">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sect5info"/>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+            <xs:choice>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:group maxOccurs="unbounded" ref="refentry.class"/>
+          <xs:element maxOccurs="unbounded" ref="simplesect"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="sect5.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sect5.attlist">
+    <xs:attribute name="renderas">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="sect1"/>
+          <xs:enumeration value="sect2"/>
+          <xs:enumeration value="sect3"/>
+          <xs:enumeration value="sect4"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sect5.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="simplesect.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="simplesect">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="sect.title.content"/>
+        <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="simplesect.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="simplesect.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="simplesect.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliography.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliography">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="bibliographyinfo"/>
+        <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="bibliodiv"/>
+          <xs:choice maxOccurs="unbounded">
+            <xs:element ref="biblioentry"/>
+            <xs:element ref="bibliomixed"/>
+          </xs:choice>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="bibliography.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliography.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliography.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliodiv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliodiv">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="biblioentry"/>
+          <xs:element ref="bibliomixed"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="bibliodiv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliodiv.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliodiv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossary.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossary">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="glossaryinfo"/>
+        <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="glossdiv"/>
+          <xs:element maxOccurs="unbounded" ref="glossentry"/>
+        </xs:choice>
+        <xs:element minOccurs="0" ref="bibliography"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="glossary.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossary.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossary.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossdiv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossdiv">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:element maxOccurs="unbounded" ref="glossentry"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="glossdiv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossdiv.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossdiv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="indexes.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="index">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="indexinfo"/>
+        <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="index.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="index.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="indexes.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="setindex">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="setindexinfo"/>
+        <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="setindex.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="setindex.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="indexes.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="indexdiv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="indexdiv">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="sect.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="indexdivcomponent.mix"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="indexentry"/>
+          <xs:element ref="segmentedlist"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="indexdiv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="indexdiv.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="indexdiv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="indexentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="indexentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="primaryie"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="seeie"/>
+          <xs:element ref="seealsoie"/>
+        </xs:choice>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="secondaryie"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="seeie"/>
+            <xs:element ref="seealsoie"/>
+            <xs:element ref="tertiaryie"/>
+          </xs:choice>
+        </xs:sequence>
+      </xs:sequence>
+      <xs:attributeGroup ref="indexentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="indexentry.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="indexentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="primsecterie.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="primaryie">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="primaryie.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="primaryie.attlist">
+    <xs:attributeGroup ref="linkends.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="primsecterie.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="secondaryie">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="secondaryie.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="secondaryie.attlist">
+    <xs:attributeGroup ref="linkends.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="primsecterie.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tertiaryie">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="tertiaryie.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tertiaryie.attlist">
+    <xs:attributeGroup ref="linkends.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="primsecterie.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="seeie.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="seeie">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="seeie.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="seeie.attlist">
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seeie.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="seealsoie.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="seealsoie">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="seealsoie.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="seealsoie.attlist">
+    <xs:attributeGroup ref="linkends.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seealsoie.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="beginpage"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+        <xs:element minOccurs="0" ref="refentryinfo"/>
+        <xs:element minOccurs="0" ref="refmeta"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="remark"/>
+          <xs:group ref="link.char.class"/>
+        </xs:choice>
+        <xs:element ref="refnamediv"/>
+        <xs:element minOccurs="0" ref="refsynopsisdiv"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="refsect1"/>
+          <xs:element maxOccurs="unbounded" ref="refsection"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="refentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refentry.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refmeta.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refmeta">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+        <xs:element ref="refentrytitle"/>
+        <xs:element minOccurs="0" ref="manvolnum"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="refmiscinfo"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="refmeta.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refmeta.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refmeta.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refmiscinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refmiscinfo">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="refmiscinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refmiscinfo.attlist">
+    <xs:attribute name="class"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refmiscinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refnamediv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refnamediv">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="refdescriptor"/>
+        <xs:element maxOccurs="unbounded" ref="refname"/>
+        <xs:element ref="refpurpose"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="refclass"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="remark"/>
+          <xs:group ref="link.char.class"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="refnamediv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refnamediv.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refnamediv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refdescriptor.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refdescriptor">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+      <xs:attributeGroup ref="refdescriptor.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refdescriptor.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refdescriptor.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+      <xs:attributeGroup ref="refname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refpurpose.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refpurpose">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="refinline.char.mix"/>
+      <xs:attributeGroup ref="refpurpose.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refpurpose.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refpurpose.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refclass.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refclass">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="refclass.char.mix"/>
+      <xs:attributeGroup ref="refclass.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refclass.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refclass.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsynopsisdiv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsynopsisdiv">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="refsynopsisdivinfo"/>
+        <xs:group minOccurs="0" ref="refsect.title.content"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+          </xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="refsect2"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="refsynopsisdiv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsynopsisdiv.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsynopsisdiv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsection.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsection">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="refsectioninfo"/>
+        <xs:group ref="refsect.title.content"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsection"/>
+          </xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="refsection"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="refsection.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsection.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsection.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsect1.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsect1">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="refsect1info"/>
+        <xs:group ref="refsect.title.content"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+          </xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="refsect2"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="refsect1.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsect1.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsect1.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsect2.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsect2">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="refsect2info"/>
+        <xs:group ref="refsect.title.content"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect3"/>
+          </xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="refsect3"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="refsect2.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsect2.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsect2.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refsect3.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refsect3">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="refsect3info"/>
+        <xs:group ref="refsect.title.content"/>
+        <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="refsect3.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refsect3.attlist">
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refsect3.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="article.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="article">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="div.title.content"/>
+        <xs:element minOccurs="0" ref="articleinfo"/>
+        <xs:element minOccurs="0" ref="tocchap"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="lot"/>
+        <xs:group ref="bookcomponent.content"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:group ref="nav.class"/>
+          <xs:group ref="appendix.class"/>
+          <xs:element ref="ackno"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="article.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="article.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="journalarticle"/>
+          <xs:enumeration value="productsheet"/>
+          <xs:enumeration value="whitepaper"/>
+          <xs:enumeration value="techreport"/>
+          <xs:enumeration value="specification"/>
+          <xs:enumeration value="faq"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="parentbook" type="xs:IDREF"/>
+    <xs:attributeGroup ref="status.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="article.role.attrib"/>
+  </xs:attributeGroup>
+</xs:schema>
index 4285be49278d8b7b0229b11c2d1b1d9d588ab66b..6d440072347ab190e65f14d62fd8464f4486dfbd 100644 (file)
-<!DOCTYPE xsd:schema SYSTEM
-  "http://www.w3.org/2001/XMLSchema.dtd" [
-
-<!ENTITY % p 'xsd:'>
-<!ENTITY % s ':xsd'>
-<!ENTITY % schemaAttrs "
-       xmlns:db        CDATA   #IMPLIED
-       xmlns:xml       CDATA   #IMPLIED
-       xmlns:tbl       CDATA   #IMPLIED
-">
-]>
-
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  xmlns:xml='http://www.w3.org/XML/1998/namespace'
-  elementFormDefault='qualified'>
-
-<!-- ...................................................................... -->
-<!-- DocBook XML Schema V4.1.2.3........................................... -->
-<!-- ...................................................................... -->
-<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
-     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
-
-<!-- FIXME: why is public required in XML Schema!? -->
-
-<xsd:notation name='BMP'
-          public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN"/>
-
-<xsd:notation name='CGM-CHAR'
-          public="ISO 8632/2//NOTATION Character encoding//EN"/>
-
-<xsd:notation name='CGM-BINARY'
-          public="ISO 8632/3//NOTATION Binary encoding//EN"/>
-
-<xsd:notation name='CGM-CLEAR'
-          public="ISO 8632/4//NOTATION Clear text encoding//EN"/>
-
-<xsd:notation name='DITROFF'
-          public="DITROFF"
-          system="DITROFF"/>
-
-<xsd:notation name='DVI'
-          public="DVI"
-          system="DVI"/>
-
-<xsd:notation name='EPS'
-          public="+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref. Manual//EN"/>
-
-<xsd:notation name='EQN'
-          public="EQN"
-          system="EQN"/>
-
-<xsd:notation name='FAX'
-          public="-//USA-DOD//NOTATION CCITT Group 4 Facsimile Type 1 Untiled Raster//EN"/>
-
-<xsd:notation name='GIF'
-          public="GIF"
-          system="GIF"/>
-
-<xsd:notation name='GIF87a'
-          public="-//CompuServe//NOTATION Graphics Interchange Format 87a//EN"/>
-
-<xsd:notation name='GIF89a'
-          public="-//CompuServe//NOTATION Graphics Interchange Format 89a//EN"/>
-
-<xsd:notation name='JPG'
-          public="JPG"
-          system="JPG"/>
-
-<xsd:notation name='JPEG'
-          public="JPG"
-          system="JPG"/>
-
-<xsd:notation name='IGES'
-          public="-//USA-DOD//NOTATION (ASME/ANSI Y14.26M-1987) Initial Graphics Exchange Specification//EN"/>
-
-<xsd:notation name='PCX'
-          public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION ZSoft PCX bitmap//EN"/>
-
-<xsd:notation name='PIC'
-          public="PIC"
-          system="PIC"/>
-
-<xsd:notation name='PNG'
-          public="PNG"
-          system="http://www.w3.org/TR/REC-png"/>
-
-<xsd:notation name='PS'
-          public="PS"
-          system="PS"/>
-
-<xsd:notation name='SGML'
-          public="ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN"/>
-
-<xsd:notation name='TBL'
-          public="TBL"
-          system="TBL"/>
-
-<xsd:notation name='TEX'
-          public="+//ISBN 0-201-13448-9::Knuth//NOTATION The TeXbook//EN"/>
-
-<xsd:notation name='TIFF'
-          public="TIFF"
-          system="TIFF"/>
-
-<xsd:notation name='WMF'
-          public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows Metafile//EN"/>
-
-<xsd:notation name='WPG'
-          public="WPG"
-          system="WPG"/> <!--WordPerfect Graphic format-->
-
-<xsd:notation name='linespecific'
-          public="linespecific"
-          system='http://www.oasis-open.org/docbook/notation/linespecific'/>
-
-</xsd:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
+  <xs:simpleType name="notation.class">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="BMP"/>
+      <xs:enumeration value="CGM-CHAR"/>
+      <xs:enumeration value="CGM-BINARY"/>
+      <xs:enumeration value="CGM-CLEAR"/>
+      <xs:enumeration value="DITROFF"/>
+      <xs:enumeration value="DVI"/>
+      <xs:enumeration value="EPS"/>
+      <xs:enumeration value="EQN"/>
+      <xs:enumeration value="FAX"/>
+      <xs:enumeration value="GIF"/>
+      <xs:enumeration value="GIF87a"/>
+      <xs:enumeration value="GIF89a"/>
+      <xs:enumeration value="JPG"/>
+      <xs:enumeration value="JPEG"/>
+      <xs:enumeration value="IGES"/>
+      <xs:enumeration value="PCX"/>
+      <xs:enumeration value="PIC"/>
+      <xs:enumeration value="PNG"/>
+      <xs:enumeration value="PS"/>
+      <xs:enumeration value="SGML"/>
+      <xs:enumeration value="TBL"/>
+      <xs:enumeration value="TEX"/>
+      <xs:enumeration value="TIFF"/>
+      <xs:enumeration value="WMF"/>
+      <xs:enumeration value="WPG"/>
+      <xs:enumeration value="SVG"/>
+      <xs:enumeration value="linespecific"/>
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>
index b0d5f3349fc480c6c7d53d53271ea9b2414ce9ee..93d17bb89dbc394bce299726e3852d6e3dafee0a 100644 (file)
-<!DOCTYPE xsd:schema SYSTEM
-  "http://www.w3.org/2001/XMLSchema.dtd" [
-
-<!ENTITY % p 'xsd:'>
-<!ENTITY % s ':xsd'>
-<!ENTITY % schemaAttrs "
-       xmlns:db        CDATA   #IMPLIED
-       xmlns:xml       CDATA   #IMPLIED
-       xmlns:tbl       CDATA   #IMPLIED
-">
-]>
-
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  xmlns:xml='http://www.w3.org/XML/1998/namespace'
-  xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
-  elementFormDefault='qualified'>
-
-  <xsd:import namespace='http://www.oasis-open.org/tables/exchange/1.0'
-              schemaLocation="dbtables.xsd"/>
-
-<!-- ...................................................................... -->
-<!-- DocBook XML Schema V4.1.2.3........................................... -->
-<!-- ...................................................................... -->
-<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
-     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
-
-<!-- ...................................................................... -->
-<!-- General-purpose semantics entities ................................... -->
-
-<xsd:simpleType name='yesorno.attvals'>
-  <xsd:restriction base='xsd:string'>
-    <xsd:enumeration value='0'/>
-    <xsd:enumeration value='1'/>
-  </xsd:restriction>
-</xsd:simpleType>
-
-<!-- ...................................................................... -->
-<!-- Entities for module inclusions ....................................... -->
-
-<!--ENTITY % dbpool.redecl.module "IGNORE"-->
-
-<!-- ...................................................................... -->
-<!-- Entities for element classes and mixtures ............................ -->
-
-<!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
-
-<!--ENTITY % local.ndxterm.class ""-->
-<xsd:group name='ndxterm.class'>
-  <xsd:choice>
-    <xsd:element ref='db:indexterm'/>
-    <!-- %local.ndxterm.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- Object-level classes ................................................. -->
-
-<!--ENTITY % local.list.class ""-->
-<xsd:group name='list.class'>
-  <xsd:choice>
-    <xsd:element ref='db:calloutlist'/>
-    <xsd:element ref='db:glosslist'/>
-    <xsd:element ref='db:itemizedlist'/>
-    <xsd:element ref='db:orderedlist'/>
-    <xsd:element ref='db:segmentedlist'/>
-    <xsd:element ref='db:simplelist'/>
-    <xsd:element ref='db:variablelist'/>
-    <!-- %local.list.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.admon.class ""-->
-<xsd:group name='admon.class'>
-  <xsd:choice>
-    <xsd:element ref='db:caution'/>
-    <xsd:element ref='db:important'/>
-    <xsd:element ref='db:note'/>
-    <xsd:element ref='db:tip'/>
-    <xsd:element ref='db:warning'/>
-    <!-- %local.admon.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.linespecific.class ""-->
-<xsd:group name='linespecific.class'>
-  <xsd:choice>
-    <xsd:element ref='db:literallayout'/>
-    <xsd:element ref='db:programlisting'/>
-    <xsd:element ref='db:programlistingco'/>
-    <xsd:element ref='db:screen'/>
-    <xsd:element ref='db:screenco'/>
-    <xsd:element ref='db:screenshot'/>
-    <!-- %local.linespecific.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.method.synop.class ""-->
-<xsd:group name='method.synop.class'>
-  <xsd:choice>
-    <xsd:element ref='db:constructorsynopsis'/>
-    <xsd:element ref='db:destructorsynopsis'/>
-    <xsd:element ref='db:methodsynopsis'/>
-    <!-- %local.method.synop.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.synop.class ""-->
-<xsd:group name='synop.class'>
-  <xsd:choice>
-    <xsd:element ref='db:synopsis'/>
-    <xsd:element ref='db:cmdsynopsis'/>
-    <xsd:element ref='db:funcsynopsis'/>
-    <xsd:element ref='db:classsynopsis'/>
-    <xsd:element ref='db:fieldsynopsis'/>
-    <!-- %method.synop.class; -->
-    <!-- %local.synop.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.para.class ""-->
-<xsd:group name='para.class'>
-  <xsd:choice>
-    <xsd:element ref='db:formalpara'/>
-    <xsd:element ref='db:para'/>
-    <xsd:element ref='db:simpara'/>
-    <!-- %local.para.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.informal.class ""-->
-<xsd:group name='informal.class'>
-  <xsd:choice>
-    <xsd:element ref='db:address'/>
-    <xsd:element ref='db:blockquote'/>
-    <xsd:element ref='db:graphic'/>
-    <xsd:element ref='db:graphicco'/>
-    <xsd:element ref='db:mediaobject'/>
-    <xsd:element ref='db:mediaobjectco'/>
-    <xsd:element ref='db:informalequation'/>
-    <xsd:element ref='db:informalexample'/>
-    <xsd:element ref='db:informalfigure'/>
-    <xsd:element ref='db:informaltable'/>
-    <!-- %local.informal.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.formal.class ""-->
-<xsd:group name='formal.class'>
-  <xsd:choice>
-    <xsd:element ref='db:equation'/>
-    <xsd:element ref='db:example'/>
-    <xsd:element ref='db:figure'/>
-    <xsd:element ref='db:table'/>
-    <!-- %local.formal.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- 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. -->
-<!--ENTITY % ebnf.block.hook ""-->
-
-<!--ENTITY % local.compound.class ""-->
-<xsd:group name='compound.class'>
-  <xsd:choice>
-    <xsd:element ref='db:msgset'/>
-    <xsd:element ref='db:procedure'/>
-    <xsd:element ref='db:sidebar'/>
-    <xsd:element ref='db:qandaset'/>
-    <!-- %ebnf.block.hook; -->
-    <!-- %local.compound.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.genobj.class ""-->
-<xsd:group name='genobj.class'>
-  <xsd:choice>
-    <xsd:element ref='db:anchor'/>
-    <xsd:element ref='db:bridgehead'/>
-    <xsd:element ref='db:remark'/>
-    <xsd:element ref='db:highlights'/>
-    <!-- %local.genobj.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.descobj.class ""-->
-<xsd:group name='descobj.class'>
-  <xsd:choice>
-    <xsd:element ref='db:abstract'/>
-    <xsd:element ref='db:authorblurb'/>
-    <xsd:element ref='db:epigraph'/>
-    <!-- %local.descobj.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- Character-level classes .............................................. -->
-
-<!--ENTITY % local.xref.char.class ""-->
-<xsd:group name='xref.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:footnoteref'/>
-    <xsd:element ref='db:xref'/>
-    <!-- %local.xref.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.gen.char.class ""-->
-<xsd:group name='gen.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:abbrev'/>
-    <xsd:element ref='db:acronym'/>
-    <xsd:element ref='db:citation'/>
-    <xsd:element ref='db:citerefentry'/>
-    <xsd:element ref='db:citetitle'/>
-    <xsd:element ref='db:emphasis'/>
-    <xsd:element ref='db:firstterm'/>
-    <xsd:element ref='db:foreignphrase'/>
-    <xsd:element ref='db:glossterm'/>
-    <xsd:element ref='db:footnote'/>
-    <xsd:element ref='db:phrase'/>
-    <xsd:element ref='db:quote'/>
-    <xsd:element ref='db:trademark'/>
-    <xsd:element ref='db:wordasword'/>
-    <!-- %local.gen.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.link.char.class ""-->
-<xsd:group name='link.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:link'/>
-    <xsd:element ref='db:olink'/>
-    <xsd:element ref='db:ulink'/>
-    <!-- %local.link.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-<!-- 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. -->
-<!--ENTITY % ebnf.inline.hook ""-->
-
-<!--ENTITY % local.tech.char.class ""-->
-<xsd:group name='tech.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:action'/>
-    <xsd:element ref='db:application'/>
-    <xsd:element ref='db:classname'/>
-    <xsd:element ref='db:methodname'/>
-    <xsd:element ref='db:interfacename'/>
-    <xsd:element ref='db:exceptionname'/>
-    <xsd:element ref='db:ooclass'/>
-    <xsd:element ref='db:oointerface'/>
-    <xsd:element ref='db:ooexception'/>
-    <xsd:element ref='db:command'/>
-    <xsd:element ref='db:computeroutput'/>
-    <xsd:element ref='db:database'/>
-    <xsd:element ref='db:email'/>
-    <xsd:element ref='db:envar'/>
-    <xsd:element ref='db:errorcode'/>
-    <xsd:element ref='db:errorname'/>
-    <xsd:element ref='db:errortype'/>
-    <xsd:element ref='db:filename'/>
-    <xsd:element ref='db:function'/>
-    <xsd:element ref='db:guibutton'/>
-    <xsd:element ref='db:guiicon'/>
-    <xsd:element ref='db:guilabel'/>
-    <xsd:element ref='db:guimenu'/>
-    <xsd:element ref='db:guimenuitem'/>
-    <xsd:element ref='db:guisubmenu'/>
-    <xsd:element ref='db:hardware'/>
-    <xsd:element ref='db:interface'/>
-    <xsd:element ref='db:keycap'/>
-    <xsd:element ref='db:keycode'/>
-    <xsd:element ref='db:keycombo'/>
-    <xsd:element ref='db:keysym'/>
-    <xsd:element ref='db:literal'/>
-    <xsd:element ref='db:constant'/>
-    <xsd:element ref='db:markup'/>
-    <xsd:element ref='db:medialabel'/>
-    <xsd:element ref='db:menuchoice'/>
-    <xsd:element ref='db:mousebutton'/>
-    <xsd:element ref='db:option'/>
-    <xsd:element ref='db:optional'/>
-    <xsd:element ref='db:parameter'/>
-    <xsd:element ref='db:prompt'/>
-    <xsd:element ref='db:property'/>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:returnvalue'/>
-    <xsd:element ref='db:sgmltag'/>
-    <xsd:element ref='db:structfield'/>
-    <xsd:element ref='db:structname'/>
-    <xsd:element ref='db:symbol'/>
-    <xsd:element ref='db:systemitem'/>
-    <xsd:element ref='db:token'/>
-    <xsd:element ref='db:type'/>
-    <xsd:element ref='db:userinput'/>
-    <xsd:element ref='db:varname'/>
-    <!-- %ebnf.inline.hook; -->
-    <!-- %local.tech.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.base.char.class ""-->
-<xsd:group name='base.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:anchor'/>
-    <!-- %local.base.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.docinfo.char.class ""-->
-<xsd:group name='docinfo.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:author'/>
-    <xsd:element ref='db:authorinitials'/>
-    <xsd:element ref='db:corpauthor'/>
-    <xsd:element ref='db:modespec'/>
-    <xsd:element ref='db:othercredit'/>
-    <xsd:element ref='db:productname'/>
-    <xsd:element ref='db:productnumber'/>
-    <xsd:element ref='db:revhistory'/>
-    <!-- %local.docinfo.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.other.char.class ""-->
-<xsd:group name='other.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:remark'/>
-    <xsd:element ref='db:subscript'/>
-    <xsd:element ref='db:superscript'/>
-    <!-- %local.other.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.inlineobj.char.class ""-->
-<xsd:group name='inlineobj.char.class'>
-  <xsd:choice>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:element ref='db:inlineequation'/>
-    <!-- %local.inlineobj.char.class; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- Redeclaration placeholder ............................................ -->
-
-<!-- For redeclaring entities that are declared after this point while
-     retaining their references to the entities that are declared before
-     this point -->
-
-<!--[%dbpool.redecl.module;[-->
-<!-- Defining rdbpool here makes some buggy XML parsers happy. -->
-<!--ENTITY % rdbpool ""-->
-<!--%rdbpool;-->
-<!--end of dbpool.redecl.module-->
-<!--] ]>-->
-
-<!-- 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.
--->
-
-<!--ENTITY % local.component.mix ""-->
-<xsd:group name='component.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:group ref='db:compound.class'/>
-    <xsd:group ref='db:genobj.class'/>
-    <xsd:group ref='db:descobj.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.component.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.sidebar.mix ""-->
-<xsd:group name='sidebar.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:element ref='db:procedure'/>
-    <xsd:group ref='db:genobj.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.sidebar.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.qandaset.mix ""-->
-<xsd:group name='qandaset.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:element ref='db:procedure'/>
-    <xsd:group ref='db:genobj.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <!-- %local.qandaset.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.revdescription.mix ""-->
-<xsd:group name='revdescription.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:element ref='db:procedure'/>
-    <xsd:group ref='db:genobj.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <!-- %local.revdescription.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.footnote.mix ""-->
-<xsd:group name='footnote.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <!-- %local.footnote.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.example.mix ""-->
-<xsd:group name='example.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.example.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.highlights.mix ""-->
-<xsd:group name='highlights.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <!-- %local.highlights.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- %formal.class; is explicitly excluded from many contexts in which
-     paragraphs are used -->
-<!--ENTITY % local.para.mix ""-->
-<xsd:group name='para.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <!-- %local.para.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.admon.mix ""-->
-<xsd:group name='admon.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:element ref='db:procedure'/>
-    <xsd:element ref='db:sidebar'/>
-    <xsd:element ref='db:anchor'/>
-    <xsd:element ref='db:bridgehead'/>
-    <xsd:element ref='db:remark'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.admon.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.figure.mix ""-->
-<xsd:group name='figure.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.figure.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.tabentry.mix ""-->
-<xsd:group name='tabentry.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:element ref='db:graphic'/>
-    <xsd:element ref='db:mediaobject'/>
-    <!-- %local.tabentry.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.glossdef.mix ""-->
-<xsd:group name='glossdef.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:group ref='db:informal.class'/>
-    <xsd:group ref='db:formal.class'/>
-    <xsd:element ref='db:remark'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.glossdef.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.legalnotice.mix ""-->
-<xsd:group name='legalnotice.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:element ref='db:blockquote'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.legalnotice.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.textobject.mix ""-->
-<xsd:group name='textobject.mix'>
-  <xsd:choice>
-    <xsd:group ref='db:list.class'/>
-    <xsd:group ref='db:admon.class'/>
-    <xsd:group ref='db:linespecific.class'/>
-    <xsd:group ref='db:para.class'/>
-    <xsd:element ref='db:blockquote'/>
-    <!-- %local.textobject.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.mediaobject.mix ""-->
-<xsd:group name='mediaobject.mix'>
-  <xsd:choice>
-    <xsd:element ref='db:videoobject'/>
-    <xsd:element ref='db:audioobject'/>
-    <xsd:element ref='db:imageobject'/>
-    <!-- %local.mediaobject.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!-- Character-level mixtures ............................................. -->
-
-<!--
-                    #PCD xref word link cptr base dnfo othr inob (synop)
-para.char.mix         X    X    X    X    X    X    X    X    X
-title.char.mix        X    X    X    X    X    X    X    X    X
-ndxterm.char.mix      X    X    X    X    X    X    X    X    a
-cptr.char.mix         X              X    X    X         X    a
-smallcptr.char.mix    X                   b                   a
-word.char.mix         X         c    X         X         X    a
-docinfo.char.mix      X         d    X    b              X    a
-
-a. Just InlineGraphic; no InlineEquation.
-b. Just Replaceable; no other computer terms.
-c. Just Emphasis and Trademark; no other word elements.
-d. Just Acronym, Emphasis, and Trademark; no other word elements.
--->
-
-<!-- The DocBook TC may produce an official forms module for DocBook. -->
-<!-- This PE provides the hook by which it can be inserted into the DTD. -->
-<!--ENTITY % forminlines.hook ""-->
-
-<!--ENTITY % local.para.char.mix ""-->
-<xsd:group name='para.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:xref.char.class'/>
-    <xsd:group ref='db:gen.char.class'/>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:tech.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:docinfo.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:group ref='db:inlineobj.char.class'/>
-    <xsd:group ref='db:synop.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.para.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.title.char.mix ""-->
-<xsd:group name='title.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:xref.char.class'/>
-    <xsd:group ref='db:gen.char.class'/>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:tech.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:docinfo.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:group ref='db:inlineobj.char.class'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <!-- %local.title.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.ndxterm.char.mix ""-->
-<xsd:group name='ndxterm.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:xref.char.class'/>
-    <xsd:group ref='db:gen.char.class'/>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:tech.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:docinfo.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <!-- %local.ndxterm.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.cptr.char.mix ""-->
-<xsd:group name='cptr.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:tech.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.cptr.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.smallcptr.char.mix ""-->
-<xsd:group name='smallcptr.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.smallcptr.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.word.char.mix ""-->
-<xsd:group name='word.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:element ref='db:acronym'/>
-    <xsd:element ref='db:emphasis'/>
-    <xsd:element ref='db:trademark'/>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <xsd:element ref='db:beginpage'/>
-    <!-- %local.word.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-
-<!--ENTITY % local.docinfo.char.mix ""-->
-<xsd:group name='docinfo.char.mix'>
-  <xsd:choice>
-    <!-- #PCDATA -->
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:element ref='db:emphasis'/>
-    <xsd:element ref='db:trademark'/>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <!-- %local.docinfo.char.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)-->
-<!--ENTITY % person.ident.mix (see Bibliographic section, below)-->
-
-<!-- ...................................................................... -->
-<!-- Entities for content models .......................................... -->
-
-<xsd:group name='formalobject.title.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:title'/>
-    <xsd:element ref='db:titleabbrev' minOccurs='0'/>
-  </xsd:sequence>
-</xsd:group>
-
-<!-- ...................................................................... -->
-<!-- Entities for attributes and attribute components ..................... -->
-
-<!-- Effectivity attributes ............................................... -->
-
-<!-- Arch: Computer or chip architecture to which element applies; no
-       default -->
-<xsd:attributeGroup name='arch.attrib'>
-  <xsd:attribute name='arch' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Condition: General-purpose effectivity attribute -->
-
-<xsd:attributeGroup name='condition.attrib'>
-  <xsd:attribute name='condition' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Conformance: Standards conformance characteristics -->
-
-<xsd:attributeGroup name='conformance.attrib'>
-  <xsd:attribute name='conformance' type='xsd:NMTOKENS'/>
-</xsd:attributeGroup>
-
-<!-- OS: Operating system to which element applies; no default -->
-
-<xsd:attributeGroup name='os.attrib'>
-  <xsd:attribute name='os' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Revision: Editorial revision to which element belongs; no default -->
-
-<xsd:attributeGroup name='revision.attrib'>
-  <xsd:attribute name='revision' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Security: Security classification; no default -->
-
-<xsd:attributeGroup name='security.attrib'>
-  <xsd:attribute name='security' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- UserLevel: Level of user experience to which element applies; no
-       default -->
-
-<xsd:attributeGroup name='userlevel.attrib'>
-  <xsd:attribute name='userlevel' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Vendor: Computer vendor to which element applies; no default -->
-
-<xsd:attributeGroup name='vendor.attrib'>
-  <xsd:attribute name='vendor' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!--ENTITY % local.effectivity.attrib ""-->
-<xsd:attributeGroup name='effectivity.attrib'>
-  <xsd:attributeGroup ref='db:arch.attrib'/>
-  <xsd:attributeGroup ref='db:condition.attrib'/>
-  <xsd:attributeGroup ref='db:conformance.attrib'/>
-  <xsd:attributeGroup ref='db:os.attrib'/>
-  <xsd:attributeGroup ref='db:revision.attrib'/>
-  <xsd:attributeGroup ref='db:security.attrib'/>
-  <xsd:attributeGroup ref='db:userlevel.attrib'/>
-  <xsd:attributeGroup ref='db:vendor.attrib'/>
-  <!-- %local.effectivity.attrib; -->
-</xsd:attributeGroup>
-
-<!-- Common attributes .................................................... -->
-
-<!-- Id: Unique identifier of element; no default -->
-
-<xsd:attributeGroup name='id.attrib'>
-  <xsd:attribute name='id' type='xsd:ID'/>
-</xsd:attributeGroup>
-
-<!-- Id: Unique identifier of element; a value must be supplied; no
-       default -->
-
-<xsd:attributeGroup name='idreq.attrib'>
-  <xsd:attribute name='id' type='xsd:ID' use='required'/>
-</xsd:attributeGroup>
-
-<!-- Lang: Indicator of language in which element is written, for
-       translation, character set management, etc.; no default -->
-
-<xsd:attributeGroup name='lang.attrib'>
-  <xsd:attribute name='lang' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Remap: Previous role of element before conversion; no default -->
-
-<xsd:attributeGroup name='remap.attrib'>
-  <xsd:attribute name='remap' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Role: New role of element in local environment; no default -->
-
-<xsd:attributeGroup name='role.attrib'>
-  <xsd:attribute name='role' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- XRefLabel: Alternate labeling string for XRef text generation;
-       default is usually title or other appropriate label text already
-       contained in element -->
-
-<xsd:attributeGroup name='xreflabel.attrib'>
-  <xsd:attribute name='xreflabel' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- RevisionFlag: Revision status of element; default is that element
-       wasn't revised -->
-
-<xsd:attributeGroup name='revisionflag.attrib'>
-  <xsd:attribute name='revisionflag'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='changed'/>
-        <xsd:enumeration value='added'/>
-        <xsd:enumeration value='deleted'/>
-        <xsd:enumeration value='off'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-</xsd:attributeGroup>
-
-<!--ENTITY % local.common.attrib ""-->
-
-<!-- Role is included explicitly on each element -->
-
-<xsd:attributeGroup name='common.attrib'>
-  <xsd:attributeGroup ref='db:id.attrib'/>
-  <xsd:attributeGroup ref='db:lang.attrib'/>
-  <xsd:attributeGroup ref='db:remap.attrib'/>
-  <xsd:attributeGroup ref='db:xreflabel.attrib'/>
-  <xsd:attributeGroup ref='db:revisionflag.attrib'/>
-  <xsd:attributeGroup ref='db:effectivity.attrib'/>
-  <!-- %local.common.attrib; -->
-</xsd:attributeGroup>
-
-<!-- Role is included explicitly on each element -->
-
-<xsd:attributeGroup name='idreq.common.attrib'>
-  <xsd:attributeGroup ref='db:idreq.attrib'/>
-  <xsd:attributeGroup ref='db:lang.attrib'/>
-  <xsd:attributeGroup ref='db:remap.attrib'/>
-  <xsd:attributeGroup ref='db:xreflabel.attrib'/>
-  <xsd:attributeGroup ref='db:revisionflag.attrib'/>
-  <xsd:attributeGroup ref='db:effectivity.attrib'/>
-  <!-- %local.common.attrib; -->
-</xsd:attributeGroup>
-
-<!-- Semi-common attributes and other attribute entities .................. -->
-
-<!--ENTITY % local.graphics.attrib ""-->
-
-<!-- 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 -->
-
-<xsd:attributeGroup name='graphics.attrib'>
-  <!-- FIXME: -->
-  <!-- entityref       ENTITY          #IMPLIED -->
-  <xsd:attribute name='fileref' type='xsd:string'/>
-  <xsd:attribute name='format' type='xsd:NOTATION'/>
-  <xsd:attribute name='srccredit' type='xsd:string'/>
-  <xsd:attribute name='width' type='xsd:string'/>
-  <xsd:attribute name='depth' type='xsd:string'/>
-  <xsd:attribute name='align'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='left'/>
-        <xsd:enumeration value='right'/>
-        <xsd:enumeration value='center'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attribute name='scale' type='xsd:string'/>
-  <xsd:attribute name='scalefit' type='db:yesorno.attvals'/>
-  <!-- %local.graphics.attrib;-->
-</xsd:attributeGroup>
-
-<!--ENTITY % local.keyaction.attrib ""-->
-
-<!-- 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 -->
-
-<xsd:attributeGroup name='keyaction.attrib'>
-  <xsd:attribute name='action'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='click'/>
-        <xsd:enumeration value='double-click'/>
-        <xsd:enumeration value='press'/>
-        <xsd:enumeration value='seq'/>
-        <xsd:enumeration value='simul'/>
-        <xsd:enumeration value='other'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attribute name='otheraction' type='xsd:string'/>
-  <!-- %local.keyaction.attrib; -->
-</xsd:attributeGroup>
-
-<!-- Label: Identifying number or string; default is usually the
-       appropriate number or string autogenerated by a formatter -->
-
-<xsd:attributeGroup name='label.attrib'>
-  <xsd:attribute name='label' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- Format: whether element is assumed to contain significant white
-       space -->
-
-<xsd:attributeGroup name='linespecific.attrib'>
-  <xsd:attribute name='format'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:NOTATION'>
-        <xsd:enumeration value='linespecific'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attribute name='linenumbering'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='numbered'/>
-        <xsd:enumeration value='unnumbered'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-</xsd:attributeGroup>
-
-<!-- Linkend: link to related information; no default -->
-
-<xsd:attributeGroup name='linkend.attrib'>
-  <xsd:attribute name='linkend' type='xsd:IDREF'/>
-</xsd:attributeGroup>
-
-<!-- Linkend: required link to related information -->
-
-<xsd:attributeGroup name='linkendreq.attrib'>
-  <xsd:attribute name='linkend' type='xsd:IDREF' use='required'/>
-</xsd:attributeGroup>
-
-<!-- Linkends: link to one or more sets of related information; no
-       default -->
-
-<xsd:attributeGroup name='linkends.attrib'>
-  <xsd:attribute name='linkends' type='xsd:IDREFS'/>
-</xsd:attributeGroup>
-
-<!--ENTITY % local.mark.attrib ""-->
-<xsd:attributeGroup name='mark.attrib'>
-  <xsd:attribute name='mark' type='xsd:string'/>
-  <!-- %local.mark.attrib; -->
-</xsd:attributeGroup>
-
-<!-- MoreInfo: whether element's content has an associated RefEntry -->
-
-<xsd:attributeGroup name='moreinfo.attrib'>
-  <xsd:attribute name='moreinfo' default='none'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='refentry'/>
-        <xsd:enumeration value='none'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-</xsd:attributeGroup>
-
-<!-- Pagenum: number of page on which element appears; no default -->
-
-<xsd:attributeGroup name='pagenum.attrib'>
-  <xsd:attribute name='pagenum' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!--ENTITY % local.status.attrib ""-->
-
-<!-- Status: Editorial or publication status of the element
-       it applies to, such as "in review" or "approved for distribution" -->
-
-<xsd:attributeGroup name='status.attrib'>
-  <xsd:attribute name='status' type='xsd:string'/>
-  <!-- %local.status.attrib; -->
-</xsd:attributeGroup>
-
-<!-- Width: width of the longest line in the element to which it
-       pertains, in number of characters -->
-
-<xsd:attributeGroup name='width.attrib'>
-  <xsd:attribute name='width' type='xsd:string'/>
-</xsd:attributeGroup>
-
-<!-- ...................................................................... -->
-<!-- Title elements ....................................................... -->
-
-<xsd:attributeGroup name='title.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='title' mixed='true'>
-  <!-- (%title.char.mix;)* -->
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:title.char.mix'/>
-  </xsd:choice>
-
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:title.role.attrib'/>
-  <!-- %local.title.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='titleabbrev.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='titleabbrev' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:title.char.mix'/>
-  </xsd:choice>
-  <!-- (%title.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:titleabbrev.role.attrib'/>
-  <!-- %local.titleabbrev.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='subtitle.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='subtitle' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:title.char.mix'/>
-  </xsd:choice>
-  <!-- (%title.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:subtitle.role.attrib'/>
-  <!-- %local.subtitle.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- 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. -->
-
-<xsd:group name='person.ident.mix'>
-  <xsd:choice>
-    <xsd:element ref='db:honorific'/>
-    <xsd:element ref='db:firstname'/>
-    <xsd:element ref='db:surname'/>
-    <xsd:element ref='db:lineage'/>
-    <xsd:element ref='db:othername'/>
-    <xsd:element ref='db:affiliation'/>
-    <xsd:element ref='db:authorblurb'/>
-    <xsd:element ref='db:contrib'/>
-    <!-- %local.person.ident.mix; -->
-  </xsd:choice>
-</xsd:group>
-
-<xsd:group name='bibliocomponent.mix'>
-  <xsd:choice>
-    <xsd:element ref='db:abbrev'/>
-    <xsd:element ref='db:abstract'/>
-    <xsd:element ref='db:address'/>
-    <xsd:element ref='db:artpagenums'/>
-    <xsd:element ref='db:author'/>
-    <xsd:element ref='db:authorgroup'/>
-    <xsd:element ref='db:authorinitials'/>
-    <xsd:element ref='db:bibliomisc'/>
-    <xsd:element ref='db:biblioset'/>
-    <xsd:element ref='db:collab'/>
-    <xsd:element ref='db:confgroup'/>
-    <xsd:element ref='db:contractnum'/>
-    <xsd:element ref='db:contractsponsor'/>
-    <xsd:element ref='db:copyright'/>
-    <xsd:element ref='db:corpauthor'/>
-    <xsd:element ref='db:corpname'/>
-    <xsd:element ref='db:date'/>
-    <xsd:element ref='db:edition'/>
-    <xsd:element ref='db:editor'/>
-    <xsd:element ref='db:invpartnumber'/>
-    <xsd:element ref='db:isbn'/>
-    <xsd:element ref='db:issn'/>
-    <xsd:element ref='db:issuenum'/>
-    <xsd:element ref='db:orgname'/>
-    <xsd:element ref='db:othercredit'/>
-    <xsd:element ref='db:pagenums'/>
-    <xsd:element ref='db:printhistory'/>
-    <xsd:element ref='db:productname'/>
-    <xsd:element ref='db:productnumber'/>
-    <xsd:element ref='db:pubdate'/>
-    <xsd:element ref='db:publisher'/>
-    <xsd:element ref='db:publishername'/>
-    <xsd:element ref='db:pubsnumber'/>
-    <xsd:element ref='db:releaseinfo'/>
-    <xsd:element ref='db:revhistory'/>
-    <xsd:element ref='db:seriesvolnums'/>
-    <xsd:element ref='db:subtitle'/>
-    <xsd:element ref='db:title'/>
-    <xsd:element ref='db:titleabbrev'/>
-    <xsd:element ref='db:volumenum'/>
-    <xsd:element ref='db:citetitle'/>
-    <xsd:group ref='db:person.ident.mix'/>
-    <xsd:group ref='db:ndxterm.class'/>
-    <!-- %local.bibliocomponent.mix -->
-  </xsd:choice>
-</xsd:group>
-
-
-<xsd:attributeGroup name='biblioentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='biblioentry'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:articleinfo'/>
-    <xsd:group ref='db:bibliocomponent.mix'/>
-  </xsd:choice>
-  <!-- ((articleinfo | (%bibliocomponent.mix;))+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:biblioentry.role.attrib'/>
-  <!-- %local.biblioentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='bibliomixed.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bibliomixed' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:bibliocomponent.mix'/>
-    <xsd:element ref='db:bibliomset'/>
-  </xsd:choice>
-  <!-- (#PCDATA | %bibliocomponent.mix; | bibliomset)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:bibliomixed.role.attrib'/>
-  <!-- %local.bibliomixed.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='articleinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='infoContentModel'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:graphic'/>
-    <xsd:element ref='db:mediaobject'/>
-    <xsd:element ref='db:legalnotice'/>
-    <xsd:element ref='db:modespec'/>
-    <xsd:element ref='db:subjectset'/>
-    <xsd:element ref='db:keywordset'/>
-    <xsd:element ref='db:itermset'/>
-    <xsd:group ref='db:bibliocomponent.mix'/>
-  </xsd:choice>
-  <!-- ((graphic | mediaobject | legalnotice | modespec
-       | subjectset | keywordset | itermset | %bibliocomponent.mix;)+) -->
-</xsd:complexType>
-
-<xsd:complexType name='articleinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:articleinfo.role.attrib'/>
-      <!-- %local.articleinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='biblioset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='biblioset'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:bibliocomponent.mix'/>
-  </xsd:choice>
-  <!-- ((%bibliocomponent.mix;)+) -->
-
-  <!-- Relation: Relationship of elements contained within BiblioSet -->
-  <xsd:attribute name='relation' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:biblioset.role.attrib'/>
-  <!-- %local.biblioset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='bibliomset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bibliomset' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:bibliocomponent.mix'/>
-    <xsd:element ref='db:bibliomset'/>
-  </xsd:choice>
-  <!-- (#PCDATA | %bibliocomponent.mix; | bibliomset)* -->
-
-  <!-- Relation: Relationship of elements contained within BiblioMSet -->
-  <xsd:attribute name='relation' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:bibliomset.role.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <!-- %local.bibliomset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='bibliomisc.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bibliomisc' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:bibliomisc.role.attrib'/>
-  <!-- %local.bibliomisc.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Subject, Keyword, and ITermSet elements .............................. -->
-
-<xsd:attributeGroup name='subjectset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='subjectset'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:subject'/>
-  </xsd:sequence>
-  <!-- (subject+) -->
-
-  <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
-  <xsd:attribute name='scheme' type='xsd:NMTOKEN'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:subjectset.role.attrib'/>
-  <!-- %local.subjectset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='subject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='subject'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:subjectterm'/>
-  </xsd:sequence>
-  <!-- (subjectterm+) -->
-
-  <!-- Weight: Ranking of this group of SubjectTerms relative
-       to others, 0 is low, no highest value specified -->
-  <xsd:attribute name='weight' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:subject.role.attrib'/>
-  <!-- %local.subject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='subjectterm.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='subjectterm'>
-  <!-- (#PCDATA) -->
-  <xsd:simpleContent>
-    <xsd:extension base='xsd:string'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:subjectterm.role.attrib'/>
-      <!-- %local.subjectterm.attrib; -->
-    </xsd:extension>
-  </xsd:simpleContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='keywordset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='keywordset'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:keyword'/>
-  </xsd:sequence>
-  <!-- (keyword+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:keywordset.role.attrib'/>
-  <!-- %local.keywordset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='keyword.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='keyword'>
-  <!-- (#PCDATA) -->
-  <xsd:simpleContent>
-    <xsd:extension base='xsd:string'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:keyword.role.attrib'/>
-      <!-- %local.keyword.attrib; -->
-    </xsd:extension>
-  </xsd:simpleContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='itermset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='itermset'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:indexterm'/>
-  </xsd:sequence>
-  <!-- (indexterm+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:itermset.role.attrib'/>
-  <!-- %local.itermset.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Compound (section-ish) elements ...................................... -->
-
-<!-- Message set ...................... -->
-
-<xsd:attributeGroup name='msgset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgset'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:msgentry' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:simplemsgentry' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?, (msgentry+|simplemsgentry+)) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgset.role.attrib'/>
-  <!-- %local.msgset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:msg' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:msginfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:msgexplan' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (msg+, msginfo?, msgexplan*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgentry.role.attrib'/>
-  <!-- %local.msgentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='simplemsgentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='simplemsgentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:msgtext'/>
-    <xsd:element ref='db:msgexplan'/>
-  </xsd:sequence>
-  <!-- (msgtext, msgexplan) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:simplemsgentry.role.attrib'/>
-  <!-- %local.simplemsgentry.attrib; -->
-  <xsd:attribute name='audience' type='xsd:string'/>
-  <xsd:attribute name='level' type='xsd:string'/>
-  <xsd:attribute name='origin' type='xsd:string'/>
-</xsd:complexType>
-
-<xsd:attributeGroup name='msg.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msg'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:msgmain'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:msgsub'/>
-      <xsd:element ref='db:msgrel'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (title?, msgmain, (msgsub | msgrel)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msg.role.attrib'/>
-  <!-- %local.msg.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgmain.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgmain'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:msgtext'/>
-  </xsd:sequence>
-  <!-- (title?, msgtext) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgmain.role.attrib'/>
-  <!-- %local.msgmain.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgsub.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgsub'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:msgtext'/>
-  </xsd:sequence>
-  <!-- (title?, msgtext) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgsub.role.attrib'/>
-  <!-- %local.msgsub.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgrel.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgrel'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:msgtext'/>
-  </xsd:sequence>
-  <!-- (title?, msgtext) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgrel.role.attrib'/>
-  <!-- %local.msgrel.attrib; -->
-</xsd:complexType>
-
-<!-- MsgText (defined in the Inlines section, below)-->
-
-<xsd:attributeGroup name='msginfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msginfo'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:element ref='db:msglevel'/>
-    <xsd:element ref='db:msgorig'/>
-    <xsd:element ref='db:msgaud'/>
-  </xsd:choice>
-  <!-- ((msglevel | msgorig | msgaud)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msginfo.role.attrib'/>
-  <!-- %local.msginfo.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msglevel.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msglevel' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msglevel.role.attrib'/>
-  <!-- %local.msglevel.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgorig.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgorig' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgorig.role.attrib'/>
-  <!-- %local.msgorig.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgaud.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgaud' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgaud.role.attrib'/>
-  <!-- %local.msgaud.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgexplan.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgexplan'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:group ref='db:component.mix'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (title?, (%component.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgexplan.role.attrib'/>
-  <!-- %local.msgexplan.attrib; -->
-</xsd:complexType>
-
-<!-- QandASet ........................ -->
-
-<xsd:attributeGroup name='qandset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='qandaset'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:qandaset.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:element ref='db:qandadiv' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:qandaentry' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?,
-                       (%qandaset.mix;)*,
-                        (qandadiv+|qandaentry+)) -->
-
-  <xsd:attribute name='defaultlabel'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='qanda'/>
-        <xsd:enumeration value='number'/>
-        <xsd:enumeration value='none'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:qandset.role.attrib'/>
-  <!-- %local.qandset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='qandadiv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='qandadiv'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:qandaset.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice>
-      <xsd:element ref='db:qandadiv' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:qandaentry' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?,
-                       (%qandaset.mix;)*,
-                       (qandadiv+|qandaentry+)) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:qandadiv.role.attrib'/>
-  <!-- %local.qandadiv.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='qandaentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='qandaentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:revhistory' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:question'/>
-    <xsd:element ref='db:answer' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (revhistory?, question, answer*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:qandaentry.role.attrib'/>
-  <!-- %local.qandaentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='question.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='question'>
-  <xsd:sequence>
-    <xsd:element ref='db:label' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:qandaset.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (label?, (%qandaset.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:question.role.attrib'/>
-  <!-- %local.question.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='answer.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='answer'>
-  <xsd:sequence>
-    <xsd:element ref='db:label' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:qandaset.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:qandaentry' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (label?, (%qandaset.mix;)*, qandaentry*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:answer.role.attrib'/>
-  <!-- %local.answer.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='label.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='label' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:word.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%word.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:label.role.attrib'/>
-  <!-- %local.label.attrib; -->
-</xsd:complexType>
-
-<!-- Procedure ........................ -->
-
-<xsd:attributeGroup name='procedure.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='procedure'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:step' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?,
-       (%component.mix;)*, step+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:procedure.role.attrib'/>
-  <!-- %local.procedure.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='step.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='step'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:sequence minOccurs='0' maxOccurs='1'>
-          <xsd:element ref='db:substeps'/>
-          <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-        </xsd:sequence>
-      </xsd:sequence>
-      <xsd:sequence>
-        <xsd:element ref='db:substeps'/>
-        <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
-      </xsd:sequence>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (title?, (((%component.mix;)+, (substeps,
-               (%component.mix;)*)?) | (substeps, (%component.mix;)*))) -->
-
-  <!-- Performance: Whether the Step must be performed -->
-  <!-- not #REQUIRED! -->
-  <xsd:attribute name='performance'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='optional'/>
-        <xsd:enumeration value='required'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:step.role.attrib'/>
-  <!-- %local.step.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='substeps.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='substeps'>
-  <xsd:sequence>
-    <xsd:element ref='db:step' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (step+) -->
-
-  <!-- Performance: whether entire set of substeps must be performed -->
-  <!-- not #REQUIRED! -->
-  <xsd:attribute name='performance'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='optional'/>
-        <xsd:enumeration value='required'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:substeps.role.attrib'/>
-  <!-- %local.substeps.attrib; -->
-</xsd:complexType>
-
-<!-- Sidebar .......................... -->
-
-<xsd:attributeGroup name='sidebarinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sidebarinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sidebarinfo.role.attrib'/>
-      <!-- %local.articleinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='sidebar.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sidebar'>
-  <xsd:sequence>
-    <xsd:element ref='db:sidebarinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:sidebar.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (sidebarinfo?,
-                   (%formalobject.title.content;)?,
-                   (%sidebar.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sidebar.role.attrib'/>
-  <!-- %local.sidebar.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Paragraph-related elements ........................................... -->
-
-<xsd:attributeGroup name='abstract.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='abstract'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:para.class' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (title?, (%para.class;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:abstract.role.attrib'/>
-  <!-- %local.abstract.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='authorblurb.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='authorblurb'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:para.class' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (title?, (%para.class;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:authorblurb.role.attrib'/>
-  <!-- %local.authorblurb.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='blockquote.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='blockquote'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:attribution' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (title?, attribution?, (%component.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:blockquote.role.attrib'/>
-  <!-- %local.blockquote.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='attribution.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='attribution' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:attribution.role.attrib'/>
-  <!-- %local.attribution.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='bridgehead.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='bridgehead' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:title.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%title.char.mix;)* -->
-
-  <!-- Renderas: Indicates the format in which the BridgeHead
-       should appear -->
-  <xsd:attribute name='renderas'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='other'/>
-        <xsd:enumeration value='sect1'/>
-        <xsd:enumeration value='sect2'/>
-        <xsd:enumeration value='sect3'/>
-        <xsd:enumeration value='sect4'/>
-        <xsd:enumeration value='sect5'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:bridgehead.role.attrib'/>
-  <!-- %local.bridgehead.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='remark.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='remark' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:remark.role.attrib'/>
-  <!-- %local.remark.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='epigraph.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='epigraph'>
-  <xsd:sequence>
-    <xsd:element ref='db:attribution' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:para.class' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (attribution?, (%para.class;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:epigraph.role.attrib'/>
-  <!-- %local.epigraph.attrib; -->
-</xsd:complexType>
-<!-- Attribution (defined above)-->
-
-<xsd:attributeGroup name='footnote.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='footnote'>
-  <xsd:sequence>
-    <xsd:group ref='db:footnote.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%footnote.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:footnote.role.attrib'/>
-  <!-- %local.footnote.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='highlights.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='highlights'>
-  <xsd:sequence>
-    <xsd:group ref='db:highlights.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%highlights.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:highlights.role.attrib'/>
-  <!-- %local.highlights.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='formalpara.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='formalpara'>
-  <xsd:sequence>
-    <xsd:element ref='db:title'/>
-    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:para'/>
-  </xsd:sequence>
-  <!-- (title, (%ndxterm.class;)*, para) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:formalpara.role.attrib'/>
-  <!-- %local.formalpara.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='para.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='para' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-    <xsd:group ref='db:para.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix; | %para.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:para.role.attrib'/>
-  <!-- %local.para.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='simpara.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='simpara' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:simpara.role.attrib'/>
-  <!-- %local.simpara.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='admon.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='admonitionType'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:admon.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (title?, (%admon.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:admon.role.attrib'/>
-  <!-- %local.admon.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Lists ................................................................ -->
-
-<!-- GlossList ........................ -->
-
-<xsd:attributeGroup name='glosslist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glosslist'>
-  <xsd:sequence>
-    <xsd:element ref='db:glossentry' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (glossentry+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glosslist.role.attrib'/>
-  <!-- %local.glosslist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='glossentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:glossterm'/>
-    <xsd:element ref='db:acronym' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:abbrev' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:revhistory' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:glosssee'/>
-      <xsd:element ref='db:glossdef' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (glossterm, acronym?, abbrev?,
-                      (%ndxterm.class;)*,
-                      revhistory?, (glosssee|glossdef+)) -->
-
-  <!-- SortAs: String by which the GlossEntry is to be sorted
-       (alphabetized) in lieu of its proper content -->
-  <xsd:attribute name='sortas' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glossentry.role.attrib'/>
-  <!-- %local.glossentry.attrib; -->
-</xsd:complexType>
-
-<!-- GlossTerm (defined in the Inlines section, below)-->
-<xsd:attributeGroup name='glossdef.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossdef'>
-  <xsd:sequence>
-    <xsd:group ref='db:glossdef.mix' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:glossseealso' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%glossdef.mix;)+, glossseealso*) -->
-
-  <!-- Subject: List of subjects; keywords for the definition -->
-  <xsd:attribute name='subject' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glossdef.role.attrib'/>
-  <!-- %local.glossdef.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='glosssee.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glosssee' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
-       should be displayed at the point of the GlossSee -->
-  <!-- FIXME: restrict to glossentry -->
-  <xsd:attribute name='otherterm' type='xsd:IDREF'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glosssee.role.attrib'/>
-  <!-- %local.glosssee.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='glossseealso.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossseealso' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
-       should be displayed at the point of the GlossSeeAlso -->
-  <!-- FIXME: restrict to glossentry -->
-  <xsd:attribute name='otherterm' type='xsd:IDREF'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glossseealso.role.attrib'/>
-  <!-- %local.glossseealso.attrib; -->
-</xsd:complexType>
-
-<!-- ItemizedList and OrderedList ..... -->
-
-<xsd:attributeGroup name='itemizedlist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='itemizedlist'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:listitem' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?, listitem+) -->
-
-  <!-- Spacing: Whether the vertical space in the list should be
-       compressed -->
-  <xsd:attribute name='spacing'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='normal'/>
-        <xsd:enumeration value='compact'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Mark: Keyword, e.g., bullet, dash, checkbox, none;
-       list of keywords and defaults are implementation specific -->
-  <xsd:attributeGroup ref='db:mark.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:itemizedlist.role.attrib'/>
-  <!-- %local.itemizedlist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='orderedlist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='orderedlist'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:listitem' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?, listitem+) -->
-
-  <!-- Numeration: Style of ListItem numbered; default is expected
-       to be Arabic -->
-  <xsd:attribute name='numeration'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='arabic'/>
-        <xsd:enumeration value='upperalpha'/>
-        <xsd:enumeration value='loweralpha'/>
-        <xsd:enumeration value='upperroman'/>
-        <xsd:enumeration value='lowerroman'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- 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) -->
-  <xsd:attribute name='inheritnum' default='ignore'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='inherit'/>
-        <xsd:enumeration value='ignore'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Continuation: Where list numbering begins afresh (Restarts,
-       the default) or continues that of the immediately preceding
-       list (Continues) -->
-  <xsd:attribute name='continuation' default='restarts'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='continues'/>
-        <xsd:enumeration value='restarts'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Spacing: Whether the vertical space in the list should be
-       compressed -->
-  <xsd:attribute name='spacing'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='normal'/>
-        <xsd:enumeration value='compact'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:orderedlist.role.attrib'/>
-  <!-- %local.orderedlist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='listitem.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='listitem'>
-  <xsd:sequence>
-    <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%component.mix;)+) -->
-
-  <!-- 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 -->
-  <xsd:attribute name='override' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:listitem.role.attrib'/>
-  <!-- %local.listitem.attrib; -->
-</xsd:complexType>
-
-<!-- SegmentedList .................... -->
-<xsd:attributeGroup name='segmentedlist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='segmentedlist'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:segtitle' minOccurs='2' maxOccurs='unbounded'/>
-    <xsd:element ref='db:seglistitem' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?,
-                         segtitle, segtitle+,
-                         seglistitem+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:segmentedlist.role.attrib'/>
-  <!-- %local.segmentedlist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='segtitle.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='segtitle' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:title.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%title.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:segtitle.role.attrib'/>
-  <!-- %local.segtitle.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='seglistitem.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='seglistitem'>
-  <xsd:sequence>
-    <xsd:element ref='db:seg' minOccurs='2' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (seg, seg+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seglistitem.role.attrib'/>
-  <!-- %local.seglistitem.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='seg.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='seg' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seg.role.attrib'/>
-  <!-- %local.seg.attrib; -->
-</xsd:complexType>
-
-<!-- SimpleList ....................... -->
-
-<xsd:attributeGroup name='simplelist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='simplelist'>
-  <xsd:sequence>
-    <xsd:element ref='db:member' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (member+) -->
-
-  <!-- Columns: The number of columns the array should contain -->
-  <xsd:attribute name='columns' type='xsd:integer'/>
-
-  <!-- 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. -->
-  <xsd:attribute name='type' default='vert'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='inline'/>
-        <xsd:enumeration value='vert'/>
-        <xsd:enumeration value='horiz'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:simplelist.role.attrib'/>
-  <!-- %local.simplelist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='member.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='member' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:member.role.attrib'/>
-  <!-- %local.member.attrib; -->
-</xsd:complexType>
-
-<!-- VariableList ..................... -->
-
-<xsd:attributeGroup name='variablelist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='variablelist'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:varlistentry'  minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?, varlistentry+) -->
-
-  <!-- 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. -->
-  <xsd:attribute name='termlength' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:variablelist.role.attrib'/>
-  <!-- %local.variablelist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='varlistentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='varlistentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:term'  minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:listitem'/>
-  </xsd:sequence>
-  <!-- (term+, listitem) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:varlistentry.role.attrib'/>
-  <!-- %local.varlistentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='term.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='term' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:term.role.attrib'/>
-  <!-- %local.term.attrib; -->
-</xsd:complexType>
-
-<!-- ListItem (defined above)-->
-
-<!-- CalloutList ...................... -->
-
-<xsd:attributeGroup name='calloutlist.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='calloutlist'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:callout'  minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?, callout+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:calloutlist.role.attrib'/>
-  <!-- %local.calloutlist.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='callout.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='callout'>
-  <xsd:sequence>
-    <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%component.mix;)+) -->
-
-  <!-- AreaRefs: IDs of one or more Areas or AreaSets described
-       by this Callout -->
-  <xsd:attribute name='arearefs' type='xsd:IDREFS'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:callout.role.attrib'/>
-  <!-- %local.callout.attrib; -->
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Objects .............................................................. -->
-
-<!-- Examples etc. .................... -->
-
-<xsd:attributeGroup name='example.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='example'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:example.mix'  minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;), (%example.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:width.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:example.role.attrib'/>
-  <!-- %local.example.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='informalexample.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='informalexample'>
-  <xsd:sequence>
-    <xsd:group ref='db:example.mix'  minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((%example.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:width.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:informalexample.role.attrib'/>
-  <!-- %local.informalexample.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='programlistingco.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='programlistingco'>
-  <xsd:sequence>
-    <xsd:element ref='db:areaspec'/>
-    <xsd:element ref='db:programlisting'/>
-    <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (areaspec, programlisting, calloutlist*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:programlistingco.role.attrib'/>
-  <!-- %local.programlistingco.attrib; -->
-</xsd:complexType>
-<!-- CalloutList (defined above in Lists)-->
-
-<xsd:attributeGroup name='areaspec.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='areaspec'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:area'/>
-    <xsd:element ref='db:areaset'/>
-  </xsd:choice>
-  <!-- ((area|areaset)+) -->
-
-  <!-- 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) -->
-  <xsd:attribute name='units'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='calspair'/>
-        <xsd:enumeration value='linecolumn'/>
-        <xsd:enumeration value='linerange'/>
-        <xsd:enumeration value='linecolumnpair'/>
-        <xsd:enumeration value='other'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- OtherUnits: User-defined units -->
-  <xsd:attribute name='otherunits' type='xsd:NMTOKEN'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:areaspec.role.attrib'/>
-  <!-- %local.areaspec.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='area.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='area'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <!-- bug number/symbol override or initialization -->
-      <!-- to any related information -->
-      <xsd:attributeGroup ref='db:label.attrib'/>
-
-      <!-- Units: unit of measure in which coordinates in this
-           area are expressed; inherits from AreaSet and AreaSpec -->
-      <xsd:attribute name='units'>
-        <xsd:simpleType>
-          <xsd:restriction base='xsd:string'>
-            <xsd:enumeration value='calspair'/>
-            <xsd:enumeration value='linecolumn'/>
-            <xsd:enumeration value='linerange'/>
-            <xsd:enumeration value='linecolumnpair'/>
-            <xsd:enumeration value='other'/>
-          </xsd:restriction>
-        </xsd:simpleType>
-      </xsd:attribute>
-
-      <!-- OtherUnits: User-defined units -->
-      <xsd:attribute name='otherunits' type='xsd:NMTOKEN'/>
-
-      <xsd:attributeGroup ref='db:linkends.attrib'/>
-      <xsd:attribute name='coords' type='xsd:string' use='required'/>
-      <xsd:attributeGroup ref='db:idreq.common.attrib'/>
-      <xsd:attributeGroup ref='db:area.role.attrib'/>
-      <!-- %local.area.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='areaset.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='areaset'>
-  <xsd:sequence>
-    <xsd:element ref='db:area' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (area+) -->
-
-  <!-- bug number/symbol override or initialization -->
-  <xsd:attributeGroup ref='db:label.attrib'/>
-
-  <!-- Units: unit of measure in which coordinates in this
-       area are expressed; inherits from AreaSet and AreaSpec -->
-  <xsd:attribute name='units'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='calspair'/>
-        <xsd:enumeration value='linecolumn'/>
-        <xsd:enumeration value='linerange'/>
-        <xsd:enumeration value='linecolumnpair'/>
-        <xsd:enumeration value='other'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- OtherUnits: User-defined units -->
-  <xsd:attribute name='otherunits' type='xsd:NMTOKEN'/>
-
-  <xsd:attribute name='coords' type='xsd:string' use='required'/>
-
-  <xsd:attributeGroup ref='db:idreq.common.attrib'/>
-  <xsd:attributeGroup ref='db:areaset.role.attrib'/>
-  <!-- %local.areaset.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='programlisting.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='programlisting' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-    <xsd:element ref='db:co'/>
-    <xsd:element ref='db:lineannotation'/>
-  </xsd:choice>
-  <!-- (%para.char.mix; | co | lineannotation)* -->
-
-  <xsd:attributeGroup ref='db:width.attrib'/>
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:programlisting.role.attrib'/>
-  <!-- %local.programlisting.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='literallayout.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='literallayout' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-    <xsd:element ref='db:co'/>
-    <xsd:element ref='db:lineannotation'/>
-  </xsd:choice>
-  <!-- (%para.char.mix; | lineannotation | co)* -->
-
-  <xsd:attribute name='class' default='normal'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='monospaced'/>
-        <xsd:enumeration value='normal'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:width.attrib'/>
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:literallayout.role.attrib'/>
-  <!-- %local.literallayout.attrib; -->
-</xsd:complexType>
-
-<!-- LineAnnotation (defined in the Inlines section, below)-->
-
-<xsd:attributeGroup name='screenco.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='screenco'>
-  <xsd:sequence>
-    <xsd:element ref='db:areaspec'/>
-    <xsd:element ref='db:screen'/>
-    <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (areaspec, screen, calloutlist*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:screenco.role.attrib'/>
-  <!-- %local.screenco.attrib; -->
-</xsd:complexType>
-
-<!-- AreaSpec (defined above)-->
-<!-- CalloutList (defined above in Lists)-->
-
-<xsd:attributeGroup name='screen.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='screen' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-    <xsd:element ref='db:co'/>
-    <xsd:element ref='db:lineannotation'/>
-  </xsd:choice>
-  <!-- (%para.char.mix; | co | lineannotation)* -->
-
-  <xsd:attributeGroup ref='db:width.attrib'/>
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:screen.role.attrib'/>
-  <!-- %local.screen.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='screenshot.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='screenshot'>
-  <xsd:sequence>
-    <xsd:element ref='db:screeninfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:graphic'/>
-      <xsd:element ref='db:graphicco'/>
-      <xsd:element ref='db:mediaobject'/>
-      <xsd:element ref='db:mediaobjectco'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (screeninfo?,
-                      (graphic|graphicco
-                      |mediaobject|mediaobjectco)) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:screenshot.role.attrib'/>
-  <!-- %local.screenshot.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='screeninfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='screeninfo' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:screeninfo.role.attrib'/>
-  <!-- %local.screeninfo.attrib; -->
-</xsd:complexType>
-
-<!-- Figures etc. ..................... -->
-
-<xsd:attributeGroup name='figure.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='figure'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-      <xsd:group ref='db:figure.mix'/>
-      <xsd:group ref='db:link.char.class'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;), (%figure.mix; |
-               %link.char.class;)+) -->
-
-  <!-- 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) -->
-  <xsd:attribute name='float' type='db:yesorno.attvals' default='0'/>
-  <xsd:attribute name='pgwide' type='db:yesorno.attvals'/>
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:figure.role.attrib'/>
-  <!-- %local.figure.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='informalfigure.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='informalfigure'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:figure.mix'/>
-    <xsd:group ref='db:link.char.class'/>
-  </xsd:choice>
-  <!-- ((%figure.mix; | %link.char.class;)+) -->
-
-  <!-- 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) -->
-  <xsd:attribute name='float' type='db:yesorno.attvals' default='0'/>
-  <xsd:attribute name='pgwide' type='db:yesorno.attvals'/>
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:informalfigure.role.attrib'/>
-  <!-- %local.informalfigure.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='graphicco.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='graphicco'>
-  <xsd:sequence>
-    <xsd:element ref='db:areaspec'/>
-    <xsd:element ref='db:graphic'/>
-    <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (areaspec, graphic, calloutlist*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:graphicco.role.attrib'/>
-  <!-- %local.graphicco.attrib; -->
-</xsd:complexType>
-
-<!-- AreaSpec (defined above in Examples)-->
-<!-- CalloutList (defined above in Lists)-->
-
-<!-- Graphical data can be the content of Graphic, or you can reference
-     an external file either as an entity (Entitref) or a filename
-     (Fileref). -->
-
-<xsd:attributeGroup name='graphic.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='graphic'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:graphics.attrib'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:graphic.role.attrib'/>
-      <!-- %local.graphic.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='inlinegraphic.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='inlinegraphic'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:graphics.attrib'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:inlinegraphic.role.attrib'/>
-      <!-- %local.inlinegraphic.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='mediaobject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='mediaobject'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:mediaobject.mix'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:group ref='db:mediaobject.mix'/>
-      <xsd:element ref='db:textobject'/>
-    </xsd:choice>
-    <xsd:element ref='db:caption' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-  <!-- (objectinfo?,
-                           (%mediaobject.mix;),
-                          (%mediaobject.mix;|textobject)*,
-                          caption?) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:mediaobject.role.attrib'/>
-  <!-- %local.mediaobject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='inlinemediaobject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='inlinemediaobject'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:mediaobject.mix'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:group ref='db:mediaobject.mix'/>
-      <xsd:element ref='db:textobject'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (objectinfo?,
-                                (%mediaobject.mix;),
-                                (%mediaobject.mix;|textobject)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:inlinemediaobject.role.attrib'/>
-  <!-- %local.inlinemediaobject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='videoobject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='videoobject'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:videodata'/>
-  </xsd:sequence>
-  <!-- (objectinfo?, videodata) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:videoobject.role.attrib'/>
-  <!-- %local.videoobject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='audioobject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='audioobject'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:audiodata'/>
-  </xsd:sequence>
-  <!-- (objectinfo?, audiodata) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:audioobject.role.attrib'/>
-  <!-- %local.audioobject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='imageobject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='imageobject'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:imagedata'/>
-  </xsd:sequence>
-  <!-- (objectinfo?, imagedata) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:imageobject.role.attrib'/>
-  <!-- %local.imageobject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='textobject.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='textobject'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:phrase'/>
-      <xsd:group ref='db:textobject.mix' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (objectinfo?, (phrase|(%textobject.mix;)+)) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:textobject.role.attrib'/>
-  <!-- %local.textobject.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='objectinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='objectinfo'>
-  <xsd:complexContent>
-    <xsd:extension base='db:infoContentModel'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:objectinfo.role.attrib'/>
-      <!-- %local.objectinfo.attrib; -->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!--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-->
-<xsd:attributeGroup name='objectdata.attrib'>
-  <!-- FIXME: -->
-  <!-- entityref       ENTITY          #IMPLIED -->
-  <xsd:attribute name='fileref' type='xsd:string'/>
-  <xsd:attribute name='format' type='xsd:NOTATION'/>
-  <xsd:attribute name='srccredit' type='xsd:string'/>
-  <!-- %local.objectdata.attrib;-->
-</xsd:attributeGroup>
-
-<xsd:attributeGroup name='videodata.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='videodata'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <!--Width: Same as CALS reprowid (desired width)-->
-      <xsd:attribute name='width' type='xsd:string'/>
-
-      <!--Depth: Same as CALS reprodep (desired depth)-->
-      <xsd:attribute name='depth' type='xsd:string'/>
-
-      <!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
-          application-specific-->
-      <xsd:attribute name='align'>
-        <xsd:simpleType>
-          <xsd:restriction base='xsd:string'>
-            <xsd:enumeration value='left'/>
-            <xsd:enumeration value='right'/>
-            <xsd:enumeration value='center'/>
-          </xsd:restriction>
-        </xsd:simpleType>
-      </xsd:attribute>
-
-      <!--Scale: Conflation of CALS hscale and vscale-->
-      <xsd:attribute name='scale' type='xsd:string'/>
-
-      <!--Scalefit: Same as CALS scalefit-->
-      <xsd:attribute name='scalefit' type='db:yesorno.attvals'/>
-
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:objectdata.attrib'/>
-      <!-- %local.videodata.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='audiodata.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='audiodata'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:objectdata.attrib'/>
-      <!-- %local.audiodata.attrib; -->
-      <xsd:attributeGroup ref='db:audiodata.role.attrib'/>
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='imagedata.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='imagedata'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <!--Width: Same as CALS reprowid (desired width)-->
-      <xsd:attribute name='width' type='xsd:string'/>
-
-      <!--Depth: Same as CALS reprodep (desired depth)-->
-      <xsd:attribute name='depth' type='xsd:string'/>
-
-      <!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
-          application-specific-->
-      <xsd:attribute name='align'>
-        <xsd:simpleType>
-          <xsd:restriction base='xsd:string'>
-            <xsd:enumeration value='left'/>
-            <xsd:enumeration value='right'/>
-            <xsd:enumeration value='center'/>
-          </xsd:restriction>
-        </xsd:simpleType>
-      </xsd:attribute>
-
-      <!--Scale: Conflation of CALS hscale and vscale-->
-      <xsd:attribute name='scale' type='xsd:string'/>
-
-      <!--Scalefit: Same as CALS scalefit-->
-      <xsd:attribute name='scalefit' type='db:yesorno.attvals'/>
-
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:objectdata.attrib'/>
-      <xsd:attributeGroup ref='db:imagedata.role.attrib'/>
-      <!-- %local.videodata.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='caption.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='caption'>
-  <xsd:sequence>
-    <xsd:group ref='db:textobject.mix' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <!-- %local.caption.attrib; -->
-  <xsd:attributeGroup ref='db:caption.role.attrib'/>
-</xsd:complexType>
-
-<xsd:attributeGroup name='mediaobjectco.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='mediaobjectco'>
-  <xsd:sequence>
-    <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:imageobjectco'/>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:imageobjectco'/>
-      <xsd:element ref='db:textobject'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (objectinfo?, imageobjectco,
-                          (imageobjectco|textobject)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:mediaobjectco.role.attrib'/>
-  <!-- %local.mediaobjectco.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='imageobjectco.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='imageobjectco'>
-  <xsd:sequence>
-    <xsd:element ref='db:areaspec'/>
-    <xsd:element ref='db:imageobject'/>
-    <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (areaspec, imageobject, calloutlist*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:imageobjectco.role.attrib'/>
-  <!-- %local.imageobjectco.attrib; -->
-</xsd:complexType>
-
-<!-- Equations ........................ -->
-
-<!-- This PE provides a mechanism for replacing equation content, -->
-<!-- perhaps adding a new or different model (e.g., MathML) -->
-
-<xsd:group name='equation.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:alt' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:mediaobject' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (alt?, (graphic+|mediaobject+)) -->
-</xsd:group>
-
-<xsd:group name='inlineequation.content'>
-  <xsd:sequence>
-    <xsd:element ref='db:alt' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:inlinemediaobject' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (alt?, (graphic+|inlinemediaobject+)) -->
-</xsd:group>
-
-<xsd:attributeGroup name='equation.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='equation'>
-  <xsd:sequence>
-    <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:informalequation'/>
-      <xsd:group ref='db:equation.content'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((%formalobject.title.content;)?, (informalequation |
-               %equation.content;)) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:equation.role.attrib'/>
-  <!-- %local.equation.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='informalequation.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='informalequation'>
-  <xsd:sequence>
-    <xsd:group ref='db:equation.content'/>
-  </xsd:sequence>
-  <!-- (%equation.content;)  -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:informalequation.role.attrib'/>
-  <!-- %local.informalequation.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='inlineequation.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='inlineequation'>
-  <xsd:sequence>
-    <xsd:group ref='db:inlineequation.content'/>
-  </xsd:sequence>
-  <!-- (%inlineequation.content;) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:inlineequation.role.attrib'/>
-  <!-- %local.inlineequation.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='alt.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='alt'>
-  <!-- (#PCDATA) -->
-  <xsd:simpleContent>
-    <xsd:extension base='xsd:string'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:alt.role.attrib'/>
-      <!-- %local.alt.attrib; -->
-    </xsd:extension>
-  </xsd:simpleContent>
-</xsd:complexType>
-
-<!-- Tables ........................... -->
-
-<xsd:complexType name='table'>
-  <xsd:complexContent>
-    <xsd:extension base='tbl:tableType'>
-      <xsd:sequence>
-        <xsd:group ref='db:formalobject.title.content'/>
-        <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='1'/>
-        <xsd:choice>
-          <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
-          <xsd:element ref='db:mediaobject' minOccurs='1' maxOccurs='unbounded'/>
-          <xsd:element ref='tbl:tgroup' minOccurs='1' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <!-- % tbl.table.mdl
-             "((%formalobject.title.content;),
-              (%ndxterm.class;)*,
-              (graphic+|tgroup+))"-->
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:complexType name='informaltable'>
-  <xsd:complexContent>
-    <xsd:extension base='tbl:tableType'>
-      <xsd:choice>
-        <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='db:mediaobject' minOccurs='1' maxOccurs='unbounded'/>
-        <xsd:element ref='tbl:tgroup' minOccurs='1' maxOccurs='unbounded'/>
-      </xsd:choice>
-    </xsd:extension>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- Synopses ............................................................. -->
-
-<!-- Synopsis ......................... -->
-
-<xsd:attributeGroup name='synopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='synopsis' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-    <xsd:element ref='db:graphic'/>
-    <xsd:element ref='db:mediaobject'/>
-    <xsd:element ref='db:lineannotation'/>
-    <xsd:element ref='db:co'/>
-  </xsd:choice>
-  <!-- (%para.char.mix; | graphic | mediaobject | lineannotation | co)* -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:synopsis.role.attrib'/>
-  <!-- %local.synopsis.attrib; -->
-</xsd:complexType>
-
-<!-- LineAnnotation (defined in the Inlines section, below)-->
-
-<!-- CmdSynopsis ...................... -->
-
-<xsd:attributeGroup name='cmdsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='cmdsynopsis'>
-  <xsd:sequence>
-    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-      <xsd:element ref='db:command'/>
-      <xsd:element ref='db:arg'/>
-      <xsd:element ref='db:group'/>
-      <xsd:element ref='db:sbr'/>
-    </xsd:choice>
-    <xsd:element ref='db:synopfragment' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- ((command | arg | group | sbr)+, synopfragment*) -->
-
-  <!-- Sepchar: Character that should separate command and all
-       top-level arguments; alternate value might be e.g., &Delta; -->
-  <xsd:attribute name='sepchar' type='xsd:string' default=' '/>
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attribute name='cmdlength' type='xsd:integer'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:cmdsynopsis.role.attrib'/>
-  <!-- %local.cmdsynopsis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='arg.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='arg' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:element ref='db:arg'/>
-    <xsd:element ref='db:group'/>
-    <xsd:element ref='db:option'/>
-    <xsd:element ref='db:synopfragmentref'/>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:sbr'/>
-  </xsd:choice>
-  <!-- (#PCDATA
-               | arg
-               | group
-               | option
-               | synopfragmentref
-               | replaceable
-               | sbr)* -->
-
-  <!-- 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) -->
-  <xsd:attribute name='choice' default='opt'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='opt'/>
-        <xsd:enumeration value='req'/>
-        <xsd:enumeration value='plain'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
-       ellipsis; the default), or Repeat (e.g. arg...) -->
-  <xsd:attribute name='rep' default='norepeat'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='norepeat'/>
-        <xsd:enumeration value='repeat'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:arg.role.attrib'/>
-  <!-- %local.arg.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='group.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='group'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:arg'/>
-    <xsd:element ref='db:group'/>
-    <xsd:element ref='db:option'/>
-    <xsd:element ref='db:synopfragmentref'/>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:sbr'/>
-  </xsd:choice>
-  <!-- ((arg | group | option | synopfragmentref
-               | replaceable | sbr)+) -->
-
-  <!-- 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) -->
-  <xsd:attribute name='choice' default='opt'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='opt'/>
-        <xsd:enumeration value='req'/>
-        <xsd:enumeration value='plain'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
-       ellipsis; the default), or Repeat (e.g. arg...) -->
-  <xsd:attribute name='rep' default='norepeat'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='norepeat'/>
-        <xsd:enumeration value='repeat'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:group.role.attrib'/>
-  <!-- %local.group.attrib; -->
-</xsd:complexType>
-
-<!-- Synopsis break -->
-<xsd:attributeGroup name='sbr.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sbr'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:sbr.role.attrib'/>
-      <!-- %local.sbr.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='synopfragmentref.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='synopfragmentref' mixed='true'>
-  <!-- (#PCDATA) -->
-  <xsd:simpleContent>
-    <xsd:extension base='xsd:string'>
-      <!-- to SynopFragment of complex synopsis
-           material for separate referencing -->
-      <xsd:attributeGroup ref='db:linkendreq.attrib'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:synopfragmentref.role.attrib'/>
-      <!-- %local.synopfragmentref.attrib; -->
-    </xsd:extension>
-  </xsd:simpleContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='synopfragment.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='synopfragment'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:arg'/>
-    <xsd:element ref='db:group'/>
-  </xsd:choice>
-  <!-- ((arg | group)+) -->
-
-  <xsd:attributeGroup ref='db:idreq.common.attrib'/>
-  <xsd:attributeGroup ref='db:synopfragment.role.attrib'/>
-  <!-- %local.synopfragment.attrib; -->
-</xsd:complexType>
-
-<!-- Command (defined in the Inlines section, below)-->
-<!-- Option (defined in the Inlines section, below)-->
-<!-- Replaceable (defined in the Inlines section, below)-->
-
-<!-- FuncSynopsis ..................... -->
-
-<xsd:attributeGroup name='funcsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='funcsynopsis'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:funcsynopsisinfo'/>
-    <xsd:element ref='db:funcprototype'/>
-  </xsd:choice>
-  <!-- ((funcsynopsisinfo | funcprototype)+) -->
-
-  <xsd:attributeGroup ref='db:label.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:funcsynopsis.role.attrib'/>
-  <!-- %local.funcsynopsis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='funcsynopsisinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='funcsynopsisinfo' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-    <xsd:element ref='db:lineannotation'/>
-  </xsd:choice>
-  <!-- (%cptr.char.mix; | lineannotation)* -->
-
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:funcsynopsisinfo.role.attrib'/>
-  <!-- %local.funcsynopsisinfo.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='funcprototype.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='funcprototype'>
-  <xsd:sequence>
-    <xsd:element ref='db:funcdef'/>
-    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-      <xsd:element ref='db:void'/>
-      <xsd:element ref='db:varargs'/>
-      <xsd:element ref='db:paramdef'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (funcdef, (void | varargs | paramdef+)) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:funcprototype.role.attrib'/>
-  <!-- %local.funcprototype.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='funcdef.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='funcdef' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:function'/>
-  </xsd:choice>
-  <!-- (#PCDATA
-               | replaceable
-               | function)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:funcdef.role.attrib'/>
-  <!-- %local.funcdef.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='void.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='void'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:void.role.attrib'/>
-      <!-- %local.void.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='varargs.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='varargs'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:varargs.role.attrib'/>
-      <!-- %local.varargs.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- 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. -->
-
-<xsd:attributeGroup name='paramdef.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='paramdef' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:parameter'/>
-    <xsd:element ref='db:funcparams'/>
-  </xsd:choice>
-  <!-- (#PCDATA
-               | replaceable
-               | parameter
-               | funcparams)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:paramdef.role.attrib'/>
-  <!-- %local.paramdef.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='funcparams.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='funcparams' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:funcparams.role.attrib'/>
-  <!-- %local.funcparams.attrib; -->
-</xsd:complexType>
-
-<!-- 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)-->
-
-<!-- ClassSynopsis ..................... -->
-
-<xsd:attributeGroup name='classsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='classsynopsis'>
-  <xsd:sequence>
-    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-      <xsd:element ref='db:ooclass'/>
-      <xsd:element ref='db:oointerface'/>
-      <xsd:element ref='db:ooexception'/>
-    </xsd:choice>
-    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-      <xsd:element ref='db:classsynopsisinfo'/>
-      <xsd:element ref='db:fieldsynopsis'/>
-      <xsd:group ref='db:method.synop.class'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- ((ooclass|oointerface|ooexception)+,
-                         (classsynopsisinfo
-                          |fieldsynopsis|%method.synop.class;)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:classsynopsis.role.attrib'/>
-  <!-- %local.classsynopsis.attrib; -->
-  <xsd:attribute name='language' type='xsd:string'/>
-  <xsd:attribute name='class' default='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='class'/>
-        <xsd:enumeration value='interface'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-</xsd:complexType>
-
-<xsd:attributeGroup name='classsynopsisinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='classsynopsisinfo' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='1'>
-    <xsd:group ref='db:cptr.char.mix'/>
-    <xsd:element ref='db:lineannotation'/>
-  </xsd:choice>
-  <!-- (%cptr.char.mix; | lineannotation)* -->
-
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:classsynopsisinfo.role.attrib'/>
-  <!-- %local.classsynopsisinfo.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='ooclass.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='ooclass'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:classname'/>
-  </xsd:sequence>
-  <!-- (modifier*, classname) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:ooclass.role.attrib'/>
-  <!-- %local.ooclass.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='oointerface.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='oointerface'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:interfacename'/>
-  </xsd:sequence>
-  <!-- (modifier*, interfacename) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:oointerface.role.attrib'/>
-  <!-- %local.oointerface.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='ooexception.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='ooexception'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:exceptionname'/>
-  </xsd:sequence>
-  <!-- (modifier*, exceptionname) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:ooexception.role.attrib'/>
-  <!-- %local.ooexception.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='modifier.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='modifier'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:modifier.role.attrib'/>
-  <!-- %local.modifier.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='interfacename.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='interfacename'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:interfacename.role.attrib'/>
-  <!-- %local.interfacename.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='exceptionname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='exceptionname'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:exceptionname.role.attrib'/>
-  <!-- %local.exceptionname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='fieldsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='fieldsynopsis'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:type' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:varname'/>
-    <xsd:element ref='db:initializer' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-  <!-- (modifier*, type?, varname, initializer?) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:fieldsynopsis.role.attrib'/>
-  <!-- %local.fieldsynopsis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='initializer.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='initializer'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:initializer.role.attrib'/>
-  <!-- %local.initializer.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='constructorsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='constructorsynopsis'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:methodname' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:methodparam' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:void'/>
-    </xsd:choice>
-    <xsd:element ref='db:exceptionname' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (modifier*,
-                               methodname?,
-                               (methodparam+|void),
-                               exceptionname*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:constructorsynopsis.role.attrib'/>
-  <!-- %local.constructorsynopsis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='destructorsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='destructorsynopsis'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:methodname' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:methodparam' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:void'/>
-    </xsd:choice>
-    <xsd:element ref='db:exceptionname' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (modifier*,
-                              methodname?,
-                              (methodparam+|void),
-                              exceptionname*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:destructorsynopsis.role.attrib'/>
-  <!-- %local.destructorsynopsis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='methodsynopsis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='methodsynopsis'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice minOccurs='0' maxOccurs='1'>
-      <xsd:element ref='db:type'/>
-      <xsd:element ref='db:void'/>
-    </xsd:choice>
-    <xsd:element ref='db:methodname' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:element ref='db:methodparam' minOccurs='1' maxOccurs='unbounded'/>
-      <xsd:element ref='db:void'/>
-    </xsd:choice>
-    <xsd:element ref='db:exceptionname' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (modifier*,
-                          (type|void)?,
-                          methodname,
-                          (methodparam+|void),
-                          exceptionname*,
-                          modifier*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:methodsynopsis.role.attrib'/>
-  <!-- %local.methodsynopsis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='methodname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='methodname'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:methodname.role.attrib'/>
-  <!-- %local.methodname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='methodparam.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='methodparam'>
-  <xsd:sequence>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:type' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice>
-      <xsd:sequence>
-        <xsd:element ref='db:parameter'/>
-        <xsd:element ref='db:initializer' minOccurs='0' maxOccurs='1'/>
-      </xsd:sequence>
-      <xsd:element ref='db:funcparams'/>
-    </xsd:choice>
-    <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (modifier*,
-                       type?,
-                       ((parameter,initializer?)|funcparams),
-                       modifier*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:methodparam.role.attrib'/>
-  <!-- %local.methodparam.attrib; -->
-
-  <!-- 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) -->
-  <xsd:attribute name='choice' default='opt'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='opt'/>
-        <xsd:enumeration value='req'/>
-        <xsd:enumeration value='plain'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
-       ellipsis; the default), or Repeat (e.g. arg...) -->
-  <xsd:attribute name='rep' default='norepeat'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='norepeat'/>
-        <xsd:enumeration value='repeat'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-</xsd:complexType>
-
-<!-- ...................................................................... -->
-<!-- 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 ............................ -->
-
-<xsd:attributeGroup name='ackno.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='ackno' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:ackno.role.attrib'/>
-  <!-- %local.ackno.attrib; -->
-</xsd:complexType>
-
-<!-- Address .......................... -->
-
-<xsd:attributeGroup name='address.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='address' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:person.ident.mix'/>
-    <xsd:element ref='db:street'/>
-    <xsd:element ref='db:pob'/>
-    <xsd:element ref='db:postcode'/>
-    <xsd:element ref='db:city'/>
-    <xsd:element ref='db:state'/>
-    <xsd:element ref='db:country'/>
-    <xsd:element ref='db:phone'/>
-    <xsd:element ref='db:fax'/>
-    <xsd:element ref='db:email'/>
-    <xsd:element ref='db:otheraddr'/>
-  </xsd:choice>
-  <!-- (#PCDATA|%person.ident.mix;
-               |street|pob|postcode|city|state|country|phone
-               |fax|email|otheraddr)* -->
-
-  <xsd:attributeGroup ref='db:linespecific.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:address.role.attrib'/>
-  <!-- %local.address.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='street.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='street' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:street.role.attrib'/>
-  <!-- %local.street.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='pob.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='pob' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:pob.role.attrib'/>
-  <!-- %local.pob.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='postcode.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='postcode' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:postcode.role.attrib'/>
-  <!-- %local.postcode.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='city.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='city' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:city.role.attrib'/>
-  <!-- %local.city.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='state.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='state' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:state.role.attrib'/>
-  <!-- %local.state.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='country.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='country' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:country.role.attrib'/>
-  <!-- %local.country.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='phone.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='phone' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:phone.role.attrib'/>
-  <!-- %local.phone.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='fax.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='fax' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:fax.role.attrib'/>
-  <!-- %local.fax.attrib; -->
-</xsd:complexType>
-
-<!-- Email (defined in the Inlines section, below)-->
-
-<xsd:attributeGroup name='otheraddr.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='otheraddr' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:otheraddr.role.attrib'/>
-  <!-- %local.otheraddr.attrib; -->
-</xsd:complexType>
-
-<!-- Affiliation ...................... -->
-
-<xsd:attributeGroup name='affiliation.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='affiliation'>
-  <xsd:sequence>
-    <xsd:element ref='db:shortaffil' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:jobtitle' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:orgname' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='db:orgdiv' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='db:address' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (shortaffil?, jobtitle*, orgname?, orgdiv*,
-               address*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:affiliation.role.attrib'/>
-  <!-- %local.affiliation.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='shortaffil.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='shortaffil' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:shortaffil.role.attrib'/>
-  <!-- %local.shortaffil.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='jobtitle.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='jobtitle' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-<xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:jobtitle.role.attrib'/>
-  <!-- %local.jobtitle.attrib; -->
-</xsd:complexType>
-
-<!-- OrgName (defined elsewhere in this section)-->
-
-<xsd:attributeGroup name='orgdiv.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='orgdiv' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:orgdiv.role.attrib'/>
-  <!-- %local.orgdiv.attrib; -->
-</xsd:complexType>
-
-<!-- Address (defined elsewhere in this section)-->
-
-<!-- ArtPageNums ...................... -->
-
-<xsd:attributeGroup name='artpagenums.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='artpagenums' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:artpagenums.role.attrib'/>
-  <!-- %local.artpagenums.attrib; -->
-</xsd:complexType>
-
-<!-- Author ........................... -->
-
-<xsd:attributeGroup name='author.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='author'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:person.ident.mix'/>
-  </xsd:sequence>
-  <!-- ((%person.ident.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:author.role.attrib'/>
-  <!-- %local.author.attrib; -->
-</xsd:complexType>
-<!--(see "Personal identity elements" for %person.ident.mix;)-->
-
-<!-- AuthorGroup ...................... -->
-
-<xsd:attributeGroup name='authorgroup.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='authorgroup'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:author'/>
-    <xsd:element ref='db:editor'/>
-    <xsd:element ref='db:collab'/>
-    <xsd:element ref='db:corpauthor'/>
-    <xsd:element ref='db:othercredit'/>
-  </xsd:choice>
-  <!-- ((author|editor|collab|corpauthor|othercredit)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:authorgroup.role.attrib'/>
-  <!-- %local.authorgroup.attrib; -->
-</xsd:complexType>
-
-<!-- Author (defined elsewhere in this section)-->
-<!-- Editor (defined elsewhere in this section)-->
-
-<xsd:attributeGroup name='collab.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='collab'>
-  <xsd:sequence>
-    <xsd:element ref='db:collabname'/>
-    <xsd:element ref='db:affiliation' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (collabname, affiliation*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:collab.role.attrib'/>
-  <!-- %local.collab.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='collabname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='collabname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:collabname.role.attrib'/>
-  <!-- %local.collabname.attrib; -->
-</xsd:complexType>
-
-<!-- Affiliation (defined elsewhere in this section)-->
-
-<!-- CorpAuthor (defined elsewhere in this section)-->
-<!-- OtherCredit (defined elsewhere in this section)-->
-
-<!-- AuthorInitials ................... -->
-
-<xsd:attributeGroup name='authorinitials.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='authorinitials' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:authorinitials.role.attrib'/>
-  <!-- %local.authorinitials.attrib; -->
-</xsd:complexType>
-
-<!-- ConfGroup ........................ -->
-
-<xsd:attributeGroup name='confgroup.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='confgroup'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:element ref='db:confdates'/>
-    <xsd:element ref='db:conftitle'/>
-    <xsd:element ref='db:confnum'/>
-    <xsd:element ref='db:address'/>
-    <xsd:element ref='db:confsponsor'/>
-  </xsd:choice>
-  <!-- ((confdates|conftitle|confnum|address|confsponsor)*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:confgroup.role.attrib'/>
-  <!-- %local.confgroup.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='confdates.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='confdates' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:confdates.role.attrib'/>
-  <!-- %local.confdates.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='conftitle.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='conftitle' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:conftitle.role.attrib'/>
-  <!-- %local.conftitle.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='confnum.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='confnum' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:confnum.role.attrib'/>
-  <!-- %local.confnum.attrib; -->
-</xsd:complexType>
-
-<!-- Address (defined elsewhere in this section)-->
-
-<xsd:attributeGroup name='confsponsor.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='confsponsor' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:confsponsor.role.attrib'/>
-  <!-- %local.confsponsor.attrib; -->
-</xsd:complexType>
-
-<!-- ContractNum ...................... -->
-
-<xsd:attributeGroup name='contractnum.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='contractnum' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:contractnum.role.attrib'/>
-  <!-- %local.contractnum.attrib; -->
-</xsd:complexType>
-
-<!-- ContractSponsor .................. -->
-
-<xsd:attributeGroup name='contractsponsor.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='contractsponsor' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:contractsponsor.role.attrib'/>
-  <!-- %local.contractsponsor.attrib; -->
-</xsd:complexType>
-
-<!-- Copyright ........................ -->
-
-<xsd:attributeGroup name='copyright.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='copyright'>
-  <xsd:sequence>
-    <xsd:element ref='db:year' minOccurs='1' maxOccurs='unbounded'/>
-    <xsd:element ref='db:holder' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (year+, holder*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:copyright.role.attrib'/>
-  <!-- %local.copyright.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='year.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='year' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:year.role.attrib'/>
-  <!-- %local.year.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='holder.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='holder' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:holder.role.attrib'/>
-  <!-- %local.holder.attrib; -->
-</xsd:complexType>
-
-<!-- CorpAuthor ....................... -->
-
-<xsd:attributeGroup name='corpauthor.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='corpauthor' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:corpauthor.role.attrib'/>
-  <!-- %local.corpauthor.attrib; -->
-</xsd:complexType>
-
-<!-- CorpName ......................... -->
-
-<xsd:attributeGroup name='corpname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='corpname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:corpname.role.attrib'/>
-  <!-- %local.corpname.attrib; -->
-</xsd:complexType>
-
-<!-- Date ............................. -->
-
-<xsd:attributeGroup name='date.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='date' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:date.role.attrib'/>
-  <!-- %local.date.attrib; -->
-</xsd:complexType>
-
-<!-- Edition .......................... -->
-
-<xsd:attributeGroup name='edition.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='edition' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:edition.role.attrib'/>
-  <!-- %local.edition.attrib; -->
-</xsd:complexType>
-
-<!-- Editor ........................... -->
-
-<xsd:attributeGroup name='editor.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='editor'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:person.ident.mix'/>
-  </xsd:sequence>
-  <!-- ((%person.ident.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:editor.role.attrib'/>
-  <!-- %local.editor.attrib; -->
-</xsd:complexType>
-
-<!--(see "Personal identity elements" for %person.ident.mix;)-->
-
-<!-- ISBN ............................. -->
-
-<xsd:attributeGroup name='isbn.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='isbn' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:isbn.role.attrib'/>
-  <!-- %local.isbn.attrib; -->
-</xsd:complexType>
-
-<!-- ISSN ............................. -->
-
-<xsd:attributeGroup name='issn.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='issn' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:issn.role.attrib'/>
-  <!-- %local.issn.attrib; -->
-</xsd:complexType>
-
-<!-- InvPartNumber .................... -->
-
-<xsd:attributeGroup name='invpartnumber.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='invpartnumber' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:invpartnumber.role.attrib'/>
-  <!-- %local.invpartnumber.attrib; -->
-</xsd:complexType>
-
-<!-- IssueNum ......................... -->
-
-<xsd:attributeGroup name='issuenum.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='issuenum' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:issuenum.role.attrib'/>
-  <!-- %local.issuenum.attrib; -->
-</xsd:complexType>
-
-<!-- LegalNotice ...................... -->
-
-<xsd:attributeGroup name='legalnotice.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='legalnotice'>
-  <xsd:sequence>
-    <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
-    <xsd:group ref='db:legalnotice.mix' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (title?, (%legalnotice.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:legalnotice.role.attrib'/>
-  <!-- %local.legalnotice.attrib; -->
-</xsd:complexType>
-
-<!-- ModeSpec ......................... -->
-
-<xsd:attributeGroup name='modespec.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='modespec' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <!-- Application: Type of action required for completion
-       of the links to which the ModeSpec is relevant (e.g.,
-       retrieval query) -->
-
-  <xsd:attribute name='application' type='xsd:NOTATION'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:modespec.role.attrib'/>
-  <!-- %local.modespec.attrib; -->
-</xsd:complexType>
-
-<!-- OrgName .......................... -->
-
-<xsd:attributeGroup name='orgname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='orgname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:orgname.role.attrib'/>
-  <!-- %local.orgname.attrib; -->
-</xsd:complexType>
-
-<!-- OtherCredit ...................... -->
-
-<xsd:attributeGroup name='othercredit.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='othercredit'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:person.ident.mix'/>
-  </xsd:sequence>
-  <!-- ((%person.ident.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:othercredit.role.attrib'/>
-  <!-- %local.othercredit.attrib; -->
-</xsd:complexType>
-  <!--(see "Personal identity elements" for %person.ident.mix;)-->
-
-<!-- PageNums ......................... -->
-
-<xsd:attributeGroup name='pagenums.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='pagenums' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:pagenums.role.attrib'/>
-  <!-- %local.pagenums.attrib; -->
-</xsd:complexType>
-
-<!-- Personal identity elements ....... -->
-
-<!-- These elements are used only within Author, Editor, and
-     OtherCredit. -->
-
-<xsd:attributeGroup name='contrib.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='contrib' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:contrib.role.attrib'/>
-  <!-- %local.contrib.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='firstname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='firstname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:firstname.role.attrib'/>
-  <!-- %local.firstname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='honorific.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='honorific' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:honorific.role.attrib'/>
-  <!-- %local.honorific.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='lineage.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='lineage' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:lineage.role.attrib'/>
-  <!-- %local.lineage.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='othername.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='othername' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:othername.role.attrib'/>
-  <!-- %local.othername.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='surname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='surname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:surname.role.attrib'/>
-  <!-- %local.surname.attrib; -->
-</xsd:complexType>
-
-<!-- PrintHistory ..................... -->
-
-<xsd:attributeGroup name='printhistory.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='printhistory'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.class'/>
-  </xsd:sequence>
-  <!-- ((%para.class;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:printhistory.role.attrib'/>
-  <!-- %local.printhistory.attrib; -->
-</xsd:complexType>
-
-<!-- ProductName ...................... -->
-
-<xsd:attributeGroup name='productname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='productname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- Class: More precisely identifies the item the element names -->
-  <xsd:attribute name='class' default='trade'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='service'/>
-        <xsd:enumeration value='trade'/>
-        <xsd:enumeration value='registered'/>
-        <xsd:enumeration value='copyright'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:productname.role.attrib'/>
-  <!-- %local.productname.attrib; -->
-</xsd:complexType>
-
-<!-- ProductNumber .................... -->
-
-<xsd:attributeGroup name='productnumber.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='productnumber' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:productnumber.role.attrib'/>
-  <!-- %local.productnumber.attrib; -->
-</xsd:complexType>
-
-<!-- PubDate .......................... -->
-
-<xsd:attributeGroup name='pubdate.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='pubdate' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:pubdate.role.attrib'/>
-  <!-- %local.pubdate.attrib; -->
-</xsd:complexType>
-
-<!-- Publisher ........................ -->
-
-<xsd:attributeGroup name='publisher.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='publisher'>
-  <xsd:sequence>
-    <xsd:element ref='db:publishername'/>
-    <xsd:element ref='db:address' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (publishername, address*) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:publisher.role.attrib'/>
-  <!-- %local.publisher.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='publishername.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='publishername' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:publishername.role.attrib'/>
-  <!-- %local.publishername.attrib; -->
-</xsd:complexType>
-
-<!-- Address (defined elsewhere in this section)-->
-
-<!-- PubsNumber ....................... -->
-
-<xsd:attributeGroup name='pubsnumber.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='pubsnumber' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:pubsnumber.role.attrib'/>
-  <!-- %local.pubsnumber.attrib; -->
-</xsd:complexType>
-
-<!-- ReleaseInfo ...................... -->
-
-<xsd:attributeGroup name='releaseinfo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='releaseinfo' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:releaseinfo.role.attrib'/>
-  <!-- %local.releaseinfo.attrib; -->
-</xsd:complexType>
-
-<!-- RevHistory ....................... -->
-
-<xsd:attributeGroup name='revhistory.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='revhistory'>
-  <xsd:sequence>
-    <xsd:element ref='db:revision' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:sequence>
-  <!-- (revision+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:revhistory.role.attrib'/>
-  <!-- %local.revhistory.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='revision.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='revision'>
-  <xsd:sequence>
-    <xsd:element ref='db:revnumber'/>
-    <xsd:element ref='db:date'/>
-    <xsd:element ref='db:authorinitials' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:choice minOccurs='0' maxOccurs='1'>
-      <xsd:element ref='db:revremark'/>
-      <xsd:element ref='db:revdescription'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (revnumber, date, authorinitials*,
-                    (revremark|revdescription)?) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:revision.role.attrib'/>
-  <!-- %local.revision.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='revnumber.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='revnumber' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:revnumber.role.attrib'/>
-  <!-- %local.revnumber.attrib; -->
-</xsd:complexType>
-
-<!-- Date (defined elsewhere in this section)-->
-<!-- AuthorInitials (defined elsewhere in this section)-->
-
-<xsd:attributeGroup name='revremark.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='revremark' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:revremark.role.attrib'/>
-  <!-- %local.revremark.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='revdescription.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='revdescription'>
-  <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:revdescription.mix'/>
-  </xsd:sequence>
-  <!-- ((%revdescription.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:revdescription.role.attrib'/>
-  <!-- %local.revdescription.attrib; -->
-</xsd:complexType>
-
-<!-- SeriesVolNums .................... -->
-
-<xsd:attributeGroup name='seriesvolnums.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='seriesvolnums' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seriesvolnums.role.attrib'/>
-  <!-- %local.seriesvolnums.attrib; -->
-</xsd:complexType>
-
-<!-- VolumeNum ........................ -->
-
-<xsd:attributeGroup name='volumenum.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='volumenum' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:volumenum.role.attrib'/>
-  <!-- %local.volumenum.attrib; -->
-</xsd:complexType>
-
-<!-- .................................. -->
-
-<!-- ...................................................................... -->
-<!-- Inline, link, and ubiquitous elements ................................ -->
-
-<!-- Technical and computer terms ......................................... -->
-
-<xsd:attributeGroup name='accel.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='accel' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:accel.role.attrib'/>
-  <!-- %local.accel.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='action.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='action' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:action.role.attrib'/>
-  <!-- %local.action.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='application.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='application' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:sequence>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='hardware'/>
-        <xsd:enumeration value='software'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:application.role.attrib'/>
-  <!-- %local.application.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='classname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='classname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:classname.role.attrib'/>
-  <!-- %local.classname.attrib; -->
-</xsd:complexType>
-
-<!-- CO is a callout area of the LineColumn unit type (a single character
-     position); the position is directly indicated by the location of CO. -->
-<xsd:attributeGroup name='co.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='co'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <!-- bug number/symbol override or initialization -->
-      <!-- to any related information -->
-      <xsd:attributeGroup ref='db:label.attrib'/>
-      <xsd:attributeGroup ref='db:linkends.attrib'/>
-      <xsd:attributeGroup ref='db:idreq.common.attrib'/>
-      <xsd:attributeGroup ref='db:co.role.attrib'/>
-      <!-- %local.co.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='command.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='command' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:command.role.attrib'/>
-  <!-- %local.command.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='computeroutput.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='computeroutput' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:computeroutput.role.attrib'/>
-  <!-- %local.computeroutput.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='database.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='database' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <!-- Class: Type of database the element names; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='name'/>
-        <xsd:enumeration value='table'/>
-        <xsd:enumeration value='field'/>
-        <xsd:enumeration value='key1'/>
-        <xsd:enumeration value='key2'/>
-        <xsd:enumeration value='record'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:database.role.attrib'/>
-  <!-- %local.database.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='email.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='email' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%docinfo.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:email.role.attrib'/>
-  <!-- %local.email.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='envar.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='envar' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:docinfo.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:envar.role.attrib'/>
-  <!-- %local.envar.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='errorcode.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='errorcode' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:errorcode.role.attrib'/>
-  <!-- %local.errorcode.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='errorname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='errorname' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:errorname.role.attrib'/>
-  <!-- %local.errorname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='errortype.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='errortype' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:errortype.role.attrib'/>
-  <!-- %local.errortype.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='filename.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='filename' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <!-- Class: Type of filename the element names; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='headerfile'/>
-        <xsd:enumeration value='devicefile'/>
-        <xsd:enumeration value='libraryfile'/>
-        <xsd:enumeration value='directory'/>
-        <xsd:enumeration value='symlink'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Path: Search path (possibly system-specific) in which
-       file can be found -->
-  <xsd:attribute name='path' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:filename.role.attrib'/>
-  <!-- %local.filename.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='function.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='function' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:function.role.attrib'/>
-  <!-- %local.function.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='guibutton.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='guibutton' mixed='true'>
-  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:sequence>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:guibutton.role.attrib'/>
-  <!-- %local.guibutton.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='guiicon.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='guiicon' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:accel'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:guiicon.role.attrib'/>
-  <!-- %local.guiicon.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='guilabel.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='guilabel' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:accel'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:guilabel.role.attrib'/>
-  <!-- %local.guilabel.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='guimenu.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='guimenu' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:accel'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:guimenu.role.attrib'/>
-  <!-- %local.guimenu.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='guimenuitem.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='guimenuitem' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:accel'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:guimenuitem.role.attrib'/>
-  <!-- %local.guimenuitem.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='guisubmenu.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='guisubmenu' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:accel'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:guisubmenu.role.attrib'/>
-  <!-- %local.guisubmenu.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='hardware.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='hardware' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:hardware.role.attrib'/>
-  <!-- %local.hardware.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='interface.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='interface' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:accel'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;|accel)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:interface.role.attrib'/>
-  <!-- %local.interface.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='keycap.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='keycap' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:keycap.role.attrib'/>
-  <!-- %local.keycap.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='keycode.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='keycode' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:keycode.role.attrib'/>
-  <!-- %local.keycode.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='keycombo.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='keycombo'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:keycap'/>
-    <xsd:element ref='db:keycombo'/>
-    <xsd:element ref='db:keysym'/>
-    <xsd:element ref='db:mousebutton'/>
-  </xsd:choice>
-  <!-- ((keycap|keycombo|keysym|mousebutton)+) -->
-
-  <xsd:attributeGroup ref='db:keyaction.attrib'/>
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:keycombo.role.attrib'/>
-  <!-- %local.keycombo.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='keysysm.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='keysym' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:keysysm.role.attrib'/>
-  <!-- %local.keysym.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='lineannotation.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='lineannotation' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:lineannotation.role.attrib'/>
-  <!-- %local.lineannotation.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='literal.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='literal' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:literal.role.attrib'/>
-  <!-- %local.literal.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='constant.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='constant' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:constant.role.attrib'/>
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='limit'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-</xsd:complexType>
-
-<xsd:attributeGroup name='varname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='varname' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:varname.role.attrib'/>
-  <!-- %local.varname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='markup.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='markup' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:markup.role.attrib'/>
-  <!-- %local.markup.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='medialabel.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='medialabel' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <!-- Class: Type of medium named by the element; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='cartridge'/>
-        <xsd:enumeration value='cdrom'/>
-        <xsd:enumeration value='disk'/>
-        <xsd:enumeration value='tape'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:medialabel.role.attrib'/>
-  <!-- %local.medialabel.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='menuchoice.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='menuchoice'>
-  <xsd:sequence>
-    <xsd:element ref='db:shortcut' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-      <xsd:element ref='db:guibutton'/>
-      <xsd:element ref='db:guiicon'/>
-      <xsd:element ref='db:guilabel'/>
-      <xsd:element ref='db:guimenu'/>
-      <xsd:element ref='db:guimenuitem'/>
-      <xsd:element ref='db:guisubmenu'/>
-      <xsd:element ref='db:interface'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (shortcut?, (guibutton|guiicon|guilabel
-               |guimenu|guimenuitem|guisubmenu|interface)+) -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:menuchoice.role.attrib'/>
-  <!-- %local.menuchoice.attrib; -->
-</xsd:complexType>
-
-<!-- See also KeyCombo -->
-<xsd:attributeGroup name='shortcut.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='shortcut'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:element ref='db:keycap'/>
-    <xsd:element ref='db:keycombo'/>
-    <xsd:element ref='db:keysym'/>
-    <xsd:element ref='db:mousebutton'/>
-  </xsd:choice>
-  <!-- ((keycap|keycombo|keysym|mousebutton)+) -->
-
-  <xsd:attributeGroup ref='db:keyaction.attrib'/>
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:shortcut.role.attrib'/>
-  <!-- %local.shortcut.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='mousebutton.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='mousebutton' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:mousebutton.role.attrib'/>
-  <!-- %local.mousebutton.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='msgtext.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='msgtext'>
-  <xsd:choice minOccurs='1' maxOccurs='unbounded'>
-    <xsd:group ref='db:component.mix'/>
-  </xsd:choice>
-  <!-- ((%component.mix;)+) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:msgtext.role.attrib'/>
-  <!-- %local.msgtext.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='option.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='option' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:option.role.attrib'/>
-  <!-- %local.option.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='optional.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='optional' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:optional.role.attrib'/>
-  <!-- %local.optional.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='parameter.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='parameter' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <!-- Class: Type of the Parameter; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='command'/>
-        <xsd:enumeration value='function'/>
-        <xsd:enumeration value='option'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:parameter.role.attrib'/>
-  <!-- %local.parameter.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='prompt.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='prompt' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:prompt.role.attrib'/>
-  <!-- %local.prompt.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='property.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='property' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:property.role.attrib'/>
-  <!-- %local.property.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='replaceable.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='replaceable' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:element ref='db:optional'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-  </xsd:choice>
-  <!-- (#PCDATA
-               | %link.char.class;
-               | optional
-               | %base.char.class;
-               | %other.char.class;
-               | inlinegraphic
-                | inlinemediaobject)* -->
-
-  <!-- Class: Type of information the element represents; no
-       default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='command'/>
-        <xsd:enumeration value='function'/>
-        <xsd:enumeration value='option'/>
-        <xsd:enumeration value='parameter'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:replaceable.role.attrib'/>
-  <!-- %local.replaceable.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='returnvalue.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='returnvalue' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:returnvalue.role.attrib'/>
-  <!-- %local.returnvalue.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='sgmltag.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='sgmltag' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <!-- Class: Type of SGML construct the element names; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='attribute'/>
-        <xsd:enumeration value='attvalue'/>
-        <xsd:enumeration value='element'/>
-        <xsd:enumeration value='endtag'/>
-        <xsd:enumeration value='emptytag'/>
-        <xsd:enumeration value='genentity'/>
-        <xsd:enumeration value='numcharref'/>
-        <xsd:enumeration value='paramentity'/>
-        <xsd:enumeration value='pi'/>
-        <xsd:enumeration value='xmlpi'/>
-        <xsd:enumeration value='starttag'/>
-        <xsd:enumeration value='sgmlcomment'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:sgmltag.role.attrib'/>
-  <!-- %local.sgmltag.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='structfield.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='structfield' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:structfield.role.attrib'/>
-  <!-- %local.structfield.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='structname.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='structname' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:structname.role.attrib'/>
-  <!-- %local.structname.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='symbol.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='symbol' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <!-- Class: Type of symbol; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='limit'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:symbol.role.attrib'/>
-  <!-- %local.symbol.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='systemitem.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='systemitem' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-    <xsd:element ref='db:acronym'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix; | acronym)* -->
-
-  <!-- Class: Type of system item the element names; no default -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='constant'/>
-        <xsd:enumeration value='groupname'/>
-        <xsd:enumeration value='library'/>
-        <xsd:enumeration value='macro'/>
-        <xsd:enumeration value='osname'/>
-        <xsd:enumeration value='resource'/>
-        <xsd:enumeration value='systemname'/>
-        <xsd:enumeration value='username'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:systemitem.role.attrib'/>
-  <!-- %local.systemitem.attrib; -->
-</xsd:complexType>
-
-
-<xsd:attributeGroup name='token.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='token' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:token.role.attrib'/>
-  <!-- %local.token.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='type.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='type' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:smallcptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%smallcptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:type.role.attrib'/>
-  <!-- %local.type.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='userinput.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='userinput' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:cptr.char.mix'/>
-  </xsd:choice>
-  <!-- (%cptr.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:moreinfo.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:userinput.role.attrib'/>
-  <!-- %local.userinput.attrib; -->
-</xsd:complexType>
-
-<!-- General words and phrases ............................................ -->
-
-<xsd:attributeGroup name='abbrev.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='abbrev' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:word.char.mix'/>
-  </xsd:choice>
-  <!-- (%word.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:abbrev.role.attrib'/>
-  <!-- %local.abbrev.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='acronym.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='acronym' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:word.char.mix'/>
-  </xsd:choice>
-  <!-- (%word.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:acronym.role.attrib'/>
-  <!-- %local.acronym.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='citation.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='citation' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:citation.role.attrib'/>
-  <!-- %local.citation.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='citerefentry.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='citerefentry'>
-  <xsd:sequence>
-    <xsd:element ref='db:refentrytitle'/>
-    <xsd:element ref='db:manvolnum' minOccurs='0' maxOccurs='1'/>
-  </xsd:sequence>
-  <!-- (refentrytitle, manvolnum?) -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:citerefentry.role.attrib'/>
-  <!-- %local.citerefentry.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='refentrytitle.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='refentrytitle' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:refentrytitle.role.attrib'/>
-  <!-- %local.refentrytitle.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='namvolnum.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='manvolnum' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:word.char.mix'/>
-  </xsd:choice>
-  <!-- (%word.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:namvolnum.role.attrib'/>
-  <!-- %local.manvolnum.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='citetitle.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='citetitle' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- Pubwork: Genre of published work cited; no default -->
-  <xsd:attribute name='pubwork'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='article'/>
-        <xsd:enumeration value='book'/>
-        <xsd:enumeration value='chapter'/>
-        <xsd:enumeration value='part'/>
-        <xsd:enumeration value='refentry'/>
-        <xsd:enumeration value='section'/>
-        <xsd:enumeration value='journal'/>
-        <xsd:enumeration value='series'/>
-        <xsd:enumeration value='set'/>
-        <xsd:enumeration value='manuscript'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:citetitle.role.attrib'/>
-  <!-- %local.citetitle.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='emphasis.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='emphasis' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:emphasis.role.attrib'/>
-  <!-- %local.emphasis.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='firstterm.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='firstterm' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:word.char.mix'/>
-  </xsd:choice>
-  <!-- (%word.char.mix;)* -->
-
-  <!-- to GlossEntry or other explanation -->
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:firstterm.role.attrib'/>
-  <!-- %local.firstterm.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='foreignphrase.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='foreignphrase' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:foreignphrase.role.attrib'/>
-  <!-- %local.foreignphrase.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='glossterm.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='glossterm' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- to GlossEntry if Glossterm used in text -->
-  <xsd:attributeGroup ref='db:linkend.attrib'/>
-
-  <!-- BaseForm: Provides the form of GlossTerm to be used
-       for indexing -->
-  <xsd:attribute name='baseform' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:glossterm.role.attrib'/>
-  <!-- %local.glossterm.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='phrase.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='phrase' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:phrase.role.attrib'/>
-  <!-- %local.phrase.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='quote.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='quote' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:quote.role.attrib'/>
-  <!-- %local.quote.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='ssscript.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:group name='subscriptContentModel'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:element ref='db:emphasis'/>
-    <xsd:element ref='db:replaceable'/>
-    <xsd:element ref='db:symbol'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-  </xsd:choice>
-  <!-- (#PCDATA
-               | %link.char.class;
-               | emphasis
-               | replaceable
-               | symbol
-               | inlinegraphic
-                | inlinemediaobject
-               | %base.char.class;
-               | %other.char.class;)* -->
-
-</xsd:group>
-
-<xsd:complexType name='subscript' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:subscriptContentModel'/>
-  </xsd:sequence>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:ssscript.role.attrib'/>
-  <!-- %local.ssscript.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='superscript' mixed='true'>
-  <xsd:sequence>
-    <xsd:group ref='db:subscriptContentModel'/>
-  </xsd:sequence>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:ssscript.role.attrib'/>
-  <!-- %local.ssscript.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='trademark.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='trademark' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:link.char.class'/>
-    <xsd:group ref='db:tech.char.class'/>
-    <xsd:group ref='db:base.char.class'/>
-    <xsd:group ref='db:other.char.class'/>
-    <xsd:element ref='db:inlinegraphic'/>
-    <xsd:element ref='db:inlinemediaobject'/>
-    <xsd:element ref='db:emphasis'/>
-  </xsd:choice>
-  <!-- (#PCDATA
-               | %link.char.class;
-               | %tech.char.class;
-               | %base.char.class;
-               | %other.char.class;
-               | inlinegraphic
-                | inlinemediaobject
-               | emphasis)* -->
-
-  <!-- Class: More precisely identifies the item the element names -->
-  <xsd:attribute name='class' default='trade'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='service'/>
-        <xsd:enumeration value='trade'/>
-        <xsd:enumeration value='registered'/>
-        <xsd:enumeration value='copyright'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:trademark.role.attrib'/>
-  <!-- %local.trademark.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='wordasword.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='wordasword' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:word.char.mix'/>
-  </xsd:choice>
-  <!-- (%word.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:wordasword.role.attrib'/>
-  <!-- %local.wordasword.attrib; -->
-</xsd:complexType>
-
-<!-- Links and cross-references ........................................... -->
-
-<xsd:attributeGroup name='link.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='link' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- Endterm: ID of element containing text that is to be
-       fetched from elsewhere in the document to appear as
-       the content of this element -->
-  <xsd:attribute name='endterm' type='xsd:IDREF'/>
-
-  <!-- to linked-to object -->
-  <xsd:attributeGroup ref='db:linkendreq.attrib'/>
-
-  <!-- Type: Freely assignable parameter -->
-  <xsd:attribute name='type' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:link.role.attrib'/>
-  <!-- %local.link.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='olink.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='olink' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- TargetDocEnt: Name of an entity to be the target of the link -->
-  <!-- FIXME: -->
-  <!-- targetdocent    ENTITY          #IMPLIED -->
-
-  <!-- LinkMode: ID of a ModeSpec containing instructions for
-       operating on the entity named by TargetDocEnt -->
-  <xsd:attribute name='linkmode' type='xsd:IDREF'/>
-
-  <!-- LocalInfo: Information that may be passed to ModeSpec -->
-  <xsd:attribute name='localinfo' type='xsd:string'/>
-
-  <!-- Type: Freely assignable parameter -->
-  <xsd:attribute name='type' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:olink.role.attrib'/>
-  <!-- %local.olink.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='ulink.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='ulink' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:para.char.mix'/>
-  </xsd:choice>
-  <!-- (%para.char.mix;)* -->
-
-  <!-- URL: uniform resource locator; the target of the ULink -->
-  <xsd:attribute name='url' type='xsd:string' use='required'/>
-
-  <!-- Type: Freely assignable parameter -->
-  <xsd:attribute name='type' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:ulink.role.attrib'/>
-  <!-- %local.ulink.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='footnoteref.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='footnoteref'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <!-- to footnote content supplied elsewhere -->
-      <!-- FIXME: constrain -->
-      <xsd:attributeGroup ref='db:linkendreq.attrib'/>
-
-      <xsd:attributeGroup ref='db:label.attrib'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:footnoteref.role.attrib'/>
-      <!-- %local.footnoteref.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='xref.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='xref'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-
-      <!-- Endterm: ID of element containing text that is to be
-           fetched from elsewhere in the document to appear as
-           the content of this element -->
-      <xsd:attribute name='endterm' type='xsd:IDREF'/>
-
-      <!-- to linked-to object -->
-      <xsd:attributeGroup ref='db:linkendreq.attrib'/>
-      <xsd:attributeGroup ref='db:common.attrib'/>
-      <xsd:attributeGroup ref='db:xref.role.attrib'/>
-      <!-- %local.xref.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- Ubiquitous elements .................................................. -->
-
-<xsd:attributeGroup name='anchor.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='anchor'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attributeGroup ref='db:idreq.attrib'/>
-      <xsd:attributeGroup ref='db:pagenum.attrib'/>
-      <xsd:attributeGroup ref='db:remap.attrib'/>
-      <xsd:attributeGroup ref='db:xreflabel.attrib'/>
-      <xsd:attributeGroup ref='db:revisionflag.attrib'/>
-      <xsd:attributeGroup ref='db:effectivity.attrib'/>
-      <xsd:attributeGroup ref='db:anchor.role.attrib'/>
-      <!-- %local.anchor.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:attributeGroup name='beginpage.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='beginpage'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-        <!-- PageNum: Number of page that begins at this point -->
-        <xsd:attributeGroup ref='db:pagenum.attrib'/>
-        <xsd:attributeGroup ref='db:common.attrib'/>
-        <xsd:attributeGroup ref='db:beginpage.role.attrib'/>
-        <!-- %local.beginpage.attrib; -->
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<!-- IndexTerms appear in the text flow for generating or linking an
-     index. -->
-
-<xsd:attributeGroup name='indexterm.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='indexterm'>
-  <xsd:sequence>
-    <xsd:element ref='db:primary' minOccurs='0' maxOccurs='1'/>
-    <xsd:choice minOccurs='0' maxOccurs='1'>
-      <xsd:sequence>
-        <xsd:element ref='db:secondary'/>
-        <xsd:choice minOccurs='0' maxOccurs='1'>
-          <xsd:sequence>
-            <xsd:element ref='db:tertiary'/>
-            <xsd:choice minOccurs='0' maxOccurs='1'>
-              <xsd:element ref='db:see'/>
-              <xsd:element ref='db:seealso' minOccurs='1' maxOccurs='unbounded'/>
-            </xsd:choice>
-          </xsd:sequence>
-          <xsd:element ref='db:see'/>
-          <xsd:element ref='db:seealso' minOccurs='1' maxOccurs='unbounded'/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:element ref='db:see'/>
-      <xsd:element ref='db:seealso' minOccurs='1' maxOccurs='unbounded'/>
-    </xsd:choice>
-  </xsd:sequence>
-  <!-- (primary?, ((secondary, ((tertiary, (see|seealso+)?)
-               | see | seealso+)?) | see | seealso+)?) -->
-
-  <!-- Scope: Indicates which generated indices the IndexTerm
-       should appear in: Global (whole document set), Local (this
-       document only), or All (both) -->
-  <xsd:attribute name='scope'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='all'/>
-        <xsd:enumeration value='global'/>
-        <xsd:enumeration value='local'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Significance: Whether this IndexTerm is the most pertinent
-       of its series (Preferred) or not (Normal, the default) -->
-  <xsd:attribute name='significance' default='normal'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='preferred'/>
-        <xsd:enumeration value='normal'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- Class: Indicates type of IndexTerm; default is Singular,
-       or EndOfRange if StartRef is supplied; StartOfRange value
-       must be supplied explicitly on starts of ranges -->
-  <xsd:attribute name='class'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='singular'/>
-        <xsd:enumeration value='startofrange'/>
-        <xsd:enumeration value='endofrange'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-
-  <!-- StartRef: ID of the IndexTerm that starts the indexing
-       range ended by this IndexTerm -->
-  <!-- FIXME: constrain -->
-  <xsd:attribute name='startref' type='xsd:IDREF'/>
-
-  <!-- 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 -->
-  <!-- FIXME: constrain -->
-  <xsd:attribute name='zone' type='xsd:IDREFS'/>
-  <xsd:attributeGroup ref='db:pagenum.attrib'/>
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:indexterm.role.attrib'/>
-  <!-- %local.indexterm.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='primsecter.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='primary' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- SortAs: Alternate sort string for index sorting, e.g.,
-       "fourteen" for an element containing "14" -->
-  <xsd:attribute name='sortas' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:primsecter.role.attrib'/>
-  <!-- %local.primsecter.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='secondary' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-  <!-- SortAs: Alternate sort string for index sorting, e.g.,
-       "fourteen" for an element containing "14" -->
-  <xsd:attribute name='sortas' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:primsecter.role.attrib'/>
-  <!-- %local.primsecter.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='tertiary' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <!-- SortAs: Alternate sort string for index sorting, e.g.,
-       "fourteen" for an element containing "14" -->
-  <xsd:attribute name='sortas' type='xsd:string'/>
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:primsecter.role.attrib'/>
-  <!-- %local.primsecter.attrib; -->
-</xsd:complexType>
-
-<xsd:attributeGroup name='seeseealso.role.attrib'>
-  <xsd:attributeGroup ref='db:role.attrib'/>
-</xsd:attributeGroup>
-
-<xsd:complexType name='see' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seeseealso.role.attrib'/>
-  <!-- %local.seeseealso.attrib; -->
-</xsd:complexType>
-
-<xsd:complexType name='seealso' mixed='true'>
-  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-    <xsd:group ref='db:ndxterm.char.mix'/>
-  </xsd:choice>
-  <!-- (%ndxterm.char.mix;)* -->
-
-  <xsd:attributeGroup ref='db:common.attrib'/>
-  <xsd:attributeGroup ref='db:seeseealso.role.attrib'/>
-  <!-- %local.seeseealso.attrib; -->
-</xsd:complexType>
-
-<xsd:element name='abbrev' type='db:abbrev'/>
-<xsd:element name='abstract' type='db:abstract'/>
-<xsd:element name='accel' type='db:accel'/>
-<xsd:element name='ackno' type='db:ackno'/>
-<xsd:element name='acronym' type='db:acronym'/>
-<xsd:element name='action' type='db:action'/>
-<xsd:element name='address' type='db:address'/>
-<xsd:element name='affiliation' type='db:affiliation'/>
-<xsd:element name='alt' type='db:alt'/>
-<xsd:element name='anchor' type='db:anchor'/>
-<xsd:element name='answer' type='db:answer'/>
-<xsd:element name='application' type='db:application'/>
-<xsd:element name='area' type='db:area'/>
-<xsd:element name='areaset' type='db:areaset'/>
-<xsd:element name='areaspec' type='db:areaspec'/>
-<xsd:element name='arg' type='db:arg'/>
-<xsd:element name='articleinfo' type='db:articleinfo'/>
-<xsd:element name='artpagenums' type='db:artpagenums'/>
-<xsd:element name='attribution' type='db:attribution'/>
-<xsd:element name='audiodata' type='db:audiodata'/>
-<xsd:element name='audioobject' type='db:audioobject'/>
-<xsd:element name='author' type='db:author'/>
-<xsd:element name='authorblurb' type='db:authorblurb'/>
-<xsd:element name='authorgroup' type='db:authorgroup'/>
-<xsd:element name='authorinitials' type='db:authorinitials'/>
-<xsd:element name='beginpage' type='db:beginpage'/>
-<xsd:element name='biblioentry' type='db:biblioentry'/>
-<xsd:element name='bibliomisc' type='db:bibliomisc'/>
-<xsd:element name='bibliomixed' type='db:bibliomixed'/>
-<xsd:element name='bibliomset' type='db:bibliomset'/>
-<xsd:element name='biblioset' type='db:biblioset'/>
-<xsd:element name='blockquote' type='db:blockquote'/>
-<xsd:element name='bridgehead' type='db:bridgehead'/>
-<xsd:element name='callout' type='db:callout'/>
-<xsd:element name='calloutlist' type='db:calloutlist'/>
-<xsd:element name='caption' type='db:caption'/>
-<xsd:element name='caution' type='db:admonitionType'/>
-<xsd:element name='citation' type='db:citation'/>
-<xsd:element name='citerefentry' type='db:citerefentry'/>
-<xsd:element name='citetitle' type='db:citetitle'/>
-<xsd:element name='city' type='db:city'/>
-<xsd:element name='classname' type='db:classname'/>
-<xsd:element name='classsynopsis' type='db:classsynopsis'/>
-<xsd:element name='classsynopsisinfo' type='db:classsynopsisinfo'/>
-<xsd:element name='cmdsynopsis' type='db:cmdsynopsis'/>
-<xsd:element name='co' type='db:co'/>
-<xsd:element name='collab' type='db:collab'/>
-<xsd:element name='collabname' type='db:collabname'/>
-<xsd:element name='command' type='db:command'/>
-<xsd:element name='computeroutput' type='db:computeroutput'/>
-<xsd:element name='confdates' type='db:confdates'/>
-<xsd:element name='confgroup' type='db:confgroup'/>
-<xsd:element name='confnum' type='db:confnum'/>
-<xsd:element name='confsponsor' type='db:confsponsor'/>
-<xsd:element name='conftitle' type='db:conftitle'/>
-<xsd:element name='constant' type='db:constant'/>
-<xsd:element name='constructorsynopsis' type='db:constructorsynopsis'/>
-<xsd:element name='contractnum' type='db:contractnum'/>
-<xsd:element name='contractsponsor' type='db:contractsponsor'/>
-<xsd:element name='contrib' type='db:contrib'/>
-<xsd:element name='copyright' type='db:copyright'/>
-<xsd:element name='corpauthor' type='db:corpauthor'/>
-<xsd:element name='corpname' type='db:corpname'/>
-<xsd:element name='country' type='db:country'/>
-<xsd:element name='database' type='db:database'/>
-<xsd:element name='date' type='db:date'/>
-<xsd:element name='destructorsynopsis' type='db:destructorsynopsis'/>
-<xsd:element name='edition' type='db:edition'/>
-<xsd:element name='editor' type='db:editor'/>
-<xsd:element name='email' type='db:email'/>
-<xsd:element name='emphasis' type='db:emphasis'/>
-<xsd:element name='envar' type='db:envar'/>
-<xsd:element name='epigraph' type='db:epigraph'/>
-<xsd:element name='equation' type='db:equation'/>
-<xsd:element name='errorcode' type='db:errorcode'/>
-<xsd:element name='errorname' type='db:errorname'/>
-<xsd:element name='errortype' type='db:errortype'/>
-<xsd:element name='example' type='db:example'/>
-<xsd:element name='exceptionname' type='db:exceptionname'/>
-<xsd:element name='fax' type='db:fax'/>
-<xsd:element name='fieldsynopsis' type='db:fieldsynopsis'/>
-<xsd:element name='figure' type='db:figure'/>
-<xsd:element name='filename' type='db:filename'/>
-<xsd:element name='firstname' type='db:firstname'/>
-<xsd:element name='firstterm' type='db:firstterm'/>
-<xsd:element name='footnote' type='db:footnote'/>
-<xsd:element name='footnoteref' type='db:footnoteref'/>
-<xsd:element name='foreignphrase' type='db:foreignphrase'/>
-<xsd:element name='formalpara' type='db:formalpara'/>
-<xsd:element name='funcdef' type='db:funcdef'/>
-<xsd:element name='funcparams' type='db:funcparams'/>
-<xsd:element name='funcprototype' type='db:funcprototype'/>
-<xsd:element name='funcsynopsis' type='db:funcsynopsis'/>
-<xsd:element name='funcsynopsisinfo' type='db:funcsynopsisinfo'/>
-<xsd:element name='function' type='db:function'/>
-<xsd:element name='glossdef' type='db:glossdef'/>
-<xsd:element name='glossentry' type='db:glossentry'/>
-<xsd:element name='glosslist' type='db:glosslist'/>
-<xsd:element name='glosssee' type='db:glosssee'/>
-<xsd:element name='glossseealso' type='db:glossseealso'/>
-<xsd:element name='glossterm' type='db:glossterm'/>
-<xsd:element name='graphic' type='db:graphic'/>
-<xsd:element name='graphicco' type='db:graphicco'/>
-<xsd:element name='group' type='db:group'/>
-<xsd:element name='guibutton' type='db:guibutton'/>
-<xsd:element name='guiicon' type='db:guiicon'/>
-<xsd:element name='guilabel' type='db:guilabel'/>
-<xsd:element name='guimenu' type='db:guimenu'/>
-<xsd:element name='guimenuitem' type='db:guimenuitem'/>
-<xsd:element name='guisubmenu' type='db:guisubmenu'/>
-<xsd:element name='hardware' type='db:hardware'/>
-<xsd:element name='highlights' type='db:highlights'/>
-<xsd:element name='holder' type='db:holder'/>
-<xsd:element name='honorific' type='db:honorific'/>
-<xsd:element name='imagedata' type='db:imagedata'/>
-<xsd:element name='imageobject' type='db:imageobject'/>
-<xsd:element name='imageobjectco' type='db:imageobjectco'/>
-<xsd:element name='important' type='db:admonitionType'/>
-<xsd:element name='indexterm' type='db:indexterm'/>
-<xsd:element name='informalequation' type='db:informalequation'/>
-<xsd:element name='informalexample' type='db:informalexample'/>
-<xsd:element name='informalfigure' type='db:informalfigure'/>
-<xsd:element name='informaltable' type='db:informaltable'/>
-<xsd:element name='initializer' type='db:initializer'/>
-<xsd:element name='inlineequation' type='db:inlineequation'/>
-<xsd:element name='inlinegraphic' type='db:inlinegraphic'/>
-<xsd:element name='inlinemediaobject' type='db:inlinemediaobject'/>
-<xsd:element name='interface' type='db:interface'/>
-<xsd:element name='interfacename' type='db:interfacename'/>
-<xsd:element name='invpartnumber' type='db:invpartnumber'/>
-<xsd:element name='isbn' type='db:isbn'/>
-<xsd:element name='issn' type='db:issn'/>
-<xsd:element name='issuenum' type='db:issuenum'/>
-<xsd:element name='itemizedlist' type='db:itemizedlist'/>
-<xsd:element name='itermset' type='db:itermset'/>
-<xsd:element name='jobtitle' type='db:jobtitle'/>
-<xsd:element name='keycap' type='db:keycap'/>
-<xsd:element name='keycode' type='db:keycode'/>
-<xsd:element name='keycombo' type='db:keycombo'/>
-<xsd:element name='keysym' type='db:keysym'/>
-<xsd:element name='keyword' type='db:keyword'/>
-<xsd:element name='keywordset' type='db:keywordset'/>
-<xsd:element name='label' type='db:label'/>
-<xsd:element name='legalnotice' type='db:legalnotice'/>
-<xsd:element name='lineage' type='db:lineage'/>
-<xsd:element name='lineannotation' type='db:lineannotation'/>
-<xsd:element name='link' type='db:link'/>
-<xsd:element name='listitem' type='db:listitem'/>
-<xsd:element name='literal' type='db:literal'/>
-<xsd:element name='literallayout' type='db:literallayout'/>
-<xsd:element name='manvolnum' type='db:manvolnum'/>
-<xsd:element name='markup' type='db:markup'/>
-<xsd:element name='medialabel' type='db:medialabel'/>
-<xsd:element name='mediaobject' type='db:mediaobject'/>
-<xsd:element name='mediaobjectco' type='db:mediaobjectco'/>
-<xsd:element name='member' type='db:member'/>
-<xsd:element name='menuchoice' type='db:menuchoice'/>
-<xsd:element name='methodname' type='db:methodname'/>
-<xsd:element name='methodparam' type='db:methodparam'/>
-<xsd:element name='methodsynopsis' type='db:methodsynopsis'/>
-<xsd:element name='modespec' type='db:modespec'/>
-<xsd:element name='modifier' type='db:modifier'/>
-<xsd:element name='mousebutton' type='db:mousebutton'/>
-<xsd:element name='msg' type='db:msg'/>
-<xsd:element name='msgaud' type='db:msgaud'/>
-<xsd:element name='msgentry' type='db:msgentry'/>
-<xsd:element name='msgexplan' type='db:msgexplan'/>
-<xsd:element name='msginfo' type='db:msginfo'/>
-<xsd:element name='msglevel' type='db:msglevel'/>
-<xsd:element name='msgmain' type='db:msgmain'/>
-<xsd:element name='msgorig' type='db:msgorig'/>
-<xsd:element name='msgrel' type='db:msgrel'/>
-<xsd:element name='msgset' type='db:msgset'/>
-<xsd:element name='msgsub' type='db:msgsub'/>
-<xsd:element name='msgtext' type='db:msgtext'/>
-<xsd:element name='note' type='db:admonitionType'/>
-<xsd:element name='objectinfo' type='db:objectinfo'/>
-<xsd:element name='olink' type='db:olink'/>
-<xsd:element name='ooclass' type='db:ooclass'/>
-<xsd:element name='ooexception' type='db:ooexception'/>
-<xsd:element name='oointerface' type='db:oointerface'/>
-<xsd:element name='option' type='db:option'/>
-<xsd:element name='optional' type='db:optional'/>
-<xsd:element name='orderedlist' type='db:orderedlist'/>
-<xsd:element name='orgdiv' type='db:orgdiv'/>
-<xsd:element name='orgname' type='db:orgname'/>
-<xsd:element name='otheraddr' type='db:otheraddr'/>
-<xsd:element name='othercredit' type='db:othercredit'/>
-<xsd:element name='othername' type='db:othername'/>
-<xsd:element name='pagenums' type='db:pagenums'/>
-<xsd:element name='para' type='db:para'/>
-<xsd:element name='paramdef' type='db:paramdef'/>
-<xsd:element name='parameter' type='db:parameter'/>
-<xsd:element name='phone' type='db:phone'/>
-<xsd:element name='phrase' type='db:phrase'/>
-<xsd:element name='pob' type='db:pob'/>
-<xsd:element name='postcode' type='db:postcode'/>
-<xsd:element name='primary' type='db:primary'/>
-<xsd:element name='printhistory' type='db:printhistory'/>
-<xsd:element name='procedure' type='db:procedure'/>
-<xsd:element name='productname' type='db:productname'/>
-<xsd:element name='productnumber' type='db:productnumber'/>
-<xsd:element name='programlisting' type='db:programlisting'/>
-<xsd:element name='programlistingco' type='db:programlistingco'/>
-<xsd:element name='prompt' type='db:prompt'/>
-<xsd:element name='property' type='db:property'/>
-<xsd:element name='pubdate' type='db:pubdate'/>
-<xsd:element name='publisher' type='db:publisher'/>
-<xsd:element name='publishername' type='db:publishername'/>
-<xsd:element name='pubsnumber' type='db:pubsnumber'/>
-<xsd:element name='qandadiv' type='db:qandadiv'/>
-<xsd:element name='qandaentry' type='db:qandaentry'/>
-<xsd:element name='qandaset' type='db:qandaset'/>
-<xsd:element name='question' type='db:question'/>
-<xsd:element name='quote' type='db:quote'/>
-<xsd:element name='refentrytitle' type='db:refentrytitle'/>
-<xsd:element name='releaseinfo' type='db:releaseinfo'/>
-<xsd:element name='remark' type='db:remark'/>
-<xsd:element name='replaceable' type='db:replaceable'/>
-<xsd:element name='returnvalue' type='db:returnvalue'/>
-<xsd:element name='revdescription' type='db:revdescription'/>
-<xsd:element name='revhistory' type='db:revhistory'/>
-<xsd:element name='revision' type='db:revision'/>
-<xsd:element name='revnumber' type='db:revnumber'/>
-<xsd:element name='revremark' type='db:revremark'/>
-<xsd:element name='sbr' type='db:sbr'/>
-<xsd:element name='screen' type='db:screen'/>
-<xsd:element name='screenco' type='db:screenco'/>
-<xsd:element name='screeninfo' type='db:screeninfo'/>
-<xsd:element name='screenshot' type='db:screenshot'/>
-<xsd:element name='secondary' type='db:secondary'/>
-<xsd:element name='see' type='db:see'/>
-<xsd:element name='seealso' type='db:seealso'/>
-<xsd:element name='seg' type='db:seg'/>
-<xsd:element name='seglistitem' type='db:seglistitem'/>
-<xsd:element name='segmentedlist' type='db:segmentedlist'/>
-<xsd:element name='segtitle' type='db:segtitle'/>
-<xsd:element name='seriesvolnums' type='db:seriesvolnums'/>
-<xsd:element name='sgmltag' type='db:sgmltag'/>
-<xsd:element name='shortaffil' type='db:shortaffil'/>
-<xsd:element name='shortcut' type='db:shortcut'/>
-<xsd:element name='sidebar' type='db:sidebar'/>
-<xsd:element name='sidebarinfo' type='db:sidebarinfo'/>
-<xsd:element name='simpara' type='db:simpara'/>
-<xsd:element name='simplelist' type='db:simplelist'/>
-<xsd:element name='simplemsgentry' type='db:simplemsgentry'/>
-<xsd:element name='state' type='db:state'/>
-<xsd:element name='step' type='db:step'/>
-<xsd:element name='street' type='db:street'/>
-<xsd:element name='structfield' type='db:structfield'/>
-<xsd:element name='structname' type='db:structname'/>
-<xsd:element name='subject' type='db:subject'/>
-<xsd:element name='subjectset' type='db:subjectset'/>
-<xsd:element name='subjectterm' type='db:subjectterm'/>
-<xsd:element name='subscript' type='db:subscript'/>
-<xsd:element name='substeps' type='db:substeps'/>
-<xsd:element name='subtitle' type='db:subtitle'/>
-<xsd:element name='superscript' type='db:superscript'/>
-<xsd:element name='surname' type='db:surname'/>
-<xsd:element name='symbol' type='db:symbol'/>
-<xsd:element name='synopfragment' type='db:synopfragment'/>
-<xsd:element name='synopfragmentref' type='db:synopfragmentref'/>
-<xsd:element name='synopsis' type='db:synopsis'/>
-<xsd:element name='systemitem' type='db:systemitem'/>
-<xsd:element name='table' type='db:table'/>
-<xsd:element name='term' type='db:term'/>
-<xsd:element name='tertiary' type='db:tertiary'/>
-<xsd:element name='textobject' type='db:textobject'/>
-<xsd:element name='tip' type='db:admonitionType'/>
-<xsd:element name='title' type='db:title'/>
-<xsd:element name='titleabbrev' type='db:titleabbrev'/>
-<xsd:element name='token' type='db:token'/>
-<xsd:element name='trademark' type='db:trademark'/>
-<xsd:element name='type' type='db:type'/>
-<xsd:element name='ulink' type='db:ulink'/>
-<xsd:element name='userinput' type='db:userinput'/>
-<xsd:element name='varargs' type='db:varargs'/>
-<xsd:element name='variablelist' type='db:variablelist'/>
-<xsd:element name='varlistentry' type='db:varlistentry'/>
-<xsd:element name='varname' type='db:varname'/>
-<xsd:element name='videodata' type='db:videodata'/>
-<xsd:element name='videoobject' type='db:videoobject'/>
-<xsd:element name='void' type='db:void'/>
-<xsd:element name='volumenum' type='db:volumenum'/>
-<xsd:element name='warning' type='db:admonitionType'/>
-<xsd:element name='wordasword' type='db:wordasword'/>
-<xsd:element name='xref' type='db:xref'/>
-<xsd:element name='year' type='db:year'/>
-
-</xsd:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
+  <xs:include schemaLocation="calstbl.xsd"/>
+  <xs:simpleType name="yesorno.attvals">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:group name="ndxterm.class">
+    <xs:sequence>
+      <xs:element ref="indexterm"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="list.class">
+    <xs:choice>
+      <xs:element ref="calloutlist"/>
+      <xs:element ref="glosslist"/>
+      <xs:element ref="itemizedlist"/>
+      <xs:element ref="orderedlist"/>
+      <xs:element ref="segmentedlist"/>
+      <xs:element ref="simplelist"/>
+      <xs:element ref="variablelist"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="admon.class">
+    <xs:choice>
+      <xs:element ref="caution"/>
+      <xs:element ref="important"/>
+      <xs:element ref="note"/>
+      <xs:element ref="tip"/>
+      <xs:element ref="warning"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="linespecific.class">
+    <xs:choice>
+      <xs:element ref="literallayout"/>
+      <xs:element ref="programlisting"/>
+      <xs:element ref="programlistingco"/>
+      <xs:element ref="screen"/>
+      <xs:element ref="screenco"/>
+      <xs:element ref="screenshot"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="method.synop.class">
+    <xs:choice>
+      <xs:element ref="constructorsynopsis"/>
+      <xs:element ref="destructorsynopsis"/>
+      <xs:element ref="methodsynopsis"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="synop.class">
+    <xs:choice>
+      <xs:element ref="synopsis"/>
+      <xs:element ref="cmdsynopsis"/>
+      <xs:element ref="funcsynopsis"/>
+      <xs:element ref="classsynopsis"/>
+      <xs:element ref="fieldsynopsis"/>
+      <xs:group ref="method.synop.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="para.class">
+    <xs:choice>
+      <xs:element ref="formalpara"/>
+      <xs:element ref="para"/>
+      <xs:element ref="simpara"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="informal.class">
+    <xs:choice>
+      <xs:element ref="address"/>
+      <xs:element ref="blockquote"/>
+      <xs:element ref="graphic"/>
+      <xs:element ref="graphicco"/>
+      <xs:element ref="mediaobject"/>
+      <xs:element ref="mediaobjectco"/>
+      <xs:element ref="informalequation"/>
+      <xs:element ref="informalexample"/>
+      <xs:element ref="informalfigure"/>
+      <xs:element ref="informaltable"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="formal.class">
+    <xs:choice>
+      <xs:element ref="equation"/>
+      <xs:element ref="example"/>
+      <xs:element ref="figure"/>
+      <xs:element ref="table"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="compound.class">
+    <xs:choice>
+      <xs:element ref="msgset"/>
+      <xs:element ref="procedure"/>
+      <xs:element ref="sidebar"/>
+      <xs:element ref="qandaset"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="genobj.class">
+    <xs:choice>
+      <xs:element ref="anchor"/>
+      <xs:element ref="bridgehead"/>
+      <xs:element ref="remark"/>
+      <xs:element ref="highlights"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="descobj.class">
+    <xs:choice>
+      <xs:element ref="abstract"/>
+      <xs:element ref="authorblurb"/>
+      <xs:element ref="epigraph"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="xref.char.class">
+    <xs:choice>
+      <xs:element ref="footnoteref"/>
+      <xs:element ref="xref"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="gen.char.class">
+    <xs:choice>
+      <xs:element ref="abbrev"/>
+      <xs:element ref="acronym"/>
+      <xs:element ref="citation"/>
+      <xs:element ref="citerefentry"/>
+      <xs:element ref="citetitle"/>
+      <xs:element ref="emphasis"/>
+      <xs:element ref="firstterm"/>
+      <xs:element ref="foreignphrase"/>
+      <xs:element ref="glossterm"/>
+      <xs:element ref="footnote"/>
+      <xs:element ref="phrase"/>
+      <xs:element ref="quote"/>
+      <xs:element ref="trademark"/>
+      <xs:element ref="wordasword"/>
+      <xs:element ref="personname"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="link.char.class">
+    <xs:choice>
+      <xs:element ref="link"/>
+      <xs:element ref="olink"/>
+      <xs:element ref="ulink"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="tech.char.class">
+    <xs:choice>
+      <xs:element ref="action"/>
+      <xs:element ref="application"/>
+      <xs:element ref="classname"/>
+      <xs:element ref="methodname"/>
+      <xs:element ref="interfacename"/>
+      <xs:element ref="exceptionname"/>
+      <xs:element ref="ooclass"/>
+      <xs:element ref="oointerface"/>
+      <xs:element ref="ooexception"/>
+      <xs:element ref="command"/>
+      <xs:element ref="computeroutput"/>
+      <xs:element ref="database"/>
+      <xs:element ref="email"/>
+      <xs:element ref="envar"/>
+      <xs:element ref="errorcode"/>
+      <xs:element ref="errorname"/>
+      <xs:element ref="errortype"/>
+      <xs:element ref="errortext"/>
+      <xs:element ref="filename"/>
+      <xs:element ref="function"/>
+      <xs:element ref="guibutton"/>
+      <xs:element ref="guiicon"/>
+      <xs:element ref="guilabel"/>
+      <xs:element ref="guimenu"/>
+      <xs:element ref="guimenuitem"/>
+      <xs:element ref="guisubmenu"/>
+      <xs:element ref="hardware"/>
+      <xs:element ref="interface"/>
+      <xs:element ref="keycap"/>
+      <xs:element ref="keycode"/>
+      <xs:element ref="keycombo"/>
+      <xs:element ref="keysym"/>
+      <xs:element ref="literal"/>
+      <xs:element ref="constant"/>
+      <xs:element ref="markup"/>
+      <xs:element ref="medialabel"/>
+      <xs:element ref="menuchoice"/>
+      <xs:element ref="mousebutton"/>
+      <xs:element ref="option"/>
+      <xs:element ref="optional"/>
+      <xs:element ref="parameter"/>
+      <xs:element ref="prompt"/>
+      <xs:element ref="property"/>
+      <xs:element ref="replaceable"/>
+      <xs:element ref="returnvalue"/>
+      <xs:element ref="sgmltag"/>
+      <xs:element ref="structfield"/>
+      <xs:element ref="structname"/>
+      <xs:element ref="symbol"/>
+      <xs:element ref="systemitem"/>
+      <xs:element ref="token"/>
+      <xs:element ref="type"/>
+      <xs:element ref="userinput"/>
+      <xs:element ref="varname"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="base.char.class">
+    <xs:sequence>
+      <xs:element ref="anchor"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="docinfo.char.class">
+    <xs:choice>
+      <xs:element ref="author"/>
+      <xs:element ref="authorinitials"/>
+      <xs:element ref="corpauthor"/>
+      <xs:element ref="modespec"/>
+      <xs:element ref="othercredit"/>
+      <xs:element ref="productname"/>
+      <xs:element ref="productnumber"/>
+      <xs:element ref="revhistory"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="other.char.class">
+    <xs:choice>
+      <xs:element ref="remark"/>
+      <xs:element ref="subscript"/>
+      <xs:element ref="superscript"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="inlineobj.char.class">
+    <xs:choice>
+      <xs:element ref="inlinegraphic"/>
+      <xs:element ref="inlinemediaobject"/>
+      <xs:element ref="inlineequation"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="formalobject.title.content">
+    <xs:sequence>
+      <xs:element ref="title"/>
+      <xs:element minOccurs="0" ref="titleabbrev"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="component.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:group ref="compound.class"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="descobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="sidebar.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:element ref="procedure"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="qandaset.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:element ref="procedure"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="revdescription.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:element ref="procedure"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="footnote.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="example.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="highlights.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="ndxterm.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="para.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="admon.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:element ref="procedure"/>
+      <xs:element ref="sidebar"/>
+      <xs:element ref="anchor"/>
+      <xs:element ref="bridgehead"/>
+      <xs:element ref="remark"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="figure.mix">
+    <xs:choice>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="tabentry.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="para.class"/>
+      <xs:element ref="graphic"/>
+      <xs:element ref="mediaobject"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="glossdef.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="formal.class"/>
+      <xs:element ref="remark"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="legalnotice.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="para.class"/>
+      <xs:element ref="blockquote"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="textobject.mix">
+    <xs:choice>
+      <xs:group ref="list.class"/>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="para.class"/>
+      <xs:element ref="blockquote"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="mediaobject.mix">
+    <xs:choice>
+      <xs:element ref="videoobject"/>
+      <xs:element ref="audioobject"/>
+      <xs:element ref="imageobject"/>
+      <xs:element ref="textobject"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="listpreamble.mix">
+    <xs:choice>
+      <xs:group ref="admon.class"/>
+      <xs:group ref="linespecific.class"/>
+      <xs:group ref="synop.class"/>
+      <xs:group ref="para.class"/>
+      <xs:group ref="informal.class"/>
+      <xs:group ref="genobj.class"/>
+      <xs:group ref="descobj.class"/>
+      <xs:group ref="ndxterm.class"/>
+      <xs:element ref="beginpage"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="para.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:group ref="xref.char.class"/>
+        <xs:group ref="gen.char.class"/>
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="tech.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="docinfo.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:group ref="inlineobj.char.class"/>
+        <xs:group ref="synop.class"/>
+        <xs:group ref="ndxterm.class"/>
+        <xs:element ref="beginpage"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="title.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:group ref="xref.char.class"/>
+        <xs:group ref="gen.char.class"/>
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="tech.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="docinfo.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:group ref="inlineobj.char.class"/>
+        <xs:group ref="ndxterm.class"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="ndxterm.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:group ref="xref.char.class"/>
+        <xs:group ref="gen.char.class"/>
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="tech.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="docinfo.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="cptr.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="tech.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:group ref="ndxterm.class"/>
+        <xs:element ref="beginpage"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="smallcptr.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:element ref="replaceable"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:group ref="ndxterm.class"/>
+        <xs:element ref="beginpage"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="word.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:element ref="acronym"/>
+        <xs:element ref="emphasis"/>
+        <xs:element ref="trademark"/>
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:group ref="ndxterm.class"/>
+        <xs:element ref="beginpage"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="docinfo.char.mix">
+    <xs:sequence>
+      <xs:choice minOccurs="0">
+        <xs:group ref="link.char.class"/>
+        <xs:element ref="emphasis"/>
+        <xs:element ref="trademark"/>
+        <xs:element ref="replaceable"/>
+        <xs:group ref="other.char.class"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:group ref="ndxterm.class"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:attributeGroup name="arch.attrib">
+    <xs:attribute name="arch"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="condition.attrib">
+    <xs:attribute name="condition"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="conformance.attrib">
+    <xs:attribute name="conformance" type="xs:NMTOKENS"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="os.attrib">
+    <xs:attribute name="os"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revision.attrib">
+    <xs:attribute name="revision"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="security.attrib">
+    <xs:attribute name="security"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="userlevel.attrib">
+    <xs:attribute name="userlevel"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="vendor.attrib">
+    <xs:attribute name="vendor"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="effectivity.attrib">
+    <xs:attributeGroup ref="arch.attrib"/>
+    <xs:attributeGroup ref="condition.attrib"/>
+    <xs:attributeGroup ref="conformance.attrib"/>
+    <xs:attributeGroup ref="os.attrib"/>
+    <xs:attributeGroup ref="revision.attrib"/>
+    <xs:attributeGroup ref="security.attrib"/>
+    <xs:attributeGroup ref="userlevel.attrib"/>
+    <xs:attributeGroup ref="vendor.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="id.attrib">
+    <xs:attribute name="id" type="xs:ID"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="idreq.attrib">
+    <xs:attribute name="id" use="required" type="xs:ID"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="lang.attrib">
+    <xs:attribute name="lang"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="remap.attrib">
+    <xs:attribute name="remap"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="role.attrib">
+    <xs:attribute name="role"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="xreflabel.attrib">
+    <xs:attribute name="xreflabel"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revisionflag.attrib">
+    <xs:attribute name="revisionflag">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="changed"/>
+          <xs:enumeration value="added"/>
+          <xs:enumeration value="deleted"/>
+          <xs:enumeration value="off"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="common.attrib">
+    <xs:attributeGroup ref="id.attrib"/>
+    <xs:attributeGroup ref="lang.attrib"/>
+    <xs:attributeGroup ref="remap.attrib"/>
+    <xs:attributeGroup ref="xreflabel.attrib"/>
+    <xs:attributeGroup ref="revisionflag.attrib"/>
+    <xs:attributeGroup ref="effectivity.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="idreq.common.attrib">
+    <xs:attributeGroup ref="idreq.attrib"/>
+    <xs:attributeGroup ref="lang.attrib"/>
+    <xs:attributeGroup ref="remap.attrib"/>
+    <xs:attributeGroup ref="xreflabel.attrib"/>
+    <xs:attributeGroup ref="revisionflag.attrib"/>
+    <xs:attributeGroup ref="effectivity.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="graphics.attrib">
+    <xs:attribute name="entityref" type="xs:ENTITY"/>
+    <xs:attribute name="fileref"/>
+    <xs:attribute name="format" type="notation.class"/>
+    <xs:attribute name="srccredit"/>
+    <xs:attribute name="width"/>
+    <xs:attribute name="contentwidth"/>
+    <xs:attribute name="depth"/>
+    <xs:attribute name="contentdepth"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="scale"/>
+    <xs:attribute name="scalefit" type="yesorno.attvals"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keyaction.attrib">
+    <xs:attribute name="action">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="click"/>
+          <xs:enumeration value="double-click"/>
+          <xs:enumeration value="press"/>
+          <xs:enumeration value="seq"/>
+          <xs:enumeration value="simul"/>
+          <xs:enumeration value="other"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otheraction"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="label.attrib">
+    <xs:attribute name="label"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="linespecific.attrib">
+    <xs:attribute name="format" default="linespecific">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="linespecific"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="linenumbering">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="numbered"/>
+          <xs:enumeration value="unnumbered"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="linkend.attrib">
+    <xs:attribute name="linkend" type="xs:IDREF"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="linkendreq.attrib">
+    <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="linkends.attrib">
+    <xs:attribute name="linkends" type="xs:IDREFS"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="mark.attrib">
+    <xs:attribute name="mark"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="moreinfo.attrib">
+    <xs:attribute name="moreinfo" default="none">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="refentry"/>
+          <xs:enumeration value="none"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="pagenum.attrib">
+    <xs:attribute name="pagenum"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="status.attrib">
+    <xs:attribute name="status"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="width.attrib">
+    <xs:attribute name="width"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="title.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="title">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+      <xs:attributeGroup ref="title.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="title.attlist">
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="title.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="titleabbrev.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="titleabbrev">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+      <xs:attributeGroup ref="titleabbrev.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="titleabbrev.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="titleabbrev.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="subtitle.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="subtitle">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+      <xs:attributeGroup ref="subtitle.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="subtitle.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="subtitle.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:group name="person.ident.mix">
+    <xs:choice>
+      <xs:element ref="honorific"/>
+      <xs:element ref="firstname"/>
+      <xs:element ref="surname"/>
+      <xs:element ref="lineage"/>
+      <xs:element ref="othername"/>
+      <xs:element ref="affiliation"/>
+      <xs:element ref="authorblurb"/>
+      <xs:element ref="contrib"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="bibliocomponent.mix">
+    <xs:choice>
+      <xs:element ref="abbrev"/>
+      <xs:element ref="abstract"/>
+      <xs:element ref="address"/>
+      <xs:element ref="artpagenums"/>
+      <xs:element ref="author"/>
+      <xs:element ref="authorgroup"/>
+      <xs:element ref="authorinitials"/>
+      <xs:element ref="bibliomisc"/>
+      <xs:element ref="biblioset"/>
+      <xs:element ref="collab"/>
+      <xs:element ref="confgroup"/>
+      <xs:element ref="contractnum"/>
+      <xs:element ref="contractsponsor"/>
+      <xs:element ref="copyright"/>
+      <xs:element ref="corpauthor"/>
+      <xs:element ref="corpname"/>
+      <xs:element ref="date"/>
+      <xs:element ref="edition"/>
+      <xs:element ref="editor"/>
+      <xs:element ref="invpartnumber"/>
+      <xs:element ref="isbn"/>
+      <xs:element ref="issn"/>
+      <xs:element ref="issuenum"/>
+      <xs:element ref="orgname"/>
+      <xs:element ref="biblioid"/>
+      <xs:element ref="citebiblioid"/>
+      <xs:element ref="bibliosource"/>
+      <xs:element ref="bibliorelation"/>
+      <xs:element ref="bibliocoverage"/>
+      <xs:element ref="othercredit"/>
+      <xs:element ref="pagenums"/>
+      <xs:element ref="printhistory"/>
+      <xs:element ref="productname"/>
+      <xs:element ref="productnumber"/>
+      <xs:element ref="pubdate"/>
+      <xs:element ref="publisher"/>
+      <xs:element ref="publishername"/>
+      <xs:element ref="pubsnumber"/>
+      <xs:element ref="releaseinfo"/>
+      <xs:element ref="revhistory"/>
+      <xs:element ref="seriesvolnums"/>
+      <xs:element ref="subtitle"/>
+      <xs:element ref="title"/>
+      <xs:element ref="titleabbrev"/>
+      <xs:element ref="volumenum"/>
+      <xs:element ref="citetitle"/>
+      <xs:element ref="personname"/>
+      <xs:group ref="person.ident.mix"/>
+      <xs:group ref="ndxterm.class"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="info.class">
+    <xs:choice>
+      <xs:element ref="graphic"/>
+      <xs:element ref="mediaobject"/>
+      <xs:element ref="legalnotice"/>
+      <xs:element ref="modespec"/>
+      <xs:element ref="subjectset"/>
+      <xs:element ref="keywordset"/>
+      <xs:element ref="itermset"/>
+      <xs:group ref="bibliocomponent.mix"/>
+    </xs:choice>
+  </xs:group>
+  <xs:attributeGroup name="biblioentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="biblioentry">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="articleinfo"/>
+        <xs:group ref="bibliocomponent.mix"/>
+      </xs:choice>
+      <xs:attributeGroup ref="biblioentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="biblioentry.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="biblioentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliomixed.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliomixed">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="bibliocomponent.mix"/>
+        <xs:element ref="bibliomset"/>
+      </xs:choice>
+      <xs:attributeGroup ref="bibliomixed.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliomixed.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliomixed.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="articleinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="articleinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="articleinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="articleinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="articleinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="biblioset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="biblioset">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="bibliocomponent.mix"/>
+      <xs:attributeGroup ref="biblioset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="biblioset.attlist">
+    <xs:attribute name="relation"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="biblioset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliomset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliomset">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="bibliocomponent.mix"/>
+        <xs:element ref="bibliomset"/>
+      </xs:choice>
+      <xs:attributeGroup ref="bibliomset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliomset.attlist">
+    <xs:attribute name="relation"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliomset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliomisc.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliomisc">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="bibliomisc.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliomisc.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliomisc.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="subjectset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="subjectset">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="subject"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="subjectset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="subjectset.attlist">
+    <xs:attribute name="scheme" type="xs:NMTOKEN"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="subjectset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="subject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="subject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="subjectterm"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="subject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="subject.attlist">
+    <xs:attribute name="weight"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="subject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="subjectterm.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="subjectterm">
+    <xs:complexType mixed="true">
+      <xs:attributeGroup ref="subjectterm.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="subjectterm.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="subjectterm.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keywordset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="keywordset">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="keyword"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="keywordset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="keywordset.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="keywordset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keyword.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="keyword">
+    <xs:complexType mixed="true">
+      <xs:attributeGroup ref="keyword.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="keyword.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="keyword.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="itermset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="itermset">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="indexterm"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="itermset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="itermset.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="itermset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="blockinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="blockinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="blockinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="blockinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="blockinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgset">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="msgentry"/>
+          <xs:element maxOccurs="unbounded" ref="simplemsgentry"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="msgset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgset.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="msg"/>
+        <xs:element minOccurs="0" ref="msginfo"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="msgexplan"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="msgentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgentry.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="simplemsgentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="simplemsgentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="msgtext"/>
+        <xs:element maxOccurs="unbounded" ref="msgexplan"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="simplemsgentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="simplemsgentry.attlist">
+    <xs:attribute name="audience"/>
+    <xs:attribute name="level"/>
+    <xs:attribute name="origin"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="simplemsgentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msg.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msg">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:element ref="msgmain"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="msgsub"/>
+          <xs:element ref="msgrel"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="msg.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msg.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msg.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgmain.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgmain">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:element ref="msgtext"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="msgmain.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgmain.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgmain.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgsub.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgsub">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:element ref="msgtext"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="msgsub.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgsub.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgsub.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgrel.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgrel">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:element ref="msgtext"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="msgrel.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgrel.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgrel.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msginfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msginfo">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="msglevel"/>
+        <xs:element ref="msgorig"/>
+        <xs:element ref="msgaud"/>
+      </xs:choice>
+      <xs:attributeGroup ref="msginfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msginfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msginfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msglevel.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msglevel">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="msglevel.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msglevel.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msglevel.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgorig.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgorig">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="msgorig.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgorig.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgorig.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgaud.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgaud">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="msgaud.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgaud.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgaud.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgexplan.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgexplan">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="component.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="msgexplan.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgexplan.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgexplan.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="qandaset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="qandaset">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+          <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="qandaset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="qandaset.attlist">
+    <xs:attribute name="defaultlabel">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="qanda"/>
+          <xs:enumeration value="number"/>
+          <xs:enumeration value="none"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="qandaset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="qandadiv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="qandadiv">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+          <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="qandadiv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="qandadiv.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="qandadiv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="qandaentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="qandaentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:element minOccurs="0" ref="revhistory"/>
+        <xs:element ref="question"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="qandaentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="qandaentry.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="qandaentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="question.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="question">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="label"/>
+        <xs:group maxOccurs="unbounded" ref="qandaset.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="question.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="question.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="question.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="answer.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="answer">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="label"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="qandaentry"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="answer.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="answer.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="answer.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="label.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="label">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+      <xs:attributeGroup ref="label.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="label.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="label.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="procedure.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="procedure">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+        <xs:element maxOccurs="unbounded" ref="step"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="procedure.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="procedure.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="procedure.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="step.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="step">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="component.mix"/>
+            <xs:sequence minOccurs="0">
+              <xs:element ref="substeps"/>
+              <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+            </xs:sequence>
+          </xs:sequence>
+          <xs:sequence>
+            <xs:element ref="substeps"/>
+            <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+          </xs:sequence>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="step.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="step.attlist">
+    <xs:attribute name="performance" default="required">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="optional"/>
+          <xs:enumeration value="required"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="step.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="substeps.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="substeps">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="step"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="substeps.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="substeps.attlist">
+    <xs:attribute name="performance" default="required">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="optional"/>
+          <xs:enumeration value="required"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="substeps.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sidebarinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sidebarinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="sidebarinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sidebarinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sidebarinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sidebar.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sidebar">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="sidebarinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group maxOccurs="unbounded" ref="sidebar.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="sidebar.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sidebar.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sidebar.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="abstract.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="abstract">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="para.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="abstract.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="abstract.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="abstract.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="authorblurb.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="authorblurb">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="para.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="authorblurb.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="authorblurb.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="authorblurb.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="personblurb.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="personblurb">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="para.class"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="personblurb.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="personblurb.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="personblurb.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="blockquote.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="blockquote">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:element minOccurs="0" ref="attribution"/>
+        <xs:group maxOccurs="unbounded" ref="component.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="blockquote.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="blockquote.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="blockquote.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="attribution.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="attribution">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="attribution.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="attribution.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="attribution.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bridgehead.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bridgehead">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+      <xs:attributeGroup ref="bridgehead.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bridgehead.attlist">
+    <xs:attribute name="renderas">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="other"/>
+          <xs:enumeration value="sect1"/>
+          <xs:enumeration value="sect2"/>
+          <xs:enumeration value="sect3"/>
+          <xs:enumeration value="sect4"/>
+          <xs:enumeration value="sect5"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bridgehead.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="remark.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="remark">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="remark.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="remark.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="remark.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="epigraph.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="epigraph">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="attribution"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:group ref="para.class"/>
+          <xs:element ref="literallayout"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="epigraph.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="epigraph.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="epigraph.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="footnote.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="footnote">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="footnote.mix"/>
+      <xs:attributeGroup ref="footnote.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="footnote.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="footnote.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="highlights.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="highlights">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="highlights.mix"/>
+      <xs:attributeGroup ref="highlights.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="highlights.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="highlights.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="formalpara.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="formalpara">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="title"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+        <xs:element ref="para"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="formalpara.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="formalpara.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="formalpara.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="para.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="para">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="para.char.mix"/>
+        <xs:group ref="para.mix"/>
+      </xs:choice>
+      <xs:attributeGroup ref="para.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="para.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="para.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="simpara.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="simpara">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="simpara.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="simpara.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="simpara.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="admon.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="caution">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="caution.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="caution.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="admon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="important">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="important.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="important.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="admon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="note">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="note.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="note.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="admon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tip">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="tip.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tip.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="admon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="warning">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="warning.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="warning.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="admon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glosslist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glosslist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="glossentry"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="glosslist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glosslist.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glosslist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="glossterm"/>
+        <xs:element minOccurs="0" ref="acronym"/>
+        <xs:element minOccurs="0" ref="abbrev"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+        <xs:element minOccurs="0" ref="revhistory"/>
+        <xs:choice>
+          <xs:element ref="glosssee"/>
+          <xs:element maxOccurs="unbounded" ref="glossdef"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="glossentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossentry.attlist">
+    <xs:attribute name="sortas"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossdef.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossdef">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group maxOccurs="unbounded" ref="glossdef.mix"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="glossseealso"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="glossdef.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossdef.attlist">
+    <xs:attribute name="subject"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossdef.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glosssee.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glosssee">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="glosssee.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glosssee.attlist">
+    <xs:attribute name="otherterm" type="xs:IDREF"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glosssee.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossseealso.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossseealso">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="glossseealso.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossseealso.attlist">
+    <xs:attribute name="otherterm" type="xs:IDREF"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossseealso.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="itemizedlist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="itemizedlist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+        <xs:element maxOccurs="unbounded" ref="listitem"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="itemizedlist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="itemizedlist.attlist">
+    <xs:attribute name="spacing">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="normal"/>
+          <xs:enumeration value="compact"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="mark.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="itemizedlist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="orderedlist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="orderedlist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+        <xs:element maxOccurs="unbounded" ref="listitem"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="orderedlist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="orderedlist.attlist">
+    <xs:attribute name="numeration">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="arabic"/>
+          <xs:enumeration value="upperalpha"/>
+          <xs:enumeration value="loweralpha"/>
+          <xs:enumeration value="upperroman"/>
+          <xs:enumeration value="lowerroman"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="inheritnum" default="ignore">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="inherit"/>
+          <xs:enumeration value="ignore"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="continuation" default="restarts">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="continues"/>
+          <xs:enumeration value="restarts"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="spacing">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="normal"/>
+          <xs:enumeration value="compact"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="orderedlist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="listitem.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="listitem">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="component.mix"/>
+      <xs:attributeGroup ref="listitem.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="listitem.attlist">
+    <xs:attribute name="override"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="listitem.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="segmentedlist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="segmentedlist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:element maxOccurs="unbounded" ref="segtitle"/>
+        <xs:element maxOccurs="unbounded" ref="seglistitem"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="segmentedlist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="segmentedlist.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="segmentedlist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="segtitle.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="segtitle">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+      <xs:attributeGroup ref="segtitle.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="segtitle.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="segtitle.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="seglistitem.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="seglistitem">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="seg"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="seglistitem.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="seglistitem.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seglistitem.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="seg.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="seg">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="seg.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="seg.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seg.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="simplelist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="simplelist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="member"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="simplelist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="simplelist.attlist">
+    <xs:attribute name="columns"/>
+    <xs:attribute name="type" default="vert">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="inline"/>
+          <xs:enumeration value="vert"/>
+          <xs:enumeration value="horiz"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="simplelist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="member.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="member">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="member.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="member.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="member.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="variablelist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="variablelist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+        <xs:element maxOccurs="unbounded" ref="varlistentry"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="variablelist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="variablelist.attlist">
+    <xs:attribute name="termlength"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="variablelist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="varlistentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="varlistentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="term"/>
+        <xs:element ref="listitem"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="varlistentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="varlistentry.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="varlistentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="term.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="term">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="term.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="term.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="term.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="calloutlist.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="calloutlist">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:element maxOccurs="unbounded" ref="callout"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="calloutlist.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="calloutlist.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="calloutlist.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="callout.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="callout">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="component.mix"/>
+      <xs:attributeGroup ref="callout.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="callout.attlist">
+    <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="callout.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="example.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="example">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group ref="formalobject.title.content"/>
+        <xs:group maxOccurs="unbounded" ref="example.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="example.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="example.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="width.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="example.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="informalexample.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="informalexample">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group maxOccurs="unbounded" ref="example.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="informalexample.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="informalexample.attlist">
+    <xs:attributeGroup ref="width.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="informalexample.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="programlistingco.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="programlistingco">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="areaspec"/>
+        <xs:element ref="programlisting"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="programlistingco.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="programlistingco.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="programlistingco.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="areaspec.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="areaspec">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="area"/>
+        <xs:element ref="areaset"/>
+      </xs:choice>
+      <xs:attributeGroup ref="areaspec.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="areaspec.attlist">
+    <xs:attribute name="units">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="calspair"/>
+          <xs:enumeration value="linecolumn"/>
+          <xs:enumeration value="linerange"/>
+          <xs:enumeration value="linecolumnpair"/>
+          <xs:enumeration value="other"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="areaspec.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="area.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="area">
+    <xs:complexType>
+      <xs:attributeGroup ref="area.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="area.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="linkends.attrib"/>
+    <xs:attribute name="units">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="calspair"/>
+          <xs:enumeration value="linecolumn"/>
+          <xs:enumeration value="linerange"/>
+          <xs:enumeration value="linecolumnpair"/>
+          <xs:enumeration value="other"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+    <xs:attribute name="coords" use="required"/>
+    <xs:attributeGroup ref="idreq.common.attrib"/>
+    <xs:attributeGroup ref="area.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="areaset.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="areaset">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="area"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="areaset.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="areaset.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attribute name="units">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="calspair"/>
+          <xs:enumeration value="linecolumn"/>
+          <xs:enumeration value="linerange"/>
+          <xs:enumeration value="linecolumnpair"/>
+          <xs:enumeration value="other"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+    <xs:attribute name="coords" use="required"/>
+    <xs:attributeGroup ref="idreq.common.attrib"/>
+    <xs:attributeGroup ref="areaset.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="programlisting.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="programlisting">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="para.char.mix"/>
+        <xs:element ref="co"/>
+        <xs:element ref="coref"/>
+        <xs:element ref="lineannotation"/>
+        <xs:element ref="textobject"/>
+      </xs:choice>
+      <xs:attributeGroup ref="programlisting.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="programlisting.attlist">
+    <xs:attributeGroup ref="width.attrib"/>
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="programlisting.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="literallayout.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="literallayout">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="para.char.mix"/>
+        <xs:element ref="co"/>
+        <xs:element ref="coref"/>
+        <xs:element ref="textobject"/>
+        <xs:element ref="lineannotation"/>
+      </xs:choice>
+      <xs:attributeGroup ref="literallayout.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="literallayout.attlist">
+    <xs:attributeGroup ref="width.attrib"/>
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attribute name="class" default="normal">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="monospaced"/>
+          <xs:enumeration value="normal"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="literallayout.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="screenco.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="screenco">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="areaspec"/>
+        <xs:element ref="screen"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="screenco.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="screenco.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="screenco.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="screen.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="screen">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="para.char.mix"/>
+        <xs:element ref="co"/>
+        <xs:element ref="coref"/>
+        <xs:element ref="textobject"/>
+        <xs:element ref="lineannotation"/>
+      </xs:choice>
+      <xs:attributeGroup ref="screen.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="screen.attlist">
+    <xs:attributeGroup ref="width.attrib"/>
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="screen.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="screenshot.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="screenshot">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="screeninfo"/>
+        <xs:choice>
+          <xs:element ref="graphic"/>
+          <xs:element ref="graphicco"/>
+          <xs:element ref="mediaobject"/>
+          <xs:element ref="mediaobjectco"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="screenshot.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="screenshot.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="screenshot.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="screeninfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="screeninfo">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="screeninfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="screeninfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="screeninfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="figure.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="figure">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group ref="formalobject.title.content"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:group ref="figure.mix"/>
+          <xs:group ref="link.char.class"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="figure.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="figure.attlist">
+    <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+    <xs:attribute name="pgwide" type="yesorno.attvals"/>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="figure.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="informalfigure.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="informalfigure">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:group ref="figure.mix"/>
+          <xs:group ref="link.char.class"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="informalfigure.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="informalfigure.attlist">
+    <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+    <xs:attribute name="pgwide" type="yesorno.attvals"/>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="informalfigure.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="graphicco.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="graphicco">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="areaspec"/>
+        <xs:element ref="graphic"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="graphicco.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="graphicco.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="graphicco.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="graphic.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="graphic">
+    <xs:complexType>
+      <xs:attributeGroup ref="graphic.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="graphic.attlist">
+    <xs:attributeGroup ref="graphics.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="graphic.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="inlinegraphic.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="inlinegraphic">
+    <xs:complexType>
+      <xs:attributeGroup ref="inlinegraphic.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="inlinegraphic.attlist">
+    <xs:attributeGroup ref="graphics.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="inlinegraphic.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="mediaobject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="mediaobject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:group maxOccurs="unbounded" ref="mediaobject.mix"/>
+        <xs:element minOccurs="0" ref="caption"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="mediaobject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="mediaobject.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="mediaobject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="inlinemediaobject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="inlinemediaobject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:group maxOccurs="unbounded" ref="mediaobject.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="inlinemediaobject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="inlinemediaobject.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="inlinemediaobject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="videoobject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="videoobject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:element ref="videodata"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="videoobject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="videoobject.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="videoobject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="audioobject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="audioobject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:element ref="audiodata"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="audioobject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="audioobject.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="audioobject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="imageobject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="imageobject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:element ref="imagedata"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="imageobject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="imageobject.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="imageobject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="textobject.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="textobject">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:choice>
+          <xs:element ref="phrase"/>
+          <xs:element ref="textdata"/>
+          <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="textobject.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="textobject.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="textobject.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="objectinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="objectinfo">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="info.class"/>
+      <xs:attributeGroup ref="objectinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="objectinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="objectinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="objectdata.attrib">
+    <xs:attribute name="entityref" type="xs:ENTITY"/>
+    <xs:attribute name="fileref"/>
+    <xs:attribute name="format" type="notation.class"/>
+    <xs:attribute name="srccredit"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="videodata.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="videodata">
+    <xs:complexType>
+      <xs:attributeGroup ref="videodata.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="videodata.attlist">
+    <xs:attribute name="width"/>
+    <xs:attribute name="contentwidth"/>
+    <xs:attribute name="depth"/>
+    <xs:attribute name="contentdepth"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="scale"/>
+    <xs:attribute name="scalefit" type="yesorno.attvals"/>
+    <xs:attributeGroup ref="objectdata.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="videodata.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="audiodata.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="audiodata">
+    <xs:complexType>
+      <xs:attributeGroup ref="audiodata.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="audiodata.attlist">
+    <xs:attributeGroup ref="objectdata.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="audiodata.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="imagedata.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="imagedata">
+    <xs:complexType>
+      <xs:attributeGroup ref="imagedata.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="imagedata.attlist">
+    <xs:attribute name="width"/>
+    <xs:attribute name="contentwidth"/>
+    <xs:attribute name="depth"/>
+    <xs:attribute name="contentdepth"/>
+    <xs:attribute name="align">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="left"/>
+          <xs:enumeration value="right"/>
+          <xs:enumeration value="center"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="valign">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="middle"/>
+          <xs:enumeration value="bottom"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="scale"/>
+    <xs:attribute name="scalefit" type="yesorno.attvals"/>
+    <xs:attributeGroup ref="objectdata.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="imagedata.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="textdata.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="textdata">
+    <xs:complexType>
+      <xs:attributeGroup ref="textdata.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="textdata.attlist">
+    <xs:attribute name="encoding"/>
+    <xs:attributeGroup ref="objectdata.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="textdata.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="caption.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="caption">
+    <xs:complexType>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="textobject.mix"/>
+      <xs:attributeGroup ref="caption.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="caption.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="caption.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="mediaobjectco.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="mediaobjectco">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="objectinfo"/>
+        <xs:element ref="imageobjectco"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="imageobjectco"/>
+          <xs:element ref="textobject"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="mediaobjectco.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="mediaobjectco.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="mediaobjectco.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="imageobjectco.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="imageobjectco">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="areaspec"/>
+        <xs:element ref="imageobject"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="imageobjectco.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="imageobjectco.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="imageobjectco.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:group name="equation.content">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="alt"/>
+      <xs:choice>
+        <xs:element maxOccurs="unbounded" ref="graphic"/>
+        <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:complexType name="inlineequation.content">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="alt"/>
+      <xs:choice>
+        <xs:element maxOccurs="unbounded" ref="graphic"/>
+        <xs:element maxOccurs="unbounded" ref="inlinemediaobject"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:attributeGroup name="equation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="equation">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group minOccurs="0" ref="formalobject.title.content"/>
+        <xs:choice>
+          <xs:element ref="informalequation"/>
+          <xs:group ref="equation.content"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="equation.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="equation.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="equation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="informalequation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="informalequation">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:group ref="equation.content"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="informalequation.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="informalequation.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="informalequation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="inlineequation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="inlineequation">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="inlineequation.content">
+          <xs:attributeGroup ref="inlineequation.attlist"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="inlineequation.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="inlineequation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="alt.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="alt">
+    <xs:complexType mixed="true">
+      <xs:attributeGroup ref="alt.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="alt.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="alt.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="tables.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bodyatt">
+    <xs:attributeGroup ref="label.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="secur">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="tables.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="common.table.attribs">
+    <xs:attributeGroup ref="bodyatt"/>
+    <xs:attributeGroup ref="secur"/>
+  </xs:attributeGroup>
+  <xs:complexType name="tbl.table.mdl">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="blockinfo"/>
+      <xs:group ref="formalobject.title.content"/>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+      <xs:choice>
+        <xs:element maxOccurs="unbounded" ref="graphic"/>
+        <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+        <xs:element maxOccurs="unbounded" ref="tgroup"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:group name="tbl.entry.mdl">
+    <xs:choice>
+      <xs:group ref="para.char.mix"/>
+      <xs:group ref="tabentry.mix"/>
+    </xs:choice>
+  </xs:group>
+  <xs:element name="informaltable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="graphic"/>
+          <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+          <xs:element maxOccurs="unbounded" ref="tgroup"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="informaltable.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="informaltable.attlist">
+    <xs:attribute name="frame">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="top"/>
+          <xs:enumeration value="bottom"/>
+          <xs:enumeration value="topbot"/>
+          <xs:enumeration value="all"/>
+          <xs:enumeration value="sides"/>
+          <xs:enumeration value="none"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="colsep" type="yesorno.attvals"/>
+    <xs:attribute name="rowsep" type="yesorno.attvals"/>
+    <xs:attributeGroup ref="common.table.attribs"/>
+    <xs:attributeGroup ref="tbl.table.att"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="synopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="synopsis">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="para.char.mix"/>
+        <xs:element ref="graphic"/>
+        <xs:element ref="mediaobject"/>
+        <xs:element ref="co"/>
+        <xs:element ref="coref"/>
+        <xs:element ref="textobject"/>
+        <xs:element ref="lineannotation"/>
+      </xs:choice>
+      <xs:attributeGroup ref="synopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="synopsis.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="synopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="cmdsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="cmdsynopsis">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="command"/>
+          <xs:element ref="arg"/>
+          <xs:element ref="group"/>
+          <xs:element ref="sbr"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="synopfragment"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="cmdsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="cmdsynopsis.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attribute name="sepchar" default=" "/>
+    <xs:attribute name="cmdlength"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="cmdsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="arg.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="arg">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="arg"/>
+        <xs:element ref="group"/>
+        <xs:element ref="option"/>
+        <xs:element ref="synopfragmentref"/>
+        <xs:element ref="replaceable"/>
+        <xs:element ref="sbr"/>
+      </xs:choice>
+      <xs:attributeGroup ref="arg.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="arg.attlist">
+    <xs:attribute name="choice" default="opt">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="opt"/>
+          <xs:enumeration value="req"/>
+          <xs:enumeration value="plain"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="rep" default="norepeat">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="norepeat"/>
+          <xs:enumeration value="repeat"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="arg.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="group.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="group">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="arg"/>
+        <xs:element ref="group"/>
+        <xs:element ref="option"/>
+        <xs:element ref="synopfragmentref"/>
+        <xs:element ref="replaceable"/>
+        <xs:element ref="sbr"/>
+      </xs:choice>
+      <xs:attributeGroup ref="group.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="group.attlist">
+    <xs:attribute name="choice" default="opt">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="opt"/>
+          <xs:enumeration value="req"/>
+          <xs:enumeration value="plain"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="rep" default="norepeat">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="norepeat"/>
+          <xs:enumeration value="repeat"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="group.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sbr.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sbr">
+    <xs:complexType>
+      <xs:attributeGroup ref="sbr.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sbr.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sbr.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="synopfragmentref.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="synopfragmentref">
+    <xs:complexType mixed="true">
+      <xs:attributeGroup ref="synopfragmentref.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="synopfragmentref.attlist">
+    <xs:attributeGroup ref="linkendreq.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="synopfragmentref.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="synopfragment.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="synopfragment">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="arg"/>
+        <xs:element ref="group"/>
+      </xs:choice>
+      <xs:attributeGroup ref="synopfragment.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="synopfragment.attlist">
+    <xs:attributeGroup ref="idreq.common.attrib"/>
+    <xs:attributeGroup ref="synopfragment.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="funcsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="funcsynopsis">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="funcsynopsisinfo"/>
+        <xs:element ref="funcprototype"/>
+      </xs:choice>
+      <xs:attributeGroup ref="funcsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="funcsynopsis.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="funcsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="funcsynopsisinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="funcsynopsisinfo">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="cptr.char.mix"/>
+        <xs:element ref="textobject"/>
+        <xs:element ref="lineannotation"/>
+      </xs:choice>
+      <xs:attributeGroup ref="funcsynopsisinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="funcsynopsisinfo.attlist">
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="funcsynopsisinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="funcprototype.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="funcprototype">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="funcdef"/>
+        <xs:choice>
+          <xs:element ref="void"/>
+          <xs:element ref="varargs"/>
+          <xs:element maxOccurs="unbounded" ref="paramdef"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="funcprototype.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="funcprototype.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="funcprototype.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="funcdef.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="funcdef">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="type"/>
+        <xs:element ref="replaceable"/>
+        <xs:element ref="function"/>
+      </xs:choice>
+      <xs:attributeGroup ref="funcdef.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="funcdef.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="funcdef.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="void.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="void">
+    <xs:complexType>
+      <xs:attributeGroup ref="void.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="void.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="void.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="varargs.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="varargs">
+    <xs:complexType>
+      <xs:attributeGroup ref="varargs.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="varargs.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="varargs.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="paramdef.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="paramdef">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="type"/>
+        <xs:element ref="replaceable"/>
+        <xs:element ref="parameter"/>
+        <xs:element ref="funcparams"/>
+      </xs:choice>
+      <xs:attributeGroup ref="paramdef.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="paramdef.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="paramdef.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="funcparams.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="funcparams">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="funcparams.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="funcparams.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="funcparams.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="classsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="classsynopsis">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="ooclass"/>
+          <xs:element ref="oointerface"/>
+          <xs:element ref="ooexception"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="classsynopsisinfo"/>
+          <xs:element ref="fieldsynopsis"/>
+          <xs:group ref="method.synop.class"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="classsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="classsynopsis.attlist">
+    <xs:attribute name="language"/>
+    <xs:attribute name="class" default="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="class"/>
+          <xs:enumeration value="interface"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="classsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="classsynopsisinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="classsynopsisinfo">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="cptr.char.mix"/>
+        <xs:element ref="textobject"/>
+        <xs:element ref="lineannotation"/>
+      </xs:choice>
+      <xs:attributeGroup ref="classsynopsisinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="classsynopsisinfo.attlist">
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="classsynopsisinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="ooclass.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="ooclass">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element ref="classname"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="ooclass.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="ooclass.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="ooclass.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="oointerface.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="oointerface">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element ref="interfacename"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="oointerface.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="oointerface.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="oointerface.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="ooexception.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="ooexception">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element ref="exceptionname"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="ooexception.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="ooexception.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="ooexception.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="modifier.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="modifier">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="modifier.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="modifier.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="modifier.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="interfacename.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="interfacename">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="interfacename.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="interfacename.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="interfacename.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="exceptionname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="exceptionname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="exceptionname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="exceptionname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="exceptionname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="fieldsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="fieldsynopsis">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element minOccurs="0" ref="type"/>
+        <xs:element ref="varname"/>
+        <xs:element minOccurs="0" ref="initializer"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="fieldsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="fieldsynopsis.attlist">
+    <xs:attribute name="language"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="fieldsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="initializer.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="initializer">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="initializer.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="initializer.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="initializer.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="constructorsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="constructorsynopsis">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element minOccurs="0" ref="methodname"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="methodparam"/>
+          <xs:element ref="void"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="constructorsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="constructorsynopsis.attlist">
+    <xs:attribute name="language"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="constructorsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="destructorsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="destructorsynopsis">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element minOccurs="0" ref="methodname"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="methodparam"/>
+          <xs:element ref="void"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="destructorsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="destructorsynopsis.attlist">
+    <xs:attribute name="language"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="destructorsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="methodsynopsis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="methodsynopsis">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:choice minOccurs="0">
+          <xs:element ref="type"/>
+          <xs:element ref="void"/>
+        </xs:choice>
+        <xs:element ref="methodname"/>
+        <xs:choice>
+          <xs:element maxOccurs="unbounded" ref="methodparam"/>
+          <xs:element ref="void"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="methodsynopsis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="methodsynopsis.attlist">
+    <xs:attribute name="language"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="methodsynopsis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="methodname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="methodname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="methodname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="methodname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="methodname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="methodparam.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="methodparam">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+        <xs:element minOccurs="0" ref="type"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:element ref="parameter"/>
+            <xs:element minOccurs="0" ref="initializer"/>
+          </xs:sequence>
+          <xs:element ref="funcparams"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="methodparam.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="methodparam.attlist">
+    <xs:attribute name="choice" default="req">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="opt"/>
+          <xs:enumeration value="req"/>
+          <xs:enumeration value="plain"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="rep" default="norepeat">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="norepeat"/>
+          <xs:enumeration value="repeat"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="methodparam.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="ackno.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="ackno">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="ackno.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="ackno.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="ackno.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="address.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="address">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="personname"/>
+        <xs:group ref="person.ident.mix"/>
+        <xs:element ref="street"/>
+        <xs:element ref="pob"/>
+        <xs:element ref="postcode"/>
+        <xs:element ref="city"/>
+        <xs:element ref="state"/>
+        <xs:element ref="country"/>
+        <xs:element ref="phone"/>
+        <xs:element ref="fax"/>
+        <xs:element ref="email"/>
+        <xs:element ref="otheraddr"/>
+      </xs:choice>
+      <xs:attributeGroup ref="address.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="address.attlist">
+    <xs:attributeGroup ref="linespecific.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="address.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="street.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="street">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="street.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="street.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="street.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="pob.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="pob">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="pob.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="pob.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="pob.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="postcode.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="postcode">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="postcode.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="postcode.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="postcode.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="city.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="city">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="city.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="city.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="city.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="state.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="state">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="state.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="state.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="state.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="country.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="country">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="country.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="country.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="country.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="phone.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="phone">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="phone.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="phone.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="phone.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="fax.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="fax">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="fax.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="fax.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="fax.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="otheraddr.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="otheraddr">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="otheraddr.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="otheraddr.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="otheraddr.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="affiliation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="affiliation">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="shortaffil"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="jobtitle"/>
+        <xs:element minOccurs="0" ref="orgname"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="orgdiv"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="affiliation.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="affiliation.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="affiliation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="shortaffil.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="shortaffil">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="shortaffil.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="shortaffil.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="shortaffil.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="jobtitle.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="jobtitle">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="jobtitle.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="jobtitle.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="jobtitle.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="orgdiv.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="orgdiv">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="orgdiv.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="orgdiv.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="orgdiv.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="artpagenums.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="artpagenums">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="artpagenums.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="artpagenums.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="artpagenums.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="personname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="personname">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="honorific"/>
+        <xs:element ref="firstname"/>
+        <xs:element ref="surname"/>
+        <xs:element ref="lineage"/>
+        <xs:element ref="othername"/>
+      </xs:choice>
+      <xs:attributeGroup ref="personname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="personname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="personname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="author.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="author">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="personname"/>
+          <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="personblurb"/>
+          <xs:element ref="email"/>
+          <xs:element ref="address"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="author.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="author.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="author.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="authorgroup.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="authorgroup">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="author"/>
+        <xs:element ref="editor"/>
+        <xs:element ref="collab"/>
+        <xs:element ref="corpauthor"/>
+        <xs:element ref="othercredit"/>
+      </xs:choice>
+      <xs:attributeGroup ref="authorgroup.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="authorgroup.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="authorgroup.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="collab.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="collab">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="collabname"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="affiliation"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="collab.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="collab.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="collab.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="collabname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="collabname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="collabname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="collabname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="collabname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="authorinitials.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="authorinitials">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="authorinitials.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="authorinitials.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="authorinitials.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="confgroup.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="confgroup">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="confdates"/>
+        <xs:element ref="conftitle"/>
+        <xs:element ref="confnum"/>
+        <xs:element ref="address"/>
+        <xs:element ref="confsponsor"/>
+      </xs:choice>
+      <xs:attributeGroup ref="confgroup.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="confgroup.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="confgroup.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="confdates.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="confdates">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="confdates.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="confdates.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="confdates.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="conftitle.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="conftitle">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="conftitle.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="conftitle.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="conftitle.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="confnum.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="confnum">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="confnum.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="confnum.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="confnum.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="confsponsor.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="confsponsor">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="confsponsor.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="confsponsor.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="confsponsor.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="contractnum.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="contractnum">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="contractnum.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="contractnum.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="contractnum.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="contractsponsor.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="contractsponsor">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="contractsponsor.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="contractsponsor.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="contractsponsor.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="copyright.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="copyright">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="year"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="copyright.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="copyright.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="copyright.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="year.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="year">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="year.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="year.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="year.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="holder.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="holder">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="holder.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="holder.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="holder.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="corpauthor.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="corpauthor">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="corpauthor.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="corpauthor.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="corpauthor.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="corpname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="corpname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="corpname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="corpname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="corpname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="date.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="date">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="date.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="date.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="date.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="edition.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="edition">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="edition.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="edition.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="edition.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="editor.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="editor">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="personname"/>
+          <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="personblurb"/>
+          <xs:element ref="email"/>
+          <xs:element ref="address"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="editor.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="editor.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="editor.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="isbn.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="isbn">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="isbn.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="isbn.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="isbn.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="issn.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="issn">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="issn.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="issn.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="issn.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="biblio.class.attrib">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="uri"/>
+          <xs:enumeration value="doi"/>
+          <xs:enumeration value="isbn"/>
+          <xs:enumeration value="issn"/>
+          <xs:enumeration value="libraryofcongress"/>
+          <xs:enumeration value="pubnumber"/>
+          <xs:enumeration value="other"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otherclass"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="biblioid.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="biblioid">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="biblioid.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="biblioid.attlist">
+    <xs:attributeGroup ref="biblio.class.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="biblioid.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="citebiblioid.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="citebiblioid">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="citebiblioid.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="citebiblioid.attlist">
+    <xs:attributeGroup ref="biblio.class.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="citebiblioid.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliosource.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliosource">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="bibliosource.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliosource.attlist">
+    <xs:attributeGroup ref="biblio.class.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliosource.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliorelation.type.attrib">
+    <xs:attribute name="type">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="isversionof"/>
+          <xs:enumeration value="hasversion"/>
+          <xs:enumeration value="isreplacedby"/>
+          <xs:enumeration value="replaces"/>
+          <xs:enumeration value="isrequiredby"/>
+          <xs:enumeration value="requires"/>
+          <xs:enumeration value="ispartof"/>
+          <xs:enumeration value="haspart"/>
+          <xs:enumeration value="isreferencedby"/>
+          <xs:enumeration value="references"/>
+          <xs:enumeration value="isformatof"/>
+          <xs:enumeration value="hasformat"/>
+          <xs:enumeration value="othertype"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="othertype"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliorelation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliorelation">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="bibliorelation.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliorelation.attlist">
+    <xs:attributeGroup ref="biblio.class.attrib"/>
+    <xs:attributeGroup ref="bibliorelation.type.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliorelation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="bibliocoverage.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="bibliocoverage">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="bibliocoverage.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="bibliocoverage.attlist">
+    <xs:attribute name="spatial">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="dcmipoint"/>
+          <xs:enumeration value="iso3166"/>
+          <xs:enumeration value="dcmibox"/>
+          <xs:enumeration value="tgn"/>
+          <xs:enumeration value="otherspatial"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otherspatial"/>
+    <xs:attribute name="temporal">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="dcmiperiod"/>
+          <xs:enumeration value="w3c-dtf"/>
+          <xs:enumeration value="othertemporal"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="othertemporal"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="bibliocoverage.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="invpartnumber.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="invpartnumber">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="invpartnumber.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="invpartnumber.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="invpartnumber.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="issuenum.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="issuenum">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="issuenum.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="issuenum.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="issuenum.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="legalnotice.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="legalnotice">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="blockinfo"/>
+        <xs:element minOccurs="0" ref="title"/>
+        <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="legalnotice.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="legalnotice.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="legalnotice.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="modespec.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="modespec">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="modespec.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="modespec.attlist">
+    <xs:attribute name="application" type="notation.class"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="modespec.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="orgname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="orgname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="orgname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="orgname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="corporation"/>
+          <xs:enumeration value="nonprofit"/>
+          <xs:enumeration value="consortium"/>
+          <xs:enumeration value="informal"/>
+          <xs:enumeration value="other"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="otherclass"/>
+    <xs:attributeGroup ref="orgname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="othercredit.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="othercredit">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="personname"/>
+          <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="personblurb"/>
+          <xs:element ref="email"/>
+          <xs:element ref="address"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="othercredit.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="othercredit.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="othercredit.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="pagenums.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="pagenums">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="pagenums.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="pagenums.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="pagenums.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="contrib.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="contrib">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="contrib.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="contrib.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="contrib.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="firstname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="firstname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="firstname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="firstname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="firstname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="honorific.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="honorific">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="honorific.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="honorific.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="honorific.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="lineage.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="lineage">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="lineage.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="lineage.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="lineage.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="othername.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="othername">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="othername.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="othername.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="othername.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="surname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="surname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="surname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="surname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="surname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="printhistory.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="printhistory">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="para.class"/>
+      <xs:attributeGroup ref="printhistory.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="printhistory.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="printhistory.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="productname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="productname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="productname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="productname.attlist">
+    <xs:attribute name="class" default="trade">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="service"/>
+          <xs:enumeration value="trade"/>
+          <xs:enumeration value="registered"/>
+          <xs:enumeration value="copyright"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="productname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="productnumber.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="productnumber">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="productnumber.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="productnumber.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="productnumber.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="pubdate.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="pubdate">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="pubdate.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="pubdate.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="pubdate.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="publisher.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="publisher">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="publishername"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="publisher.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="publisher.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="publisher.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="publishername.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="publishername">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="publishername.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="publishername.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="publishername.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="pubsnumber.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="pubsnumber">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="pubsnumber.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="pubsnumber.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="pubsnumber.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="releaseinfo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="releaseinfo">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="releaseinfo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="releaseinfo.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="releaseinfo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revhistory.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="revhistory">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="revision"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="revhistory.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="revhistory.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="revhistory.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revision.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="revision">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="revnumber"/>
+        <xs:element ref="date"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="authorinitials"/>
+        <xs:choice minOccurs="0">
+          <xs:element ref="revremark"/>
+          <xs:element ref="revdescription"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="revision.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="revision.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="revision.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revnumber.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="revnumber">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="revnumber.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="revnumber.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="revnumber.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revremark.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="revremark">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="revremark.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="revremark.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="revremark.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="revdescription.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="revdescription">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="revdescription.mix"/>
+      <xs:attributeGroup ref="revdescription.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="revdescription.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="revdescription.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="seriesvolnums.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="seriesvolnums">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="seriesvolnums.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="seriesvolnums.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seriesvolnums.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="volumenum.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="volumenum">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="volumenum.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="volumenum.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="volumenum.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="accel.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="accel">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="accel.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="accel.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="accel.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="action.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="action">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="action.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="action.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="action.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="application.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="application">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="application.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="application.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="hardware"/>
+          <xs:enumeration value="software"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="application.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="classname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="classname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="classname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="classname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="classname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="co.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="co">
+    <xs:complexType>
+      <xs:attributeGroup ref="co.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="co.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="linkends.attrib"/>
+    <xs:attributeGroup ref="idreq.common.attrib"/>
+    <xs:attributeGroup ref="co.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="coref.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="coref">
+    <xs:complexType>
+      <xs:attributeGroup ref="coref.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="coref.attlist">
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="linkendreq.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="coref.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="command.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="command">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="command.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="command.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="command.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="computeroutput.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="computeroutput">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="cptr.char.mix"/>
+        <xs:element ref="co"/>
+      </xs:choice>
+      <xs:attributeGroup ref="computeroutput.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="computeroutput.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="computeroutput.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="database.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="database">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="database.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="database.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="name"/>
+          <xs:enumeration value="table"/>
+          <xs:enumeration value="field"/>
+          <xs:enumeration value="key1"/>
+          <xs:enumeration value="key2"/>
+          <xs:enumeration value="record"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="database.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="email.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="email">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+      <xs:attributeGroup ref="email.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="email.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="email.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="envar.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="envar">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="envar.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="envar.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="envar.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="errorcode.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="errorcode">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="errorcode.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="errorcode.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="errorcode.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="errorname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="errorname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="errorname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="errorname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="errorname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="errortext.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="errortext">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="errortext.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="errortext.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="errortext.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="errortype.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="errortype">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="errortype.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="errortype.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="errortype.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="filename.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="filename">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="filename.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="filename.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="headerfile"/>
+          <xs:enumeration value="partition"/>
+          <xs:enumeration value="devicefile"/>
+          <xs:enumeration value="libraryfile"/>
+          <xs:enumeration value="directory"/>
+          <xs:enumeration value="extension"/>
+          <xs:enumeration value="symlink"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="path"/>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="filename.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="function.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="function">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="function.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="function.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="function.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="guibutton.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="guibutton">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="guibutton.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="guibutton.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="guibutton.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="guiicon.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="guiicon">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="guiicon.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="guiicon.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="guiicon.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="guilabel.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="guilabel">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="guilabel.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="guilabel.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="guilabel.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="guimenu.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="guimenu">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="guimenu.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="guimenu.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="guimenu.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="guimenuitem.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="guimenuitem">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="guimenuitem.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="guimenuitem.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="guimenuitem.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="guisubmenu.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="guisubmenu">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="guisubmenu.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="guisubmenu.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="guisubmenu.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="hardware.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="hardware">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="hardware.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="hardware.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="hardware.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="interface.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="interface">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="accel"/>
+      </xs:choice>
+      <xs:attributeGroup ref="interface.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="interface.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="interface.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keycap.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="keycap">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="keycap.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="keycap.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="keycap.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keycode.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="keycode">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="keycode.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="keycode.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="keycode.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keycombo.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="keycombo">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="keycap"/>
+        <xs:element ref="keycombo"/>
+        <xs:element ref="keysym"/>
+        <xs:element ref="mousebutton"/>
+      </xs:choice>
+      <xs:attributeGroup ref="keycombo.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="keycombo.attlist">
+    <xs:attributeGroup ref="keyaction.attrib"/>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="keycombo.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="keysysm.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="keysym">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="keysym.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="keysym.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="keysysm.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="lineannotation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="lineannotation">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="lineannotation.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="lineannotation.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="lineannotation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="literal.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="literal">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="literal.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="literal.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="literal.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="constant.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="constant">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="constant.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="constant.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="limit"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="constant.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="varname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="varname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="varname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="varname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="varname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="markup.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="markup">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="markup.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="markup.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="markup.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="medialabel.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="medialabel">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="medialabel.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="medialabel.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="cartridge"/>
+          <xs:enumeration value="cdrom"/>
+          <xs:enumeration value="disk"/>
+          <xs:enumeration value="tape"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="medialabel.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="menuchoice.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="menuchoice">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="shortcut"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="guibutton"/>
+          <xs:element ref="guiicon"/>
+          <xs:element ref="guilabel"/>
+          <xs:element ref="guimenu"/>
+          <xs:element ref="guimenuitem"/>
+          <xs:element ref="guisubmenu"/>
+          <xs:element ref="interface"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="menuchoice.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="menuchoice.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="menuchoice.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="shortcut.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="shortcut">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="keycap"/>
+        <xs:element ref="keycombo"/>
+        <xs:element ref="keysym"/>
+        <xs:element ref="mousebutton"/>
+      </xs:choice>
+      <xs:attributeGroup ref="shortcut.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="shortcut.attlist">
+    <xs:attributeGroup ref="keyaction.attrib"/>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="shortcut.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="mousebutton.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="mousebutton">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="mousebutton.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="mousebutton.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="mousebutton.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="msgtext.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="msgtext">
+    <xs:complexType>
+      <xs:group maxOccurs="unbounded" ref="component.mix"/>
+      <xs:attributeGroup ref="msgtext.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="msgtext.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="msgtext.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="option.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="option">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="option.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="option.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="option.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="optional.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="optional">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="optional.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="optional.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="optional.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="parameter.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="parameter">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="parameter.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="parameter.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="command"/>
+          <xs:enumeration value="function"/>
+          <xs:enumeration value="option"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="parameter.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="prompt.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="prompt">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="smallcptr.char.mix"/>
+        <xs:element ref="co"/>
+      </xs:choice>
+      <xs:attributeGroup ref="prompt.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="prompt.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="prompt.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="property.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="property">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+      <xs:attributeGroup ref="property.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="property.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="property.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="replaceable.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="replaceable">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="link.char.class"/>
+        <xs:element ref="optional"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:element ref="co"/>
+      </xs:choice>
+      <xs:attributeGroup ref="replaceable.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="replaceable.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="command"/>
+          <xs:enumeration value="function"/>
+          <xs:enumeration value="option"/>
+          <xs:enumeration value="parameter"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="replaceable.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="returnvalue.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="returnvalue">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="returnvalue.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="returnvalue.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="returnvalue.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="sgmltag.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="sgmltag">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="sgmltag.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="sgmltag.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="attribute"/>
+          <xs:enumeration value="attvalue"/>
+          <xs:enumeration value="element"/>
+          <xs:enumeration value="endtag"/>
+          <xs:enumeration value="emptytag"/>
+          <xs:enumeration value="genentity"/>
+          <xs:enumeration value="numcharref"/>
+          <xs:enumeration value="paramentity"/>
+          <xs:enumeration value="pi"/>
+          <xs:enumeration value="xmlpi"/>
+          <xs:enumeration value="starttag"/>
+          <xs:enumeration value="sgmlcomment"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="sgmltag.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="structfield.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="structfield">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="structfield.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="structfield.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="structfield.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="structname.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="structname">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="structname.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="structname.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="structname.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="symbol.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="symbol">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="symbol.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="symbol.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="limit"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="symbol.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="systemitem.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="systemitem">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="cptr.char.mix"/>
+        <xs:element ref="acronym"/>
+        <xs:element ref="co"/>
+      </xs:choice>
+      <xs:attributeGroup ref="systemitem.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="systemitem.attlist">
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="constant"/>
+          <xs:enumeration value="event"/>
+          <xs:enumeration value="eventhandler"/>
+          <xs:enumeration value="domainname"/>
+          <xs:enumeration value="fqdomainname"/>
+          <xs:enumeration value="ipaddress"/>
+          <xs:enumeration value="netmask"/>
+          <xs:enumeration value="etheraddress"/>
+          <xs:enumeration value="groupname"/>
+          <xs:enumeration value="library"/>
+          <xs:enumeration value="macro"/>
+          <xs:enumeration value="osname"/>
+          <xs:enumeration value="filesystem"/>
+          <xs:enumeration value="resource"/>
+          <xs:enumeration value="systemname"/>
+          <xs:enumeration value="username"/>
+          <xs:enumeration value="newsgroup"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="systemitem.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="token.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="token">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="token.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="token.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="token.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="type.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="type">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+      <xs:attributeGroup ref="type.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="type.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="type.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="userinput.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="userinput">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="cptr.char.mix"/>
+        <xs:element ref="co"/>
+      </xs:choice>
+      <xs:attributeGroup ref="userinput.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="userinput.attlist">
+    <xs:attributeGroup ref="moreinfo.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="userinput.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="abbrev.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="abbrev">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+      <xs:attributeGroup ref="abbrev.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="abbrev.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="abbrev.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="acronym.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="acronym">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+      <xs:attributeGroup ref="acronym.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="acronym.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="acronym.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="citation.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="citation">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="citation.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="citation.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="citation.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="citerefentry.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="citerefentry">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="refentrytitle"/>
+        <xs:element minOccurs="0" ref="manvolnum"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="citerefentry.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="citerefentry.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="citerefentry.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="refentrytitle.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="refentrytitle">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="refentrytitle.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="refentrytitle.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="refentrytitle.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="namvolnum.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="manvolnum">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+      <xs:attributeGroup ref="manvolnum.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="manvolnum.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="namvolnum.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="citetitle.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="citetitle">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="citetitle.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="citetitle.attlist">
+    <xs:attribute name="pubwork">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="article"/>
+          <xs:enumeration value="book"/>
+          <xs:enumeration value="chapter"/>
+          <xs:enumeration value="part"/>
+          <xs:enumeration value="refentry"/>
+          <xs:enumeration value="section"/>
+          <xs:enumeration value="journal"/>
+          <xs:enumeration value="series"/>
+          <xs:enumeration value="set"/>
+          <xs:enumeration value="manuscript"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="citetitle.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="emphasis.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="emphasis">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="emphasis.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="emphasis.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="emphasis.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="firstterm.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="firstterm">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+      <xs:attributeGroup ref="firstterm.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="firstterm.attlist">
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="firstterm.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="foreignphrase.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="foreignphrase">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="foreignphrase.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="foreignphrase.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="foreignphrase.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="glossterm.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="glossterm">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="glossterm.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="glossterm.attlist">
+    <xs:attributeGroup ref="linkend.attrib"/>
+    <xs:attribute name="baseform"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="glossterm.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="phrase.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="phrase">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="phrase.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="phrase.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="phrase.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="quote.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="quote">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="quote.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="quote.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="quote.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="ssscript.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="subscript">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="link.char.class"/>
+        <xs:element ref="emphasis"/>
+        <xs:element ref="replaceable"/>
+        <xs:element ref="symbol"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="other.char.class"/>
+      </xs:choice>
+      <xs:attributeGroup ref="subscript.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="subscript.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="ssscript.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="superscript">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="link.char.class"/>
+        <xs:element ref="emphasis"/>
+        <xs:element ref="replaceable"/>
+        <xs:element ref="symbol"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="other.char.class"/>
+      </xs:choice>
+      <xs:attributeGroup ref="superscript.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="superscript.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="ssscript.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="trademark.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="trademark">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="link.char.class"/>
+        <xs:group ref="tech.char.class"/>
+        <xs:group ref="base.char.class"/>
+        <xs:group ref="other.char.class"/>
+        <xs:element ref="inlinegraphic"/>
+        <xs:element ref="inlinemediaobject"/>
+        <xs:element ref="emphasis"/>
+      </xs:choice>
+      <xs:attributeGroup ref="trademark.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="trademark.attlist">
+    <xs:attribute name="class" default="trade">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="service"/>
+          <xs:enumeration value="trade"/>
+          <xs:enumeration value="registered"/>
+          <xs:enumeration value="copyright"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="trademark.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="wordasword.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="wordasword">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+      <xs:attributeGroup ref="wordasword.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="wordasword.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="wordasword.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="link.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="link">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="link.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="link.attlist">
+    <xs:attribute name="endterm" type="xs:IDREF"/>
+    <xs:attributeGroup ref="linkendreq.attrib"/>
+    <xs:attribute name="type"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="link.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="olink.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="olink">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="olink.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="olink.attlist">
+    <xs:attribute name="targetdocent" type="xs:ENTITY"/>
+    <xs:attribute name="linkmode" type="xs:IDREF"/>
+    <xs:attribute name="localinfo"/>
+    <xs:attribute name="type"/>
+    <xs:attribute name="targetdoc"/>
+    <xs:attribute name="targetptr"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="olink.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="ulink.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="ulink">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+      <xs:attributeGroup ref="ulink.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="ulink.attlist">
+    <xs:attribute name="url" use="required"/>
+    <xs:attribute name="type"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="ulink.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="footnoteref.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="footnoteref">
+    <xs:complexType>
+      <xs:attributeGroup ref="footnoteref.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="footnoteref.attlist">
+    <xs:attributeGroup ref="linkendreq.attrib"/>
+    <xs:attributeGroup ref="label.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="footnoteref.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="xref.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="xref">
+    <xs:complexType>
+      <xs:attributeGroup ref="xref.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="xref.attlist">
+    <xs:attribute name="endterm" type="xs:IDREF"/>
+    <xs:attributeGroup ref="linkendreq.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="xref.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="anchor.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="anchor">
+    <xs:complexType>
+      <xs:attributeGroup ref="anchor.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="anchor.attlist">
+    <xs:attributeGroup ref="idreq.attrib"/>
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="remap.attrib"/>
+    <xs:attributeGroup ref="xreflabel.attrib"/>
+    <xs:attributeGroup ref="revisionflag.attrib"/>
+    <xs:attributeGroup ref="effectivity.attrib"/>
+    <xs:attributeGroup ref="anchor.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="beginpage.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="beginpage">
+    <xs:complexType>
+      <xs:attributeGroup ref="beginpage.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="beginpage.attlist">
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="beginpage.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="indexterm.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="indexterm">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="primary"/>
+        <xs:choice minOccurs="0">
+          <xs:sequence>
+            <xs:element ref="secondary"/>
+            <xs:choice minOccurs="0">
+              <xs:sequence>
+                <xs:element ref="tertiary"/>
+                <xs:choice minOccurs="0">
+                  <xs:element ref="see"/>
+                  <xs:element maxOccurs="unbounded" ref="seealso"/>
+                </xs:choice>
+              </xs:sequence>
+              <xs:element ref="see"/>
+              <xs:element maxOccurs="unbounded" ref="seealso"/>
+            </xs:choice>
+          </xs:sequence>
+          <xs:element ref="see"/>
+          <xs:element maxOccurs="unbounded" ref="seealso"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="indexterm.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="indexterm.attlist">
+    <xs:attributeGroup ref="pagenum.attrib"/>
+    <xs:attribute name="scope">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="all"/>
+          <xs:enumeration value="global"/>
+          <xs:enumeration value="local"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="significance" default="normal">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="preferred"/>
+          <xs:enumeration value="normal"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="class">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="singular"/>
+          <xs:enumeration value="startofrange"/>
+          <xs:enumeration value="endofrange"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="startref" type="xs:IDREF"/>
+    <xs:attribute name="zone" type="xs:IDREFS"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="indexterm.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="primsecter.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="primary">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="primary.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="primary.attlist">
+    <xs:attribute name="sortas"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="primsecter.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="secondary">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="secondary.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="secondary.attlist">
+    <xs:attribute name="sortas"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="primsecter.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="tertiary">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="tertiary.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="tertiary.attlist">
+    <xs:attribute name="sortas"/>
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="primsecter.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="seeseealso.role.attrib">
+    <xs:attributeGroup ref="role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="see">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="see.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="see.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seeseealso.role.attrib"/>
+  </xs:attributeGroup>
+  <xs:element name="seealso">
+    <xs:complexType mixed="true">
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+      <xs:attributeGroup ref="seealso.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:attributeGroup name="seealso.attlist">
+    <xs:attributeGroup ref="common.attrib"/>
+    <xs:attributeGroup ref="seeseealso.role.attrib"/>
+  </xs:attributeGroup>
+</xs:schema>
diff --git a/schema/xmlschema/dbtables.xsd b/schema/xmlschema/dbtables.xsd
deleted file mode 100644 (file)
index 5748457..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE xsd:schema SYSTEM
-  "http://www.w3.org/2001/XMLSchema.dtd" [
-
-<!ENTITY % p 'xsd:'>
-<!ENTITY % s ':xsd'>
-<!ENTITY % schemaAttrs "
-       xmlns:xsd       CDATA   #IMPLIED
-       xmlns:tbl       CDATA   #IMPLIED
-       xmlns:db        CDATA   #IMPLIED
-">
-]>
-<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
-     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
-
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-  xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
-  targetNamespace='http://www.oasis-open.org/tables/exchange/1.0'
-  xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-  elementFormDefault='qualified'>
-
-  <xsd:import namespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'/>
-
-<!-- ...................................................................... -->
-<!-- DocBook XML Schema V4.1.2.3........................................... -->
-<!-- ...................................................................... -->
-<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
-     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
-
-<!-- ...................................................................... -->
-<!-- The Table Model ...................................................... -->
-
-<xsd:redefine schemaLocation='soextblx.xsd'>
-  <!-- declare some extension attributes; these are referenced in -->
-  <!-- soextblx.xsd, but locally defined as empty -->
-  <!-- this doesn't work in xsv ... -->
-  <!--
-  <xsd:attributeGroup name='tbl.entry.att'>
-      <xsd:attribute ref='tbl.entry.att'/>
-    <xsd:attribute name='role' type='xsd:string'/>
-  </xsd:attributeGroup>
-  -->
-
-  <!-- re-declare the entryType type as an extension of the original -->
-  <!-- entryType declared in soextblx.xsd -->
-  <xsd:complexType name='entryType' mixed='true'>
-    <xsd:complexContent>
-      <xsd:extension base='tbl:entryType'>
-        <xsd:choice minOccurs='0' maxOccurs='unbounded'>
-          <xsd:group ref='db:para.char.mix'/>
-          <xsd:group ref='db:tabentry.mix'/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-</xsd:redefine>
-
-</xsd:schema>
index d134645049877917ebe1e860f4d5f19fc0708c06..e7a7e8cd64bb2ac7be7abf8da158827fe113b8c7 100644 (file)
@@ -1,35 +1,7 @@
-<!DOCTYPE xsd:schema SYSTEM
-  "http://www.w3.org/2001/XMLSchema.dtd" [
-
-<!ENTITY % p 'xsd:'>
-<!ENTITY % s ':xsd'>
-<!ENTITY % schemaAttrs "
-       xmlns:db        CDATA   #IMPLIED
-       xmlns:xml       CDATA   #IMPLIED
-       xmlns:tbl       CDATA   #IMPLIED
-">
-]>
-<!-- ...................................................................... -->
-<!-- DocBook XML Schema V4.1.2.3........................................... -->
-<!-- ...................................................................... -->
-
-<!-- Copyright 2000 HaL Computer Systems, Inc.,
-     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
-     Corporation, Sun Microsystems, Inc, and the Organization for the
-     Advancement of Structured Information Standards (OASIS).
-
-     $Id$
--->
-
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-            targetNamespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-            xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-            xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
-            xmlns:xml='http://www.w3.org/XML/1998/namespace'
-            elementFormDefault='qualified'>
-
-<xsd:include schemaLocation="dbnotn.xsd"/>
-<xsd:include schemaLocation="dbpool.xsd"/>
-<xsd:include schemaLocation="dbhier.xsd"/>
-
-</xsd:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
+  <xs:include schemaLocation="dbnotn.xsd"/>
+  <xs:include schemaLocation="dbcent.xsd"/>
+  <xs:include schemaLocation="dbpool.xsd"/>
+  <xs:include schemaLocation="dbhier.xsd"/>
+</xs:schema>
diff --git a/schema/xmlschema/soextblx.xsd b/schema/xmlschema/soextblx.xsd
deleted file mode 100644 (file)
index acf268d..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE xsd:schema SYSTEM
-  "http://www.w3.org/2001/XMLSchema.dtd" [
-
-<!ENTITY % p 'xsd:'>
-<!ENTITY % s ':xsd'>
-<!ENTITY % schemaAttrs "
-       xmlns:tbl       CDATA   #IMPLIED
-">
-]>
-<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
-     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
-
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='http://www.oasis-open.org/tables/exchange/1.0'
-  xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
-  elementFormDefault='qualified'>
-
-<xsd:simpleType name='yesorno'>
-  <xsd:restriction base='xsd:string'>
-    <xsd:enumeration value='0'/>
-    <xsd:enumeration value='1'/>
-  </xsd:restriction>
-</xsd:simpleType>
-
-<xsd:attributeGroup name='table.att'/>
-<xsd:attributeGroup name='tgroup.att'/>
-<xsd:attributeGroup name='colspec.att'/>
-<xsd:attributeGroup name='thead.att'/>
-<xsd:attributeGroup name='tbody.att'/>
-<xsd:attributeGroup name='row.att'/>
-<xsd:attributeGroup name='entry.att'/>
-
-<xsd:complexType name="tableType">
-  <xsd:attribute name='frame'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='top'/>
-        <xsd:enumeration value='bottom'/>
-        <xsd:enumeration value='topbot'/>
-        <xsd:enumeration value='all'/>
-        <xsd:enumeration value='sides'/>
-        <xsd:enumeration value='none'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attribute name='colsep' type='tbl:yesorno'/>
-  <xsd:attribute name='rowsep' type='tbl:yesorno'/>
-  <xsd:attributeGroup ref='tbl:table.att'/>
-</xsd:complexType>
-
-<xsd:complexType name='tgroup'>
-  <xsd:sequence>
-    <xsd:element ref='tbl:colspec' minOccurs='0' maxOccurs='unbounded'/>
-    <xsd:element ref='tbl:thead' minOccurs='0' maxOccurs='1'/>
-    <xsd:element ref='tbl:tbody'/>
-  </xsd:sequence>
-  <xsd:attribute name='cols' type='xsd:integer' use='required'/>
-  <xsd:attribute name='colsep' type='tbl:yesorno'/>
-  <xsd:attribute name='rowsep' type='tbl:yesorno'/>
-  <xsd:attribute name='align'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='left'/>
-        <xsd:enumeration value='right'/>
-        <xsd:enumeration value='center'/>
-        <xsd:enumeration value='justify'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='tbl:tgroup.att'/>
-</xsd:complexType>
-
-<xsd:complexType name='colspec'>
-  <!-- EMPTY -->
-  <xsd:complexContent>
-    <xsd:restriction base='xsd:anyType'>
-      <xsd:attribute name='colnum' type='xsd:integer'/>
-      <xsd:attribute name='colname' type='xsd:NMTOKEN'/>
-      <xsd:attribute name='colwidth' type='xsd:string'/>
-      <xsd:attribute name='colsep' type='tbl:yesorno'/>
-      <xsd:attribute name='rowsep' type='tbl:yesorno'/>
-      <xsd:attribute name='align'>
-        <xsd:simpleType>
-          <xsd:restriction base='xsd:string'>
-            <xsd:enumeration value='left'/>
-            <xsd:enumeration value='right'/>
-            <xsd:enumeration value='center'/>
-            <xsd:enumeration value='justify'/>
-            <xsd:enumeration value='char'/>
-          </xsd:restriction>
-        </xsd:simpleType>
-      </xsd:attribute>
-      <xsd:attribute name='char' type='xsd:string'/>
-      <xsd:attribute name='charoff' type='xsd:NMTOKEN'/>
-      <xsd:attributeGroup ref='tbl:colspec.att'/>
-    </xsd:restriction>
-  </xsd:complexContent>
-</xsd:complexType>
-
-<xsd:complexType name='thead'>
-  <xsd:choice>
-    <xsd:element ref='tbl:row' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:choice>
-  <xsd:attribute name='valign'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='top'/>
-        <xsd:enumeration value='middle'/>
-        <xsd:enumeration value='bottom'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='tbl:thead.att'/>
-</xsd:complexType>
-
-<xsd:complexType name='tbody'>
-  <xsd:choice>
-    <xsd:element ref='tbl:row' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:choice>
-  <xsd:attribute name='valign'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='top'/>
-        <xsd:enumeration value='middle'/>
-        <xsd:enumeration value='bottom'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='tbl:tbody.att'/>
-</xsd:complexType>
-
-<xsd:complexType name='row'>
-  <xsd:choice>
-    <xsd:element ref='tbl:entry' minOccurs='1' maxOccurs='unbounded'/>
-  </xsd:choice>
-  <xsd:attribute name='rowsep' type='tbl:yesorno'/>
-  <xsd:attribute name='valign'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='top'/>
-        <xsd:enumeration value='middle'/>
-        <xsd:enumeration value='bottom'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='tbl:row.att'/>
-</xsd:complexType>
-
-<xsd:complexType name="entryType">
-  <xsd:attribute name='colname' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='namest' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='nameend' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='morerows' type='xsd:integer'/>
-  <xsd:attribute name='colsep' type='tbl:yesorno'/>
-  <xsd:attribute name='rowsep' type='tbl:yesorno'/>
-  <xsd:attribute name='align'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='left'/>
-        <xsd:enumeration value='right'/>
-        <xsd:enumeration value='center'/>
-        <xsd:enumeration value='justify'/>
-        <xsd:enumeration value='char'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attribute name='char' type='xsd:string'/>
-  <xsd:attribute name='charoff' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='valign'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='top'/>
-        <xsd:enumeration value='middle'/>
-        <xsd:enumeration value='bottom'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='tbl:entry.att'/>
-</xsd:complexType>
-
-<!--
-<xsd:complexType name='entry' mixed='true'>
-  <xsd:choice>
-    <xsd:any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
-  </xsd:choice>
-
-  <xsd:attribute name='colname' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='namest' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='nameend' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='morerows' type='xsd:integer'/>
-  <xsd:attribute name='colsep' type='tbl:yesorno'/>
-  <xsd:attribute name='rowsep' type='tbl:yesorno'/>
-  <xsd:attribute name='align'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='left'/>
-        <xsd:enumeration value='right'/>
-        <xsd:enumeration value='center'/>
-        <xsd:enumeration value='justify'/>
-        <xsd:enumeration value='char'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attribute name='char' type='xsd:string'/>
-  <xsd:attribute name='charoff' type='xsd:NMTOKEN'/>
-  <xsd:attribute name='valign'>
-    <xsd:simpleType>
-      <xsd:restriction base='xsd:string'>
-        <xsd:enumeration value='top'/>
-        <xsd:enumeration value='middle'/>
-        <xsd:enumeration value='bottom'/>
-      </xsd:restriction>
-    </xsd:simpleType>
-  </xsd:attribute>
-  <xsd:attributeGroup ref='tbl:entry.att'/>
-</xsd:complexType>
--->
-
-<xsd:element name='tgroup' type='tbl:tgroup'/>
-<xsd:element name='colspec' type='tbl:colspec'/>
-<xsd:element name='thead' type='tbl:thead'/>
-<xsd:element name='tbody' type='tbl:tbody'/>
-<xsd:element name='row' type='tbl:row'/>
-<xsd:element name='entry' type='tbl:entryType'/>
-
-</xsd:schema>
index ecc830f430006dff2d91db1af40d8fd77028a17d..264ef58f87cdf0b138a73ba74e960fcfdab4cdff 100644 (file)
-<!DOCTYPE article
-  PUBLIC "-//Norman Walsh//DTD Simplified DocBook XML V4.1.2.4//EN"
-         "http://www.nwalsh.com/docbook/simple/4.1.2.4/sdocbook.dtd" [
-<!ENTITY % local.article.attrib
-"xmlns CDATA #IMPLIED
-xmlns:xsi CDATA #IMPLIED
-xmlns:tbl CDATA #IMPLIED
-xsi:schemaLocation CDATA #IMPLIED
-">
-<!ENTITY conduitzip "xmlconduit11.zip">
-<!ENTITY trade "(TM)">
-]>
-<article xmlns='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
-        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
-        xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
-        xsi:schemaLocation='
-            http://www.oasis-open.org/docbook/xmlschema/4.1.2
-             docbook.xsd'>
-
-<!-- This article is included as a test case for the XML Schema -->
-
-<articleinfo>
-<title>XML From Your Palm</title>
-<pubdate>11 Oct 2000</pubdate>
-<releaseinfo role="meta">
-$Id$
-</releaseinfo>
-
-<revhistory>
-<revision>
-<revnumber>1.2</revnumber>
-<date>11 Oct 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Documented significant changes to the conduits.</revremark>
-</revision>
-<revision>
-<revnumber>1.1</revnumber>
-<date>15 Aug 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Fixed broken internal links.</revremark>
-</revision>
-<revision>
-<revnumber>1.0</revnumber>
-<date>15 Aug 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>First public release.</revremark>
-</revision>
-<revision>
-<revnumber>0.4</revnumber>
-<date>15 Aug 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Added SyncXmlTD and SyncXmlMB</revremark>
-</revision>
-<revision>
-<revnumber>0.3</revnumber>
-<date>14 Aug 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Added link table</revremark>
-</revision>
-<revision>
-<revnumber>0.2</revnumber>
-<date>14 Aug 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>A few revisions; spellcheck</revremark>
-</revision>
-<revision>
-<revnumber>0.1</revnumber>
-<date>08 Aug 2000</date>
-<authorinitials>ndw</authorinitials>
-<revremark>Initial draft</revremark>
-</revision>
-</revhistory>
-
-<author><firstname>Norman</firstname><surname>Walsh</surname>
-<affiliation>
-<jobtitle>Staff Engineer</jobtitle>
-<orgname>Sun Microsystems, XML Technology Center</orgname>
-</affiliation>
-<authorblurb>
-<para>Norman Walsh, a Staff Engineer in Sun's XML Technology Center,
-is chair of the OASIS DocBook Technical Committee and serves on a number
-of W3C Working Groups, including the XML Core, XSL, and XML Schema WGs.</para>
-</authorblurb>
-</author>
-
-<copyright>
-  <year>2000</year>
-  <holder>Sun Microsystems, Inc.</holder>
-</copyright>
-</articleinfo>
-
-<para>This article was updated on 11 Oct 2000 to reflect changes made
-in the version 1.1 conduits. For a quick summary of the changes in version
-1.1, see <xref linkend="app11"/>; for upgrading instructions see
-<xref linkend="upg11"/>.</para>
-
-<para>If you're like me, you rely on your Palm&trade; organizer to
-keep a semblance of order in your life. Without it, I wouldn't get to
-meetings on time, or remember to participate in telephone conference
-calls<footnote><para>Ok, it's definitely a mixed blessing, I see that,
-but... :-)</para></footnote>, or know how to reach my colleagues when
-I'm on the road.</para>
-
-<para>Unfortunately, for all its benefits, I still have some troubles
-with my Palm. Among them, the fact that I can't sync my Palm address
-book with other information management tools that are important to
-me (e.g., my
-<ulink role="linktable" url="http://bbdb.sourceforge.net/">BBDB</ulink><footnote><para>I have since been informed of
-<ulink url="http://home.rochester.rr.com/tsdeweese/SyncBBDB.html">SyncBBDB</ulink>,
-but I'm still working on other XML-based information management tools.</para>
-</footnote>
-in Emacs) or publish the calendar on the web so that I can share
-my calendar with my manager and colleagues.</para>
-
-<para>Now, I'm sure I could have gone out and found solutions for some
-of these problems, for example, one of the web calendar syncing tools,
-but when I hear a problem described that involves open-format information
-exchange and multiple output formats, one answer springs immediately to
-mind: XML.</para>
-
-<para>So, what I wanted was some way to sync my Palm to my desktop
-machine using XML so that I could transform the XML into other formats
-and sync it with other formats.</para>
-
-<section><title>Initial Forays</title>
-
-<para>This was very much a personal project, so the amount of time and
-energy that I had to spend on it was directly influenced by the number
-and priority of other projects that I had going on.</para>
-
-<para>Initially I looked into the possibility of reverse engineering
-the PDB file formats that the Palm Desktop application created when syncing
-my Palm. It didn't take me long to abandon that course. I'm sure it
-could be done, but how tedious!</para>
-
-<para>Using the gcc-based conduit tools, or buying one of the commercial
-conduit toolkits, crossed my mind. But that looked like a pretty steep
-learning curve, too.</para>
-
-<para>Next, I found the
-<ulink role="linktable" url="http://sourceforge.net/projects/pilot-link">pilot-link</ulink>
-package. This package included
-<command>pilot-file</command>, which produced a much more readable dump
-of a Palm database. Armed with this dump, I was able to reverse
-engineer the Datebook format well enough to produce an XML
-version. But that only solved half the problem because I couldn't see
-any way to rebuild the file header information that would be necessary
-to sync the database back into my Palm. Besides, when I looked at the
-<command>pilot-file</command> dump of the Addressbook, I was reminded
-of just how tedious it had been to reverse engineer the
-Datebook.</para>
-
-<para>Looking at the source for <command>pilot-xfer</command>
-convinced me that everything I needed was in there. The next logical
-step was to hack pilot-xfer so that it read/wrote XML instead of
-PDBs.</para>
-
-<para>That was back sometime in January or February. Before I got around
-to hacking on <command>pilot-xfer</command>, I started running Linux
-on my desktop and discovered
-<ulink role="linktable" url="http://www.moshpit.org/pilotmgr/">PilotManager</ulink>.
-<ulink url="http://www.moshpit.org/pilotmgr/">PilotManager</ulink> is
-essentially a Perl/TK interface wrapped around the
-<ulink url="http://sourceforge.net/projects/pilot-link">pilot-link</ulink>
-tools that provides a complete Palm syncing tool for Unix. More importantly,
-it provides an extensible framework for writing conduits of your own.
-</para>
-</section>
-
-<section><title>PilotManager</title>
-
-<para><xref linkend="pmfig"/> shows the PilotManager application after
-a sync operation. As you can see, I made a couple of changes to the
-Addressbook on the desktop (specifically by editing
-<filename>.xmlAddr</filename>) and updated my schedule on the Pilot.
-These changes were synced appropriately.</para>
-
-<figure id="pmfig"><title>The PilotManager Interface</title>
-<mediaobject>
-<imageobject>
-<imagedata fileref="images/pilot-manager.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-
-<para>I should note at this point that the PilotManager application
-runs on Linux, Solaris, and presumably other Unixes, but does not
-run on Windows, as far as I know. The code that underlies PilotManager:
-Perl, Perl/Tk, and pilot-link have all been ported, so it's theoretically
-a simple matter of porting, but I haven't tried it.</para>
-
-</section>
-
-<section><title>PilotManager Conduits</title>
-
-<para>The PilotManager application includes several conduits. I
-modeled the SyncXml
-Conduits off the standard <filename>SyncAB</filename> conduit.</para>
-
-<para>In simplest terms, the PilotManager conduit interface is a set
-of hashes. A sync operation reads information from the Palm and returns
-each record as a hash. Appropriately constructed hashes can be passed
-back to update the Palm.</para>
-
-<para>If the conduit can provide enough information about each record
-(its fields and what fields constitute a match, etc.), as the
-Addressbook and Datebook conduits can, PilotManager takes care of most
-of the bookkeeping for us.</para>
-
-<section id="upg11"><title>Upgrading the Conduits</title>
-
-<para>If you have been using the version 1.0
-SyncXML Conduits, you are <emphasis>strongly
-encouraged</emphasis> to upgrade. In addition to a few new features,
-the version 1.1 conduits contain several bug fixes. Note, in
-particular, that the version 1.0 <filename>SyncXmlTB</filename>
-conduit is fundamentally broken; it does not preserve the due date of
-Todo items across a sync!</para>
-
-<para>Before you upgrade the conduits, make sure that you make a
-complete backup of your Palm using the <filename>Backup</filename>
-conduit or whatever method you normally use for full backups. This
-will allow you to recover in case of catastrophic error.</para>
-
-<para>Perform a sync operation using the version 1.0
-SyncXml Conduits.</para>
-
-<para>Examine the configuration of each conduit and record the
-location of the XML databases. Generally, these will be in
-<filename>~/.xmlAddr</filename>, <filename>~/.xmlDate</filename>,
-etc., but the conduits may have been configured differently.</para>
-
-<para>Download the
-<ulink url="&conduitzip;">SyncXml Conduits 1.1</ulink> package
-and unpack it somewhere.</para>
-
-<para>Install the version 1.1 conduits:</para>
-
-<itemizedlist>
-<listitem><para>Replace the version 1.0
-<filename>SyncXml{AB,DB,MB,TB}.pm</filename> files on your system with
-the version 1.1 files of the same name
-</para></listitem>
-<listitem><para>Install the <emphasis>new file</emphasis>
-<filename>SyncXml.pm</filename> in the same location.
-</para></listitem>
-<listitem><para>Install the new DTDs as well.
-</para></listitem>
-</itemizedlist>
-
-<para>Now <emphasis>delete the XML databases</emphasis>. In order to do this
-successfully, you must delete both the XML files (stored at the locations you
-recorded a moment ago) and the PilotManager binary
-databases. The binary databases are usually
-<filename>~/.pilotmgr/SyncXmlAB/addr.db</filename>,
-<filename>~/.pilotmgr/SyncXmlDB/date.db</filename>,
-<filename>~/.pilotmgr/SyncXmlMB/memo.db</filename>, and
-<filename>~/.pilotmgr/SyncXmlTB/todo.db</filename>. Naturally, if you
-configured PilotManager to use another directory, they will be elsewhere.
-Make sure you delete both the XML files and the binary files before you
-continue.</para>
-
-<para>Do not delete the <filename>SyncXml{AB,DB,MB,TB}</filename>
-directories. As near as I can tell, PilotManager only creates them
-when a new conduit is added.</para>
-
-<para>Now restart PilotManager and re-sync using the
-SyncXML Conduits. Because the local databases do
-not exist, the conduits will copy all of the data off your Palm and
-rebuild the local databases.</para>
-
-<para>The version 1.1 conduits have several new configuration options; you
-may want to examine the configuration of each new conduit.</para>
-
-<section><title>Installing the Conduits</title>
-
-<para>Before you begin, make sure that you make a complete backup of
-your Palm using whatever method you normally use for full
-backups. This will allow you to recover in case of catastrophic
-error.</para>
-
-<para>If you have not already done so, install
-<ulink url="http://www.moshpit.org/pilotmgr/">PilotManager</ulink> and make
-sure that it's working. This will guarantee that you have appropriate
-versions of Perl and other supporting tools in place.</para>
-
-<para>Get the Perl <literal>XML::Parser</literal> and
-<literal>XML::DOM</literal> modules from
-<ulink url="http://cpan.perl.com/">CPAN</ulink> and install them, if you do
-not already have them installed.</para>
-
-<para>Download the
-<ulink role="linktable" url="&conduitzip;">SyncXml Conduits</ulink> package
-and unpack it somewhere.</para>
-
-<para>Install the conduits by placing the
-<filename>SyncXml.pm</filename> and
-<filename>SyncXml{AB,DB,MB,TB}.pm</filename> files
-where PilotManager will find them. Exactly where that is depends on how
-you've installed PilotManager. On my system, that would be in
-<filename>/usr/lib/perl5/PilotMgr</filename> or in
-<filename>~/.pilotmgr</filename>.</para>
-
-<para>Install the DTDs by placing them where the SyncXml conduits will
-find them. I recommend that you install them in
-<filename>lib/schema</filename> under wherever you installed the
-conduits, but you can also put them directly in the conduits directory or in
-<filename>~/.pilotmgr/SyncXml{AB,DB,MB,TB}</filename>.
-</para>
-
-<para>When all the installation is complete, run
-<command>pilot-manager</command>. It will announce the discovery of the
-new conduits. Under the <literal>File/Properties...</literal> menu, add
-the new conduits to the list of active conduits and they'll get used the
-next time you sync.</para>
-</section>
-
-</section>
-
-<section><title>SyncXmlAB</title>
-
-<para>The SyncXmlAB conduit syncs your Palm AddressBook with your
-desktop.</para>
-
-<section><title>Customizing SyncXmlAB</title>
-
-<para>Configuring <literal>SyncXmlAB</literal> reveals the panel
-shown in <xref linkend="config-ab"/>:</para>
-
-<figure id="config-ab"><title>The SyncXmlAB Configuration Panel</title>
-<mediaobject>
-<imageobject>
-<imagedata fileref="images/config-ab.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-
-<variablelist>
-<varlistentry><term>Enable user fields</term>
-<listitem><para>If this option is enabled, the <literal>Notes</literal>
-field of each Addressbook record is treated as structured text
-according to the conventions discussed in <xref linkend="userfields"/>.
-</para></listitem>
-</varlistentry>
-<varlistentry><term>XML file:</term>
-<listitem><para>Identifies the location where the XML Addressbook file
-is to be stored. This file is used to sync with the Palm. Changes to
-this file will be reflected in the Palm at the next sync, and changes
-in the Palm will be written back to this file.  </para></listitem>
-</varlistentry>
-<varlistentry><term>Validate:</term>
-<listitem><para>Identifies the location of the DTD to which the XML
-Addressbook file will refer. During first-time initialization, the
-conduit attempts to locate the DTD. If you subsequently move the DTD,
-or if you have installed it somewhere that the conduit does not look,
-you will have to update this value; otherwise, it's unlikely that
-you'll ever need to change this.</para></listitem>
-</varlistentry>
-</variablelist>
-
-</section>
-
-<section><title>Understanding the XML Address Book</title>
-
-<para>Syncing your Palm with the <literal>SyncXmlAB</literal> conduit,
-produces a single XML file, by default <filename>~/.xmlAddr</filename>.
-This file contains the complete Addressbook database. The PilotManager
-also keeps a binary representation of the database in
-<filename>~/.pilotmgr/SyncXmlAB/addr.db</filename>. If you want to delete
-the XML address book and resync from the Palm, delete both files.
-</para>
-
-<section><title>addressbook</title>
-
-<para>The root element of an Addressbook is <literal>addressbook</literal>.
-It identifies the version number of the XML file format and the name
-of the user. Attempts to sync the wrong user will generate a warning.
-If a future version of the conduit uses a different version number, the
-sync will abort so that you don't wind up with a horribly corrupted
-database.
-</para>
-</section>
-
-<section><title>categories, fields, and phones</title>
-
-<para>The Palm stores categories, field names, and phone number labels
-only once in the database, essentially as arrays. Each record in the
-database refers to the field name by offset into the appropriate array.
-</para>
-
-<para>Each of these label arrays is stored at the top of the XML file.
-If you change these labels, the effects will be global within the
-addressbook.</para>
-
-<para>Modify these fields with some caution because the conduit makes
-no effort to assure that the changes you've made are reasonable.</para>
-
-</section>
-
-<section><title>address</title>
-
-<para>Following the categories and other fields, each record appears
-in an <literal>&lt;address&gt;</literal> element. Each address is a fairly
-straightforward duplicate of the record from the Addressbook database.
-There are only a few issues to consider.
-</para>
-
-<section><title>Address IDs</title>
-
-<para>Internally, the Palm maintains a unique ID value for each
-record.  The Palm IDs are not stored in the XML file because there
-would be no way to generate a new one on the desktop in order to add a
-record to the XML address book. Instead, a mapping is maintained
-between the XML ID values and the Palm unique IDs.</para>
-
-<para>To add a new address to the XML file, simply construct a new XML
-ID value that is unique within the XML address book. You do not need
-to consider the Palm unique IDs.</para>
-</section>
-
-<section><title>Phone labels</title>
-
-<para>The label value on each phone number is expected to match one of
-the labels in the top-level <literal>&lt;phones&gt;</literal> list.
-The sync will fail if it does not.</para>
-
-<para>The phone number identified as <quote>primary</quote> will be the one
-displayed on the address book summary screen.</para>
-
-</section>
-
-<section><title>Custom labels</title>
-
-<para>Labels on the custom fields are just a convenience for stylesheets
-and other processing tools. The fields are actually inserted into each
-record in the order presented, without regard to the labels.</para>
-
-</section>
-
-<section><title>Category</title>
-
-<para>The category value  is expected to match one of
-the labels in the top-level <literal>&lt;categories&gt;</literal> list.
-The sync will fail if it does not.</para>
-
-</section>
-</section>
-</section>
-</section>
-
-<section><title>SyncXmlDB</title>
-
-<para>The SyncXmlDB conduit syncs your Palm DateBook with your
-desktop.</para>
-
-<section><title>Customizing SyncXmlDB</title>
-
-<para>Configuring <literal>SyncXmlDB</literal> reveals the panel
-shown in <xref linkend="config-db"/>:</para>
-
-<figure id="config-db"><title>The SyncXmlDB Configuration Panel</title>
-<mediaobject>
-<imageobject>
-<imagedata fileref="images/config-db.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-
-<variablelist>
-<varlistentry><term>Enable user fields</term>
-<listitem><para>If this option is enabled, the <literal>Notes</literal>
-field of each Addressbook record is treated as structured text
-according to the conventions discussed in <xref linkend="userfields"/>.
-</para></listitem>
-</varlistentry>
-<varlistentry><term>Write Calendar</term>
-<listitem><para>If this option is enabled, the <literal>Calendar</literal>
-file will be written. The Calendar file is a write-only, linear representation
-of the Palm Datebook.
-</para></listitem>
-</varlistentry>
-<varlistentry><term>Enable DateBk4 extensions</term>
-<listitem><para>If this option is enabled, the conduit will attempt to
-decode the additional information stored in each appointment by
-the DateBk4 application. See <xref linkend="datebook-db4ext"/>.</para>
-</listitem>
-</varlistentry>
-<varlistentry><term>XML file:</term>
-<listitem><para>Identifies the location where the XML Datebook file
-is to be stored. This file is used to sync with the Palm. Changes to
-this file will be reflected in the Palm at the next sync, and changes
-in the Palm will be written back to this file.  </para></listitem>
-</varlistentry>
-<varlistentry><term>Val. XML:</term>
-<listitem><para>Identifies the location of the DTD to which the XML
-Datebook file will refer. During first-time initialization, the
-conduit attempts to locate the DTD. If you subsequently move the DTD,
-or if you have installed it somewhere that the conduit does not look,
-you will have to update this value; otherwise, it's unlikely that
-you'll ever need to change this.</para></listitem>
-</varlistentry>
-<varlistentry><term>Calendar:</term>
-<listitem><para>Identifies the location where the Calendar will be written,
-if the <quote>Write Calendar</quote> option is enabled. This file is
-write-only, it is updated by a sync operation, but is not consulted. Any
-local changes made to this file will be lost at each sync.</para></listitem>
-</varlistentry>
-<varlistentry><term>Val. Cal.:</term>
-<listitem><para>Identifies the location of the DTD to which the XML
-Calendar file will refer. During first-time initialization, the
-conduit attempts to locate the DTD. If you subsequently move the DTD,
-or if you have installed it somewhere that the conduit does not look,
-you will have to update this value; otherwise, it's unlikely that
-you'll ever need to change this.</para></listitem>
-</varlistentry>
-<varlistentry><term>Cal Weeks:</term>
-<listitem><para>Identifies the number of weeks (starting with the
-first week of the current month) that should be copied to the
-Calendar file.</para></listitem>
-</varlistentry>
-<varlistentry><term>Use dummy days</term>
-<listitem><para>If this option is enabled, each week in the Calendar
-file will contain exactly seven days. So, for example, if the first of
-the month occurs on a Wednesday, "dummy days" will be inserted before
-the first to pad the week to seven days. Similarly, the last week in
-each month may be padded.</para>
-<para>Dummy days are only inserted in the Calendar file (not the Datebook
-XML file). They may simplify the task of writing stylesheets and other
-software designed to display the calendar.</para>
-</listitem>
-</varlistentry>
-</variablelist>
-</section>
-
-<section id="unddb"><title>Understanding the XML Date Book</title>
-
-<para>Syncing your Palm with the <literal>SyncXmlDB</literal> conduit,
-produces one or two XML files. It always produces an XML version of
-the date book, by default <filename>~/.xmlDate</filename>. It may also
-produce a calendar, by default <filename>~/.xmlCalendar</filename>.
-</para>
-
-<para>The XML version of the date book contains the complete Datebook
-database. The PilotManager
-also keeps a binary representation of the database in
-<filename>~/.pilotmgr/SyncXmlDB/date.db</filename>. If you want to delete
-the XML date book and resync from the Palm, delete both files.
-</para>
-
-<para>The date book is a compact representation of your schedule.
-Each entry in your schedule appears once in the date book, with start
-and end dates, repeating information, and exceptions all represented
-compactly as properties of the event. The events do not even appear in
-chronological order, necessarily, with in the date book.</para>
-
-<para>While this compact representation is useful for syncing, it is
-difficult to produce your typical <quote>month at a glance</quote> or
-other traditional calendar view from it. Events must be sorted into
-proper chronological order, repeating events must be generated (with
-exceptions), etc.</para>
-
-<para>In order to make the problem of constructing a calendar view more
-tractable for stylesheets, the conduit can also produce a calendar file.
-In this file, every month, week, and day is represented in chronological
-order. The XSL stylesheet, <filename>calendar.xsl</filename>, distributed
-with the conduits demonstrates how this file may be transformed.</para>
-
-<section><title>datebook</title>
-
-<para>The root element of a Datebook is <literal>datebook</literal>.
-It identifies the version number of the XML file format, the name
-of the user, the day of the week that the user identifies as the
-start of the week, and the date that that the file was produced.</para>
-
-<para>Attempts to sync the wrong user will generate a warning.
-If a future version of the conduit uses a different version number, the
-sync will abort so that you don't wind up with a horribly corrupted
-database.
-</para>
-</section>
-
-<section><title>appointment</title>
-
-<para>Each record appears
-in an <literal>&lt;appointment&gt;</literal> element. Each appointment
-is a fairly
-straightforward duplicate of the record from the Addressbook database.
-There are only a few issues to consider.
-</para>
-
-<section><title>Appointment IDs</title>
-
-<para>Internally, the Palm maintains a unique ID value for each
-record.  The Palm IDs are not stored in the XML file because there
-would be no way to generate a new one on the desktop in order to add a
-record to the XML date book. Instead, a mapping is maintained
-between the XML ID values and the Palm unique IDs.</para>
-
-<para>To add a new appointment to the XML file, simply construct a new XML
-ID value that is unique within the XML date book. You do not need
-to consider the Palm unique IDs.</para>
-</section>
-
-<section><title>Category</title>
-
-<para>The builtin date book on the Palm (or at least, on some of the
-Palm devices) does not support categories on appointments. But in fact the
-database does contain them. Some applications allow you to edit the
-category values on the Palm. This is reflected in a category on each
-appointment.</para>
-
-<para>The category value is expected to match one of
-the labels in the top-level <literal>&lt;categories&gt;</literal> list.
-The sync will fail if it does not.</para>
-
-</section>
-
-<section id="datebook-db4ext"><title>DateBk4 Extensions</title>
-
-<para>The DateBk4 application from
-<ulink url="http://www.pimlicosoftware.com/">Pimlico Software</ulink> adds
-several useful features to the Palm datebook. In order to maintain
-complete compatibility with the built-in datebook database, these
-additional features are encoded in the Note field of each appointment.
-</para>
-
-<para>If you enable DateBk4 extensions, this information is decoded
-in the XML Datebook and Calendar files. This allows you to observe the
-icons, time zones, and other DateBk4 extensions. Note, however, that these
-are "read only" values in the XML file; if you change them, the changes
-will not be synced to the Palm.</para>
-</section>
-
-</section>
-</section>
-</section>
-
-<section><title>SyncXmlMB</title>
-
-<para>The SyncXmlMB conduit syncs your Palm Memos with your
-desktop.</para>
-
-<section><title>Customizing SyncXmlMB</title>
-
-<para>Configuring <literal>SyncXmlMB</literal> reveals the panel
-shown in <xref linkend="config-mb"/>:</para>
-
-<figure id="config-mb"><title>The SyncXmlMB Configuration Panel</title>
-<mediaobject>
-<imageobject>
-<imagedata fileref="images/config-mb.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-
-<variablelist>
-<varlistentry><term>XML file:</term>
-<listitem><para>Identifies the location where the XML Memo file
-is to be stored. This file is used to sync with the Palm. Changes to
-this file will be reflected in the Palm at the next sync, and changes
-in the Palm will be written back to this file.</para></listitem>
-</varlistentry>
-<varlistentry><term>Validate:</term>
-<listitem><para>Identifies the location of the DTD to which the XML
-Memo file will refer. During first-time initialization, the
-conduit attempts to locate the DTD. If you subsequently move the DTD,
-or if you have installed it somewhere that the conduit does not look,
-you will have to update this value; otherwise, it's unlikely that
-you'll ever need to change this.</para></listitem>
-</varlistentry>
-</variablelist>
-</section>
-
-<section><title>Understanding the XML Memo List</title>
-
-<para>Syncing your Palm with the <literal>SyncXmlMB</literal> conduit,
-produces a single XML file, by default <filename>~/.xmlMemo</filename>.
-This file contains the complete Memo database. The PilotManager
-also keeps a binary representation of the database in
-<filename>~/.pilotmgr/SyncXmlMB/memo.db</filename>. If you want to delete
-the XML Memo list and resync from the Palm, delete both files.
-</para>
-
-<section><title>memobook</title>
-
-<para>The root element of an Memo list is <literal>memobook</literal>.
-It identifies the version number of the XML file format and the name
-of the user. Attempts to sync the wrong user will generate a warning.
-If a future version of the conduit uses a different version number, the
-sync will abort so that you don't wind up with a horribly corrupted
-database.
-</para>
-</section>
-
-<section><title>categories</title>
-
-<para>The Palm stores categories
-only once in the database, essentially as an array. Each record in the
-database refers to the category name by offset into this single array.
-</para>
-
-<para>The category label array is stored at the top of the XML file.
-If you change these labels, the effects will be global within the
-Memo list.</para>
-
-<para>Modify these fields with some caution because the conduit makes
-no effort to assure that the changes you've made are reasonable.</para>
-
-</section>
-
-<section><title>memo</title>
-
-<para>Following the categories, each record appears
-in a <literal>&lt;memo&gt;</literal> element. Each memo is a fairly
-straightforward duplicate of the record from the Memo database.
-There are only a few issues to consider.
-</para>
-
-<section><title>Memo IDs</title>
-
-<para>Internally, the Palm maintains a unique ID value for each
-record.  The Palm IDs are not stored in the XML file because there
-would be no way to generate a new one on the desktop in order to add a
-record to the XML memo list. Instead, a mapping is maintained
-between the XML ID values and the Palm unique IDs.</para>
-
-<para>To add a new memo to the XML file, simply construct a new XML
-ID value that is unique within the XML memobook. You do not need
-to consider the Palm unique IDs.</para>
-</section>
-
-<section><title>Category</title>
-
-<para>The category value is expected to match one of
-the labels in the top-level <literal>&lt;categories&gt;</literal> list.
-The sync will fail if it does not.</para>
-
-</section>
-</section>
-</section>
-</section>
-
-<section><title>SyncXmlTB</title>
-
-<para>The SyncXmlTB conduit syncs your Palm Todo list with your
-desktop.</para>
-
-<section><title>Customizing SyncXmlTB</title>
-
-<para>Configuring <literal>SyncXmlTB</literal> reveals the panel
-shown in <xref linkend="config-tb"/>:</para>
-
-<figure id="config-tb"><title>The SyncXmlTB Configuration Panel</title>
-<mediaobject>
-<imageobject>
-<imagedata fileref="images/config-tb.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-
-<variablelist>
-<varlistentry><term>Enable user fields</term>
-<listitem><para>If this option is enabled, the <literal>Notes</literal>
-field of each Todo record is treated as structured text
-according to the conventions discussed in <xref linkend="userfields"/>.
-</para></listitem>
-</varlistentry>
-<varlistentry><term>Enable DateBk4 extensions</term>
-<listitem><para>If this option is enabled, the conduit will attempt to
-decode the additional information stored in each appointment by
-the DateBk4 application. See <xref linkend="todo-db4ext"/>.</para>
-</listitem>
-</varlistentry>
-<varlistentry><term>XML file:</term>
-<listitem><para>Identifies the location where the XML Memo file
-is to be stored. This file is used to sync with the Palm. Changes to
-this file will be reflected in the Palm at the next sync, and changes
-in the Palm will be written back to this file.</para></listitem>
-</varlistentry>
-<varlistentry><term>Validate:</term>
-<listitem><para>Identifies the location of the DTD to which the XML
-Todo file will refer. During first-time initialization, the
-conduit attempts to locate the DTD. If you subsequently move the DTD,
-or if you have installed it somewhere that the conduit does not look,
-you will have to update this value; otherwise, it's unlikely that
-you'll ever need to change this.</para></listitem>
-</varlistentry>
-</variablelist>
-</section>
-
-<section><title>Understanding the XML Todo List</title>
-
-<para>Syncing your Palm with the <literal>SyncXmlTB</literal> conduit,
-produces a single XML file, by default <filename>~/.xmlTodo</filename>.
-This file contains the complete Todo database. The PilotManager
-also keeps a binary representation of the database in
-<filename>~/.pilotmgr/SyncXmlTB/todo.db</filename>. If you want to delete
-the XML Todo list and resync from the Palm, delete both files.
-</para>
-
-<section><title>todobook</title>
-
-<para>The root element of an Todo list is <literal>todobook</literal>.
-It identifies the version number of the XML file format and the name
-of the user. Attempts to sync the wrong user will generate a warning.
-If a future version of the conduit uses a different version number, the
-sync will abort so that you don't wind up with a horribly corrupted
-database.
-</para>
-</section>
-
-<section><title>categories</title>
-
-<para>The Palm stores categories
-only once in the database, essentially as an array. Each record in the
-database refers to the category name by offset into this single array.
-</para>
-
-<para>The category label array is stored at the top of the XML file.
-If you change these labels, the effects will be global within the
-Todo list.</para>
-
-<para>Modify these fields with some caution because the conduit makes
-no effort to assure that the changes you've made are reasonable.</para>
-
-</section>
-
-<section><title>todo</title>
-
-<para>Following the categories, each record appears
-in a <literal>&lt;todo&gt;</literal> element. Each memo is a fairly
-straightforward duplicate of the record from the Memo database.
-There are only a few issues to consider.
-</para>
-
-<section><title>Todo IDs</title>
-
-<para>Internally, the Palm maintains a unique ID value for each
-record.  The Palm IDs are not stored in the XML file because there
-would be no way to generate a new one on the desktop in order to add a
-record to the XML todo list. Instead, a mapping is maintained
-between the XML ID values and the Palm unique IDs.</para>
-
-<para>To add a new todo to the XML file, simply construct a new XML
-ID value that is unique within the XML todobook. You do not need
-to consider the Palm unique IDs.</para>
-</section>
-
-<section><title>Category</title>
-
-<para>The category value is expected to match one of
-the labels in the top-level <literal>&lt;categories&gt;</literal> list.
-The sync will fail if it does not.</para>
-
-</section>
-
-<section id="todo-db4ext"><title>DateBk4 Extensions</title>
-
-<para>The DateBk4 application from
-<ulink url="http://www.pimlicosoftware.com/">Pimlico Software</ulink> adds
-several useful features to the Palm todo list. In order to maintain
-complete compatibility with the built-in todo database, these
-additional features are encoded in the Note field of each todo entry.
-</para>
-
-<para>If you enable DateBk4 extensions, this information is decoded
-in the XML Todo file. This allows you to observe the
-icons, alarm times, and other DateBk4 extensions. Note, however, that these
-are "read only" values in the XML file; if you change them, the changes
-will not be synced to the Palm.</para>
-</section>
-
-</section>
-</section>
-</section>
-
-<section id="userfields"><title>User Fields</title>
-
-<para>In order to store additional information in my Palm in a
-quasi-structured fashion, I've adopted a convention for the 'Note'
-field.</para>
-
-<para>If the <quote>Note</quote> field contains the line
-<quote>user-fields:</quote>, then all of the following lines that
-begin <quote>field-name:</quote> are <quote>user fields</quote>.  If
-you enable user fields, these are parsed into the XML.  For example, a
-DateBook entry with the following Note:</para>
-
-<programlisting>
-  user-fields:
-  loc: Bay Area
-  url: http://.../
-  type: business
-
-  other notes
-</programlisting>
-
-<para>will be parsed into the XML as:</para>
-
-<programlisting>
-<![CDATA[
-  <user-field name="loc">Bay Area</user-field>
-  <user-field name="url">http://.../</user-field>
-  <user-field name="type">business</user-field>
-  <note>user-fields:
-  loc: Bay Area
-  url: http://.../
-  type: business
-
-  other notes
-]]></programlisting>
-
-<para>Note that the user-fields are <quote>write-only</quote> in the
-database. If you want to change them on the desktop side, edit the value
-of the <quote>Note</quote> field directly.</para>
-
-<para>This is necessary because some applications, such as the <ulink
-role="linktable" url="http://www.pimlicosoftware.com/">Pimlico Software</ulink> DateBk*
-applications, also use the notes field in semantically important
-ways. Leading and trailing whitespace associated with removing the
-user-fields from the <quote>Note</quote>, often resulted in apparent
-changes that caused the Palm to appear out-of-sync in ways that made
-the syncing unreliable.</para>
-
-<section><title>Speaking of Pimlico...</title>
-
-<para>The enhanced DateBook application included in the HandSpring
-Visor&trade; is actually a licensed subset of Pimlico's DateBk3 application.
-This application, and its successor DateBk4, use structured values at
-the very beginning of the <quote>Note</quote>s field to hold information
-about semantics not included in the database proper (floating events, time
-zones, etc.).</para>
-
-<para>On the Palm, these values are invisible, but if you look in the
-XML database, you'll see them at the beginning of the <quote>Note</quote>
-of each augmented appointment.</para>
-
-<para>In order to preserve these characteristics, it is vital that you
-do not edit or delete these values, or insert notes before them.</para>
-</section>
-
-</section>
-
-<section><title>Making An HTML Calendar</title>
-
-<para>One of the benefits I touted at the beginning of this article
-was multiple output formats, for example the ability to publish my
-schedule for others to
-see. Included in the <ulink url="&conduitzip;">SyncXml Conduits</ulink> package
-is an XSL stylesheet that produces an HTML calendar from the
-<filename>.xmlCalendar</filename> file.</para>
-
-<para>After syncing, I run:</para>
-
-<programlisting>
-xt .xmlCalendar /projects/pilot/conduits/calendar.xsl sched.html
-</programlisting>
-
-<para>This produces a calendar like the one shown in
-<xref linkend="netscape"/>.</para>
-
-<figure id="netscape"><title>An HTML Schedule</title>
-<mediaobject>
-<imageobject>
-<imagedata fileref="images/netscape.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-
-<section><title>User Fields and HTML</title>
-
-<para>The <filename>calendar.xsl</filename> stylesheet supports
-several user fields:</para>
-
-<itemizedlist>
-<listitem><para>The <literal>class</literal> and <literal>type</literal>
-user fields determine foreground and background colors on the month-view
-of the calendar.
-(Specifically, appointments with an <quote>undecided</quote> class are
-highlighted and appointments with <literal>type</literal>s of 
-<quote>business</quote>, <quote>personal</quote>, and
-<quote>holiday</quote> are colored differently.</para></listitem>
-<listitem><para>If the user field <literal>url</literal> is set, then the
-appointment will include a link to that URL.</para></listitem>
-<listitem><para>If the user field <literal>loc</literal> is set, then the
-location will appear parenthetically after the description.</para></listitem>
-<listitem><para>If the user field <literal>locurl</literal> is set, then
-the location will be a hypertext link to that URL.</para></listitem>
-</itemizedlist>
-
-<para>In addition, a few user fields are usually ignored. You can
-make them significant by setting the stylesheet parameter
-<literal>ignoreuserfields</literal> to 0. With these additional
-fields:</para>
-
-<itemizedlist>
-<listitem><para>Weekly appointments with the user field <literal>type</literal>
-set to <quote>personal</quote> are not displayed. (This prevents my weekly
-reminder to take out the garbage on Monday mornings from appearing on my
-web calendar!)</para></listitem>
-<listitem><para>Appointments that <emphasis>do not</emphasis> have a 
-user field of <literal>type</literal> are suppressed. This effectively
-makes untyped appointments <quote>personal</quote> by default.</para>
-</listitem>
-</itemizedlist>
-
-</section>
-</section>
-
-<section><title>Conclusion</title>
-
-<para>I'm by no means done hacking my XML address book and schedule.
-I still have to write the XML BBDB/Palm merging tool and I may decided
-to write a stylesheet for putting my address book online.</para>
-
-<para>I hope some of you find the SyncXml Conduits useful and feel
-inspired to introduce XML into your applications. Let me know!</para>
-
-</section>
-</section>
-
-<appendix id="app11"><title>What's New in Version 1.1</title>
-
-<para>The following significant changes were introduced in
-<ulink url="&conduitzip;">version 1.1</ulink>
-of the SyncXml conduits:</para>
-
-<itemizedlist>
-<listitem><para>Fixed a <emphasis>significant</emphasis> bug in
-<filename>SyncXmlTB</filename>. The version 1.0 conduit does not properly
-sync dated Todo items. The due date is lost!
-</para></listitem>
-
-<listitem><para>Fixed a significant bug in
-<filename>SyncXmlDB</filename>. The version 1.0 conduit does not properly
-sync items that repeat <literal>MonthlyByDay</literal> or
-<literal>MonthlyByDate</literal>.
-</para></listitem>
-
-<listitem><para>Fixed a significant bug in
-<filename>SyncXmlAB</filename>. The version 1.0 conduit sometimes syncs
-the "show in list" phone number incorrectly.
-</para></listitem>
-
-<listitem><para>Improved the encoding of international and XML markup
-characters. There were a few places in the version 1.0 conduits where
-markup characters were not escaped, leading to XML files that could not
-be loaded.
-</para>
-</listitem>
-
-<listitem><para>Added support for DateBk4 extensions to the Datebook and
-Todo databases.
-</para></listitem>
-
-<listitem><para>Provided user-interface configuration for previously
-"hidden" preferences.
-</para></listitem>
-
-<listitem><para>Added support for categories in the Datebook.
-</para></listitem>
-
-<listitem><para>Added <literal>sortByCompany</literal> and
-<literal>country</literal> attributes to the Addressbook.
-</para></listitem>
-
-<listitem><para>Added <literal>sortByAlpha</literal>
-attribute to the Memo file.
-</para></listitem>
-
-<listitem><para>Added <literal>sortByPriority</literal>
-attribute to the Todo file.
-</para></listitem>
-
-<listitem><para>Added support for DateBk4 icons to the Calendar
-stylesheet. The distribution also includes a simple-minded Perl
-script that can construct XPM icon files from the DateBk4 icon
-memo.
-</para></listitem>
-
-</itemizedlist>
-</appendix>
-
+<article id="article">
+<title>Article Title</title>
+<indexterm id="foo" class="startofrange"><primary>Meaningless</primary></indexterm>
+<para>Some text.<footnote><para>This is a footnote.</para></footnote></para>
+<indexterm startref="foo" class="endofrange"/>
 </article>