]> granicus.if.org Git - docbook-dsssl/commitdiff
Updated copy of docbook.rng to current (V5.0CR7).
authorMichael Smith <xmldoc@users.sourceforge.net>
Wed, 10 Oct 2007 17:03:34 +0000 (17:03 +0000)
committerMichael Smith <xmldoc@users.sourceforge.net>
Wed, 10 Oct 2007 17:03:34 +0000 (17:03 +0000)
releasetools/docbook.rng

index 292ebce984f13b51be8b90074836985fb0edfbad..3fc5bc1d24ded7caf4b9c4336bd34dd87d2028f3 100644 (file)
   <!-- DocBook V5.0CR5-->
   <!-- See http://docbook.org/ns/docbook -->
   <!--
-    This file is part of DocBook V5.0CR5
+    This file is part of DocBook V5.0CR7
     
-    Copyright 1992-2005 HaL Computer Systems, Inc.,
+    Copyright 1992-2007 HaL Computer Systems, Inc.,
     O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
     Corporation, Norman Walsh, Sun Microsystems, Inc., and the
     Organization for the Advancement of Structured Information
     Standards (OASIS).
     
-    Release: $Id: docbook.rnc 7023 2007-07-12 12:46:00Z nwalsh $
+    Release: $Id: docbook.rnc 7474 2007-09-28 18:50:07Z nwalsh $
     
     Permission to use, copy, modify and distribute the DocBook schema
     and its accompanying documentation for any purpose and without fee
   <define name="db._info">
     <choice>
       <group>
-        <optional>
-          <ref name="db._title.req"/>
-        </optional>
+        <ref name="db._title"/>
         <optional>
           <ref name="db.titleforbidden.info"/>
         </optional>
   </define>
   <define name="db.domain.inlines">
     <choice>
-      <choice>
-        <ref name="db.technical.inlines"/>
-        <ref name="db.error.inlines"/>
-        <ref name="db.os.inlines"/>
-        <ref name="db.programming.inlines"/>
-        <ref name="db.markup.inlines"/>
-        <ref name="db.gui.inlines"/>
-        <ref name="db.keyboard.inlines"/>
-      </choice>
+      <ref name="db.technical.inlines"/>
       <ref name="db.math.inlines"/>
+      <ref name="db.markup.inlines"/>
+      <ref name="db.gui.inlines"/>
+      <ref name="db.keyboard.inlines"/>
+      <ref name="db.os.inlines"/>
+      <ref name="db.programming.inlines"/>
+      <ref name="db.error.inlines"/>
     </choice>
   </define>
   <define name="db.technical.inlines">
     <choice>
       <choice>
         <ref name="db.replaceable"/>
-        <ref name="db.systemitem"/>
-        <ref name="db.option"/>
-        <ref name="db.optional"/>
         <ref name="db.package"/>
         <ref name="db.parameter"/>
-        <ref name="db.property"/>
       </choice>
       <ref name="db.termdef"/>
       <ref name="db.nonterminal"/>
-    </choice>
-  </define>
-  <define name="db.error.inlines">
-    <choice>
-      <ref name="db.errorcode"/>
-      <ref name="db.errortext"/>
-      <ref name="db.errorname"/>
-      <ref name="db.errortype"/>
-    </choice>
-  </define>
-  <define name="db.oo.inlines">
-    <choice>
-      <ref name="db.ooclass"/>
-      <ref name="db.ooexception"/>
-      <ref name="db.oointerface"/>
-    </choice>
-  </define>
-  <define name="db.programming.inlines">
-    <choice>
-      <ref name="db.function"/>
-      <ref name="db.parameter"/>
-      <ref name="db.varname"/>
-      <ref name="db.returnvalue"/>
-      <ref name="db.type"/>
-      <ref name="db.classname"/>
-      <ref name="db.exceptionname"/>
-      <ref name="db.interfacename"/>
-      <ref name="db.methodname"/>
-      <ref name="db.modifier"/>
-      <ref name="db.initializer"/>
-      <ref name="db.oo.inlines"/>
+      <choice>
+        <ref name="db.systemitem"/>
+        <ref name="db.option"/>
+        <ref name="db.optional"/>
+        <ref name="db.property"/>
+      </choice>
     </choice>
   </define>
   <define name="db.product.inlines">
     <choice>
-      <ref name="db.productnumber"/>
-      <ref name="db.productname"/>
-      <ref name="db.database"/>
-      <ref name="db.application"/>
-      <ref name="db.hardware"/>
       <ref name="db.trademark"/>
-    </choice>
-  </define>
-  <define name="db.os.inlines">
-    <choice>
-      <ref name="db.prompt"/>
-      <ref name="db.envar"/>
-      <ref name="db.filename"/>
-      <ref name="db.command"/>
-      <ref name="db.computeroutput"/>
-      <ref name="db.userinput"/>
-    </choice>
-  </define>
-  <define name="db.markup.inlines">
-    <choice>
-      <ref name="db.tag"/>
-      <ref name="db.markup"/>
-      <ref name="db.token"/>
-      <ref name="db.symbol"/>
-      <ref name="db.literal"/>
-      <ref name="db.code"/>
-      <ref name="db.constant"/>
-      <ref name="db.email"/>
-      <ref name="db.uri"/>
+      <choice>
+        <ref name="db.productnumber"/>
+        <ref name="db.productname"/>
+        <ref name="db.database"/>
+        <ref name="db.application"/>
+        <ref name="db.hardware"/>
+      </choice>
     </choice>
   </define>
   <define name="db.bibliography.inlines">
       <ref name="db.indexterm"/>
     </choice>
   </define>
-  <define name="db.gui.inlines">
-    <choice>
-      <ref name="db.guiicon"/>
-      <ref name="db.guibutton"/>
-      <ref name="db.guimenuitem"/>
-      <ref name="db.guimenu"/>
-      <ref name="db.guisubmenu"/>
-      <ref name="db.guilabel"/>
-      <ref name="db.menuchoice"/>
-      <ref name="db.mousebutton"/>
-    </choice>
-  </define>
-  <define name="db.keyboard.inlines">
-    <choice>
-      <ref name="db.keycombo"/>
-      <ref name="db.keycap"/>
-      <ref name="db.keycode"/>
-      <ref name="db.keysym"/>
-      <ref name="db.shortcut"/>
-      <ref name="db.accel"/>
-    </choice>
-  </define>
   <define name="db.link.inlines">
     <choice>
       <choice>
     <choice>
       <choice>
         <ref name="db.list.blocks"/>
-        <ref name="db.admonition.blocks"/>
         <ref name="db.formal.blocks"/>
         <ref name="db.informal.blocks"/>
         <ref name="db.publishing.blocks"/>
         <ref name="db.graphic.blocks"/>
         <ref name="db.technical.blocks"/>
         <ref name="db.verbatim.blocks"/>
-        <ref name="db.synopsis.blocks"/>
         <ref name="db.bridgehead"/>
         <ref name="db.remark"/>
         <ref name="db.revhistory"/>
       </choice>
       <ref name="db.indexterm"/>
+      <ref name="db.synopsis.blocks"/>
+      <ref name="db.admonition.blocks"/>
     </choice>
   </define>
   <define name="db.para.blocks">
       <ref name="db.msgset"/>
     </choice>
   </define>
-  <define name="db.admonition.blocks">
-    <choice>
-      <ref name="db.caution"/>
-      <ref name="db.important"/>
-      <ref name="db.note"/>
-      <ref name="db.tip"/>
-      <ref name="db.warning"/>
-    </choice>
-  </define>
   <define name="db.list.blocks">
     <choice>
       <choice>
   <define name="db.verbatim.blocks">
     <choice>
       <choice>
-        <ref name="db.programlisting"/>
         <ref name="db.screen"/>
         <ref name="db.literallayout"/>
-        <ref name="db.synopsis"/>
       </choice>
       <choice>
         <ref name="db.programlistingco"/>
         <ref name="db.screenco"/>
       </choice>
-    </choice>
-  </define>
-  <define name="db.synopsis.blocks">
-    <choice>
-      <ref name="db.cmdsynopsis"/>
-      <ref name="db.funcsynopsis"/>
-      <ref name="db.classsynopsis"/>
-      <ref name="db.methodsynopsis"/>
-      <ref name="db.constructorsynopsis"/>
-      <ref name="db.destructorsynopsis"/>
-      <ref name="db.fieldsynopsis"/>
+      <choice>
+        <ref name="db.programlisting"/>
+        <ref name="db.synopsis"/>
+      </choice>
     </choice>
   </define>
   <define name="db.extension.blocks">
         <ref name="db.othercredit"/>
         <ref name="db.pagenums"/>
         <ref name="db.printhistory"/>
-        <ref name="db.productname"/>
-        <ref name="db.productnumber"/>
         <ref name="db.pubdate"/>
         <ref name="db.publisher"/>
         <ref name="db.publishername"/>
         <ref name="db.biblioset"/>
       </choice>
       <ref name="db.itermset"/>
+      <choice>
+        <ref name="db.productname"/>
+        <ref name="db.productnumber"/>
+      </choice>
     </choice>
   </define>
   <define name="db.bibliographic.elements">
       <ref name="db.citetitle"/>
       <ref name="db.citebiblioid"/>
       <ref name="db.person"/>
+      <ref name="db.personblurb"/>
       <ref name="db.personname"/>
       <ref name="db.subtitle"/>
       <ref name="db.title"/>
+      <ref name="db.titleabbrev"/>
     </choice>
   </define>
   <div>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:indexterm)">indexterm must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:task)">task must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:epigraph)">epigraph must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:indexterm)">indexterm must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:task)">task must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:footnote">
-            <s:assert test="not(.//db:epigraph)">epigraph must not occur in the descendants of footnote</s:assert>
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of footnote</s:assert>
           </s:rule>
         </s:pattern>
         <ref name="db.footnote.attlist"/>
       </element>
     </define>
   </div>
-  <define name="db.admonition.contentmodel">
-    <ref name="db._info.title.only"/>
-    <oneOrMore>
-      <ref name="db.all.blocks"/>
-    </oneOrMore>
-  </define>
   <div>
-    <define name="db.caution.role.attribute">
+    <define name="db.itemizedlist.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.caution.attlist">
+    <define name="db.itemizedlist.mark.attribute">
+      <attribute name="mark">
+        <a:documentation>Identifies the type of mark to be used on items in this list</a:documentation>
+        <data type="NMTOKEN"/>
+      </attribute>
+    </define>
+    <define name="db.itemizedlist.attlist">
       <interleave>
         <optional>
-          <ref name="db.caution.role.attribute"/>
+          <ref name="db.itemizedlist.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.caution">
-      <element name="caution">
-        <a:documentation>A note of caution</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caution">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caution</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caution">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of caution</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caution">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of caution</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caution">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caution</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caution">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caution</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.caution.attlist"/>
-        <ref name="db.admonition.contentmodel"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.important.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.important.attlist">
-      <interleave>
         <optional>
-          <ref name="db.important.role.attribute"/>
+          <ref name="db.spacing.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.itemizedlist.mark.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.important">
-      <element name="important">
-        <a:documentation>An admonition set off from the text</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:important">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of important</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:important">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of important</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:important">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of important</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:important">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of important</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:important">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of important</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.important.attlist"/>
-        <ref name="db.admonition.contentmodel"/>
+    <define name="db.itemizedlist.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.itemizedlist">
+      <element name="itemizedlist">
+        <a:documentation>A list in which each entry is marked with a bullet or other dingbat</a:documentation>
+        <ref name="db.itemizedlist.attlist"/>
+        <ref name="db.itemizedlist.info"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <oneOrMore>
+          <ref name="db.listitem"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.note.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.note.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.note.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.note">
-      <element name="note">
-        <a:documentation>A message set off from the text</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:note">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of note</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:note">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of note</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:note">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of note</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:note">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of note</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:note">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of note</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.note.attlist"/>
-        <ref name="db.admonition.contentmodel"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.tip.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.tip.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.tip.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.tip">
-      <element name="tip">
-        <a:documentation>A suggestion to the user, set off from the text</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:tip">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of tip</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:tip">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of tip</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:tip">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of tip</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:tip">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of tip</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:tip">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of tip</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.tip.attlist"/>
-        <ref name="db.admonition.contentmodel"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.warning.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.warning.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.warning.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.warning">
-      <element name="warning">
-        <a:documentation>An admonition set off from the text</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:warning">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of warning</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:warning">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of warning</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:warning">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of warning</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:warning">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of warning</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:warning">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of warning</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.warning.attlist"/>
-        <ref name="db.admonition.contentmodel"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.itemizedlist.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.itemizedlist.mark.attribute">
-      <attribute name="mark">
-        <a:documentation>Identifies the type of mark to be used on items in this list</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </define>
-    <define name="db.itemizedlist.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.itemizedlist.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.spacing.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.itemizedlist.mark.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.itemizedlist.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.itemizedlist">
-      <element name="itemizedlist">
-        <a:documentation>A list in which each entry is marked with a bullet or other dingbat</a:documentation>
-        <ref name="db.itemizedlist.attlist"/>
-        <ref name="db.itemizedlist.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <oneOrMore>
-          <ref name="db.listitem"/>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.orderedlist.role.attribute">
+    <define name="db.orderedlist.role.attribute">
       <attribute name="role"/>
     </define>
     <define name="db.orderedlist.continuation.enumeration">
       </zeroOrMore>
     </choice>
   </define>
-  <div>
-    <define name="db.programlisting.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.programlisting.width.attribute">
-      <ref name="db.width.characters.attribute"/>
-    </define>
-    <define name="db.programlisting.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.programlisting.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <ref name="db.verbatim.attributes"/>
-        <optional>
-          <ref name="db.programlisting.width.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.programlisting">
-      <element name="programlisting">
-        <a:documentation>A literal listing of all or part of a program</a:documentation>
-        <ref name="db.programlisting.attlist"/>
-        <ref name="db.verbatim.contentmodel"/>
-      </element>
-    </define>
-  </div>
   <div>
     <define name="db.literallayout.role.attribute">
       <attribute name="role"/>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:task)">task must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
           <s:rule context="db:caption">
-            <s:assert test="not(.//db:task)">task must not occur in the descendants of caption</s:assert>
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caption</s:assert>
           </s:rule>
         </s:pattern>
         <ref name="db.caption.attlist"/>
     </define>
   </div>
   <div>
-    <define name="db.synopsis.role.attribute">
+    <define name="db.address.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.synopsis.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.synopsis.attlist">
+    <define name="db.address.attlist">
       <interleave>
         <optional>
-          <ref name="db.synopsis.role.attribute"/>
+          <ref name="db.address.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <ref name="db.verbatim.attributes"/>
-        <optional>
-          <ref name="db.synopsis.label.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.synopsis">
-      <element name="synopsis">
-        <a:documentation>A general-purpose element for representing the syntax of commands or functions</a:documentation>
-        <ref name="db.synopsis.attlist"/>
-        <ref name="db.verbatim.contentmodel"/>
+    <define name="db.address">
+      <element name="address">
+        <a:documentation>A real-world address, generally a postal address</a:documentation>
+        <ref name="db.address.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.personname"/>
+            <ref name="db.pob"/>
+            <ref name="db.street"/>
+            <ref name="db.city"/>
+            <ref name="db.state"/>
+            <ref name="db.postcode"/>
+            <ref name="db.country"/>
+            <ref name="db.phone"/>
+            <ref name="db.fax"/>
+            <ref name="db.email"/>
+            <ref name="db.uri"/>
+            <ref name="db.otheraddr"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cmdsynopsis.role.attribute">
+    <define name="db.street.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cmdsynopsis.sepchar.attribute">
-      <attribute name="sepchar">
-        <a:documentation>Specifies the character that should separate the command and its top-level arguments</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.cmdsynopsis.cmdlength.attribute">
-      <attribute name="cmdlength">
-        <a:documentation>Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.cmdsynopsis.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.cmdsynopsis.attlist">
+    <define name="db.street.attlist">
       <interleave>
         <optional>
-          <ref name="db.cmdsynopsis.role.attribute"/>
+          <ref name="db.street.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.cmdsynopsis.sepchar.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.cmdsynopsis.cmdlength.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.cmdsynopsis.label.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.cmdsynopsis.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.cmdsynopsis">
-      <element name="cmdsynopsis">
-        <a:documentation>A syntax summary for a software command</a:documentation>
-        <ref name="db.cmdsynopsis.attlist"/>
-        <ref name="db.cmdsynopsis.info"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.command"/>
-            <ref name="db.arg"/>
-            <ref name="db.group"/>
-            <ref name="db.sbr"/>
-          </choice>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.synopfragment"/>
-        </zeroOrMore>
+    <define name="db.street">
+      <element name="street">
+        <a:documentation>A street address in an address</a:documentation>
+        <ref name="db.street.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
-  <define name="db.rep.enumeration">
-    <choice>
-      <value>norepeat</value>
-      <a:documentation>Can not be repeated.</a:documentation>
-      <value>repeat</value>
-      <a:documentation>Can be repeated.</a:documentation>
-    </choice>
-  </define>
-  <define name="db.rep.attribute">
-    <attribute name="rep" a:defaultValue="norepeat">
-      <a:documentation>Indicates whether or not repetition is possible.</a:documentation>
-      <ref name="db.rep.enumeration"/>
-    </attribute>
-  </define>
-  <define name="db.choice.enumeration">
-    <choice>
-      <value>opt</value>
-      <a:documentation>Formatted to indicate that it is optional.</a:documentation>
-      <value>plain</value>
-      <a:documentation>Formatted without indication.</a:documentation>
-      <value>req</value>
-      <a:documentation>Formatted to indicate that it is required.</a:documentation>
-    </choice>
-  </define>
-  <define name="db.choice.opt.attribute">
-    <attribute name="choice" a:defaultValue="opt">
-      <a:documentation>Indicates optionality.</a:documentation>
-      <ref name="db.choice.enumeration"/>
-    </attribute>
-  </define>
-  <define name="db.choice.req.attribute">
-    <attribute name="choice" a:defaultValue="req">
-      <a:documentation>Indicates optionality.</a:documentation>
-      <ref name="db.choice.enumeration"/>
-    </attribute>
-  </define>
   <div>
-    <define name="db.arg.role.attribute">
+    <define name="db.pob.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.arg.rep.attribute">
-      <ref name="db.rep.attribute"/>
-    </define>
-    <define name="db.arg.choice.attribute">
-      <ref name="db.choice.opt.attribute"/>
-    </define>
-    <define name="db.arg.attlist">
+    <define name="db.pob.attlist">
       <interleave>
         <optional>
-          <ref name="db.arg.role.attribute"/>
+          <ref name="db.pob.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.arg.rep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.arg.choice.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.arg">
-      <element name="arg">
-        <a:documentation>An argument in a CmdSynopsis</a:documentation>
-        <ref name="db.arg.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.arg"/>
-            <ref name="db.group"/>
-            <ref name="db.option"/>
-            <ref name="db.synopfragmentref"/>
-            <ref name="db.sbr"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.pob">
+      <element name="pob">
+        <a:documentation>A post office box in an address</a:documentation>
+        <ref name="db.pob.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.group.role.attribute">
+    <define name="db.postcode.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.group.rep.attribute">
-      <ref name="db.rep.attribute"/>
-    </define>
-    <define name="db.group.choice.attribute">
-      <ref name="db.choice.opt.attribute"/>
-    </define>
-    <define name="db.group.attlist">
+    <define name="db.postcode.attlist">
       <interleave>
         <optional>
-          <ref name="db.group.role.attribute"/>
+          <ref name="db.postcode.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.group.rep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.group.choice.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.group">
-      <element name="group">
-        <a:documentation>A group of elements in a CmdSynopsis</a:documentation>
-        <ref name="db.group.attlist"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.arg"/>
-            <ref name="db.group"/>
-            <ref name="db.option"/>
-            <ref name="db.synopfragmentref"/>
-            <ref name="db.replaceable"/>
-            <ref name="db.sbr"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.postcode">
+      <element name="postcode">
+        <a:documentation>A postal code in an address</a:documentation>
+        <ref name="db.postcode.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.sbr.role.attribute">
+    <define name="db.city.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.sbr.attlist">
+    <define name="db.city.attlist">
       <interleave>
         <optional>
-          <ref name="db.sbr.role.attribute"/>
+          <ref name="db.city.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.sbr">
-      <element name="sbr">
-        <a:documentation>An explicit line break in a command synopsis</a:documentation>
-        <ref name="db.sbr.attlist"/>
-        <empty/>
+    <define name="db.city">
+      <element name="city">
+        <a:documentation>The name of a city in an address</a:documentation>
+        <ref name="db.city.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.synopfragment.role.attribute">
+    <define name="db.state.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.synopfragment.attlist">
+    <define name="db.state.attlist">
       <interleave>
         <optional>
-          <ref name="db.synopfragment.role.attribute"/>
+          <ref name="db.state.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.synopfragment">
-      <element name="synopfragment">
-        <a:documentation>A portion of a CmdSynopsis broken out from the main body of the synopsis</a:documentation>
-        <ref name="db.synopfragment.attlist"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.arg"/>
-            <ref name="db.group"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.state">
+      <element name="state">
+        <a:documentation>A state or province in an address</a:documentation>
+        <ref name="db.state.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.synopfragmentref.role.attribute">
+    <define name="db.country.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.synopfragmentref.attlist">
+    <define name="db.country.attlist">
       <interleave>
         <optional>
-          <ref name="db.synopfragmentref.role.attribute"/>
+          <ref name="db.country.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.linkend.attribute"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.synopfragmentref">
-      <element name="synopfragmentref">
-        <a:documentation>A reference to a fragment of a command synopsis</a:documentation>
-        <s:pattern name="Synopsis fragment type constraint">
-          <s:rule context="db:synopfragmentref">
-            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on synopfragmentref must point to a synopfragment.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.synopfragmentref.attlist"/>
-        <text/>
+    <define name="db.country">
+      <element name="country">
+        <a:documentation>The name of a country</a:documentation>
+        <ref name="db.country.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.funcsynopsis.role.attribute">
+    <define name="db.phone.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.funcsynopsis.attlist">
+    <define name="db.phone.attlist">
       <interleave>
         <optional>
-          <ref name="db.funcsynopsis.role.attribute"/>
+          <ref name="db.phone.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.language.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.funcsynopsis.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.funcsynopsis">
-      <element name="funcsynopsis">
-        <a:documentation>The syntax summary for a function definition</a:documentation>
-        <ref name="db.funcsynopsis.attlist"/>
-        <ref name="db.funcsynopsis.info"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.funcsynopsisinfo"/>
-            <ref name="db.funcprototype"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.phone">
+      <element name="phone">
+        <a:documentation>A telephone number</a:documentation>
+        <ref name="db.phone.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.funcsynopsisinfo.role.attribute">
+    <define name="db.fax.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.funcsynopsisinfo.attlist">
+    <define name="db.fax.attlist">
       <interleave>
         <optional>
-          <ref name="db.funcsynopsisinfo.role.attribute"/>
+          <ref name="db.fax.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.verbatim.attributes"/>
       </interleave>
     </define>
-    <define name="db.funcsynopsisinfo">
-      <element name="funcsynopsisinfo">
-        <a:documentation>Information supplementing the FuncDefs of a FuncSynopsis</a:documentation>
-        <ref name="db.funcsynopsisinfo.attlist"/>
-        <ref name="db.verbatim.contentmodel"/>
+    <define name="db.fax">
+      <element name="fax">
+        <a:documentation>A fax number</a:documentation>
+        <ref name="db.fax.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.funcprototype.role.attribute">
+    <define name="db.otheraddr.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.funcprototype.attlist">
+    <define name="db.otheraddr.attlist">
       <interleave>
         <optional>
-          <ref name="db.funcprototype.role.attribute"/>
+          <ref name="db.otheraddr.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.funcprototype">
-      <element name="funcprototype">
-        <a:documentation>The prototype of a function</a:documentation>
-        <ref name="db.funcprototype.attlist"/>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
-        <ref name="db.funcdef"/>
-        <choice>
-          <ref name="db.void"/>
-          <ref name="db.varargs"/>
-          <group>
-            <oneOrMore>
-              <ref name="db.paramdef"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.varargs"/>
-            </optional>
-          </group>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
+    <define name="db.otheraddr">
+      <element name="otheraddr">
+        <a:documentation>Uncategorized information in address</a:documentation>
+        <ref name="db.otheraddr.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.funcdef.role.attribute">
+    <define name="db.affiliation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.funcdef.attlist">
+    <define name="db.affiliation.attlist">
       <interleave>
         <optional>
-          <ref name="db.funcdef.role.attribute"/>
+          <ref name="db.affiliation.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.funcdef">
-      <element name="funcdef">
-        <a:documentation>A function (subroutine) name and its return type</a:documentation>
-        <ref name="db.funcdef.attlist"/>
+    <define name="db.affiliation">
+      <element name="affiliation">
+        <a:documentation>The institutional affiliation of an individual</a:documentation>
+        <ref name="db.affiliation.attlist"/>
+        <optional>
+          <ref name="db.shortaffil"/>
+        </optional>
         <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.type"/>
-            <ref name="db.function"/>
-          </choice>
+          <ref name="db.jobtitle"/>
         </zeroOrMore>
+        <choice>
+          <optional>
+            <ref name="db.org"/>
+          </optional>
+          <group>
+            <optional>
+              <ref name="db.orgname"/>
+            </optional>
+            <zeroOrMore>
+              <ref name="db.orgdiv"/>
+            </zeroOrMore>
+            <zeroOrMore>
+              <ref name="db.address"/>
+            </zeroOrMore>
+          </group>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.void.role.attribute">
+    <define name="db.shortaffil.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.void.attlist">
+    <define name="db.shortaffil.attlist">
       <interleave>
         <optional>
-          <ref name="db.void.role.attribute"/>
+          <ref name="db.shortaffil.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.void">
-      <element name="void">
-        <a:documentation>An empty element in a function synopsis indicating that the function in question takes no arguments</a:documentation>
-        <ref name="db.void.attlist"/>
-        <empty/>
+    <define name="db.shortaffil">
+      <element name="shortaffil">
+        <a:documentation>A brief description of an affiliation</a:documentation>
+        <ref name="db.shortaffil.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.varargs.role.attribute">
+    <define name="db.jobtitle.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.varargs.attlist">
+    <define name="db.jobtitle.attlist">
       <interleave>
         <optional>
-          <ref name="db.varargs.role.attribute"/>
+          <ref name="db.jobtitle.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.varargs">
-      <element name="varargs">
-        <a:documentation>An empty element in a function synopsis indicating a variable number of arguments</a:documentation>
-        <ref name="db.varargs.attlist"/>
-        <empty/>
+    <define name="db.jobtitle">
+      <element name="jobtitle">
+        <a:documentation>The title of an individual in an organization</a:documentation>
+        <ref name="db.jobtitle.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.paramdef.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.paramdef.choice.enumeration">
+    <define name="db.orgname.class.enumeration">
       <choice>
-        <value>opt</value>
-        <a:documentation>Formatted to indicate that it is optional.</a:documentation>
-        <value>req</value>
-        <a:documentation>Formatted to indicate that it is required.</a:documentation>
+        <value>consortium</value>
+        <a:documentation>A consortium</a:documentation>
+        <value>corporation</value>
+        <a:documentation>A corporation</a:documentation>
+        <value>informal</value>
+        <a:documentation>An informal organization</a:documentation>
+        <value>nonprofit</value>
+        <a:documentation>A non-profit organization</a:documentation>
       </choice>
     </define>
-    <define name="db.paramdef.choice.attribute">
-      <attribute name="choice" a:defaultValue="opt">
-        <a:documentation>Indicates optionality.</a:documentation>
-        <ref name="db.paramdef.choice.enumeration"/>
+    <define name="db.orgname.class-enum.attribute">
+      <attribute name="class">
+        <a:documentation>Specifies the nature of the organization</a:documentation>
+        <ref name="db.orgname.class.enumeration"/>
       </attribute>
     </define>
-    <define name="db.paramdef.attlist">
+    <define name="db.orgname.class-other.attributes">
+      <attribute name="class">
+        <a:documentation>Specifies the nature of the organization</a:documentation>
+        <value>other</value>
+        <a:documentation>Indicates a non-standard organization class</a:documentation>
+      </attribute>
+      <attribute name="otherclass">
+        <a:documentation>Identifies the non-standard nature of the organization</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.orgname.class.attribute">
+      <choice>
+        <ref name="db.orgname.class-enum.attribute"/>
+        <ref name="db.orgname.class-other.attributes"/>
+      </choice>
+    </define>
+    <define name="db.orgname.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.orgname.attlist">
       <interleave>
         <optional>
-          <ref name="db.paramdef.role.attribute"/>
+          <ref name="db.orgname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.paramdef.choice.attribute"/>
+          <ref name="db.orgname.class.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.paramdef">
-      <element name="paramdef">
-        <a:documentation>Information about a function parameter in a programming language</a:documentation>
-        <ref name="db.paramdef.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.initializer"/>
-            <ref name="db.type"/>
-            <ref name="db.parameter"/>
-            <ref name="db.funcparams"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.orgname">
+      <element name="orgname">
+        <a:documentation>The name of an organization other than a corporation </a:documentation>
+        <ref name="db.orgname.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.funcparams.role.attribute">
+    <define name="db.orgdiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.funcparams.attlist">
+    <define name="db.orgdiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.funcparams.role.attribute"/>
+          <ref name="db.orgdiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.funcparams">
-      <element name="funcparams">
-        <a:documentation>Parameters for a function referenced through a function pointer in a synopsis</a:documentation>
-        <ref name="db.funcparams.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.orgdiv">
+      <element name="orgdiv">
+        <a:documentation>A division of an organization</a:documentation>
+        <ref name="db.orgdiv.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.classsynopsis.role.attribute">
+    <define name="db.artpagenums.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.classsynopsis.class.enumeration">
-      <choice>
-        <value>class</value>
-        <a:documentation>This is the synopsis of a class</a:documentation>
-        <value>interface</value>
-        <a:documentation>This is the synopsis of an interface</a:documentation>
-      </choice>
-    </define>
-    <define name="db.classsynopsis.class.attribute">
-      <attribute name="class">
-        <a:documentation>Specifies the nature of the synopsis</a:documentation>
-        <ref name="db.classsynopsis.class.enumeration"/>
-      </attribute>
-    </define>
-    <define name="db.classsynopsis.attlist">
+    <define name="db.artpagenums.attlist">
       <interleave>
         <optional>
-          <ref name="db.classsynopsis.role.attribute"/>
+          <ref name="db.artpagenums.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.language.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.classsynopsis.class.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.classsynopsis">
-      <element name="classsynopsis">
-        <a:documentation>The syntax summary for a class definition</a:documentation>
-        <ref name="db.classsynopsis.attlist"/>
-        <oneOrMore>
-          <ref name="db.oo.inlines"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.classsynopsisinfo"/>
-            <ref name="db.methodsynopsis"/>
-            <ref name="db.constructorsynopsis"/>
-            <ref name="db.destructorsynopsis"/>
-            <ref name="db.fieldsynopsis"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.artpagenums">
+      <element name="artpagenums">
+        <a:documentation>The page numbers of an article as published</a:documentation>
+        <ref name="db.artpagenums.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.classsynopsisinfo.role.attribute">
+    <define name="db.personname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.classsynopsisinfo.attlist">
+    <define name="db.personname.attlist">
       <interleave>
         <optional>
-          <ref name="db.classsynopsisinfo.role.attribute"/>
+          <ref name="db.personname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.verbatim.attributes"/>
       </interleave>
     </define>
-    <define name="db.classsynopsisinfo">
-      <element name="classsynopsisinfo">
-        <a:documentation>Information supplementing the contents of a ClassSynopsis</a:documentation>
-        <ref name="db.classsynopsisinfo.attlist"/>
-        <ref name="db.verbatim.contentmodel"/>
+    <define name="db.personname">
+      <element name="personname">
+        <a:documentation>The personal name of an individual</a:documentation>
+        <ref name="db.personname.attlist"/>
+        <choice>
+          <ref name="db._text"/>
+          <oneOrMore>
+            <choice>
+              <ref name="db.honorific"/>
+              <ref name="db.firstname"/>
+              <ref name="db.surname"/>
+              <ref name="db.lineage"/>
+              <ref name="db.othername"/>
+            </choice>
+          </oneOrMore>
+        </choice>
       </element>
     </define>
   </div>
+  <define name="db.person.author.contentmodel">
+    <ref name="db.personname"/>
+    <zeroOrMore>
+      <choice>
+        <ref name="db.personblurb"/>
+        <ref name="db.affiliation"/>
+        <ref name="db.email"/>
+        <ref name="db.uri"/>
+        <ref name="db.address"/>
+        <ref name="db.contrib"/>
+      </choice>
+    </zeroOrMore>
+  </define>
+  <define name="db.org.author.contentmodel">
+    <ref name="db.orgname"/>
+    <zeroOrMore>
+      <choice>
+        <ref name="db.orgdiv"/>
+        <ref name="db.affiliation"/>
+        <ref name="db.email"/>
+        <ref name="db.uri"/>
+        <ref name="db.address"/>
+        <ref name="db.contrib"/>
+      </choice>
+    </zeroOrMore>
+  </define>
+  <define name="db.credit.contentmodel">
+    <choice>
+      <ref name="db.person.author.contentmodel"/>
+      <ref name="db.org.author.contentmodel"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.ooclass.role.attribute">
+    <define name="db.author.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.ooclass.attlist">
+    <define name="db.author.attlist">
       <interleave>
         <optional>
-          <ref name="db.ooclass.role.attribute"/>
+          <ref name="db.author.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.ooclass">
-      <element name="ooclass">
-        <a:documentation>A class in an object-oriented programming language</a:documentation>
-        <ref name="db.ooclass.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.package"/>
-            <ref name="db.modifier"/>
-          </choice>
-        </zeroOrMore>
-        <ref name="db.classname"/>
+    <define name="db.author">
+      <element name="author">
+        <a:documentation>The name of an individual author</a:documentation>
+        <ref name="db.author.attlist"/>
+        <ref name="db.credit.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.oointerface.role.attribute">
+    <define name="db.authorgroup.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.oointerface.attlist">
+    <define name="db.authorgroup.attlist">
       <interleave>
         <optional>
-          <ref name="db.oointerface.role.attribute"/>
+          <ref name="db.authorgroup.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.oointerface">
-      <element name="oointerface">
-        <a:documentation>An interface in an object-oriented programming language</a:documentation>
-        <ref name="db.oointerface.attlist"/>
-        <zeroOrMore>
+    <define name="db.authorgroup">
+      <element name="authorgroup">
+        <a:documentation>Wrapper for author information when a document has multiple authors or collabarators</a:documentation>
+        <ref name="db.authorgroup.attlist"/>
+        <oneOrMore>
           <choice>
-            <ref name="db.package"/>
-            <ref name="db.modifier"/>
+            <ref name="db.author"/>
+            <ref name="db.editor"/>
+            <ref name="db.othercredit"/>
           </choice>
-        </zeroOrMore>
-        <ref name="db.interfacename"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.ooexception.role.attribute">
+    <define name="db.collab.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.ooexception.attlist">
+    <define name="db.collab.attlist">
       <interleave>
         <optional>
-          <ref name="db.ooexception.role.attribute"/>
+          <ref name="db.collab.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.ooexception">
-      <element name="ooexception">
-        <a:documentation>An exception in an object-oriented programming language</a:documentation>
-        <ref name="db.ooexception.attlist"/>
-        <zeroOrMore>
+    <define name="db.collab">
+      <element name="collab">
+        <a:documentation>Identifies a collaborator</a:documentation>
+        <ref name="db.collab.attlist"/>
+        <oneOrMore>
           <choice>
-            <ref name="db.package"/>
-            <ref name="db.modifier"/>
+            <ref name="db.person"/>
+            <ref name="db.personname"/>
+            <ref name="db.org"/>
+            <ref name="db.orgname"/>
           </choice>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.affiliation"/>
         </zeroOrMore>
-        <ref name="db.exceptionname"/>
       </element>
     </define>
   </div>
-  <define name="db.modifier.xml.space.attribute">
-    <attribute name="xml:space">
-      <a:documentation>Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example).</a:documentation>
-      <value>preserve</value>
-      <a:documentation>Extra whitespace and line breaks must be preserved.</a:documentation>
-      <!--
-        Ideally the definition of xml:space used on modifier would be
-        different from the definition used on the verbatim elements. The
-        verbatim elements forbid the use of xml:space="default" which
-        wouldn't be a problem on modifier. But doing that causes the
-        generated XSD schemas to be broken so I'm just reusing the existing
-        definition for now. It won't be backwards incompatible to fix this
-        problem in the future.
-           | ## Extra whitespace and line breaks are not preserved.
-             "default"
-      -->
-    </attribute>
-  </define>
   <div>
-    <define name="db.modifier.role.attribute">
+    <define name="db.authorinitials.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.modifier.attlist">
+    <define name="db.authorinitials.attlist">
       <interleave>
         <optional>
-          <ref name="db.modifier.xml.space.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.modifier.role.attribute"/>
+          <ref name="db.authorinitials.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.modifier">
-      <element name="modifier">
-        <a:documentation>Modifiers in a synopsis</a:documentation>
-        <ref name="db.modifier.attlist"/>
+    <define name="db.authorinitials">
+      <element name="authorinitials">
+        <a:documentation>The initials or other short identifier for an author</a:documentation>
+        <ref name="db.authorinitials.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.interfacename.role.attribute">
+    <define name="db.person.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.interfacename.attlist">
+    <define name="db.person.attlist">
       <interleave>
         <optional>
-          <ref name="db.interfacename.role.attribute"/>
+          <ref name="db.person.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.interfacename">
-      <element name="interfacename">
-        <a:documentation>The name of an interface</a:documentation>
-        <ref name="db.interfacename.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.person">
+      <element name="person">
+        <a:documentation>A person and associated metadata</a:documentation>
+        <ref name="db.person.attlist"/>
+        <ref name="db.personname"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.address"/>
+            <ref name="db.affiliation"/>
+            <ref name="db.email"/>
+            <ref name="db.uri"/>
+            <ref name="db.personblurb"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.exceptionname.role.attribute">
+    <define name="db.org.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.exceptionname.attlist">
+    <define name="db.org.attlist">
       <interleave>
         <optional>
-          <ref name="db.exceptionname.role.attribute"/>
+          <ref name="db.org.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.exceptionname">
-      <element name="exceptionname">
-        <a:documentation>The name of an exception</a:documentation>
-        <ref name="db.exceptionname.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.org">
+      <element name="org">
+        <a:documentation>An organization and associated metadata</a:documentation>
+        <ref name="db.org.attlist"/>
+        <ref name="db.orgname"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.address"/>
+            <ref name="db.affiliation"/>
+            <ref name="db.email"/>
+            <ref name="db.uri"/>
+            <ref name="db.orgdiv"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.fieldsynopsis.role.attribute">
+    <define name="db.confgroup.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.fieldsynopsis.attlist">
+    <define name="db.confgroup.attlist">
       <interleave>
         <optional>
-          <ref name="db.fieldsynopsis.role.attribute"/>
+          <ref name="db.confgroup.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.language.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.fieldsynopsis">
-      <element name="fieldsynopsis">
-        <a:documentation>The name of a field in a class definition</a:documentation>
-        <ref name="db.fieldsynopsis.attlist"/>
+    <define name="db.confgroup">
+      <element name="confgroup">
+        <a:documentation>A wrapper for document meta-information about a conference</a:documentation>
+        <ref name="db.confgroup.attlist"/>
         <zeroOrMore>
-          <ref name="db.modifier"/>
+          <choice>
+            <ref name="db.confdates"/>
+            <ref name="db.conftitle"/>
+            <ref name="db.confnum"/>
+            <ref name="db.confsponsor"/>
+            <ref name="db.address"/>
+          </choice>
         </zeroOrMore>
-        <optional>
-          <ref name="db.type"/>
-        </optional>
-        <ref name="db.varname"/>
-        <optional>
-          <ref name="db.initializer"/>
-        </optional>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.initializer.role.attribute">
+    <define name="db.confdates.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.initializer.attlist">
+    <define name="db.confdates.attlist">
       <interleave>
         <optional>
-          <ref name="db.initializer.role.attribute"/>
+          <ref name="db.confdates.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.initializer">
-      <element name="initializer">
-        <a:documentation>The initializer for a FieldSynopsis</a:documentation>
-        <ref name="db.initializer.attlist"/>
+    <define name="db.confdates">
+      <element name="confdates">
+        <a:documentation>The dates of a conference for which a document was written</a:documentation>
+        <ref name="db.confdates.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.constructorsynopsis.role.attribute">
+    <define name="db.conftitle.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.constructorsynopsis.attlist">
+    <define name="db.conftitle.attlist">
       <interleave>
         <optional>
-          <ref name="db.constructorsynopsis.role.attribute"/>
+          <ref name="db.conftitle.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.language.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.constructorsynopsis">
-      <element name="constructorsynopsis">
-        <a:documentation>A syntax summary for a constructor</a:documentation>
-        <ref name="db.constructorsynopsis.attlist"/>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
-        <optional>
-          <ref name="db.methodname"/>
-        </optional>
-        <choice>
-          <oneOrMore>
-            <ref name="db.methodparam"/>
-          </oneOrMore>
-          <optional>
-            <ref name="db.void"/>
-          </optional>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.exceptionname"/>
-        </zeroOrMore>
+    <define name="db.conftitle">
+      <element name="conftitle">
+        <a:documentation>The title of a conference for which a document was written</a:documentation>
+        <ref name="db.conftitle.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.destructorsynopsis.role.attribute">
+    <define name="db.confnum.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.destructorsynopsis.attlist">
+    <define name="db.confnum.attlist">
       <interleave>
         <optional>
-          <ref name="db.destructorsynopsis.role.attribute"/>
+          <ref name="db.confnum.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.language.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.destructorsynopsis">
-      <element name="destructorsynopsis">
-        <a:documentation>A syntax summary for a destructor</a:documentation>
-        <ref name="db.destructorsynopsis.attlist"/>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
-        <optional>
-          <ref name="db.methodname"/>
-        </optional>
-        <choice>
-          <oneOrMore>
-            <ref name="db.methodparam"/>
-          </oneOrMore>
-          <optional>
-            <ref name="db.void"/>
-          </optional>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.exceptionname"/>
-        </zeroOrMore>
+    <define name="db.confnum">
+      <element name="confnum">
+        <a:documentation>An identifier, frequently numerical, associated with a conference for which a document was written</a:documentation>
+        <ref name="db.confnum.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.methodsynopsis.role.attribute">
+    <define name="db.confsponsor.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.methodsynopsis.attlist">
+    <define name="db.confsponsor.attlist">
       <interleave>
         <optional>
-          <ref name="db.methodsynopsis.role.attribute"/>
+          <ref name="db.confsponsor.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.language.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.methodsynopsis">
-      <element name="methodsynopsis">
-        <a:documentation>A syntax summary for a method</a:documentation>
-        <ref name="db.methodsynopsis.attlist"/>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
-        <optional>
-          <choice>
-            <ref name="db.type"/>
-            <ref name="db.void"/>
-          </choice>
-        </optional>
-        <ref name="db.methodname"/>
-        <choice>
-          <oneOrMore>
-            <ref name="db.methodparam"/>
-          </oneOrMore>
-          <ref name="db.void"/>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.exceptionname"/>
-        </zeroOrMore>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
+    <define name="db.confsponsor">
+      <element name="confsponsor">
+        <a:documentation>The sponsor of a conference for which a document was written</a:documentation>
+        <ref name="db.confsponsor.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.methodname.role.attribute">
+    <define name="db.contractnum.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.methodname.attlist">
+    <define name="db.contractnum.attlist">
       <interleave>
         <optional>
-          <ref name="db.methodname.role.attribute"/>
+          <ref name="db.contractnum.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.methodname">
-      <element name="methodname">
-        <a:documentation>The name of a method</a:documentation>
-        <ref name="db.methodname.attlist"/>
+    <define name="db.contractnum">
+      <element name="contractnum">
+        <a:documentation>The contract number of a document</a:documentation>
+        <ref name="db.contractnum.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.methodparam.role.attribute">
+    <define name="db.contractsponsor.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.methodparam.rep.attribute">
-      <ref name="db.rep.attribute"/>
-    </define>
-    <define name="db.methodparam.choice.attribute">
-      <ref name="db.choice.req.attribute"/>
-    </define>
-    <define name="db.methodparam.attlist">
+    <define name="db.contractsponsor.attlist">
       <interleave>
         <optional>
-          <ref name="db.methodparam.role.attribute"/>
+          <ref name="db.contractsponsor.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.methodparam.rep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.methodparam.choice.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.methodparam">
-      <element name="methodparam">
-        <a:documentation>Parameters to a method</a:documentation>
-        <ref name="db.methodparam.attlist"/>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
-        <optional>
-          <ref name="db.type"/>
-        </optional>
-        <choice>
-          <group>
-            <zeroOrMore>
-              <ref name="db.modifier"/>
-            </zeroOrMore>
-            <ref name="db.parameter"/>
-            <optional>
-              <ref name="db.initializer"/>
-            </optional>
-          </group>
-          <ref name="db.funcparams"/>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.modifier"/>
-        </zeroOrMore>
+    <define name="db.contractsponsor">
+      <element name="contractsponsor">
+        <a:documentation>The sponsor of a contract</a:documentation>
+        <ref name="db.contractsponsor.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.address.role.attribute">
+    <define name="db.copyright.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.address.attlist">
+    <define name="db.copyright.attlist">
       <interleave>
         <optional>
-          <ref name="db.address.role.attribute"/>
+          <ref name="db.copyright.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.verbatim.attributes"/>
       </interleave>
     </define>
-    <define name="db.address">
-      <element name="address">
-        <a:documentation>A real-world address, generally a postal address</a:documentation>
-        <ref name="db.address.attlist"/>
+    <define name="db.copyright">
+      <element name="copyright">
+        <a:documentation>Copyright information about a document</a:documentation>
+        <ref name="db.copyright.attlist"/>
+        <oneOrMore>
+          <ref name="db.year"/>
+        </oneOrMore>
         <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.personname"/>
-            <ref name="db.pob"/>
-            <ref name="db.street"/>
-            <ref name="db.city"/>
-            <ref name="db.state"/>
-            <ref name="db.postcode"/>
-            <ref name="db.country"/>
-            <ref name="db.phone"/>
-            <ref name="db.fax"/>
-            <ref name="db.email"/>
-            <ref name="db.otheraddr"/>
-          </choice>
+          <ref name="db.holder"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.street.role.attribute">
+    <define name="db.year.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.street.attlist">
+    <define name="db.year.attlist">
       <interleave>
         <optional>
-          <ref name="db.street.role.attribute"/>
+          <ref name="db.year.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.street">
-      <element name="street">
-        <a:documentation>A street address in an address</a:documentation>
-        <ref name="db.street.attlist"/>
+    <define name="db.year">
+      <element name="year">
+        <a:documentation>The year of publication of a document</a:documentation>
+        <ref name="db.year.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.pob.role.attribute">
+    <define name="db.holder.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.pob.attlist">
+    <define name="db.holder.attlist">
       <interleave>
         <optional>
-          <ref name="db.pob.role.attribute"/>
+          <ref name="db.holder.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.pob">
-      <element name="pob">
-        <a:documentation>A post office box in an address</a:documentation>
-        <ref name="db.pob.attlist"/>
+    <define name="db.holder">
+      <element name="holder">
+        <a:documentation>The name of the individual or organization that holds a copyright</a:documentation>
+        <ref name="db.holder.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
+  <define name="db.cover.contentmodel">
+    <choice>
+      <choice>
+        <ref name="db.para.blocks"/>
+        <ref name="db.extension.blocks"/>
+        <ref name="db.list.blocks"/>
+        <ref name="db.informal.blocks"/>
+        <ref name="db.publishing.blocks"/>
+        <ref name="db.graphic.blocks"/>
+        <ref name="db.technical.blocks"/>
+        <ref name="db.verbatim.blocks"/>
+        <ref name="db.bridgehead"/>
+        <ref name="db.remark"/>
+        <ref name="db.revhistory"/>
+      </choice>
+      <ref name="db.synopsis.blocks"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.postcode.role.attribute">
+    <define name="db.cover.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.postcode.attlist">
+    <define name="db.cover.attlist">
       <interleave>
         <optional>
-          <ref name="db.postcode.role.attribute"/>
+          <ref name="db.cover.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.postcode">
-      <element name="postcode">
-        <a:documentation>A postal code in an address</a:documentation>
-        <ref name="db.postcode.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.cover">
+      <element name="cover">
+        <a:documentation>Additional content for the cover of a publication</a:documentation>
+        <ref name="db.cover.attlist"/>
+        <oneOrMore>
+          <ref name="db.cover.contentmodel"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
+  <define name="db.date.contentmodel">
+    <choice>
+      <data type="date"/>
+      <data type="dateTime"/>
+      <data type="gYearMonth"/>
+      <data type="gYear"/>
+      <text/>
+    </choice>
+  </define>
   <div>
-    <define name="db.city.role.attribute">
+    <define name="db.date.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.city.attlist">
+    <define name="db.date.attlist">
       <interleave>
         <optional>
-          <ref name="db.city.role.attribute"/>
+          <ref name="db.date.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.city">
-      <element name="city">
-        <a:documentation>The name of a city in an address</a:documentation>
-        <ref name="db.city.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.date">
+      <element name="date">
+        <a:documentation>The date of publication or revision of a document</a:documentation>
+        <ref name="db.date.attlist"/>
+        <ref name="db.date.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.state.role.attribute">
+    <define name="db.edition.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.state.attlist">
+    <define name="db.edition.attlist">
       <interleave>
         <optional>
-          <ref name="db.state.role.attribute"/>
+          <ref name="db.edition.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.state">
-      <element name="state">
-        <a:documentation>A state or province in an address</a:documentation>
-        <ref name="db.state.attlist"/>
+    <define name="db.edition">
+      <element name="edition">
+        <a:documentation>The name or number of an edition of a document</a:documentation>
+        <ref name="db.edition.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.country.role.attribute">
+    <define name="db.editor.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.country.attlist">
+    <define name="db.editor.attlist">
       <interleave>
         <optional>
-          <ref name="db.country.role.attribute"/>
+          <ref name="db.editor.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.country">
-      <element name="country">
-        <a:documentation>The name of a country</a:documentation>
-        <ref name="db.country.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.editor">
+      <element name="editor">
+        <a:documentation>The name of the editor of a document</a:documentation>
+        <ref name="db.editor.attlist"/>
+        <ref name="db.credit.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.phone.role.attribute">
+    <define name="db.biblioid.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.phone.attlist">
+    <define name="db.biblioid.attlist">
       <interleave>
         <optional>
-          <ref name="db.phone.role.attribute"/>
+          <ref name="db.biblioid.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.biblio.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.phone">
-      <element name="phone">
-        <a:documentation>A telephone number</a:documentation>
-        <ref name="db.phone.attlist"/>
+    <define name="db.biblioid">
+      <element name="biblioid">
+        <a:documentation>An identifier for a document</a:documentation>
+        <ref name="db.biblioid.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.fax.role.attribute">
+    <define name="db.citebiblioid.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.fax.attlist">
+    <define name="db.citebiblioid.attlist">
       <interleave>
         <optional>
-          <ref name="db.fax.role.attribute"/>
+          <ref name="db.citebiblioid.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.biblio.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.fax">
-      <element name="fax">
-        <a:documentation>A fax number</a:documentation>
-        <ref name="db.fax.attlist"/>
+    <define name="db.citebiblioid">
+      <element name="citebiblioid">
+        <a:documentation>A citation of a bibliographic identifier</a:documentation>
+        <ref name="db.citebiblioid.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.otheraddr.role.attribute">
+    <define name="db.bibliosource.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.otheraddr.attlist">
+    <define name="db.bibliosource.attlist">
       <interleave>
         <optional>
-          <ref name="db.otheraddr.role.attribute"/>
+          <ref name="db.bibliosource.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.biblio.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.otheraddr">
-      <element name="otheraddr">
-        <a:documentation>Uncategorized information in address</a:documentation>
-        <ref name="db.otheraddr.attlist"/>
+    <define name="db.bibliosource">
+      <element name="bibliosource">
+        <a:documentation>The source of a document</a:documentation>
+        <ref name="db.bibliosource.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.affiliation.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.affiliation.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.affiliation.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.affiliation">
-      <element name="affiliation">
-        <a:documentation>The institutional affiliation of an individual</a:documentation>
-        <ref name="db.affiliation.attlist"/>
-        <optional>
-          <ref name="db.shortaffil"/>
-        </optional>
-        <zeroOrMore>
-          <ref name="db.jobtitle"/>
-        </zeroOrMore>
-        <choice>
-          <optional>
-            <ref name="db.org"/>
-          </optional>
-          <group>
-            <optional>
-              <ref name="db.orgname"/>
-            </optional>
-            <zeroOrMore>
-              <ref name="db.orgdiv"/>
-            </zeroOrMore>
-            <zeroOrMore>
-              <ref name="db.address"/>
-            </zeroOrMore>
-          </group>
-        </choice>
-      </element>
+    <define name="db.bibliorelation.type.enumeration">
+      <choice>
+        <value>hasformat</value>
+        <a:documentation>The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format</a:documentation>
+        <value>haspart</value>
+        <a:documentation>The described resource includes the referenced resource either physically or logically</a:documentation>
+        <value>hasversion</value>
+        <a:documentation>The described resource has a version, edition, or adaptation, namely, the referenced resource</a:documentation>
+        <value>isformatof</value>
+        <a:documentation>The described resource is the same intellectual content of the referenced resource, but presented in another format</a:documentation>
+        <value>ispartof</value>
+        <a:documentation>The described resource is a physical or logical part of the referenced resource</a:documentation>
+        <value>isreferencedby</value>
+        <a:documentation>The described resource is referenced, cited, or otherwise pointed to by the referenced resource</a:documentation>
+        <value>isreplacedby</value>
+        <a:documentation>The described resource is supplanted, displaced, or superceded by the referenced resource</a:documentation>
+        <value>isrequiredby</value>
+        <a:documentation>The described resource is required by the referenced resource, either physically or logically</a:documentation>
+        <value>isversionof</value>
+        <a:documentation>The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format</a:documentation>
+        <value>references</value>
+        <a:documentation>The described resource references, cites, or otherwise points to the referenced resource</a:documentation>
+        <value>replaces</value>
+        <a:documentation>The described resource supplants, displaces, or supersedes the referenced resource</a:documentation>
+        <value>requires</value>
+        <a:documentation>The described resource requires the referenced resource to support its function, delivery, or coherence of content</a:documentation>
+      </choice>
     </define>
-  </div>
-  <div>
-    <define name="db.shortaffil.role.attribute">
-      <attribute name="role"/>
+    <define name="db.bibliorelation.type-enum.attribute">
+      <optional>
+        <attribute name="type">
+          <a:documentation>Identifies the type of relationship</a:documentation>
+          <ref name="db.bibliorelation.type.enumeration"/>
+        </attribute>
+      </optional>
     </define>
-    <define name="db.shortaffil.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.shortaffil.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
+    <define name="db.bibliorelation.type-other.attributes">
+      <optional>
+        <attribute name="type">
+          <a:documentation>Identifies the type of relationship</a:documentation>
+          <value>othertype</value>
+          <a:documentation>The described resource has a non-standard relationship with the referenced resource</a:documentation>
+        </attribute>
+      </optional>
+      <attribute name="othertype">
+        <a:documentation>A keyword that identififes the type of the non-standard relationship</a:documentation>
+        <data type="NMTOKEN"/>
+      </attribute>
     </define>
-    <define name="db.shortaffil">
-      <element name="shortaffil">
-        <a:documentation>A brief description of an affiliation</a:documentation>
-        <ref name="db.shortaffil.attlist"/>
-        <ref name="db._text"/>
-      </element>
+    <define name="db.bibliorelation.type.attribute">
+      <choice>
+        <ref name="db.bibliorelation.type-enum.attribute"/>
+        <ref name="db.bibliorelation.type-other.attributes"/>
+      </choice>
     </define>
-  </div>
-  <div>
-    <define name="db.jobtitle.role.attribute">
+    <define name="db.bibliorelation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.jobtitle.attlist">
+    <define name="db.bibliorelation.attlist">
       <interleave>
         <optional>
-          <ref name="db.jobtitle.role.attribute"/>
+          <ref name="db.bibliorelation.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.biblio.class.attribute"/>
+        <ref name="db.bibliorelation.type.attribute"/>
       </interleave>
     </define>
-    <define name="db.jobtitle">
-      <element name="jobtitle">
-        <a:documentation>The title of an individual in an organization</a:documentation>
-        <ref name="db.jobtitle.attlist"/>
+    <define name="db.bibliorelation">
+      <element name="bibliorelation">
+        <a:documentation>The relationship of a document to another</a:documentation>
+        <ref name="db.bibliorelation.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.orgname.class.enumeration">
+    <define name="db.bibliocoverage.spacial.enumeration">
       <choice>
-        <value>consortium</value>
-        <a:documentation>A consortium</a:documentation>
-        <value>corporation</value>
-        <a:documentation>A corporation</a:documentation>
-        <value>informal</value>
-        <a:documentation>An informal organization</a:documentation>
-        <value>nonprofit</value>
-        <a:documentation>A non-profit organization</a:documentation>
+        <value>dcmipoint</value>
+        <a:documentation>The DCMI Point identifies a point in space using its geographic coordinates</a:documentation>
+        <value>iso3166</value>
+        <a:documentation>ISO 3166 Codes for the representation of names of countries</a:documentation>
+        <value>dcmibox</value>
+        <a:documentation>The DCMI Box identifies a region of space using its geographic limits</a:documentation>
+        <value>tgn</value>
+        <a:documentation>The Getty Thesaurus of Geographic Names</a:documentation>
       </choice>
     </define>
-    <define name="db.orgname.class-enum.attribute">
-      <attribute name="class">
-        <a:documentation>Specifies the nature of the organization</a:documentation>
-        <ref name="db.orgname.class.enumeration"/>
-      </attribute>
+    <define name="db.bibliocoverage.spatial-enum.attribute">
+      <optional>
+        <attribute name="spatial">
+          <a:documentation>Specifies the type of spatial coverage</a:documentation>
+          <ref name="db.bibliocoverage.spacial.enumeration"/>
+        </attribute>
+      </optional>
     </define>
-    <define name="db.orgname.class-other.attributes">
-      <attribute name="class">
-        <a:documentation>Specifies the nature of the organization</a:documentation>
-        <value>other</value>
-        <a:documentation>Indicates a non-standard organization class</a:documentation>
+    <define name="db.bibliocoverage.spatial-other.attributes">
+      <optional>
+        <attribute name="spatial">
+          <a:documentation>Specifies the type of spatial coverage</a:documentation>
+          <value>otherspatial</value>
+          <a:documentation>Identifies a non-standard type of coverage</a:documentation>
+        </attribute>
+      </optional>
+      <attribute name="otherspatial">
+        <a:documentation>A keyword that identifies the type of non-standard coverage</a:documentation>
+        <data type="NMTOKEN"/>
       </attribute>
-      <attribute name="otherclass">
-        <a:documentation>Identifies the non-standard nature of the organization</a:documentation>
+    </define>
+    <define name="db.bibliocoverage.spatial.attribute">
+      <choice>
+        <ref name="db.bibliocoverage.spatial-enum.attribute"/>
+        <ref name="db.bibliocoverage.spatial-other.attributes"/>
+      </choice>
+    </define>
+    <define name="db.bibliocoverage.temporal.enumeration">
+      <choice>
+        <value>dcmiperiod</value>
+        <a:documentation>A specification of the limits of a time interval</a:documentation>
+        <value>w3c-dtf</value>
+        <a:documentation>W3C Encoding rules for dates and times—a profile based on ISO 8601</a:documentation>
+      </choice>
+    </define>
+    <define name="db.bibliocoverage.temporal-enum.attribute">
+      <optional>
+        <attribute name="temporal">
+          <a:documentation>Specifies the type of temporal coverage</a:documentation>
+          <ref name="db.bibliocoverage.temporal.enumeration"/>
+        </attribute>
+      </optional>
+    </define>
+    <define name="db.bibliocoverage.temporal-other.attributes">
+      <optional>
+        <attribute name="temporal">
+          <a:documentation>Specifies the type of temporal coverage</a:documentation>
+          <value>othertemporal</value>
+          <a:documentation>Specifies a non-standard type of coverage</a:documentation>
+        </attribute>
+      </optional>
+      <attribute name="othertemporal">
+        <a:documentation>A keyword that identifies the type of non-standard coverage</a:documentation>
+        <data type="NMTOKEN"/>
       </attribute>
     </define>
-    <define name="db.orgname.class.attribute">
+    <define name="db.bibliocoverage.temporal.attribute">
       <choice>
-        <ref name="db.orgname.class-enum.attribute"/>
-        <ref name="db.orgname.class-other.attributes"/>
+        <ref name="db.bibliocoverage.temporal-enum.attribute"/>
+        <ref name="db.bibliocoverage.temporal-other.attributes"/>
       </choice>
     </define>
-    <define name="db.orgname.role.attribute">
+    <define name="db.bibliocoverage.coverage.attrib">
+      <interleave>
+        <ref name="db.bibliocoverage.spatial.attribute"/>
+        <ref name="db.bibliocoverage.temporal.attribute"/>
+      </interleave>
+    </define>
+    <define name="db.bibliocoverage.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.orgname.attlist">
+    <define name="db.bibliocoverage.attlist">
       <interleave>
         <optional>
-          <ref name="db.orgname.role.attribute"/>
+          <ref name="db.bibliocoverage.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.orgname.class.attribute"/>
-        </optional>
+        <ref name="db.bibliocoverage.coverage.attrib"/>
       </interleave>
     </define>
-    <define name="db.orgname">
-      <element name="orgname">
-        <a:documentation>The name of an organization other than a corporation </a:documentation>
-        <ref name="db.orgname.attlist"/>
+    <define name="db.bibliocoverage">
+      <element name="bibliocoverage">
+        <a:documentation>The spatial or temporal coverage of a document</a:documentation>
+        <ref name="db.bibliocoverage.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.orgdiv.role.attribute">
+    <define name="db.legalnotice.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.orgdiv.attlist">
+    <define name="db.legalnotice.attlist">
       <interleave>
         <optional>
-          <ref name="db.orgdiv.role.attribute"/>
+          <ref name="db.legalnotice.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.orgdiv">
-      <element name="orgdiv">
-        <a:documentation>A division of an organization</a:documentation>
-        <ref name="db.orgdiv.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.legalnotice.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.legalnotice">
+      <element name="legalnotice">
+        <a:documentation>A statement of legal obligations or requirements</a:documentation>
+        <ref name="db.legalnotice.attlist"/>
+        <ref name="db.legalnotice.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.artpagenums.role.attribute">
+    <define name="db.othercredit.class.enumeration">
+      <choice>
+        <value>copyeditor</value>
+        <a:documentation>A copy editor</a:documentation>
+        <value>graphicdesigner</value>
+        <a:documentation>A graphic designer</a:documentation>
+        <value>other</value>
+        <a:documentation>Some other contributor</a:documentation>
+        <value>productioneditor</value>
+        <a:documentation>A production editor</a:documentation>
+        <value>technicaleditor</value>
+        <a:documentation>A technical editor</a:documentation>
+        <value>translator</value>
+        <a:documentation>A translator</a:documentation>
+      </choice>
+    </define>
+    <define name="db.othercredit.class-enum.attribute">
+      <optional>
+        <attribute name="class">
+          <a:documentation>Identifies the nature of the contributor</a:documentation>
+          <ref name="db.othercredit.class.enumeration"/>
+        </attribute>
+      </optional>
+    </define>
+    <define name="db.othercredit.class-other.attribute">
+      <attribute name="otherclass">
+        <a:documentation>Identifies the nature of the non-standard contribution</a:documentation>
+        <data type="NMTOKEN"/>
+      </attribute>
+    </define>
+    <define name="db.othercredit.class-other.attributes">
+      <interleave>
+        <attribute name="class">
+          <a:documentation>Identifies the nature of the contributor</a:documentation>
+          <value>other</value>
+          <a:documentation>Identifies a non-standard contribution</a:documentation>
+        </attribute>
+        <ref name="db.othercredit.class-other.attribute"/>
+      </interleave>
+    </define>
+    <define name="db.othercredit.class.attribute">
+      <choice>
+        <ref name="db.othercredit.class-enum.attribute"/>
+        <ref name="db.othercredit.class-other.attributes"/>
+      </choice>
+    </define>
+    <define name="db.othercredit.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.artpagenums.attlist">
+    <define name="db.othercredit.attlist">
       <interleave>
         <optional>
-          <ref name="db.artpagenums.role.attribute"/>
+          <ref name="db.othercredit.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.othercredit.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.artpagenums">
-      <element name="artpagenums">
-        <a:documentation>The page numbers of an article as published</a:documentation>
-        <ref name="db.artpagenums.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.othercredit">
+      <element name="othercredit">
+        <a:documentation>A person or entity, other than an author or editor, credited in a document</a:documentation>
+        <ref name="db.othercredit.attlist"/>
+        <ref name="db.credit.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.personname.role.attribute">
+    <define name="db.pagenums.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.personname.attlist">
+    <define name="db.pagenums.attlist">
       <interleave>
         <optional>
-          <ref name="db.personname.role.attribute"/>
+          <ref name="db.pagenums.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.personname">
-      <element name="personname">
-        <a:documentation>The personal name of an individual</a:documentation>
-        <ref name="db.personname.attlist"/>
-        <choice>
-          <ref name="db._text"/>
-          <oneOrMore>
-            <choice>
-              <ref name="db.honorific"/>
-              <ref name="db.firstname"/>
-              <ref name="db.surname"/>
-              <ref name="db.lineage"/>
-              <ref name="db.othername"/>
-            </choice>
-          </oneOrMore>
-        </choice>
+    <define name="db.pagenums">
+      <element name="pagenums">
+        <a:documentation>The numbers of the pages in a book, for use in a bibliographic entry</a:documentation>
+        <ref name="db.pagenums.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
-  <define name="db.person.author.contentmodel">
-    <ref name="db.personname"/>
-    <zeroOrMore>
-      <choice>
-        <ref name="db.personblurb"/>
-        <ref name="db.affiliation"/>
-        <ref name="db.email"/>
-        <ref name="db.address"/>
-        <ref name="db.contrib"/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="db.org.author.contentmodel">
-    <ref name="db.orgname"/>
-    <zeroOrMore>
-      <choice>
-        <ref name="db.orgdiv"/>
-        <ref name="db.affiliation"/>
-        <ref name="db.email"/>
-        <ref name="db.address"/>
-        <ref name="db.contrib"/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="db.credit.contentmodel">
-    <choice>
-      <ref name="db.person.author.contentmodel"/>
-      <ref name="db.org.author.contentmodel"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.author.role.attribute">
+    <define name="db.contrib.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.author.attlist">
+    <define name="db.contrib.attlist">
       <interleave>
         <optional>
-          <ref name="db.author.role.attribute"/>
+          <ref name="db.contrib.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.author">
-      <element name="author">
-        <a:documentation>The name of an individual author</a:documentation>
-        <ref name="db.author.attlist"/>
-        <ref name="db.credit.contentmodel"/>
+    <define name="db.contrib">
+      <element name="contrib">
+        <a:documentation>A summary of the contributions made to a document by a credited source</a:documentation>
+        <ref name="db.contrib.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.authorgroup.role.attribute">
+    <define name="db.honorific.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.authorgroup.attlist">
+    <define name="db.honorific.attlist">
       <interleave>
         <optional>
-          <ref name="db.authorgroup.role.attribute"/>
+          <ref name="db.honorific.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.authorgroup">
-      <element name="authorgroup">
-        <a:documentation>Wrapper for author information when a document has multiple authors or collabarators</a:documentation>
-        <ref name="db.authorgroup.attlist"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.author"/>
-            <ref name="db.editor"/>
-            <ref name="db.othercredit"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.honorific">
+      <element name="honorific">
+        <a:documentation>The title of a person</a:documentation>
+        <ref name="db.honorific.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.collab.role.attribute">
+    <define name="db.firstname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.collab.attlist">
+    <define name="db.firstname.attlist">
       <interleave>
         <optional>
-          <ref name="db.collab.role.attribute"/>
+          <ref name="db.firstname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.collab">
-      <element name="collab">
-        <a:documentation>Identifies a collaborator</a:documentation>
-        <ref name="db.collab.attlist"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.person"/>
-            <ref name="db.personname"/>
-            <ref name="db.org"/>
-            <ref name="db.orgname"/>
-          </choice>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.affiliation"/>
-        </zeroOrMore>
+    <define name="db.firstname">
+      <element name="firstname">
+        <a:documentation>The first name of a person</a:documentation>
+        <ref name="db.firstname.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.authorinitials.role.attribute">
+    <define name="db.surname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.authorinitials.attlist">
+    <define name="db.surname.attlist">
       <interleave>
         <optional>
-          <ref name="db.authorinitials.role.attribute"/>
+          <ref name="db.surname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.authorinitials">
-      <element name="authorinitials">
-        <a:documentation>The initials or other short identifier for an author</a:documentation>
-        <ref name="db.authorinitials.attlist"/>
+    <define name="db.surname">
+      <element name="surname">
+        <a:documentation>A family name; in western cultures the last name</a:documentation>
+        <ref name="db.surname.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.person.role.attribute">
+    <define name="db.lineage.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.person.attlist">
+    <define name="db.lineage.attlist">
       <interleave>
         <optional>
-          <ref name="db.person.role.attribute"/>
+          <ref name="db.lineage.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.person">
-      <element name="person">
-        <a:documentation>A person and associated metadata</a:documentation>
-        <ref name="db.person.attlist"/>
-        <ref name="db.personname"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.address"/>
-            <ref name="db.affiliation"/>
-            <ref name="db.email"/>
-            <ref name="db.personblurb"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.lineage">
+      <element name="lineage">
+        <a:documentation>The portion of a person's name indicating a relationship to ancestors</a:documentation>
+        <ref name="db.lineage.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.org.role.attribute">
+    <define name="db.othername.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.org.attlist">
+    <define name="db.othername.attlist">
       <interleave>
         <optional>
-          <ref name="db.org.role.attribute"/>
+          <ref name="db.othername.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.org">
-      <element name="org">
-        <a:documentation>An organization and associated metadata</a:documentation>
-        <ref name="db.org.attlist"/>
-        <ref name="db.orgname"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.address"/>
-            <ref name="db.affiliation"/>
-            <ref name="db.email"/>
-            <ref name="db.orgdiv"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.othername">
+      <element name="othername">
+        <a:documentation>A component of a persons name that is not a first name, surname, or lineage</a:documentation>
+        <ref name="db.othername.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.confgroup.role.attribute">
+    <define name="db.printhistory.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.confgroup.attlist">
+    <define name="db.printhistory.attlist">
       <interleave>
         <optional>
-          <ref name="db.confgroup.role.attribute"/>
+          <ref name="db.printhistory.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.confgroup">
-      <element name="confgroup">
-        <a:documentation>A wrapper for document meta-information about a conference</a:documentation>
-        <ref name="db.confgroup.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.confdates"/>
-            <ref name="db.conftitle"/>
-            <ref name="db.confnum"/>
-            <ref name="db.confsponsor"/>
-            <ref name="db.address"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.printhistory">
+      <element name="printhistory">
+        <a:documentation>The printing history of a document</a:documentation>
+        <ref name="db.printhistory.attlist"/>
+        <oneOrMore>
+          <ref name="db.para.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.confdates.role.attribute">
+    <define name="db.pubdate.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.confdates.attlist">
+    <define name="db.pubdate.attlist">
       <interleave>
         <optional>
-          <ref name="db.confdates.role.attribute"/>
+          <ref name="db.pubdate.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.confdates">
-      <element name="confdates">
-        <a:documentation>The dates of a conference for which a document was written</a:documentation>
-        <ref name="db.confdates.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.pubdate">
+      <element name="pubdate">
+        <a:documentation>The date of publication of a document</a:documentation>
+        <ref name="db.pubdate.attlist"/>
+        <ref name="db.date.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.conftitle.role.attribute">
+    <define name="db.publisher.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.conftitle.attlist">
+    <define name="db.publisher.attlist">
       <interleave>
         <optional>
-          <ref name="db.conftitle.role.attribute"/>
+          <ref name="db.publisher.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.conftitle">
-      <element name="conftitle">
-        <a:documentation>The title of a conference for which a document was written</a:documentation>
-        <ref name="db.conftitle.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.publisher">
+      <element name="publisher">
+        <a:documentation>The publisher of a document</a:documentation>
+        <ref name="db.publisher.attlist"/>
+        <ref name="db.publishername"/>
+        <zeroOrMore>
+          <ref name="db.address"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.confnum.role.attribute">
+    <define name="db.publishername.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.confnum.attlist">
+    <define name="db.publishername.attlist">
       <interleave>
         <optional>
-          <ref name="db.confnum.role.attribute"/>
+          <ref name="db.publishername.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.confnum">
-      <element name="confnum">
-        <a:documentation>An identifier, frequently numerical, associated with a conference for which a document was written</a:documentation>
-        <ref name="db.confnum.attlist"/>
+    <define name="db.publishername">
+      <element name="publishername">
+        <a:documentation>The name of the publisher of a document</a:documentation>
+        <ref name="db.publishername.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.confsponsor.role.attribute">
+    <define name="db.releaseinfo.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.confsponsor.attlist">
+    <define name="db.releaseinfo.attlist">
       <interleave>
         <optional>
-          <ref name="db.confsponsor.role.attribute"/>
+          <ref name="db.releaseinfo.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.confsponsor">
-      <element name="confsponsor">
-        <a:documentation>The sponsor of a conference for which a document was written</a:documentation>
-        <ref name="db.confsponsor.attlist"/>
+    <define name="db.releaseinfo">
+      <element name="releaseinfo">
+        <a:documentation>Information about a particular release of a document</a:documentation>
+        <ref name="db.releaseinfo.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.contractnum.role.attribute">
+    <define name="db.revhistory.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.contractnum.attlist">
+    <define name="db.revhistory.attlist">
       <interleave>
         <optional>
-          <ref name="db.contractnum.role.attribute"/>
+          <ref name="db.revhistory.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.contractnum">
-      <element name="contractnum">
-        <a:documentation>The contract number of a document</a:documentation>
-        <ref name="db.contractnum.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.revhistory.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.revhistory">
+      <element name="revhistory">
+        <a:documentation>A history of the revisions to a document</a:documentation>
+        <ref name="db.revhistory.attlist"/>
+        <ref name="db.revhistory.info"/>
+        <oneOrMore>
+          <ref name="db.revision"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.contractsponsor.role.attribute">
+    <define name="db.revision.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.contractsponsor.attlist">
+    <define name="db.revision.attlist">
       <interleave>
         <optional>
-          <ref name="db.contractsponsor.role.attribute"/>
+          <ref name="db.revision.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.contractsponsor">
-      <element name="contractsponsor">
-        <a:documentation>The sponsor of a contract</a:documentation>
-        <ref name="db.contractsponsor.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.revision">
+      <element name="revision">
+        <a:documentation>An entry describing a single revision in the history of the revisions to a document</a:documentation>
+        <ref name="db.revision.attlist"/>
+        <optional>
+          <ref name="db.revnumber"/>
+        </optional>
+        <ref name="db.date"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.authorinitials"/>
+            <ref name="db.author"/>
+          </choice>
+        </zeroOrMore>
+        <optional>
+          <choice>
+            <ref name="db.revremark"/>
+            <ref name="db.revdescription"/>
+          </choice>
+        </optional>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.copyright.role.attribute">
+    <define name="db.revnumber.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.copyright.attlist">
+    <define name="db.revnumber.attlist">
       <interleave>
         <optional>
-          <ref name="db.copyright.role.attribute"/>
+          <ref name="db.revnumber.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.copyright">
-      <element name="copyright">
-        <a:documentation>Copyright information about a document</a:documentation>
-        <ref name="db.copyright.attlist"/>
-        <oneOrMore>
-          <ref name="db.year"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.holder"/>
-        </zeroOrMore>
+    <define name="db.revnumber">
+      <element name="revnumber">
+        <a:documentation>A document revision number</a:documentation>
+        <ref name="db.revnumber.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.year.role.attribute">
+    <define name="db.revremark.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.year.attlist">
+    <define name="db.revremark.attlist">
       <interleave>
         <optional>
-          <ref name="db.year.role.attribute"/>
+          <ref name="db.revremark.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.year">
-      <element name="year">
-        <a:documentation>The year of publication of a document</a:documentation>
-        <ref name="db.year.attlist"/>
+    <define name="db.revremark">
+      <element name="revremark">
+        <a:documentation>A description of a revision to a document</a:documentation>
+        <ref name="db.revremark.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.holder.role.attribute">
+    <define name="db.revdescription.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.holder.attlist">
+    <define name="db.revdescription.attlist">
       <interleave>
         <optional>
-          <ref name="db.holder.role.attribute"/>
+          <ref name="db.revdescription.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.holder">
-      <element name="holder">
-        <a:documentation>The name of the individual or organization that holds a copyright</a:documentation>
-        <ref name="db.holder.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.revdescription">
+      <element name="revdescription">
+        <a:documentation>A extended description of a revision to a document</a:documentation>
+        <ref name="db.revdescription.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.cover.contentmodel">
-    <oneOrMore>
-      <choice>
-        <ref name="db.para.blocks"/>
-        <ref name="db.extension.blocks"/>
-        <ref name="db.list.blocks"/>
-        <ref name="db.informal.blocks"/>
-        <ref name="db.publishing.blocks"/>
-        <ref name="db.graphic.blocks"/>
-        <ref name="db.technical.blocks"/>
-        <ref name="db.verbatim.blocks"/>
-        <ref name="db.bridgehead"/>
-        <ref name="db.synopsis.blocks"/>
-        <ref name="db.remark"/>
-        <ref name="db.revhistory"/>
-      </choice>
-    </oneOrMore>
-  </define>
   <div>
-    <define name="db.cover.role.attribute">
+    <define name="db.seriesvolnums.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cover.attlist">
+    <define name="db.seriesvolnums.attlist">
       <interleave>
         <optional>
-          <ref name="db.cover.role.attribute"/>
+          <ref name="db.seriesvolnums.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.cover">
-      <element name="cover">
-        <a:documentation>Additional content for the cover of a publication</a:documentation>
-        <ref name="db.cover.attlist"/>
-        <ref name="db.cover.contentmodel"/>
+    <define name="db.seriesvolnums">
+      <element name="seriesvolnums">
+        <a:documentation>Numbers of the volumes in a series of books</a:documentation>
+        <ref name="db.seriesvolnums.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
-  <define name="db.date.contentmodel">
-    <choice>
-      <data type="date"/>
-      <data type="dateTime"/>
-      <data type="gYearMonth"/>
-      <data type="gYear"/>
-      <text/>
-    </choice>
-  </define>
   <div>
-    <define name="db.date.role.attribute">
+    <define name="db.volumenum.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.date.attlist">
+    <define name="db.volumenum.attlist">
       <interleave>
         <optional>
-          <ref name="db.date.role.attribute"/>
+          <ref name="db.volumenum.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.date">
-      <element name="date">
-        <a:documentation>The date of publication or revision of a document</a:documentation>
-        <ref name="db.date.attlist"/>
-        <ref name="db.date.contentmodel"/>
+    <define name="db.volumenum">
+      <element name="volumenum">
+        <a:documentation>The volume number of a document in a set (as of books in a set or articles in a journal)</a:documentation>
+        <ref name="db.volumenum.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.edition.role.attribute">
+    <define name="db.issuenum.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.edition.attlist">
+    <define name="db.issuenum.attlist">
       <interleave>
         <optional>
-          <ref name="db.edition.role.attribute"/>
+          <ref name="db.issuenum.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.edition">
-      <element name="edition">
-        <a:documentation>The name or number of an edition of a document</a:documentation>
-        <ref name="db.edition.attlist"/>
+    <define name="db.issuenum">
+      <element name="issuenum">
+        <a:documentation>The number of an issue of a journal</a:documentation>
+        <ref name="db.issuenum.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.editor.role.attribute">
+    <define name="db.package.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.editor.attlist">
+    <define name="db.package.attlist">
       <interleave>
         <optional>
-          <ref name="db.editor.role.attribute"/>
+          <ref name="db.package.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.editor">
-      <element name="editor">
-        <a:documentation>The name of the editor of a document</a:documentation>
-        <ref name="db.editor.attlist"/>
-        <ref name="db.credit.contentmodel"/>
+    <define name="db.package">
+      <element name="package">
+        <a:documentation>A software or application package</a:documentation>
+        <ref name="db.package.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.biblioid.role.attribute">
+    <define name="db.email.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.biblioid.attlist">
+    <define name="db.email.attlist">
       <interleave>
         <optional>
-          <ref name="db.biblioid.role.attribute"/>
+          <ref name="db.email.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.biblio.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.biblioid">
-      <element name="biblioid">
-        <a:documentation>An identifier for a document</a:documentation>
-        <ref name="db.biblioid.attlist"/>
+    <define name="db.email">
+      <element name="email">
+        <a:documentation>An email address</a:documentation>
+        <ref name="db.email.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.citebiblioid.role.attribute">
+    <define name="db.lineannotation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.citebiblioid.attlist">
+    <define name="db.lineannotation.attlist">
       <interleave>
         <optional>
-          <ref name="db.citebiblioid.role.attribute"/>
+          <ref name="db.lineannotation.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.biblio.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.citebiblioid">
-      <element name="citebiblioid">
-        <a:documentation>A citation of a bibliographic identifier</a:documentation>
-        <ref name="db.citebiblioid.attlist"/>
+    <define name="db.lineannotation">
+      <element name="lineannotation">
+        <a:documentation>A comment on a line in a verbatim listing</a:documentation>
+        <ref name="db.lineannotation.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.bibliosource.role.attribute">
+    <define name="db.parameter.class.enumeration">
+      <choice>
+        <value>command</value>
+        <a:documentation>A command</a:documentation>
+        <value>function</value>
+        <a:documentation>A function</a:documentation>
+        <value>option</value>
+        <a:documentation>An option</a:documentation>
+      </choice>
+    </define>
+    <define name="db.parameter.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of parameter</a:documentation>
+        <ref name="db.parameter.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.parameter.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.bibliosource.attlist">
+    <define name="db.parameter.attlist">
       <interleave>
         <optional>
-          <ref name="db.bibliosource.role.attribute"/>
+          <ref name="db.parameter.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.biblio.class.attribute"/>
+        <optional>
+          <ref name="db.parameter.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.bibliosource">
-      <element name="bibliosource">
-        <a:documentation>The source of a document</a:documentation>
-        <ref name="db.bibliosource.attlist"/>
+    <define name="db.parameter">
+      <element name="parameter">
+        <a:documentation>A value or a symbolic reference to a value</a:documentation>
+        <ref name="db.parameter.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
+  <define name="db.replaceable.inlines">
+    <choice>
+      <ref name="db._text"/>
+      <ref name="db.co"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.bibliorelation.type.enumeration">
+    <define name="db.replaceable.class.enumeration">
       <choice>
-        <value>hasformat</value>
-        <a:documentation>The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format</a:documentation>
-        <value>haspart</value>
-        <a:documentation>The described resource includes the referenced resource either physically or logically</a:documentation>
-        <value>hasversion</value>
-        <a:documentation>The described resource has a version, edition, or adaptation, namely, the referenced resource</a:documentation>
-        <value>isformatof</value>
-        <a:documentation>The described resource is the same intellectual content of the referenced resource, but presented in another format</a:documentation>
-        <value>ispartof</value>
-        <a:documentation>The described resource is a physical or logical part of the referenced resource</a:documentation>
-        <value>isreferencedby</value>
-        <a:documentation>The described resource is referenced, cited, or otherwise pointed to by the referenced resource</a:documentation>
-        <value>isreplacedby</value>
-        <a:documentation>The described resource is supplanted, displaced, or superceded by the referenced resource</a:documentation>
-        <value>isrequiredby</value>
-        <a:documentation>The described resource is required by the referenced resource, either physically or logically</a:documentation>
-        <value>isversionof</value>
-        <a:documentation>The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format</a:documentation>
-        <value>references</value>
-        <a:documentation>The described resource references, cites, or otherwise points to the referenced resource</a:documentation>
-        <value>replaces</value>
-        <a:documentation>The described resource supplants, displaces, or supersedes the referenced resource</a:documentation>
-        <value>requires</value>
-        <a:documentation>The described resource requires the referenced resource to support its function, delivery, or coherence of content</a:documentation>
+        <value>command</value>
+        <a:documentation>A command</a:documentation>
+        <value>function</value>
+        <a:documentation>A function</a:documentation>
+        <value>option</value>
+        <a:documentation>An option</a:documentation>
+        <value>parameter</value>
+        <a:documentation>A parameter</a:documentation>
       </choice>
     </define>
-    <define name="db.bibliorelation.type-enum.attribute">
-      <optional>
-        <attribute name="type">
-          <a:documentation>Identifies the type of relationship</a:documentation>
-          <ref name="db.bibliorelation.type.enumeration"/>
-        </attribute>
-      </optional>
+    <define name="db.replaceable.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the nature of the replaceable text</a:documentation>
+        <ref name="db.replaceable.class.enumeration"/>
+      </attribute>
     </define>
-    <define name="db.bibliorelation.type-other.attributes">
-      <optional>
-        <attribute name="type">
-          <a:documentation>Identifies the type of relationship</a:documentation>
-          <value>othertype</value>
-          <a:documentation>The described resource has a non-standard relationship with the referenced resource</a:documentation>
-        </attribute>
-      </optional>
-      <attribute name="othertype">
-        <a:documentation>A keyword that identififes the type of the non-standard relationship</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </define>
-    <define name="db.bibliorelation.type.attribute">
-      <choice>
-        <ref name="db.bibliorelation.type-enum.attribute"/>
-        <ref name="db.bibliorelation.type-other.attributes"/>
-      </choice>
-    </define>
-    <define name="db.bibliorelation.role.attribute">
+    <define name="db.replaceable.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.bibliorelation.attlist">
+    <define name="db.replaceable.attlist">
       <interleave>
         <optional>
-          <ref name="db.bibliorelation.role.attribute"/>
+          <ref name="db.replaceable.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.biblio.class.attribute"/>
-        <ref name="db.bibliorelation.type.attribute"/>
+        <optional>
+          <ref name="db.replaceable.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.bibliorelation">
-      <element name="bibliorelation">
-        <a:documentation>The relationship of a document to another</a:documentation>
-        <ref name="db.bibliorelation.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.replaceable">
+      <element name="replaceable">
+        <a:documentation>Content that may or must be replaced by the user</a:documentation>
+        <ref name="db.replaceable.attlist"/>
+        <zeroOrMore>
+          <ref name="db.replaceable.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.bibliocoverage.spacial.enumeration">
-      <choice>
-        <value>dcmipoint</value>
-        <a:documentation>The DCMI Point identifies a point in space using its geographic coordinates</a:documentation>
-        <value>iso3166</value>
-        <a:documentation>ISO 3166 Codes for the representation of names of countries</a:documentation>
-        <value>dcmibox</value>
-        <a:documentation>The DCMI Box identifies a region of space using its geographic limits</a:documentation>
-        <value>tgn</value>
-        <a:documentation>The Getty Thesaurus of Geographic Names</a:documentation>
-      </choice>
-    </define>
-    <define name="db.bibliocoverage.spatial-enum.attribute">
-      <optional>
-        <attribute name="spatial">
-          <a:documentation>Specifies the type of spatial coverage</a:documentation>
-          <ref name="db.bibliocoverage.spacial.enumeration"/>
-        </attribute>
-      </optional>
-    </define>
-    <define name="db.bibliocoverage.spatial-other.attributes">
-      <optional>
-        <attribute name="spatial">
-          <a:documentation>Specifies the type of spatial coverage</a:documentation>
-          <value>otherspatial</value>
-          <a:documentation>Identifies a non-standard type of coverage</a:documentation>
-        </attribute>
-      </optional>
-      <attribute name="otherspatial">
-        <a:documentation>A keyword that identifies the type of non-standard coverage</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </define>
-    <define name="db.bibliocoverage.spatial.attribute">
-      <choice>
-        <ref name="db.bibliocoverage.spatial-enum.attribute"/>
-        <ref name="db.bibliocoverage.spatial-other.attributes"/>
-      </choice>
-    </define>
-    <define name="db.bibliocoverage.temporal.enumeration">
-      <choice>
-        <value>dcmiperiod</value>
-        <a:documentation>A specification of the limits of a time interval</a:documentation>
-        <value>w3c-dtf</value>
-        <a:documentation>W3C Encoding rules for dates and times—a profile based on ISO 8601</a:documentation>
-      </choice>
-    </define>
-    <define name="db.bibliocoverage.temporal-enum.attribute">
-      <optional>
-        <attribute name="temporal">
-          <a:documentation>Specifies the type of temporal coverage</a:documentation>
-          <ref name="db.bibliocoverage.temporal.enumeration"/>
-        </attribute>
-      </optional>
-    </define>
-    <define name="db.bibliocoverage.temporal-other.attributes">
+    <define name="db.uri.type.attribute">
       <optional>
-        <attribute name="temporal">
-          <a:documentation>Specifies the type of temporal coverage</a:documentation>
-          <value>othertemporal</value>
-          <a:documentation>Specifies a non-standard type of coverage</a:documentation>
+        <attribute name="type">
+          <a:documentation>Identifies the type of URI specified</a:documentation>
         </attribute>
       </optional>
-      <attribute name="othertemporal">
-        <a:documentation>A keyword that identifies the type of non-standard coverage</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </define>
-    <define name="db.bibliocoverage.temporal.attribute">
-      <choice>
-        <ref name="db.bibliocoverage.temporal-enum.attribute"/>
-        <ref name="db.bibliocoverage.temporal-other.attributes"/>
-      </choice>
-    </define>
-    <define name="db.bibliocoverage.coverage.attrib">
-      <interleave>
-        <ref name="db.bibliocoverage.spatial.attribute"/>
-        <ref name="db.bibliocoverage.temporal.attribute"/>
-      </interleave>
     </define>
-    <define name="db.bibliocoverage.role.attribute">
+    <define name="db.uri.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.bibliocoverage.attlist">
+    <define name="db.uri.attlist">
       <interleave>
         <optional>
-          <ref name="db.bibliocoverage.role.attribute"/>
+          <ref name="db.uri.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.bibliocoverage.coverage.attrib"/>
+        <ref name="db.uri.type.attribute"/>
       </interleave>
     </define>
-    <define name="db.bibliocoverage">
-      <element name="bibliocoverage">
-        <a:documentation>The spatial or temporal coverage of a document</a:documentation>
-        <ref name="db.bibliocoverage.attlist"/>
+    <define name="db.uri">
+      <element name="uri">
+        <a:documentation>A Uniform Resource Identifier</a:documentation>
+        <ref name="db.uri.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.legalnotice.role.attribute">
+    <define name="db.abbrev.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.legalnotice.attlist">
+    <define name="db.abbrev.attlist">
       <interleave>
         <optional>
-          <ref name="db.legalnotice.role.attribute"/>
+          <ref name="db.abbrev.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.legalnotice.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.legalnotice">
-      <element name="legalnotice">
-        <a:documentation>A statement of legal obligations or requirements</a:documentation>
-        <ref name="db.legalnotice.attlist"/>
-        <ref name="db.legalnotice.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.abbrev">
+      <element name="abbrev">
+        <a:documentation>An abbreviation, especially one followed by a period</a:documentation>
+        <ref name="db.abbrev.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+            <ref name="db.trademark"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.othercredit.class.enumeration">
-      <choice>
-        <value>copyeditor</value>
-        <a:documentation>A copy editor</a:documentation>
-        <value>graphicdesigner</value>
-        <a:documentation>A graphic designer</a:documentation>
-        <value>other</value>
-        <a:documentation>Some other contributor</a:documentation>
-        <value>productioneditor</value>
-        <a:documentation>A production editor</a:documentation>
-        <value>technicaleditor</value>
-        <a:documentation>A technical editor</a:documentation>
-        <value>translator</value>
-        <a:documentation>A translator</a:documentation>
-      </choice>
-    </define>
-    <define name="db.othercredit.class-enum.attribute">
-      <optional>
-        <attribute name="class">
-          <a:documentation>Identifies the nature of the contributor</a:documentation>
-          <ref name="db.othercredit.class.enumeration"/>
-        </attribute>
-      </optional>
-    </define>
-    <define name="db.othercredit.class-other.attribute">
-      <attribute name="otherclass">
-        <a:documentation>Identifies the nature of the non-standard contribution</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </define>
-    <define name="db.othercredit.class-other.attributes">
-      <interleave>
-        <attribute name="class">
-          <a:documentation>Identifies the nature of the contributor</a:documentation>
-          <value>other</value>
-          <a:documentation>Identifies a non-standard contribution</a:documentation>
-        </attribute>
-        <ref name="db.othercredit.class-other.attribute"/>
-      </interleave>
-    </define>
-    <define name="db.othercredit.class.attribute">
-      <choice>
-        <ref name="db.othercredit.class-enum.attribute"/>
-        <ref name="db.othercredit.class-other.attributes"/>
-      </choice>
-    </define>
-    <define name="db.othercredit.role.attribute">
+    <define name="db.acronym.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.othercredit.attlist">
+    <define name="db.acronym.attlist">
       <interleave>
         <optional>
-          <ref name="db.othercredit.role.attribute"/>
+          <ref name="db.acronym.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.othercredit.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.othercredit">
-      <element name="othercredit">
-        <a:documentation>A person or entity, other than an author or editor, credited in a document</a:documentation>
-        <ref name="db.othercredit.attlist"/>
-        <ref name="db.credit.contentmodel"/>
+    <define name="db.acronym">
+      <element name="acronym">
+        <a:documentation>An often pronounceable word made from the initial (or selected) letters of a name or phrase</a:documentation>
+        <ref name="db.acronym.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+            <ref name="db.trademark"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.pagenums.role.attribute">
+    <define name="db.citation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.pagenums.attlist">
+    <define name="db.citation.attlist">
       <interleave>
         <optional>
-          <ref name="db.pagenums.role.attribute"/>
+          <ref name="db.citation.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.pagenums">
-      <element name="pagenums">
-        <a:documentation>The numbers of the pages in a book, for use in a bibliographic entry</a:documentation>
-        <ref name="db.pagenums.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.citation">
+      <element name="citation">
+        <a:documentation>An inline bibliographic reference to another published work</a:documentation>
+        <ref name="db.citation.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.contrib.role.attribute">
+    <define name="db.citerefentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.contrib.attlist">
+    <define name="db.citerefentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.contrib.role.attribute"/>
+          <ref name="db.citerefentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.contrib">
-      <element name="contrib">
-        <a:documentation>A summary of the contributions made to a document by a credited source</a:documentation>
-        <ref name="db.contrib.attlist"/>
-        <ref name="db._text"/>
-      </element>
+    <define name="db.citerefentry">
+      <element name="citerefentry">
+        <a:documentation>A citation to a reference page</a:documentation>
+        <ref name="db.citerefentry.attlist"/>
+        <ref name="db.refentrytitle"/>
+        <optional>
+          <ref name="db.manvolnum"/>
+        </optional>
+      </element>
     </define>
   </div>
   <div>
-    <define name="db.honorific.role.attribute">
+    <define name="db.refentrytitle.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.honorific.attlist">
+    <define name="db.refentrytitle.attlist">
       <interleave>
         <optional>
-          <ref name="db.honorific.role.attribute"/>
+          <ref name="db.refentrytitle.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.honorific">
-      <element name="honorific">
-        <a:documentation>The title of a person</a:documentation>
-        <ref name="db.honorific.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refentrytitle">
+      <element name="refentrytitle">
+        <a:documentation>The title of a reference page</a:documentation>
+        <ref name="db.refentrytitle.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.firstname.role.attribute">
+    <define name="db.manvolnum.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.firstname.attlist">
+    <define name="db.manvolnum.attlist">
       <interleave>
         <optional>
-          <ref name="db.firstname.role.attribute"/>
+          <ref name="db.manvolnum.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.firstname">
-      <element name="firstname">
-        <a:documentation>The first name of a person</a:documentation>
-        <ref name="db.firstname.attlist"/>
+    <define name="db.manvolnum">
+      <element name="manvolnum">
+        <a:documentation>A reference volume number</a:documentation>
+        <ref name="db.manvolnum.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.surname.role.attribute">
+    <define name="db.citetitle.pubwork.enumeration">
+      <choice>
+        <value>article</value>
+        <a:documentation>An article</a:documentation>
+        <value>bbs</value>
+        <a:documentation>A bulletin board system</a:documentation>
+        <value>book</value>
+        <a:documentation>A book</a:documentation>
+        <value>cdrom</value>
+        <a:documentation>A CD-ROM</a:documentation>
+        <value>chapter</value>
+        <a:documentation>A chapter (as of a book)</a:documentation>
+        <value>dvd</value>
+        <a:documentation>A DVD</a:documentation>
+        <value>emailmessage</value>
+        <a:documentation>An email message</a:documentation>
+        <value>gopher</value>
+        <a:documentation>A gopher page</a:documentation>
+        <value>journal</value>
+        <a:documentation>A journal</a:documentation>
+        <value>manuscript</value>
+        <a:documentation>A manuscript</a:documentation>
+        <value>newsposting</value>
+        <a:documentation>A posting to a newsgroup</a:documentation>
+        <value>part</value>
+        <a:documentation>A part (as of a book)</a:documentation>
+        <value>refentry</value>
+        <a:documentation>A reference entry</a:documentation>
+        <value>section</value>
+        <a:documentation>A section (as of a book or article)</a:documentation>
+        <value>series</value>
+        <a:documentation>A series</a:documentation>
+        <value>set</value>
+        <a:documentation>A set (as of books)</a:documentation>
+        <value>webpage</value>
+        <a:documentation>A web page</a:documentation>
+        <value>wiki</value>
+        <a:documentation>A wiki page</a:documentation>
+      </choice>
+    </define>
+    <define name="db.citetitle.pubwork.attribute">
+      <attribute name="pubwork">
+        <a:documentation>Identifies the nature of the publication being cited</a:documentation>
+        <ref name="db.citetitle.pubwork.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.citetitle.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.surname.attlist">
+    <define name="db.citetitle.attlist">
       <interleave>
         <optional>
-          <ref name="db.surname.role.attribute"/>
+          <ref name="db.citetitle.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.citetitle.pubwork.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.surname">
-      <element name="surname">
-        <a:documentation>A family name; in western cultures the last name</a:documentation>
-        <ref name="db.surname.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.citetitle">
+      <element name="citetitle">
+        <a:documentation>The title of a cited work</a:documentation>
+        <ref name="db.citetitle.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.lineage.role.attribute">
+    <define name="db.emphasis.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.lineage.attlist">
+    <define name="db.emphasis.attlist">
       <interleave>
         <optional>
-          <ref name="db.lineage.role.attribute"/>
+          <ref name="db.emphasis.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.lineage">
-      <element name="lineage">
-        <a:documentation>The portion of a person's name indicating a relationship to ancestors</a:documentation>
-        <ref name="db.lineage.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.emphasis">
+      <element name="emphasis">
+        <a:documentation>Emphasized text</a:documentation>
+        <ref name="db.emphasis.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.othername.role.attribute">
+    <define name="db._emphasis">
+      <element name="emphasis">
+        <a:documentation>A limited span of emphasized text</a:documentation>
+        <ref name="db.emphasis.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db._emphasis"/>
+          </choice>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.foreignphrase.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.othername.attlist">
+    <define name="db.foreignphrase.attlist">
       <interleave>
         <optional>
-          <ref name="db.othername.role.attribute"/>
+          <ref name="db.foreignphrase.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.othername">
-      <element name="othername">
-        <a:documentation>A component of a persons name that is not a first name, surname, or lineage</a:documentation>
-        <ref name="db.othername.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.foreignphrase">
+      <element name="foreignphrase">
+        <a:documentation>A word or phrase in a language other than the primary language of the document</a:documentation>
+        <ref name="db.foreignphrase.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <text/>
+            <ref name="db.general.inlines"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.printhistory.role.attribute">
+    <define name="db.phrase.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.printhistory.attlist">
+    <define name="db.phrase.attlist">
       <interleave>
         <optional>
-          <ref name="db.printhistory.role.attribute"/>
+          <ref name="db.phrase.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.printhistory">
-      <element name="printhistory">
-        <a:documentation>The printing history of a document</a:documentation>
-        <ref name="db.printhistory.attlist"/>
-        <oneOrMore>
-          <ref name="db.para.blocks"/>
-        </oneOrMore>
+    <define name="db.phrase">
+      <element name="phrase">
+        <a:documentation>A span of text</a:documentation>
+        <ref name="db.phrase.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.productname.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.productname.class.enumeration">
-      <choice>
-        <value>copyright</value>
-        <a:documentation>A name with a copyright</a:documentation>
-        <value>registered</value>
-        <a:documentation>A name with a registered copyright</a:documentation>
-        <value>service</value>
-        <a:documentation>A name of a service</a:documentation>
-        <value>trade</value>
-        <a:documentation>A name which is trademarked</a:documentation>
-      </choice>
+    <define name="db._phrase">
+      <element name="phrase">
+        <a:documentation>A limited span of text</a:documentation>
+        <ref name="db.phrase.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
-    <define name="db.productname.class.attribute">
-      <attribute name="class">
-        <a:documentation>Specifies the class of product name</a:documentation>
-        <ref name="db.productname.class.enumeration"/>
-      </attribute>
+  </div>
+  <div>
+    <define name="db.quote.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.productname.attlist">
+    <define name="db.quote.attlist">
       <interleave>
         <optional>
-          <ref name="db.productname.role.attribute"/>
+          <ref name="db.quote.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.productname.class.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.productname">
-      <element name="productname">
-        <a:documentation>The formal name of a product</a:documentation>
-        <ref name="db.productname.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.quote">
+      <element name="quote">
+        <a:documentation>An inline quotation</a:documentation>
+        <ref name="db.quote.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.productnumber.role.attribute">
+    <define name="db.subscript.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.productnumber.attlist">
+    <define name="db.subscript.attlist">
       <interleave>
         <optional>
-          <ref name="db.productnumber.role.attribute"/>
+          <ref name="db.subscript.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.productnumber">
-      <element name="productnumber">
-        <a:documentation>A number assigned to a product</a:documentation>
-        <ref name="db.productnumber.attlist"/>
+    <define name="db.subscript">
+      <element name="subscript">
+        <a:documentation>A subscript (as in H2
+O, the molecular formula for water)</a:documentation>
+        <ref name="db.subscript.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.pubdate.role.attribute">
+    <define name="db.superscript.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.pubdate.attlist">
+    <define name="db.superscript.attlist">
       <interleave>
         <optional>
-          <ref name="db.pubdate.role.attribute"/>
+          <ref name="db.superscript.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.pubdate">
-      <element name="pubdate">
-        <a:documentation>The date of publication of a document</a:documentation>
-        <ref name="db.pubdate.attlist"/>
-        <ref name="db.date.contentmodel"/>
-      </element>
+    <define name="db.superscript">
+      <element name="superscript">
+        <a:documentation>A superscript (as in x^2, the mathematical notation for x multiplied by itself)</a:documentation>
+        <ref name="db.superscript.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
   </div>
   <div>
-    <define name="db.publisher.role.attribute">
+    <define name="db.trademark.class.enumeration">
+      <choice>
+        <value>copyright</value>
+        <a:documentation>A copyright</a:documentation>
+        <value>registered</value>
+        <a:documentation>A registered copyright</a:documentation>
+        <value>service</value>
+        <a:documentation>A service</a:documentation>
+        <value>trade</value>
+        <a:documentation>A trademark</a:documentation>
+      </choice>
+    </define>
+    <define name="db.trademark.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of trade mark</a:documentation>
+        <ref name="db.trademark.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.trademark.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.publisher.attlist">
+    <define name="db.trademark.attlist">
       <interleave>
         <optional>
-          <ref name="db.publisher.role.attribute"/>
+          <ref name="db.trademark.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.trademark.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.publisher">
-      <element name="publisher">
-        <a:documentation>The publisher of a document</a:documentation>
-        <ref name="db.publisher.attlist"/>
-        <ref name="db.publishername"/>
-        <zeroOrMore>
-          <ref name="db.address"/>
-        </zeroOrMore>
+    <define name="db.trademark">
+      <element name="trademark">
+        <a:documentation>A trademark</a:documentation>
+        <ref name="db.trademark.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.publishername.role.attribute">
+    <define name="db.wordasword.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.publishername.attlist">
+    <define name="db.wordasword.attlist">
       <interleave>
         <optional>
-          <ref name="db.publishername.role.attribute"/>
+          <ref name="db.wordasword.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.publishername">
-      <element name="publishername">
-        <a:documentation>The name of the publisher of a document</a:documentation>
-        <ref name="db.publishername.attlist"/>
+    <define name="db.wordasword">
+      <element name="wordasword">
+        <a:documentation>A word meant specifically as a word and not representing anything else</a:documentation>
+        <ref name="db.wordasword.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.releaseinfo.role.attribute">
+    <define name="db.footnoteref.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.releaseinfo.attlist">
+    <define name="db.footnoteref.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.footnoteref.attlist">
       <interleave>
         <optional>
-          <ref name="db.releaseinfo.role.attribute"/>
+          <ref name="db.footnoteref.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.linkend.attribute"/>
+        <optional>
+          <ref name="db.footnoteref.label.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.releaseinfo">
-      <element name="releaseinfo">
-        <a:documentation>Information about a particular release of a document</a:documentation>
-        <ref name="db.releaseinfo.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.footnoteref">
+      <element name="footnoteref">
+        <a:documentation>A cross reference to a footnote (a footnote mark)</a:documentation>
+        <s:pattern name="Footnote reference type constraint">
+          <s:rule context="db:footnoteref">
+            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on footnoteref must point to a footnote.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.footnoteref.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.revhistory.role.attribute">
+    <define name="db.xref.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.revhistory.attlist">
+    <define name="db.xref.xrefstyle.attribute">
+      <ref name="db.xrefstyle.attribute"/>
+    </define>
+    <define name="db.xref.endterm.attribute">
+      <ref name="db.endterm.attribute"/>
+    </define>
+    <define name="db.xref.attlist">
       <interleave>
         <optional>
-          <ref name="db.revhistory.role.attribute"/>
+          <ref name="db.xref.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.req.linking.attributes"/>
+        <optional>
+          <ref name="db.xref.xrefstyle.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xref.endterm.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.revhistory.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.revhistory">
-      <element name="revhistory">
-        <a:documentation>A history of the revisions to a document</a:documentation>
-        <ref name="db.revhistory.attlist"/>
-        <ref name="db.revhistory.info"/>
-        <oneOrMore>
-          <ref name="db.revision"/>
-        </oneOrMore>
+    <define name="db.xref">
+      <element name="xref">
+        <a:documentation>A cross reference to another part of the document</a:documentation>
+        <ref name="db.xref.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.revision.role.attribute">
+    <define name="db.link.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.revision.attlist">
+    <define name="db.link.xrefstyle.attribute">
+      <ref name="db.xrefstyle.attribute"/>
+    </define>
+    <define name="db.link.endterm.attribute">
+      <ref name="db.endterm.attribute"/>
+    </define>
+    <define name="db.link.attlist">
       <interleave>
         <optional>
-          <ref name="db.revision.role.attribute"/>
+          <ref name="db.link.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.revision">
-      <element name="revision">
-        <a:documentation>An entry describing a single revision in the history of the revisions to a document</a:documentation>
-        <ref name="db.revision.attlist"/>
+        <ref name="db.common.req.linking.attributes"/>
         <optional>
-          <ref name="db.revnumber"/>
+          <ref name="db.link.xrefstyle.attribute"/>
         </optional>
-        <ref name="db.date"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.authorinitials"/>
-            <ref name="db.author"/>
-          </choice>
-        </zeroOrMore>
         <optional>
-          <choice>
-            <ref name="db.revremark"/>
-            <ref name="db.revdescription"/>
-          </choice>
+          <ref name="db.link.endterm.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.link">
+      <element name="link">
+        <a:documentation>A hypertext link</a:documentation>
+        <ref name="db.link.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.revnumber.role.attribute">
+    <define name="db.olink.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.revnumber.attlist">
+    <define name="db.olink.xrefstyle.attribute">
+      <ref name="db.xrefstyle.attribute"/>
+    </define>
+    <define name="db.olink.localinfo.attribute">
+      <attribute name="localinfo">
+        <a:documentation>Holds additional information that may be used by the applicatoin when resolving the link</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.olink.targetdoc.attribute">
+      <attribute name="targetdoc">
+        <a:documentation>Specifies the URI of the document in which the link target appears</a:documentation>
+        <data type="anyURI"/>
+      </attribute>
+    </define>
+    <define name="db.olink.targetptr.attribute">
+      <attribute name="targetptr">
+        <a:documentation>Specifies the location of the link target in the document</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.olink.type.attribute">
+      <attribute name="type">
+        <a:documentation>Identifies application-specific customization of the link behavior</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.olink.attlist">
       <interleave>
+        <ref name="db.common.attributes"/>
         <optional>
-          <ref name="db.revnumber.role.attribute"/>
+          <ref name="db.olink.targetdoc.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.olink.role.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.olink.xrefstyle.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.olink.localinfo.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.olink.targetptr.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.olink.type.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.revnumber">
-      <element name="revnumber">
-        <a:documentation>A document revision number</a:documentation>
-        <ref name="db.revnumber.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.olink">
+      <element name="olink">
+        <a:documentation>A link that addresses its target indirectly</a:documentation>
+        <ref name="db.olink.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.revremark.role.attribute">
+    <define name="db.anchor.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.revremark.attlist">
+    <define name="db.anchor.attlist">
       <interleave>
         <optional>
-          <ref name="db.revremark.role.attribute"/>
+          <ref name="db.anchor.role.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.idreq.attributes"/>
       </interleave>
     </define>
-    <define name="db.revremark">
-      <element name="revremark">
-        <a:documentation>A description of a revision to a document</a:documentation>
-        <ref name="db.revremark.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.anchor">
+      <element name="anchor">
+        <a:documentation>A spot in the document</a:documentation>
+        <ref name="db.anchor.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.revdescription.role.attribute">
+    <define name="db.alt.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.revdescription.attlist">
+    <define name="db.alt.attlist">
       <interleave>
         <optional>
-          <ref name="db.revdescription.role.attribute"/>
+          <ref name="db.alt.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.revdescription">
-      <element name="revdescription">
-        <a:documentation>A extended description of a revision to a document</a:documentation>
-        <ref name="db.revdescription.attlist"/>
+    <define name="db.alt">
+      <element name="alt">
+        <a:documentation>A text-only annotation, often used for accessibility</a:documentation>
+        <ref name="db.alt.attlist"/>
         <zeroOrMore>
-          <ref name="db.all.blocks"/>
+          <choice>
+            <text/>
+            <ref name="db.inlinemediaobject"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.status.attribute">
+    <attribute name="status">
+      <a:documentation>Identifies the editorial or publication status of the element on which it occurs</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.toplevel.sections">
+    <choice>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="db.section"/>
+          </oneOrMore>
+          <zeroOrMore>
+            <ref name="db.simplesect"/>
+          </zeroOrMore>
+        </group>
+        <oneOrMore>
+          <ref name="db.simplesect"/>
+        </oneOrMore>
+      </choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.sect1"/>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.simplesect"/>
+        </zeroOrMore>
+      </group>
+      <oneOrMore>
+        <ref name="db.refentry"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="db.toplevel.blocks.or.sections">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
+        <optional>
+          <ref name="db.toplevel.sections"/>
+        </optional>
+      </group>
+      <ref name="db.toplevel.sections"/>
+    </choice>
+  </define>
+  <define name="db.recursive.sections">
+    <choice>
+      <choice>
+        <group>
+          <oneOrMore>
+            <ref name="db.section"/>
+          </oneOrMore>
+          <zeroOrMore>
+            <ref name="db.simplesect"/>
+          </zeroOrMore>
+        </group>
+        <oneOrMore>
+          <ref name="db.simplesect"/>
+        </oneOrMore>
+      </choice>
+      <oneOrMore>
+        <ref name="db.refentry"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="db.recursive.blocks.or.sections">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
+        <optional>
+          <ref name="db.recursive.sections"/>
+        </optional>
+      </group>
+      <ref name="db.recursive.sections"/>
+    </choice>
+  </define>
+  <define name="db.divisions">
+    <choice>
+      <ref name="db.part"/>
+      <ref name="db.reference"/>
+    </choice>
+  </define>
+  <define name="db.components">
+    <choice>
+      <ref name="db.dedication"/>
+      <ref name="db.acknowledgements"/>
+      <ref name="db.preface"/>
+      <ref name="db.chapter"/>
+      <ref name="db.appendix"/>
+      <ref name="db.article"/>
+      <ref name="db.colophon"/>
+    </choice>
+  </define>
+  <define name="db.navigation.components">
+    <choice>
+      <notAllowed/>
+      <ref name="db.glossary"/>
+      <ref name="db.bibliography"/>
+      <ref name="db.index"/>
+      <ref name="db.toc"/>
+    </choice>
+  </define>
+  <define name="db.component.contentmodel">
+    <zeroOrMore>
+      <ref name="db.navigation.components"/>
+    </zeroOrMore>
+    <ref name="db.toplevel.blocks.or.sections"/>
+    <zeroOrMore>
+      <ref name="db.navigation.components"/>
+    </zeroOrMore>
+  </define>
+  <define name="db.setindex.components">
+    <choice>
+      <notAllowed/>
+      <ref name="db.setindex"/>
+    </choice>
+  </define>
+  <define name="db.toc.components">
+    <choice>
+      <notAllowed/>
+      <ref name="db.toc"/>
+    </choice>
+  </define>
+  <define name="db.set.components">
+    <choice>
+      <ref name="db.set"/>
+      <ref name="db.book"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.seriesvolnums.role.attribute">
+    <define name="db.set.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.set.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.seriesvolnums.attlist">
+    <define name="db.set.attlist">
       <interleave>
         <optional>
-          <ref name="db.seriesvolnums.role.attribute"/>
+          <ref name="db.set.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.set.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.seriesvolnums">
-      <element name="seriesvolnums">
-        <a:documentation>Numbers of the volumes in a series of books</a:documentation>
-        <ref name="db.seriesvolnums.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.volumenum.role.attribute">
-      <attribute name="role"/>
+    <define name="db.set.info">
+      <ref name="db._info.title.req"/>
     </define>
-    <define name="db.volumenum.attlist">
-      <interleave>
+    <define name="db.set">
+      <element name="set">
+        <a:documentation>A collection of books</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:set">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.set.attlist"/>
+        <ref name="db.set.info"/>
         <optional>
-          <ref name="db.volumenum.role.attribute"/>
+          <ref name="db.toc.components"/>
+        </optional>
+        <oneOrMore>
+          <ref name="db.set.components"/>
+        </oneOrMore>
+        <optional>
+          <ref name="db.setindex.components"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.volumenum">
-      <element name="volumenum">
-        <a:documentation>The volume number of a document in a set (as of books in a set or articles in a journal)</a:documentation>
-        <ref name="db.volumenum.attlist"/>
-        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.issuenum.role.attribute">
+    <define name="db.book.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.book.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.issuenum.attlist">
+    <define name="db.book.attlist">
       <interleave>
         <optional>
-          <ref name="db.issuenum.role.attribute"/>
+          <ref name="db.book.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.book.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.issuenum">
-      <element name="issuenum">
-        <a:documentation>The number of an issue of a journal</a:documentation>
-        <ref name="db.issuenum.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.book.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.book">
+      <element name="book">
+        <a:documentation>A book</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:book">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.book.attlist"/>
+        <ref name="db.book.info"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.navigation.components"/>
+            <ref name="db.components"/>
+            <ref name="db.divisions"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.accel.role.attribute">
+    <define name="db.dedication.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.dedication.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.accel.attlist">
+    <define name="db.dedication.attlist">
       <interleave>
         <optional>
-          <ref name="db.accel.role.attribute"/>
+          <ref name="db.dedication.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.dedication.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.accel">
-      <element name="accel">
-        <a:documentation>A graphical user interface (GUI) keyboard shortcut</a:documentation>
-        <ref name="db.accel.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.dedication.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.dedication">
+      <element name="dedication">
+        <a:documentation>The dedication of a book or other component</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:dedication">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.dedication.attlist"/>
+        <ref name="db.dedication.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.application.class.enumeration">
-      <choice>
-        <value>hardware</value>
-        <a:documentation>A hardware application</a:documentation>
-        <value>software</value>
-        <a:documentation>A software application</a:documentation>
-      </choice>
-    </define>
-    <define name="db.application.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of application</a:documentation>
-        <ref name="db.application.class.enumeration"/>
-      </attribute>
+    <define name="db.acknowledgements.status.attribute">
+      <ref name="db.status.attribute"/>
     </define>
-    <define name="db.application.role.attribute">
+    <define name="db.acknowledgements.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.application.attlist">
+    <define name="db.acknowledgements.attlist">
       <interleave>
         <optional>
-          <ref name="db.application.role.attribute"/>
+          <ref name="db.acknowledgements.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.application.class.attribute"/>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.acknowledgements.status.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.application">
-      <element name="application">
-        <a:documentation>The name of a software program</a:documentation>
-        <ref name="db.application.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.acknowledgements.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.acknowledgements">
+      <element name="acknowledgements">
+        <a:documentation>Acknowledgements of a book or other component</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:acknowledgements">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.acknowledgements.attlist"/>
+        <ref name="db.acknowledgements.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.package.role.attribute">
+    <define name="db.colophon.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.colophon.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.package.attlist">
+    <define name="db.colophon.attlist">
       <interleave>
         <optional>
-          <ref name="db.package.role.attribute"/>
+          <ref name="db.colophon.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colophon.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.package">
-      <element name="package">
-        <a:documentation>A software or application package</a:documentation>
-        <ref name="db.package.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.colophon.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.colophon">
+      <element name="colophon">
+        <a:documentation>Text at the back of a book describing facts about its production</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:colophon">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.colophon.attlist"/>
+        <ref name="db.colophon.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.classname.role.attribute">
+    <define name="db.appendix.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.appendix.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.classname.attlist">
+    <define name="db.appendix.attlist">
       <interleave>
         <optional>
-          <ref name="db.classname.role.attribute"/>
+          <ref name="db.appendix.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.appendix.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.classname">
-      <element name="classname">
-        <a:documentation>The name of a class, in the object-oriented programming sense</a:documentation>
-        <ref name="db.classname.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.appendix.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.appendix">
+      <element name="appendix">
+        <a:documentation>An appendix in a Book or Article</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:appendix">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.appendix.attlist"/>
+        <ref name="db.appendix.info"/>
+        <ref name="db.component.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.command.role.attribute">
+    <define name="db.chapter.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.chapter.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.command.attlist">
+    <define name="db.chapter.attlist">
       <interleave>
         <optional>
-          <ref name="db.command.role.attribute"/>
+          <ref name="db.chapter.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.chapter.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.command">
-      <element name="command">
-        <a:documentation>The name of an executable program or other software command</a:documentation>
-        <ref name="db.command.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.chapter.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.chapter">
+      <element name="chapter">
+        <a:documentation>A chapter, as of a book</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:chapter">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.chapter.attlist"/>
+        <ref name="db.chapter.info"/>
+        <ref name="db.component.contentmodel"/>
       </element>
     </define>
   </div>
-  <define name="db.computeroutput.inlines">
+  <define name="db.part.components">
     <choice>
       <choice>
-        <text/>
-        <ref name="db.ubiq.inlines"/>
-        <ref name="db.os.inlines"/>
-        <ref name="db.technical.inlines"/>
-        <ref name="db.markup.inlines"/>
+        <ref name="db.navigation.components"/>
+        <ref name="db.components"/>
+      </choice>
+      <choice>
+        <ref name="db.refentry"/>
+        <ref name="db.reference"/>
       </choice>
-      <ref name="db.co"/>
     </choice>
   </define>
   <div>
-    <define name="db.computeroutput.role.attribute">
+    <define name="db.part.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.part.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.computeroutput.attlist">
+    <define name="db.part.attlist">
       <interleave>
         <optional>
-          <ref name="db.computeroutput.role.attribute"/>
+          <ref name="db.part.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.part.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.computeroutput">
-      <element name="computeroutput">
-        <a:documentation>Data, generally text, displayed or presented by a computer</a:documentation>
-        <ref name="db.computeroutput.attlist"/>
-        <zeroOrMore>
-          <ref name="db.computeroutput.inlines"/>
-        </zeroOrMore>
+    <define name="db.part.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.part">
+      <element name="part">
+        <a:documentation>A division in a book</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:part">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.part.attlist"/>
+        <ref name="db.part.info"/>
+        <optional>
+          <ref name="db.partintro"/>
+        </optional>
+        <oneOrMore>
+          <ref name="db.part.components"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.database.class.enumeration">
-      <choice>
-        <value>altkey</value>
-        <a:documentation>An alternate or secondary key</a:documentation>
-        <value>constraint</value>
-        <a:documentation>A constraint</a:documentation>
-        <value>datatype</value>
-        <a:documentation>A data type</a:documentation>
-        <value>field</value>
-        <a:documentation>A field</a:documentation>
-        <value>foreignkey</value>
-        <a:documentation>A foreign key</a:documentation>
-        <value>group</value>
-        <a:documentation>A group</a:documentation>
-        <value>index</value>
-        <a:documentation>An index</a:documentation>
-        <value>key1</value>
-        <a:documentation>The first or primary key</a:documentation>
-        <value>key2</value>
-        <a:documentation>An alternate or secondary key</a:documentation>
-        <value>name</value>
-        <a:documentation>A name</a:documentation>
-        <value>primarykey</value>
-        <a:documentation>The primary key</a:documentation>
-        <value>procedure</value>
-        <a:documentation>A (stored) procedure</a:documentation>
-        <value>record</value>
-        <a:documentation>A record</a:documentation>
-        <value>rule</value>
-        <a:documentation>A rule</a:documentation>
-        <value>secondarykey</value>
-        <a:documentation>The secondary key</a:documentation>
-        <value>table</value>
-        <a:documentation>A table</a:documentation>
-        <value>user</value>
-        <a:documentation>A user</a:documentation>
-        <value>view</value>
-        <a:documentation>A view</a:documentation>
-      </choice>
-    </define>
-    <define name="db.database.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of database artifact</a:documentation>
-        <ref name="db.database.class.enumeration"/>
-      </attribute>
+    <define name="db.preface.status.attribute">
+      <ref name="db.status.attribute"/>
     </define>
-    <define name="db.database.role.attribute">
+    <define name="db.preface.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.database.attlist">
+    <define name="db.preface.attlist">
       <interleave>
         <optional>
-          <ref name="db.database.role.attribute"/>
+          <ref name="db.preface.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.database.class.attribute"/>
+          <ref name="db.label.attribute"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.database">
-      <element name="database">
-        <a:documentation>The name of a database, or part of a database</a:documentation>
-        <ref name="db.database.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.email.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.email.attlist">
-      <interleave>
         <optional>
-          <ref name="db.email.role.attribute"/>
+          <ref name="db.preface.status.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.email">
-      <element name="email">
-        <a:documentation>An email address</a:documentation>
-        <ref name="db.email.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.preface.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.preface">
+      <element name="preface">
+        <a:documentation>Introductory matter preceding the first chapter of a book</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:preface">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.preface.attlist"/>
+        <ref name="db.preface.info"/>
+        <ref name="db.component.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.envar.role.attribute">
+    <define name="db.partintro.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.partintro.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.envar.attlist">
+    <define name="db.partintro.attlist">
       <interleave>
         <optional>
-          <ref name="db.envar.role.attribute"/>
+          <ref name="db.partintro.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.envar">
-      <element name="envar">
-        <a:documentation>A software environment variable</a:documentation>
-        <ref name="db.envar.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.errorcode.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.errorcode.attlist">
-      <interleave>
         <optional>
-          <ref name="db.errorcode.role.attribute"/>
+          <ref name="db.label.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.errorcode">
-      <element name="errorcode">
-        <a:documentation>An error code</a:documentation>
-        <ref name="db.errorcode.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.errorname.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.errorname.attlist">
-      <interleave>
         <optional>
-          <ref name="db.errorname.role.attribute"/>
+          <ref name="db.partintro.status.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.errorname">
-      <element name="errorname">
-        <a:documentation>An error name</a:documentation>
-        <ref name="db.errorname.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.partintro.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.partintro">
+      <element name="partintro">
+        <a:documentation>An introduction to the contents of a part</a:documentation>
+        <ref name="db.partintro.attlist"/>
+        <ref name="db.partintro.info"/>
+        <ref name="db.toplevel.blocks.or.sections"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.errortext.role.attribute">
+    <define name="db.section.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.section.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.errortext.attlist">
+    <define name="db.section.attlist">
       <interleave>
         <optional>
-          <ref name="db.errortext.role.attribute"/>
+          <ref name="db.section.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.section.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.errortext">
-      <element name="errortext">
-        <a:documentation>An error message.</a:documentation>
-        <ref name="db.errortext.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.section.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.section">
+      <element name="section">
+        <a:documentation>A recursive section</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:section">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.section.attlist"/>
+        <ref name="db.section.info"/>
+        <ref name="db.recursive.blocks.or.sections"/>
+        <zeroOrMore>
+          <ref name="db.navigation.components"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.errortype.role.attribute">
+    <define name="db.simplesect.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.simplesect.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.errortype.attlist">
+    <define name="db.simplesect.attlist">
       <interleave>
         <optional>
-          <ref name="db.errortype.role.attribute"/>
+          <ref name="db.simplesect.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.simplesect.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.errortype">
-      <element name="errortype">
-        <a:documentation>The classification of an error message</a:documentation>
-        <ref name="db.errortype.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.simplesect.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.simplesect">
+      <element name="simplesect">
+        <a:documentation>A section of a document with no subdivisions</a:documentation>
+        <ref name="db.simplesect.attlist"/>
+        <ref name="db.simplesect.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
+  <define name="db.article.components">
+    <ref name="db.toplevel.sections"/>
+  </define>
   <div>
-    <define name="db.filename.class.enumeration">
+    <define name="db.article.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.article.class.enumeration">
       <choice>
-        <value>devicefile</value>
-        <a:documentation>A device</a:documentation>
-        <value>directory</value>
-        <a:documentation>A directory</a:documentation>
-        <value>extension</value>
-        <a:documentation>A filename extension</a:documentation>
-        <value>headerfile</value>
-        <a:documentation>A header file (as for a programming language)</a:documentation>
-        <value>libraryfile</value>
-        <a:documentation>A library file</a:documentation>
-        <value>partition</value>
-        <a:documentation>A partition (as of a hard disk)</a:documentation>
-        <value>symlink</value>
-        <a:documentation>A symbolic link</a:documentation>
+        <value>faq</value>
+        <a:documentation>A collection of frequently asked questions.</a:documentation>
+        <value>journalarticle</value>
+        <a:documentation>An article in a journal or other periodical.</a:documentation>
+        <value>productsheet</value>
+        <a:documentation>A description of a product.</a:documentation>
+        <value>specification</value>
+        <a:documentation>A specification.</a:documentation>
+        <value>techreport</value>
+        <a:documentation>A technical report.</a:documentation>
+        <value>whitepaper</value>
+        <a:documentation>A white paper.</a:documentation>
       </choice>
     </define>
-    <define name="db.filename.class.attribute">
+    <define name="db.article.class.attribute">
       <attribute name="class">
-        <a:documentation>Identifies the class of filename</a:documentation>
-        <ref name="db.filename.class.enumeration"/>
-      </attribute>
-    </define>
-    <define name="db.filename.path.attribute">
-      <attribute name="path">
-        <a:documentation>Specifies the path of the filename</a:documentation>
+        <a:documentation>Identifies the nature of the article</a:documentation>
+        <ref name="db.article.class.enumeration"/>
       </attribute>
     </define>
-    <define name="db.filename.role.attribute">
+    <define name="db.article.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.filename.attlist">
+    <define name="db.article.attlist">
       <interleave>
         <optional>
-          <ref name="db.filename.role.attribute"/>
+          <ref name="db.article.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.filename.path.attribute"/>
+          <ref name="db.label.attribute"/>
         </optional>
         <optional>
-          <ref name="db.filename.class.attribute"/>
+          <ref name="db.article.status.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.article.class.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.filename">
-      <element name="filename">
-        <a:documentation>The name of a file</a:documentation>
-        <ref name="db.filename.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.article.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.article">
+      <element name="article">
+        <a:documentation>An article</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:article">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.article.attlist"/>
+        <ref name="db.article.info"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.navigation.components"/>
+            <ref name="db.appendix"/>
+            <ref name="db.acknowledgements"/>
+            <ref name="db.colophon"/>
+          </choice>
+        </zeroOrMore>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.article.components"/>
+            </optional>
+          </group>
+          <ref name="db.article.components"/>
+        </choice>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.navigation.components"/>
+            <ref name="db.appendix"/>
+            <ref name="db.acknowledgements"/>
+            <ref name="db.colophon"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.annotations.attribute">
+    <attribute name="annotations">
+      <a:documentation>Identifies one or more annotations that apply to this element</a:documentation>
+    </attribute>
+  </define>
   <div>
-    <define name="db.function.role.attribute">
+    <define name="db.annotation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.function.attlist">
+    <define name="db.annotation.annotates.attribute">
+      <attribute name="annotates">
+        <a:documentation>Identifies one ore more elements to which this annotation applies</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.annotation.attlist">
       <interleave>
         <optional>
-          <ref name="db.function.role.attribute"/>
+          <ref name="db.annotation.role.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.annotation.annotates.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.function">
-      <element name="function">
-        <a:documentation>The name of a function or subroutine, as in a programming language</a:documentation>
-        <ref name="db.function.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.annotation.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.annotation">
+      <element name="annotation">
+        <a:documentation>An annotation</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:annotation">
+            <s:assert test="not(.//db:annotation)">annotation must not occur in the descendants of annotation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.annotation.attlist"/>
+        <ref name="db.annotation.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
+  <define name="db.xlink.from.attribute">
+    <optional>
+      <attribute name="xlink:from">
+        <a:documentation>Specifies the XLink traversal-from</a:documentation>
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="db.xlink.label.attribute">
+    <optional>
+      <attribute name="xlink:label">
+        <a:documentation>Specifies the XLink label</a:documentation>
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="db.xlink.to.attribute">
+    <optional>
+      <attribute name="xlink:to">
+        <a:documentation>Specifies the XLink traversal-to</a:documentation>
+        <data type="NMTOKEN"/>
+      </attribute>
+    </optional>
+  </define>
   <div>
-    <define name="db.guibutton.role.attribute">
+    <define name="db.extendedlink.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.guibutton.attlist">
+    <define name="db.extendedlink.attlist">
       <interleave>
         <optional>
-          <ref name="db.guibutton.role.attribute"/>
+          <ref name="db.extendedlink.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <attribute name="xlink:type" a:defaultValue="extended">
+            <a:documentation>Identifies the XLink link type </a:documentation>
+            <value>extended</value>
+            <a:documentation>An XLink extended link</a:documentation>
+          </attribute>
+        </optional>
+        <optional>
+          <ref name="db.xlink.role.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.title.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.guibutton">
-      <element name="guibutton">
-        <a:documentation>The text on a button in a GUI</a:documentation>
-        <ref name="db.guibutton.attlist"/>
-        <zeroOrMore>
+    <define name="db.extendedlink">
+      <element name="extendedlink">
+        <a:documentation>An XLink extended link</a:documentation>
+        <ref name="db.extendedlink.attlist"/>
+        <oneOrMore>
           <choice>
-            <ref name="db._text"/>
-            <ref name="db.accel"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
+            <ref name="db.locator"/>
+            <ref name="db.arc"/>
           </choice>
-        </zeroOrMore>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.guiicon.role.attribute">
+    <define name="db.locator.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.guiicon.attlist">
+    <define name="db.locator.attlist">
       <interleave>
         <optional>
-          <ref name="db.guiicon.role.attribute"/>
+          <ref name="db.locator.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <attribute name="xlink:type" a:defaultValue="locator">
+            <a:documentation>Identifies the XLink link type </a:documentation>
+            <value>locator</value>
+            <a:documentation>An XLink locator link</a:documentation>
+          </attribute>
+        </optional>
+        <ref name="db.xlink.href.attribute"/>
+        <optional>
+          <ref name="db.xlink.role.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.title.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.label.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.guiicon">
-      <element name="guiicon">
-        <a:documentation>Graphic and/or text appearing as a icon in a GUI</a:documentation>
-        <ref name="db.guiicon.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.accel"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.locator">
+      <element name="locator">
+        <a:documentation>An XLink locator in an extendedlink</a:documentation>
+        <ref name="db.locator.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.guilabel.role.attribute">
+    <define name="db.arc.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.guilabel.attlist">
+    <define name="db.arc.attlist">
       <interleave>
         <optional>
-          <ref name="db.guilabel.role.attribute"/>
+          <ref name="db.arc.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <attribute name="xlink:type" a:defaultValue="arc">
+            <a:documentation>Identifies the XLink link type </a:documentation>
+            <value>arc</value>
+            <a:documentation>An XLink arc link</a:documentation>
+          </attribute>
+        </optional>
+        <optional>
+          <ref name="db.xlink.arcrole.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.title.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.show.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.actuate.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.from.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.xlink.to.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.guilabel">
-      <element name="guilabel">
-        <a:documentation>The text of a label in a GUI</a:documentation>
-        <ref name="db.guilabel.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.accel"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.arc">
+      <element name="arc">
+        <a:documentation>An XLink arc in an extendedlink</a:documentation>
+        <ref name="db.arc.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
+  <define name="db.sect1.sections">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.sect2"/>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.simplesect"/>
+        </zeroOrMore>
+      </group>
+      <oneOrMore>
+        <ref name="db.simplesect"/>
+      </oneOrMore>
+    </choice>
+  </define>
   <div>
-    <define name="db.guimenu.role.attribute">
+    <define name="db.sect1.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.sect1.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.guimenu.attlist">
+    <define name="db.sect1.attlist">
       <interleave>
         <optional>
-          <ref name="db.guimenu.role.attribute"/>
+          <ref name="db.sect1.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.sect1.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.guimenu">
-      <element name="guimenu">
-        <a:documentation>The name of a menu in a GUI</a:documentation>
-        <ref name="db.guimenu.attlist"/>
+    <define name="db.sect1.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.sect1">
+      <element name="sect1">
+        <a:documentation>A top-level section of document</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:sect1">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.sect1.attlist"/>
+        <ref name="db.sect1.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.sect1.sections"/>
+            </optional>
+          </group>
+          <ref name="db.sect1.sections"/>
+        </choice>
         <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.accel"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-          </choice>
+          <ref name="db.navigation.components"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.sect2.sections">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.sect3"/>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.simplesect"/>
+        </zeroOrMore>
+      </group>
+      <oneOrMore>
+        <ref name="db.simplesect"/>
+      </oneOrMore>
+    </choice>
+  </define>
   <div>
-    <define name="db.guimenuitem.role.attribute">
+    <define name="db.sect2.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.sect2.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.guimenuitem.attlist">
+    <define name="db.sect2.attlist">
       <interleave>
         <optional>
-          <ref name="db.guimenuitem.role.attribute"/>
+          <ref name="db.sect2.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.sect2.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.guimenuitem">
-      <element name="guimenuitem">
-        <a:documentation>The name of a terminal menu item in a GUI</a:documentation>
-        <ref name="db.guimenuitem.attlist"/>
+    <define name="db.sect2.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.sect2">
+      <element name="sect2">
+        <a:documentation>A subsection within a Sect1</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:sect2">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.sect2.attlist"/>
+        <ref name="db.sect2.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.sect2.sections"/>
+            </optional>
+          </group>
+          <ref name="db.sect2.sections"/>
+        </choice>
         <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.accel"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-          </choice>
+          <ref name="db.navigation.components"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.sect3.sections">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.sect4"/>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.simplesect"/>
+        </zeroOrMore>
+      </group>
+      <oneOrMore>
+        <ref name="db.simplesect"/>
+      </oneOrMore>
+    </choice>
+  </define>
   <div>
-    <define name="db.guisubmenu.role.attribute">
+    <define name="db.sect3.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.sect3.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.guisubmenu.attlist">
+    <define name="db.sect3.attlist">
       <interleave>
         <optional>
-          <ref name="db.guisubmenu.role.attribute"/>
+          <ref name="db.sect3.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.sect3.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.guisubmenu">
-      <element name="guisubmenu">
-        <a:documentation>The name of a submenu in a GUI</a:documentation>
-        <ref name="db.guisubmenu.attlist"/>
+    <define name="db.sect3.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.sect3">
+      <element name="sect3">
+        <a:documentation>A subsection within a Sect2</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:sect3">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.sect3.attlist"/>
+        <ref name="db.sect3.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.sect3.sections"/>
+            </optional>
+          </group>
+          <ref name="db.sect3.sections"/>
+        </choice>
         <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.accel"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-          </choice>
+          <ref name="db.navigation.components"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.sect4.sections">
+    <choice>
+      <group>
+        <oneOrMore>
+          <ref name="db.sect5"/>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.simplesect"/>
+        </zeroOrMore>
+      </group>
+      <oneOrMore>
+        <ref name="db.simplesect"/>
+      </oneOrMore>
+    </choice>
+  </define>
   <div>
-    <define name="db.hardware.role.attribute">
+    <define name="db.sect4.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.sect4.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.hardware.attlist">
+    <define name="db.sect4.attlist">
       <interleave>
         <optional>
-          <ref name="db.hardware.role.attribute"/>
+          <ref name="db.sect4.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.sect4.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.hardware">
-      <element name="hardware">
-        <a:documentation>A physical part of a computer system</a:documentation>
-        <ref name="db.hardware.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.sect4.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.sect4">
+      <element name="sect4">
+        <a:documentation>A subsection within a Sect3</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:sect4">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.sect4.attlist"/>
+        <ref name="db.sect4.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.sect4.sections"/>
+            </optional>
+          </group>
+          <ref name="db.sect4.sections"/>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.navigation.components"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.sect5.sections">
+    <oneOrMore>
+      <ref name="db.simplesect"/>
+    </oneOrMore>
+  </define>
   <div>
-    <define name="db.keycap.function.enumeration">
-      <choice>
-        <value>alt</value>
-        <a:documentation>The "Alt" key</a:documentation>
-        <value>backspace</value>
-        <a:documentation>The "Backspace" key</a:documentation>
-        <value>command</value>
-        <a:documentation>The "Command" key</a:documentation>
-        <value>control</value>
-        <a:documentation>The "Control" key</a:documentation>
-        <value>delete</value>
-        <a:documentation>The "Delete" key</a:documentation>
-        <value>down</value>
-        <a:documentation>The down arrow</a:documentation>
-        <value>end</value>
-        <a:documentation>The "End" key</a:documentation>
-        <value>enter</value>
-        <a:documentation>The "Enter" or "Return" key</a:documentation>
-        <value>escape</value>
-        <a:documentation>The "Escape" key</a:documentation>
-        <value>home</value>
-        <a:documentation>The "Home" key</a:documentation>
-        <value>insert</value>
-        <a:documentation>The "Insert" key</a:documentation>
-        <value>left</value>
-        <a:documentation>The left arrow</a:documentation>
-        <value>meta</value>
-        <a:documentation>The "Meta" key</a:documentation>
-        <value>option</value>
-        <a:documentation>The "Option" key</a:documentation>
-        <value>pagedown</value>
-        <a:documentation>The page down key</a:documentation>
-        <value>pageup</value>
-        <a:documentation>The page up key</a:documentation>
-        <value>right</value>
-        <a:documentation>The right arrow</a:documentation>
-        <value>shift</value>
-        <a:documentation>The "Shift" key</a:documentation>
-        <value>space</value>
-        <a:documentation>The spacebar</a:documentation>
-        <value>tab</value>
-        <a:documentation>The "Tab" key</a:documentation>
-        <value>up</value>
-        <a:documentation>The up arrow</a:documentation>
-      </choice>
-    </define>
-    <define name="db.keycap.function-enum.attribute">
-      <optional>
-        <attribute name="function">
-          <a:documentation>Identifies the function key</a:documentation>
-          <ref name="db.keycap.function.enumeration"/>
-        </attribute>
-      </optional>
-    </define>
-    <define name="db.keycap.function-other.attributes">
-      <optional>
-        <attribute name="function">
-          <a:documentation>Identifies the function key</a:documentation>
-          <value>other</value>
-          <a:documentation>Indicates a non-standard function key</a:documentation>
-        </attribute>
-      </optional>
-      <attribute name="otherfunction">
-        <a:documentation>Specifies a keyword that identifies the non-standard key</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.keycap.function.attrib">
-      <choice>
-        <ref name="db.keycap.function-enum.attribute"/>
-        <ref name="db.keycap.function-other.attributes"/>
-      </choice>
+    <define name="db.sect5.status.attribute">
+      <ref name="db.status.attribute"/>
     </define>
-    <define name="db.keycap.role.attribute">
+    <define name="db.sect5.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.keycap.attlist">
+    <define name="db.sect5.attlist">
       <interleave>
         <optional>
-          <ref name="db.keycap.role.attribute"/>
+          <ref name="db.sect5.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.keycap.function.attrib"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.sect5.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.keycap">
-      <element name="keycap">
-        <a:documentation>The text printed on a key on a keyboard</a:documentation>
-        <ref name="db.keycap.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.sect5.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.sect5">
+      <element name="sect5">
+        <a:documentation>A subsection within a Sect4</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:sect5">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.sect5.attlist"/>
+        <ref name="db.sect5.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.sect5.sections"/>
+            </optional>
+          </group>
+          <ref name="db.sect5.sections"/>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.navigation.components"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.toplevel.refsection">
+    <choice>
+      <oneOrMore>
+        <ref name="db.refsection"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="db.refsect1"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="db.secondlevel.refsection">
+    <choice>
+      <oneOrMore>
+        <ref name="db.refsection"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="db.refsect2"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="db.reference.components">
+    <ref name="db.refentry"/>
+  </define>
   <div>
-    <define name="db.keycode.role.attribute">
+    <define name="db.reference.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.keycode.attlist">
+    <define name="db.reference.attlist">
       <interleave>
         <optional>
-          <ref name="db.keycode.role.attribute"/>
+          <ref name="db.reference.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.status.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.keycode">
-      <element name="keycode">
-        <a:documentation>The internal, frequently numeric, identifier for a key on a keyboard</a:documentation>
-        <ref name="db.keycode.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.reference.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.reference">
+      <element name="reference">
+        <a:documentation>A collection of reference entries</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:reference">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.reference.attlist"/>
+        <ref name="db.reference.info"/>
+        <optional>
+          <ref name="db.partintro"/>
+        </optional>
+        <oneOrMore>
+          <ref name="db.reference.components"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.keycombo.action.enumeration">
-      <choice>
-        <value>click</value>
-        <a:documentation>A (single) mouse click.</a:documentation>
-        <value>double-click</value>
-        <a:documentation>A double mouse click.</a:documentation>
-        <value>press</value>
-        <a:documentation>A mouse or key press.</a:documentation>
-        <value>seq</value>
-        <a:documentation>Sequential clicks or presses.</a:documentation>
-        <value>simul</value>
-        <a:documentation>Simultaneous clicks or presses.</a:documentation>
-      </choice>
-    </define>
-    <define name="db.keycombo.action-enum.attribute">
-      <optional>
-        <attribute name="action">
-          <a:documentation>Identifies the nature of the action taken. If keycombo
- contains more than one element, simul
- is the default, otherwise there is no default.</a:documentation>
-          <ref name="db.keycombo.action.enumeration"/>
-        </attribute>
-      </optional>
-    </define>
-    <define name="db.keycombo.action-other.attributes">
-      <optional>
-        <attribute name="action">
-          <a:documentation>Identifies the nature of the action taken</a:documentation>
-          <value>other</value>
-          <a:documentation>Indicates a non-standard action</a:documentation>
-        </attribute>
-      </optional>
-      <attribute name="otheraction">
-        <a:documentation>Identifies the non-standard action in some unspecified way.</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.keycombo.action.attrib">
-      <choice>
-        <ref name="db.keycombo.action-enum.attribute"/>
-        <ref name="db.keycombo.action-other.attributes"/>
-      </choice>
-    </define>
-    <define name="db.keycombo.role.attribute">
+    <define name="db.refentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.keycombo.attlist">
+    <define name="db.refentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.keycombo.role.attribute"/>
+          <ref name="db.refentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.keycombo.action.attrib"/>
+        <optional>
+          <ref name="db.status.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.keycombo">
-      <element name="keycombo">
-        <a:documentation>A combination of input actions</a:documentation>
-        <ref name="db.keycombo.attlist"/>
+    <define name="db.refentry.info">
+      <ref name="db._info.title.forbidden"/>
+    </define>
+    <define name="db.refentry">
+      <element name="refentry">
+        <a:documentation>A reference page (originally a UNIX man-style reference page)</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:refentry">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.refentry.attlist"/>
+        <zeroOrMore>
+          <ref name="db.indexterm"/>
+        </zeroOrMore>
+        <ref name="db.refentry.info"/>
+        <optional>
+          <ref name="db.refmeta"/>
+        </optional>
         <oneOrMore>
-          <choice>
-            <ref name="db.keycap"/>
-            <ref name="db.keycombo"/>
-            <ref name="db.keysym"/>
-            <ref name="db.mousebutton"/>
-          </choice>
+          <ref name="db.refnamediv"/>
         </oneOrMore>
+        <optional>
+          <ref name="db.refsynopsisdiv"/>
+        </optional>
+        <ref name="db.toplevel.refsection"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.keysym.role.attribute">
+    <define name="db.refmeta.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.keysym.attlist">
+    <define name="db.refmeta.attlist">
       <interleave>
         <optional>
-          <ref name="db.keysym.role.attribute"/>
+          <ref name="db.refmeta.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.keysym">
-      <element name="keysym">
-        <a:documentation>The symbolic name of a key on a keyboard</a:documentation>
-        <ref name="db.keysym.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refmeta">
+      <element name="refmeta">
+        <a:documentation>Meta-information for a reference entry</a:documentation>
+        <ref name="db.refmeta.attlist"/>
+        <zeroOrMore>
+          <ref name="db.indexterm"/>
+        </zeroOrMore>
+        <ref name="db.refentrytitle"/>
+        <optional>
+          <ref name="db.manvolnum"/>
+        </optional>
+        <zeroOrMore>
+          <ref name="db.refmiscinfo"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="db.indexterm"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.refmiscinfo.class.enumeration">
+    <choice>
+      <value>source</value>
+      <a:documentation>The name of the software product or component to which this topic applies</a:documentation>
+      <value>version</value>
+      <a:documentation>The version of the software product or component to which this topic applies</a:documentation>
+      <value>manual</value>
+      <a:documentation>The section title of the reference page (e.g., User Commands)</a:documentation>
+      <value>sectdesc</value>
+      <a:documentation>The section title of the reference page (believed synonymous with "manual" but in wide use)</a:documentation>
+      <value>software</value>
+      <a:documentation>The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use)</a:documentation>
+    </choice>
+  </define>
+  <define name="db.refmiscinfo.class-enum.attribute">
+    <optional>
+      <attribute name="class">
+        <a:documentation>Identifies the kind of miscellaneous information</a:documentation>
+        <ref name="db.refmiscinfo.class.enumeration"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="db.refmiscinfo.class-other.attribute">
+    <attribute name="otherclass">
+      <a:documentation>Identifies the nature of non-standard miscellaneous information</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.refmiscinfo.class-other.attributes">
+    <interleave>
+      <attribute name="class">
+        <a:documentation>Identifies the kind of miscellaneious information</a:documentation>
+        <value>other</value>
+        <a:documentation>Indicates that the information is some 'other' kind.</a:documentation>
+      </attribute>
+      <ref name="db.refmiscinfo.class-other.attribute"/>
+    </interleave>
+  </define>
+  <define name="db.refmiscinfo.class.attribute">
+    <choice>
+      <ref name="db.refmiscinfo.class-enum.attribute"/>
+      <ref name="db.refmiscinfo.class-other.attributes"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.lineannotation.role.attribute">
+    <define name="db.refmiscinfo.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.lineannotation.attlist">
+    <define name="db.refmiscinfo.attlist">
       <interleave>
         <optional>
-          <ref name="db.lineannotation.role.attribute"/>
+          <ref name="db.refmiscinfo.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.refmiscinfo.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.lineannotation">
-      <element name="lineannotation">
-        <a:documentation>A comment on a line in a verbatim listing</a:documentation>
-        <ref name="db.lineannotation.attlist"/>
+    <define name="db.refmiscinfo">
+      <element name="refmiscinfo">
+        <a:documentation>Meta-information for a reference entry other than the title and volume number</a:documentation>
+        <ref name="db.refmiscinfo.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.literal.role.attribute">
+    <define name="db.refnamediv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.literal.attlist">
+    <define name="db.refnamediv.attlist">
       <interleave>
         <optional>
-          <ref name="db.literal.role.attribute"/>
+          <ref name="db.refnamediv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.literal">
-      <element name="literal">
-        <a:documentation>Inline text that is some literal value</a:documentation>
-        <ref name="db.literal.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refnamediv">
+      <element name="refnamediv">
+        <a:documentation>The name, purpose, and classification of a reference page</a:documentation>
+        <ref name="db.refnamediv.attlist"/>
+        <optional>
+          <ref name="db.refdescriptor"/>
+        </optional>
+        <oneOrMore>
+          <ref name="db.refname"/>
+        </oneOrMore>
+        <ref name="db.refpurpose"/>
+        <zeroOrMore>
+          <ref name="db.refclass"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="code.language.attribute">
-      <attribute name="language">
-        <a:documentation>Identifies the (computer) language of the code fragment</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.code.role.attribute">
+    <define name="db.refdescriptor.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.code.attlist">
+    <define name="db.refdescriptor.attlist">
       <interleave>
         <optional>
-          <ref name="db.code.role.attribute"/>
+          <ref name="db.refdescriptor.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="code.language.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.code">
-      <element name="code">
-        <a:documentation>An inline code fragment</a:documentation>
-        <ref name="db.code.attlist"/>
+    <define name="db.refdescriptor">
+      <element name="refdescriptor">
+        <a:documentation>A description of the topic of a reference page</a:documentation>
+        <ref name="db.refdescriptor.attlist"/>
         <zeroOrMore>
-          <choice>
-            <ref name="db.programming.inlines"/>
-            <ref name="db._text"/>
-          </choice>
+          <ref name="db.all.inlines"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.constant.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of constant</a:documentation>
-        <value>limit</value>
-        <a:documentation>The value is a limit of some kind</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.constant.role.attribute">
+    <define name="db.refname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.constant.attlist">
+    <define name="db.refname.attlist">
       <interleave>
         <optional>
-          <ref name="db.constant.role.attribute"/>
+          <ref name="db.refname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.constant.class.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.constant">
-      <element name="constant">
-        <a:documentation>A programming or system constant</a:documentation>
-        <ref name="db.constant.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refname">
+      <element name="refname">
+        <a:documentation>The name of (one of) the subject(s) of a reference page</a:documentation>
+        <ref name="db.refname.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.varname.role.attribute">
+    <define name="db.refpurpose.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.varname.attlist">
+    <define name="db.refpurpose.attlist">
       <interleave>
         <optional>
-          <ref name="db.varname.role.attribute"/>
+          <ref name="db.refpurpose.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.varname">
-      <element name="varname">
-        <a:documentation>The name of a variable</a:documentation>
-        <ref name="db.varname.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refpurpose">
+      <element name="refpurpose">
+        <a:documentation>A short (one sentence) synopsis of the topic of a reference page</a:documentation>
+        <ref name="db.refpurpose.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.markup.role.attribute">
+    <define name="db.refclass.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.markup.attlist">
+    <define name="db.refclass.attlist">
       <interleave>
         <optional>
-          <ref name="db.markup.role.attribute"/>
+          <ref name="db.refclass.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.markup">
-      <element name="markup">
-        <a:documentation>A string of formatting markup in text that is to be represented literally</a:documentation>
-        <ref name="db.markup.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refclass">
+      <element name="refclass">
+        <a:documentation>The scope or other indication of applicability of a reference entry</a:documentation>
+        <ref name="db.refclass.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <text/>
+            <ref name="db.application"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.menuchoice.role.attribute">
+    <define name="db.refsynopsisdiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.menuchoice.attlist">
+    <define name="db.refsynopsisdiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.menuchoice.role.attribute"/>
+          <ref name="db.refsynopsisdiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.menuchoice">
-      <element name="menuchoice">
-        <a:documentation>A selection or series of selections from a menu</a:documentation>
-        <ref name="db.menuchoice.attlist"/>
-        <optional>
-          <ref name="db.shortcut"/>
-        </optional>
-        <oneOrMore>
-          <choice>
-            <ref name="db.guibutton"/>
-            <ref name="db.guiicon"/>
-            <ref name="db.guilabel"/>
-            <ref name="db.guimenu"/>
-            <ref name="db.guimenuitem"/>
-            <ref name="db.guisubmenu"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.refsynopsisdiv.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.refsynopsisdiv">
+      <element name="refsynopsisdiv">
+        <a:documentation>A syntactic synopsis of the subject of the reference page</a:documentation>
+        <ref name="db.refsynopsisdiv.attlist"/>
+        <ref name="db.refsynopsisdiv.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.secondlevel.refsection"/>
+            </optional>
+          </group>
+          <ref name="db.secondlevel.refsection"/>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.shortcut.action.attrib">
-      <ref name="db.keycombo.action.attrib"/>
-    </define>
-    <define name="db.shortcut.role.attribute">
+    <define name="db.refsection.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.shortcut.attlist">
+    <define name="db.refsection.attlist">
       <interleave>
         <optional>
-          <ref name="db.shortcut.role.attribute"/>
+          <ref name="db.refsection.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.shortcut.action.attrib"/>
+        <optional>
+          <ref name="db.status.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.shortcut">
-      <element name="shortcut">
-        <a:documentation>A key combination for an action that is also accessible through a menu</a:documentation>
-        <ref name="db.shortcut.attlist"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.keycap"/>
-            <ref name="db.keycombo"/>
-            <ref name="db.keysym"/>
-            <ref name="db.mousebutton"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.refsection.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.refsection">
+      <element name="refsection">
+        <a:documentation>A recursive section in a refentry</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:refsection">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.refsection.attlist"/>
+        <ref name="db.refsection.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <zeroOrMore>
+              <ref name="db.refsection"/>
+            </zeroOrMore>
+          </group>
+          <oneOrMore>
+            <ref name="db.refsection"/>
+          </oneOrMore>
+        </choice>
       </element>
     </define>
   </div>
+  <define name="db.refsect1.sections">
+    <oneOrMore>
+      <ref name="db.refsect2"/>
+    </oneOrMore>
+  </define>
   <div>
-    <define name="db.mousebutton.role.attribute">
+    <define name="db.refsect1.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.refsect1.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.mousebutton.attlist">
+    <define name="db.refsect1.attlist">
       <interleave>
         <optional>
-          <ref name="db.mousebutton.role.attribute"/>
+          <ref name="db.refsect1.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.refsect1.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.mousebutton">
-      <element name="mousebutton">
-        <a:documentation>The conventional name of a mouse button</a:documentation>
-        <ref name="db.mousebutton.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refsect1.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.refsect1">
+      <element name="refsect1">
+        <a:documentation>A major subsection of a reference entry</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:refsect1">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.refsect1.attlist"/>
+        <ref name="db.refsect1.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.refsect1.sections"/>
+            </optional>
+          </group>
+          <ref name="db.refsect1.sections"/>
+        </choice>
       </element>
     </define>
   </div>
+  <define name="db.refsect2.sections">
+    <oneOrMore>
+      <ref name="db.refsect3"/>
+    </oneOrMore>
+  </define>
   <div>
-    <define name="db.option.role.attribute">
+    <define name="db.refsect2.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.refsect2.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.option.attlist">
+    <define name="db.refsect2.attlist">
       <interleave>
         <optional>
-          <ref name="db.option.role.attribute"/>
+          <ref name="db.refsect2.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.refsect2.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.option">
-      <element name="option">
-        <a:documentation>An option for a software command</a:documentation>
-        <ref name="db.option.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refsect2.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.refsect2">
+      <element name="refsect2">
+        <a:documentation>A subsection of a refsect1</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:refsect2">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.refsect2.attlist"/>
+        <ref name="db.refsect2.info"/>
+        <choice>
+          <group>
+            <oneOrMore>
+              <ref name="db.all.blocks"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.refsect2.sections"/>
+            </optional>
+          </group>
+          <ref name="db.refsect2.sections"/>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.optional.role.attribute">
+    <define name="db.refsect3.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.refsect3.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.optional.attlist">
+    <define name="db.refsect3.attlist">
       <interleave>
         <optional>
-          <ref name="db.optional.role.attribute"/>
+          <ref name="db.refsect3.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.refsect3.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.optional">
-      <element name="optional">
-        <a:documentation>Optional information</a:documentation>
-        <ref name="db.optional.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.refsect3.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.refsect3">
+      <element name="refsect3">
+        <a:documentation>A subsection of a refsect2</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:refsect3">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.refsect3.attlist"/>
+        <ref name="db.refsect3.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
+  <define name="db.glossary.inlines">
+    <choice>
+      <ref name="db.firstterm"/>
+      <ref name="db.glossterm"/>
+    </choice>
+  </define>
+  <define name="db.baseform.attribute">
+    <optional>
+      <attribute name="baseform">
+        <a:documentation>Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form.</a:documentation>
+      </attribute>
+    </optional>
+  </define>
   <div>
-    <define name="db.property.role.attribute">
+    <define name="db.glosslist.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.property.attlist">
+    <define name="db.glosslist.attlist">
       <interleave>
         <optional>
-          <ref name="db.property.role.attribute"/>
+          <ref name="db.glosslist.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.property">
-      <element name="property">
-        <a:documentation>A unit of data associated with some part of a computer system</a:documentation>
-        <ref name="db.property.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.glosslist.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.glosslist">
+      <element name="glosslist">
+        <a:documentation>A wrapper for a list of glossary entries</a:documentation>
+        <ref name="db.glosslist.attlist"/>
+        <optional>
+          <ref name="db.glosslist.info"/>
+        </optional>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <oneOrMore>
+          <ref name="db.glossentry"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.parameter.class.enumeration">
-      <choice>
-        <value>command</value>
-        <a:documentation>A command</a:documentation>
-        <value>function</value>
-        <a:documentation>A function</a:documentation>
-        <value>option</value>
-        <a:documentation>An option</a:documentation>
-      </choice>
+    <define name="db.glossentry.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.parameter.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of parameter</a:documentation>
-        <ref name="db.parameter.class.enumeration"/>
+    <define name="db.glossentry.sortas.attribute">
+      <attribute name="sortas">
+        <a:documentation>Specifies the string by which the element's content is to be sorted; if unspecified, the content is used</a:documentation>
       </attribute>
     </define>
-    <define name="db.parameter.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.parameter.attlist">
+    <define name="db.glossentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.parameter.role.attribute"/>
+          <ref name="db.glossentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.parameter.class.attribute"/>
+          <ref name="db.glossentry.sortas.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.parameter">
-      <element name="parameter">
-        <a:documentation>A value or a symbolic reference to a value</a:documentation>
-        <ref name="db.parameter.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <define name="db.prompt.inlines">
-    <choice>
-      <ref name="db._text"/>
-      <ref name="db.co"/>
-    </choice>
-  </define>
-  <div>
-    <define name="db.prompt.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.prompt.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.prompt.role.attribute"/>
+    <define name="db.glossentry">
+      <element name="glossentry">
+        <a:documentation>An entry in a Glossary or GlossList</a:documentation>
+        <ref name="db.glossentry.attlist"/>
+        <ref name="db.glossterm"/>
+        <optional>
+          <ref name="db.acronym"/>
+        </optional>
+        <optional>
+          <ref name="db.abbrev"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.prompt">
-      <element name="prompt">
-        <a:documentation>A character or string indicating the start of an input field in a  computer display</a:documentation>
-        <ref name="db.prompt.attlist"/>
         <zeroOrMore>
-          <ref name="db.prompt.inlines"/>
+          <ref name="db.indexterm"/>
         </zeroOrMore>
+        <choice>
+          <ref name="db.glosssee"/>
+          <oneOrMore>
+            <ref name="db.glossdef"/>
+          </oneOrMore>
+        </choice>
       </element>
     </define>
   </div>
-  <define name="db.replaceable.inlines">
-    <choice>
-      <ref name="db._text"/>
-      <ref name="db.co"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.replaceable.class.enumeration">
-      <choice>
-        <value>command</value>
-        <a:documentation>A command</a:documentation>
-        <value>function</value>
-        <a:documentation>A function</a:documentation>
-        <value>option</value>
-        <a:documentation>An option</a:documentation>
-        <value>parameter</value>
-        <a:documentation>A parameter</a:documentation>
-      </choice>
+    <define name="db.glossdef.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.replaceable.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the nature of the replaceable text</a:documentation>
-        <ref name="db.replaceable.class.enumeration"/>
+    <define name="db.glossdef.subject.attribute">
+      <attribute name="subject">
+        <a:documentation>Specifies a list of keywords for the definition</a:documentation>
       </attribute>
     </define>
-    <define name="db.replaceable.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.replaceable.attlist">
+    <define name="db.glossdef.attlist">
       <interleave>
         <optional>
-          <ref name="db.replaceable.role.attribute"/>
+          <ref name="db.glossdef.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.replaceable.class.attribute"/>
+          <ref name="db.glossdef.subject.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.replaceable">
-      <element name="replaceable">
-        <a:documentation>Content that may or must be replaced by the user</a:documentation>
-        <ref name="db.replaceable.attlist"/>
+    <define name="db.glossdef">
+      <element name="glossdef">
+        <a:documentation>A definition in a GlossEntry</a:documentation>
+        <ref name="db.glossdef.attlist"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
         <zeroOrMore>
-          <ref name="db.replaceable.inlines"/>
+          <ref name="db.glossseealso"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.returnvalue.role.attribute">
+    <define name="db.glosssee.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.returnvalue.attlist">
+    <define name="db.glosssee.otherterm.attribute">
+      <attribute name="otherterm">
+        <a:documentation>Identifies the other term</a:documentation>
+        <data type="IDREF"/>
+      </attribute>
+    </define>
+    <define name="db.glosssee.attlist">
       <interleave>
         <optional>
-          <ref name="db.returnvalue.role.attribute"/>
+          <ref name="db.glosssee.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.glosssee.otherterm.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.returnvalue">
-      <element name="returnvalue">
-        <a:documentation>The value returned by a function</a:documentation>
-        <ref name="db.returnvalue.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.glosssee">
+      <element name="glosssee">
+        <a:documentation>A cross-reference from one glossentry
+ to another</a:documentation>
+        <s:pattern name="Glosssary 'see' type constraint">
+          <s:rule context="db:glosssee[@otherterm]">
+            <s:assert test="local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'">@otherterm on glosssee must point to a glossentry.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.glosssee.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.tag.role.attribute">
+    <define name="db.glossseealso.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.tag.class.enumeration">
-      <choice>
-        <value>attribute</value>
-        <a:documentation>An attribute</a:documentation>
-        <value>attvalue</value>
-        <a:documentation>An attribute value</a:documentation>
-        <value>element</value>
-        <a:documentation>An element</a:documentation>
-        <value>emptytag</value>
-        <a:documentation>An empty element tag</a:documentation>
-        <value>endtag</value>
-        <a:documentation>An end tag</a:documentation>
-        <value>genentity</value>
-        <a:documentation>A general entity</a:documentation>
-        <value>localname</value>
-        <a:documentation>The local name part of a qualified name</a:documentation>
-        <value>namespace</value>
-        <a:documentation>A namespace</a:documentation>
-        <value>numcharref</value>
-        <a:documentation>A numeric character reference</a:documentation>
-        <value>paramentity</value>
-        <a:documentation>A parameter entity</a:documentation>
-        <value>pi</value>
-        <a:documentation>A processing instruction</a:documentation>
-        <value>prefix</value>
-        <a:documentation>The prefix part of a qualified name</a:documentation>
-        <value>comment</value>
-        <a:documentation>An SGML comment</a:documentation>
-        <value>starttag</value>
-        <a:documentation>A start tag</a:documentation>
-        <value>xmlpi</value>
-        <a:documentation>An XML processing instruction</a:documentation>
-      </choice>
-    </define>
-    <define name="db.tag.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the nature of the tag content</a:documentation>
-        <ref name="db.tag.class.enumeration"/>
-      </attribute>
-    </define>
-    <define name="db.tag.namespace.attribute">
-      <attribute name="namespace">
-        <a:documentation>Identifies the namespace of the tag content</a:documentation>
-        <data type="anyURI"/>
+    <define name="db.glossseealso.otherterm.attribute">
+      <attribute name="otherterm">
+        <a:documentation>Identifies the other term</a:documentation>
+        <data type="IDREF"/>
       </attribute>
     </define>
-    <define name="db.tag.attlist">
+    <define name="db.glossseealso.attlist">
       <interleave>
         <optional>
-          <ref name="db.tag.role.attribute"/>
+          <ref name="db.glossseealso.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.tag.class.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.tag.namespace.attribute"/>
+          <ref name="db.glossseealso.otherterm.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.tag">
-      <element name="tag">
-        <a:documentation>A component of XML (or SGML) markup</a:documentation>
-        <ref name="db.tag.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.glossseealso">
+      <element name="glossseealso">
+        <a:documentation>A cross-reference from one GlossEntry to another</a:documentation>
+        <s:pattern name="Glossary 'seealso' type constraint">
+          <s:rule context="db:glossseealso[@otherterm]">
+            <s:assert test="local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'">@otherterm on glossseealso must point to a glossentry.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.glossseealso.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.symbol.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of symbol</a:documentation>
-        <value>limit</value>
-        <a:documentation>The value is a limit of some kind</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.symbol.role.attribute">
+    <define name="db.firstterm.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.symbol.attlist">
+    <define name="db.firstterm.attlist">
       <interleave>
         <optional>
-          <ref name="db.symbol.role.attribute"/>
+          <ref name="db.firstterm.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.baseform.attribute"/>
+      </interleave>
+    </define>
+    <define name="db.firstterm">
+      <element name="firstterm">
+        <a:documentation>The first occurrence of a term</a:documentation>
+        <s:pattern name="Glossary 'firstterm' type constraint">
+          <s:rule context="db:firstterm[@linkend]">
+            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on firstterm must point to a glossentry.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.firstterm.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.glossterm.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.glossterm.attlist">
+      <interleave>
         <optional>
-          <ref name="db.symbol.class.attribute"/>
+          <ref name="db.glossterm.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <ref name="db.baseform.attribute"/>
       </interleave>
     </define>
-    <define name="db.symbol">
-      <element name="symbol">
-        <a:documentation>A name that is replaced by a value before processing</a:documentation>
-        <ref name="db.symbol.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.glossterm">
+      <element name="glossterm">
+        <a:documentation>A glossary term</a:documentation>
+        <s:pattern name="Glossary 'glossterm' type constraint">
+          <s:rule context="db:glossterm[@linkend]">
+            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on glossterm must point to a glossentry.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.glossterm.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.systemitem.inlines">
-    <choice>
-      <ref name="db._text"/>
-      <ref name="db.co"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.systemitem.class.enumeration">
-      <choice>
-        <value>daemon</value>
-        <a:documentation>A daemon or other system process (syslogd)</a:documentation>
-        <value>domainname</value>
-        <a:documentation>A domain name (example.com)</a:documentation>
-        <value>etheraddress</value>
-        <a:documentation>An ethernet address (00:05:4E:49:FD:8E)</a:documentation>
-        <value>event</value>
-        <a:documentation>An event of some sort (SIGHUP)</a:documentation>
-        <value>eventhandler</value>
-        <a:documentation>An event handler of some sort (hangup)</a:documentation>
-        <value>filesystem</value>
-        <a:documentation>A filesystem (ext3)</a:documentation>
-        <value>fqdomainname</value>
-        <a:documentation>A fully qualified domain name (my.example.com)</a:documentation>
-        <value>groupname</value>
-        <a:documentation>A group name (wheel)</a:documentation>
-        <value>ipaddress</value>
-        <a:documentation>An IP address (127.0.0.1)</a:documentation>
-        <value>library</value>
-        <a:documentation>A library (libncurses)</a:documentation>
-        <value>macro</value>
-        <a:documentation>A macro</a:documentation>
-        <value>netmask</value>
-        <a:documentation>A netmask (255.255.255.192)</a:documentation>
-        <value>newsgroup</value>
-        <a:documentation>A newsgroup (comp.text.xml)</a:documentation>
-        <value>osname</value>
-        <a:documentation>An operating system name (Hurd)</a:documentation>
-        <value>process</value>
-        <a:documentation>A process (gnome-cups-icon)</a:documentation>
-        <value>protocol</value>
-        <a:documentation>A protocol (ftp)</a:documentation>
-        <value>resource</value>
-        <a:documentation>A resource</a:documentation>
-        <value>server</value>
-        <a:documentation>A server (mail.example.com)</a:documentation>
-        <value>service</value>
-        <a:documentation>A service (ppp)</a:documentation>
-        <value>systemname</value>
-        <a:documentation>A system name (hephaistos)</a:documentation>
-        <value>username</value>
-        <a:documentation>A user name (ndw)</a:documentation>
-      </choice>
-    </define>
-    <define name="db.systemitem.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the nature of the system item</a:documentation>
-        <ref name="db.systemitem.class.enumeration"/>
-      </attribute>
+    <define name="db.glossary.status.attribute">
+      <ref name="db.status.attribute"/>
     </define>
-    <define name="db.systemitem.role.attribute">
+    <define name="db.glossary.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.systemitem.attlist">
+    <define name="db.glossary.attlist">
       <interleave>
         <optional>
-          <ref name="db.systemitem.role.attribute"/>
+          <ref name="db.glossary.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.systemitem.class.attribute"/>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.glossary.status.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.systemitem">
-      <element name="systemitem">
-        <a:documentation>A system-related item or term</a:documentation>
-        <ref name="db.systemitem.attlist"/>
+    <define name="db.glossary.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.glossary">
+      <element name="glossary">
+        <a:documentation>A glossary</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:glossary">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.glossary.attlist"/>
+        <ref name="db.glossary.info"/>
         <zeroOrMore>
-          <ref name="db.systemitem.inlines"/>
+          <ref name="db.all.blocks"/>
         </zeroOrMore>
+        <choice>
+          <zeroOrMore>
+            <ref name="db.glossdiv"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="db.glossentry"/>
+          </zeroOrMore>
+        </choice>
+        <optional>
+          <ref name="db.bibliography"/>
+        </optional>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.uri.type.attribute">
-      <optional>
-        <attribute name="type">
-          <a:documentation>Identifies the type of URI specified</a:documentation>
-        </attribute>
-      </optional>
+    <define name="db.glossdiv.status.attribute">
+      <ref name="db.status.attribute"/>
     </define>
-    <define name="db.uri.role.attribute">
+    <define name="db.glossdiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.uri.attlist">
+    <define name="db.glossdiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.uri.role.attribute"/>
+          <ref name="db.glossdiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.uri.type.attribute"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.glossdiv.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.uri">
-      <element name="uri">
-        <a:documentation>A Uniform Resource Identifier</a:documentation>
-        <ref name="db.uri.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.glossdiv.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.glossdiv">
+      <element name="glossdiv">
+        <a:documentation>A division in a Glossary</a:documentation>
+        <ref name="db.glossdiv.attlist"/>
+        <ref name="db.glossdiv.info"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <oneOrMore>
+          <ref name="db.glossentry"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.token.role.attribute">
+    <define name="db.termdef.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.token.attlist">
+    <define name="db.termdef.attlist">
       <interleave>
         <optional>
-          <ref name="db.token.role.attribute"/>
+          <ref name="db.termdef.role.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.glossentry.sortas.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.baseform.attribute"/>
       </interleave>
     </define>
-    <define name="db.token">
-      <element name="token">
-        <a:documentation>A unit of information</a:documentation>
-        <ref name="db.token.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.termdef">
+      <element name="termdef">
+        <a:documentation>An inline definition of a term</a:documentation>
+        <s:pattern name="Glossary term definition constraint">
+          <s:rule context="db:termdef">
+            <s:assert test="count(db:firstterm) = 1">A termdef must contain exactly one firstterm</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.termdef.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.relation.attribute">
+    <attribute name="relation">
+      <a:documentation>Identifies the relationship between the bibliographic elemnts</a:documentation>
+    </attribute>
+  </define>
   <div>
-    <define name="db.type.role.attribute">
+    <define name="db.biblioentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.type.attlist">
+    <define name="db.biblioentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.type.role.attribute"/>
+          <ref name="db.biblioentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.type">
-      <element name="type">
-        <a:documentation>The classification of a value</a:documentation>
-        <ref name="db.type.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.biblioentry">
+      <element name="biblioentry">
+        <a:documentation>An entry in a Bibliography</a:documentation>
+        <ref name="db.biblioentry.attlist"/>
+        <oneOrMore>
+          <ref name="db.bibliographic.elements"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
-  <define name="db.userinput.inlines">
-    <choice>
-      <choice>
-        <text/>
-        <ref name="db.ubiq.inlines"/>
-        <ref name="db.os.inlines"/>
-        <ref name="db.technical.inlines"/>
-        <ref name="db.markup.inlines"/>
-      </choice>
-      <ref name="db.co"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.userinput.role.attribute">
+    <define name="db.bibliomixed.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.userinput.attlist">
+    <define name="db.bibliomixed.attlist">
       <interleave>
         <optional>
-          <ref name="db.userinput.role.attribute"/>
+          <ref name="db.bibliomixed.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.userinput">
-      <element name="userinput">
-        <a:documentation>Data entered by the user</a:documentation>
-        <ref name="db.userinput.attlist"/>
+    <define name="db.bibliomixed">
+      <element name="bibliomixed">
+        <a:documentation>An entry in a Bibliography</a:documentation>
+        <ref name="db.bibliomixed.attlist"/>
         <zeroOrMore>
-          <ref name="db.userinput.inlines"/>
+          <choice>
+            <text/>
+            <ref name="db.bibliographic.elements"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.abbrev.role.attribute">
+    <define name="db.biblioset.relation.attribute">
+      <ref name="db.relation.attribute"/>
+    </define>
+    <define name="db.biblioset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.abbrev.attlist">
+    <define name="db.biblioset.attlist">
       <interleave>
         <optional>
-          <ref name="db.abbrev.role.attribute"/>
+          <ref name="db.biblioset.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.biblioset.relation.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.abbrev">
-      <element name="abbrev">
-        <a:documentation>An abbreviation, especially one followed by a period</a:documentation>
-        <ref name="db.abbrev.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-            <ref name="db.trademark"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.biblioset">
+      <element name="biblioset">
+        <a:documentation>A raw container for related bibliographic information</a:documentation>
+        <ref name="db.biblioset.attlist"/>
+        <oneOrMore>
+          <ref name="db.bibliographic.elements"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.acronym.role.attribute">
+    <define name="db.bibliomset.relation.attribute">
+      <ref name="db.relation.attribute"/>
+    </define>
+    <define name="db.bibliomset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.acronym.attlist">
+    <define name="db.bibliomset.attlist">
       <interleave>
         <optional>
-          <ref name="db.acronym.role.attribute"/>
+          <ref name="db.bibliomset.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.bibliomset.relation.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.acronym">
-      <element name="acronym">
-        <a:documentation>An often pronounceable word made from the initial (or selected) letters of a name or phrase</a:documentation>
-        <ref name="db.acronym.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.superscript"/>
-            <ref name="db.subscript"/>
-            <ref name="db.trademark"/>
+    <define name="db.bibliomset">
+      <element name="bibliomset">
+        <a:documentation>A cooked container for related bibliographic information</a:documentation>
+        <ref name="db.bibliomset.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.bibliographic.elements"/>
           </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.citation.role.attribute">
+    <define name="db.bibliomisc.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.citation.attlist">
+    <define name="db.bibliomisc.attlist">
       <interleave>
         <optional>
-          <ref name="db.citation.role.attribute"/>
+          <ref name="db.bibliomisc.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.citation">
-      <element name="citation">
-        <a:documentation>An inline bibliographic reference to another published work</a:documentation>
-        <ref name="db.citation.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.bibliomisc">
+      <element name="bibliomisc">
+        <a:documentation>Untyped bibliographic information</a:documentation>
+        <ref name="db.bibliomisc.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.citerefentry.role.attribute">
+    <define name="db.bibliography.status.attrib">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.bibliography.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.citerefentry.attlist">
+    <define name="db.bibliography.attlist">
       <interleave>
         <optional>
-          <ref name="db.citerefentry.role.attribute"/>
+          <ref name="db.bibliography.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.citerefentry">
-      <element name="citerefentry">
-        <a:documentation>A citation to a reference page</a:documentation>
-        <ref name="db.citerefentry.attlist"/>
-        <ref name="db.refentrytitle"/>
         <optional>
-          <ref name="db.manvolnum"/>
+          <ref name="db.label.attribute"/>
         </optional>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.refentrytitle.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.refentrytitle.attlist">
-      <interleave>
         <optional>
-          <ref name="db.refentrytitle.role.attribute"/>
+          <ref name="db.bibliography.status.attrib"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.refentrytitle">
-      <element name="refentrytitle">
-        <a:documentation>The title of a reference page</a:documentation>
-        <ref name="db.refentrytitle.attlist"/>
+    <define name="db.bibliography.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.bibliography">
+      <element name="bibliography">
+        <a:documentation>A bibliography</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:bibliography">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.bibliography.attlist"/>
+        <ref name="db.bibliography.info"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <ref name="db.all.blocks"/>
         </zeroOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="db.bibliodiv"/>
+          </oneOrMore>
+          <oneOrMore>
+            <choice>
+              <ref name="db.biblioentry"/>
+              <ref name="db.bibliomixed"/>
+            </choice>
+          </oneOrMore>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.manvolnum.role.attribute">
+    <define name="db.bibliodiv.status.attrib">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.bibliodiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.manvolnum.attlist">
+    <define name="db.bibliodiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.manvolnum.role.attribute"/>
+          <ref name="db.bibliodiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.manvolnum">
-      <element name="manvolnum">
-        <a:documentation>A reference volume number</a:documentation>
-        <ref name="db.manvolnum.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.citetitle.pubwork.enumeration">
-      <choice>
-        <value>article</value>
-        <a:documentation>An article</a:documentation>
-        <value>bbs</value>
-        <a:documentation>A bulletin board system</a:documentation>
-        <value>book</value>
-        <a:documentation>A book</a:documentation>
-        <value>cdrom</value>
-        <a:documentation>A CD-ROM</a:documentation>
-        <value>chapter</value>
-        <a:documentation>A chapter (as of a book)</a:documentation>
-        <value>dvd</value>
-        <a:documentation>A DVD</a:documentation>
-        <value>emailmessage</value>
-        <a:documentation>An email message</a:documentation>
-        <value>gopher</value>
-        <a:documentation>A gopher page</a:documentation>
-        <value>journal</value>
-        <a:documentation>A journal</a:documentation>
-        <value>manuscript</value>
-        <a:documentation>A manuscript</a:documentation>
-        <value>newsposting</value>
-        <a:documentation>A posting to a newsgroup</a:documentation>
-        <value>part</value>
-        <a:documentation>A part (as of a book)</a:documentation>
-        <value>refentry</value>
-        <a:documentation>A reference entry</a:documentation>
-        <value>section</value>
-        <a:documentation>A section (as of a book or article)</a:documentation>
-        <value>series</value>
-        <a:documentation>A series</a:documentation>
-        <value>set</value>
-        <a:documentation>A set (as of books)</a:documentation>
-        <value>webpage</value>
-        <a:documentation>A web page</a:documentation>
-        <value>wiki</value>
-        <a:documentation>A wiki page</a:documentation>
-      </choice>
-    </define>
-    <define name="db.citetitle.pubwork.attribute">
-      <attribute name="pubwork">
-        <a:documentation>Identifies the nature of the publication being cited</a:documentation>
-        <ref name="db.citetitle.pubwork.enumeration"/>
-      </attribute>
-    </define>
-    <define name="db.citetitle.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.citetitle.attlist">
-      <interleave>
         <optional>
-          <ref name="db.citetitle.role.attribute"/>
+          <ref name="db.label.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.citetitle.pubwork.attribute"/>
+          <ref name="db.bibliodiv.status.attrib"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.citetitle">
-      <element name="citetitle">
-        <a:documentation>The title of a cited work</a:documentation>
-        <ref name="db.citetitle.attlist"/>
+    <define name="db.bibliodiv.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.bibliodiv">
+      <element name="bibliodiv">
+        <a:documentation>A section of a Bibliography</a:documentation>
+        <ref name="db.bibliodiv.attlist"/>
+        <ref name="db.bibliodiv.info"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <ref name="db.all.blocks"/>
         </zeroOrMore>
+        <oneOrMore>
+          <choice>
+            <ref name="db.biblioentry"/>
+            <ref name="db.bibliomixed"/>
+          </choice>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.emphasis.role.attribute">
+    <define name="db.bibliolist.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.emphasis.attlist">
+    <define name="db.bibliolist.attlist">
       <interleave>
         <optional>
-          <ref name="db.emphasis.role.attribute"/>
+          <ref name="db.bibliolist.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.emphasis">
-      <element name="emphasis">
-        <a:documentation>Emphasized text</a:documentation>
-        <ref name="db.emphasis.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
-      </element>
+    <define name="db.bibliolist.info">
+      <ref name="db._info.title.only"/>
     </define>
-  </div>
-  <div>
-    <define name="db._emphasis">
-      <element name="emphasis">
-        <a:documentation>A limited span of emphasized text</a:documentation>
-        <ref name="db.emphasis.attlist"/>
+    <define name="db.bibliolist">
+      <element name="bibliolist">
+        <a:documentation>A wrapper for a list of bibliography entries</a:documentation>
+        <ref name="db.bibliolist.attlist"/>
+        <optional>
+          <ref name="db.bibliolist.info"/>
+        </optional>
         <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <oneOrMore>
           <choice>
-            <ref name="db._text"/>
-            <ref name="db._emphasis"/>
+            <ref name="db.biblioentry"/>
+            <ref name="db.bibliomixed"/>
           </choice>
-        </zeroOrMore>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.foreignphrase.role.attribute">
+    <define name="db.biblioref.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.foreignphrase.attlist">
+    <define name="db.biblioref.xrefstyle.attribute">
+      <ref name="db.xrefstyle.attribute"/>
+    </define>
+    <define name="db.biblioref.endterm.attribute">
+      <ref name="db.endterm.attribute"/>
+    </define>
+    <define name="db.biblioref.units.attribute">
+      <attribute name="units">
+        <a:documentation>The units (for example, pages) used to identify the beginning and ending of a reference.</a:documentation>
+        <data type="token"/>
+      </attribute>
+    </define>
+    <define name="db.biblioref.begin.attribute">
+      <attribute name="begin">
+        <a:documentation>Identifies the beginning of a reference; the location within the work that is being referenced.</a:documentation>
+        <data type="token"/>
+      </attribute>
+    </define>
+    <define name="db.biblioref.end.attribute">
+      <attribute name="end">
+        <a:documentation>Identifies the end of a reference.</a:documentation>
+        <data type="token"/>
+      </attribute>
+    </define>
+    <define name="db.biblioref.attlist">
       <interleave>
         <optional>
-          <ref name="db.foreignphrase.role.attribute"/>
+          <ref name="db.biblioref.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.req.linking.attributes"/>
+        <optional>
+          <ref name="db.biblioref.xrefstyle.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.biblioref.endterm.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.biblioref.units.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.biblioref.begin.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.biblioref.end.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.foreignphrase">
-      <element name="foreignphrase">
-        <a:documentation>A word or phrase in a language other than the primary language of the document</a:documentation>
-        <ref name="db.foreignphrase.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <text/>
-            <ref name="db.general.inlines"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.biblioref">
+      <element name="biblioref">
+        <a:documentation>A cross-reference to a bibliographic entry</a:documentation>
+        <ref name="db.biblioref.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
+  <define name="db.significance.enumeration">
+    <choice>
+      <value>normal</value>
+      <a:documentation>Normal</a:documentation>
+      <value>preferred</value>
+      <a:documentation>Preferred</a:documentation>
+    </choice>
+  </define>
+  <define name="db.significance.attribute">
+    <attribute name="significance">
+      <a:documentation>Specifies the significance of the term</a:documentation>
+      <ref name="db.significance.enumeration"/>
+    </attribute>
+  </define>
+  <define name="db.zone.attribute">
+    <attribute name="zone">
+      <a:documentation>Specifies the IDs of the elements to which this term applies</a:documentation>
+      <data type="IDREFS"/>
+    </attribute>
+  </define>
+  <define name="db.indexterm.pagenum.attribute">
+    <attribute name="pagenum">
+      <a:documentation>Indicates the page on which this index term occurs in some version of the printed document</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.scope.enumeration">
+    <choice>
+      <value>all</value>
+      <a:documentation>All indexes</a:documentation>
+      <value>global</value>
+      <a:documentation>The global index (as for a combined index of a set of box)</a:documentation>
+      <value>local</value>
+      <a:documentation>The local index (the index for this document only)</a:documentation>
+    </choice>
+  </define>
+  <define name="db.scope.attribute">
+    <attribute name="scope">
+      <a:documentation>Specifies the scope of the index term</a:documentation>
+      <ref name="db.scope.enumeration"/>
+    </attribute>
+  </define>
+  <define name="db.sortas.attribute">
+    <attribute name="sortas">
+      <a:documentation>Specifies the string by which the term is to be sorted; if unspecified, the term content is used</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.index.type.attribute">
+    <attribute name="type">
+      <a:documentation>Specifies the target index for this term</a:documentation>
+    </attribute>
+  </define>
   <div>
-    <define name="db.phrase.role.attribute">
+    <define name="db.itermset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.phrase.attlist">
+    <define name="db.itermset.attlist">
       <interleave>
         <optional>
-          <ref name="db.phrase.role.attribute"/>
+          <ref name="db.itermset.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.phrase">
-      <element name="phrase">
-        <a:documentation>A span of text</a:documentation>
-        <ref name="db.phrase.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db._phrase">
-      <element name="phrase">
-        <a:documentation>A limited span of text</a:documentation>
-        <ref name="db.phrase.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.itermset">
+      <element name="itermset">
+        <a:documentation>A set of index terms in the meta-information of a document</a:documentation>
+        <ref name="db.itermset.attlist"/>
+        <oneOrMore>
+          <ref name="db.indexterm.singular"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
+  <define name="db.indexterm.contentmodel">
+    <optional>
+      <ref name="db.primary"/>
+    </optional>
+    <optional>
+      <choice>
+        <group>
+          <ref name="db.secondary"/>
+          <optional>
+            <choice>
+              <group>
+                <ref name="db.tertiary"/>
+                <optional>
+                  <choice>
+                    <ref name="db.see"/>
+                    <oneOrMore>
+                      <ref name="db.seealso"/>
+                    </oneOrMore>
+                  </choice>
+                </optional>
+              </group>
+              <ref name="db.see"/>
+              <oneOrMore>
+                <ref name="db.seealso"/>
+              </oneOrMore>
+            </choice>
+          </optional>
+        </group>
+        <ref name="db.see"/>
+        <oneOrMore>
+          <ref name="db.seealso"/>
+        </oneOrMore>
+      </choice>
+    </optional>
+  </define>
   <div>
-    <define name="db.quote.role.attribute">
+    <define name="db.indexterm.singular.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.quote.attlist">
+    <define name="db.indexterm.singular.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of index term</a:documentation>
+        <value>singular</value>
+        <a:documentation>A singular index term</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.indexterm.singular.attlist">
       <interleave>
         <optional>
-          <ref name="db.quote.role.attribute"/>
+          <ref name="db.indexterm.singular.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.significance.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.zone.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.indexterm.pagenum.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.scope.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.index.type.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.indexterm.singular.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.quote">
-      <element name="quote">
-        <a:documentation>An inline quotation</a:documentation>
-        <ref name="db.quote.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.indexterm.singular">
+      <element name="indexterm">
+        <a:documentation>A wrapper for an indexed term</a:documentation>
+        <ref name="db.indexterm.singular.attlist"/>
+        <ref name="db.indexterm.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.subscript.role.attribute">
+    <define name="db.indexterm.startofrange.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.subscript.attlist">
+    <define name="db.indexterm.startofrange.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of index term</a:documentation>
+        <value>startofrange</value>
+        <a:documentation>The start of a range</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.indexterm.startofrange.attlist">
       <interleave>
         <optional>
-          <ref name="db.subscript.role.attribute"/>
+          <ref name="db.indexterm.startofrange.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.significance.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.zone.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.indexterm.pagenum.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.scope.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.index.type.attribute"/>
+        </optional>
+        <ref name="db.indexterm.startofrange.class.attribute"/>
       </interleave>
     </define>
-    <define name="db.subscript">
-      <element name="subscript">
-        <a:documentation>A subscript (as in H2
-O, the molecular formula for water)</a:documentation>
-        <ref name="db.subscript.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.indexterm.startofrange">
+      <element name="indexterm">
+        <a:documentation>A wrapper for an indexed term that covers a range</a:documentation>
+        <ref name="db.indexterm.startofrange.attlist"/>
+        <ref name="db.indexterm.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.superscript.role.attribute">
+    <define name="db.indexterm.endofrange.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.superscript.attlist">
+    <define name="db.indexterm.endofrange.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of index term</a:documentation>
+        <value>endofrange</value>
+        <a:documentation>The end of a range</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.indexterm.endofrange.startref.attribute">
+      <attribute name="startref">
+        <a:documentation>Points to the start of the range</a:documentation>
+        <data type="IDREF"/>
+      </attribute>
+    </define>
+    <define name="db.indexterm.endofrange.attlist">
       <interleave>
         <optional>
-          <ref name="db.superscript.role.attribute"/>
+          <ref name="db.indexterm.endofrange.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.indexterm.endofrange.class.attribute"/>
+        <ref name="db.indexterm.endofrange.startref.attribute"/>
       </interleave>
     </define>
-    <define name="db.superscript">
-      <element name="superscript">
-        <a:documentation>A superscript (as in x^2, the mathematical notation for x multiplied by itself)</a:documentation>
-        <ref name="db.superscript.attlist"/>
-        <ref name="db._text"/>
-      </element>
+    <define name="db.indexterm.endofrange">
+      <element name="indexterm">
+        <a:documentation>Identifies the end of a range associated with an indexed term</a:documentation>
+        <ref name="db.indexterm.endofrange.attlist"/>
+        <empty/>
+      </element>
     </define>
   </div>
   <div>
-    <define name="db.trademark.class.enumeration">
+    <define name="db.indexterm">
       <choice>
-        <value>copyright</value>
-        <a:documentation>A copyright</a:documentation>
-        <value>registered</value>
-        <a:documentation>A registered copyright</a:documentation>
-        <value>service</value>
-        <a:documentation>A service</a:documentation>
-        <value>trade</value>
-        <a:documentation>A trademark</a:documentation>
+        <ref name="db.indexterm.singular"/>
+        <ref name="db.indexterm.startofrange"/>
+        <ref name="db.indexterm.endofrange"/>
       </choice>
     </define>
-    <define name="db.trademark.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of trade mark</a:documentation>
-        <ref name="db.trademark.class.enumeration"/>
-      </attribute>
-    </define>
-    <define name="db.trademark.role.attribute">
+  </div>
+  <div>
+    <define name="db.primary.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.trademark.attlist">
+    <define name="db.primary.attlist">
       <interleave>
         <optional>
-          <ref name="db.trademark.role.attribute"/>
+          <ref name="db.primary.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.trademark.class.attribute"/>
+          <ref name="db.sortas.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.trademark">
-      <element name="trademark">
-        <a:documentation>A trademark</a:documentation>
-        <ref name="db.trademark.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.primary">
+      <element name="primary">
+        <a:documentation>The primary word or phrase under which an index term should be sorted</a:documentation>
+        <ref name="db.primary.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.wordasword.role.attribute">
+    <define name="db.secondary.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.wordasword.attlist">
+    <define name="db.secondary.attlist">
       <interleave>
         <optional>
-          <ref name="db.wordasword.role.attribute"/>
+          <ref name="db.secondary.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.sortas.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.wordasword">
-      <element name="wordasword">
-        <a:documentation>A word meant specifically as a word and not representing anything else</a:documentation>
-        <ref name="db.wordasword.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.secondary">
+      <element name="secondary">
+        <a:documentation>A secondary word or phrase in an index term</a:documentation>
+        <ref name="db.secondary.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.footnoteref.role.attribute">
+    <define name="db.tertiary.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.footnoteref.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.footnoteref.attlist">
+    <define name="db.tertiary.attlist">
       <interleave>
         <optional>
-          <ref name="db.footnoteref.role.attribute"/>
+          <ref name="db.tertiary.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.linkend.attribute"/>
+        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.footnoteref.label.attribute"/>
+          <ref name="db.sortas.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.footnoteref">
-      <element name="footnoteref">
-        <a:documentation>A cross reference to a footnote (a footnote mark)</a:documentation>
-        <s:pattern name="Footnote reference type constraint">
-          <s:rule context="db:footnoteref">
-            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on footnoteref must point to a footnote.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.footnoteref.attlist"/>
-        <empty/>
+    <define name="db.tertiary">
+      <element name="tertiary">
+        <a:documentation>A tertiary word or phrase in an index term</a:documentation>
+        <ref name="db.tertiary.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.xref.role.attribute">
+    <define name="db.see.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.xref.xrefstyle.attribute">
-      <ref name="db.xrefstyle.attribute"/>
-    </define>
-    <define name="db.xref.endterm.attribute">
-      <ref name="db.endterm.attribute"/>
-    </define>
-    <define name="db.xref.attlist">
+    <define name="db.see.attlist">
       <interleave>
         <optional>
-          <ref name="db.xref.role.attribute"/>
+          <ref name="db.see.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.req.linking.attributes"/>
-        <optional>
-          <ref name="db.xref.xrefstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.xref.endterm.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.xref">
-      <element name="xref">
-        <a:documentation>A cross reference to another part of the document</a:documentation>
-        <ref name="db.xref.attlist"/>
-        <empty/>
+    <define name="db.see">
+      <element name="see">
+        <a:documentation>Part of an index term directing the reader instead to another entry in the index</a:documentation>
+        <ref name="db.see.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.link.role.attribute">
+    <define name="db.seealso.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.link.xrefstyle.attribute">
-      <ref name="db.xrefstyle.attribute"/>
-    </define>
-    <define name="db.link.endterm.attribute">
-      <ref name="db.endterm.attribute"/>
-    </define>
-    <define name="db.link.attlist">
+    <define name="db.seealso.attlist">
       <interleave>
         <optional>
-          <ref name="db.link.role.attribute"/>
+          <ref name="db.seealso.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.req.linking.attributes"/>
-        <optional>
-          <ref name="db.link.xrefstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.link.endterm.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.link">
-      <element name="link">
-        <a:documentation>A hypertext link</a:documentation>
-        <ref name="db.link.attlist"/>
+    <define name="db.seealso">
+      <element name="seealso">
+        <a:documentation>Part of an index term directing the reader also to another entry in the index</a:documentation>
+        <ref name="db.seealso.attlist"/>
         <zeroOrMore>
           <ref name="db.all.inlines"/>
         </zeroOrMore>
@@ -8663,640 +8863,495 @@ O, the molecular formula for water)</a:documentation>
     </define>
   </div>
   <div>
-    <define name="db.olink.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.olink.xrefstyle.attribute">
-      <ref name="db.xrefstyle.attribute"/>
-    </define>
-    <define name="db.olink.localinfo.attribute">
-      <attribute name="localinfo">
-        <a:documentation>Holds additional information that may be used by the applicatoin when resolving the link</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.olink.targetdoc.attribute">
-      <attribute name="targetdoc">
-        <a:documentation>Specifies the URI of the document in which the link target appears</a:documentation>
-        <data type="anyURI"/>
-      </attribute>
-    </define>
-    <define name="db.olink.targetptr.attribute">
-      <attribute name="targetptr">
-        <a:documentation>Specifies the location of the link target in the document</a:documentation>
-      </attribute>
+    <define name="db.index.status.attribute">
+      <ref name="db.status.attribute"/>
     </define>
-    <define name="db.olink.type.attribute">
-      <attribute name="type">
-        <a:documentation>Identifies application-specific customization of the link behavior</a:documentation>
-      </attribute>
+    <define name="db.index.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.olink.attlist">
+    <define name="db.index.attlist">
       <interleave>
-        <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.olink.targetdoc.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.olink.role.attribute"/>
-        </optional>
         <optional>
-          <ref name="db.olink.xrefstyle.attribute"/>
+          <ref name="db.index.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.olink.localinfo.attribute"/>
+          <ref name="db.label.attribute"/>
         </optional>
         <optional>
-          <ref name="db.olink.targetptr.attribute"/>
+          <ref name="db.index.status.attribute"/>
         </optional>
         <optional>
-          <ref name="db.olink.type.attribute"/>
+          <ref name="db.index.type.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.olink">
-      <element name="olink">
-        <a:documentation>A link that addresses its target indirectly</a:documentation>
-        <ref name="db.olink.attlist"/>
+    <define name="db.index.info">
+      <ref name="db._info"/>
+    </define>
+    <!--
+
+      Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
+      Authors can use an empty index to indicate where a generated index should
+      appear.
+    -->
+    <define name="db.index">
+      <element name="index">
+        <a:documentation>An index to a book or part of a book</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:index">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.index.attlist"/>
+        <ref name="db.index.info"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <ref name="db.all.blocks"/>
         </zeroOrMore>
+        <choice>
+          <zeroOrMore>
+            <ref name="db.indexdiv"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="db.indexentry"/>
+          </zeroOrMore>
+          <ref name="db.segmentedlist"/>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.anchor.role.attribute">
+    <define name="db.setindex.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.setindex.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.anchor.attlist">
+    <define name="db.setindex.attlist">
       <interleave>
         <optional>
-          <ref name="db.anchor.role.attribute"/>
+          <ref name="db.setindex.role.attribute"/>
         </optional>
-        <ref name="db.common.idreq.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.anchor">
-      <element name="anchor">
-        <a:documentation>A spot in the document</a:documentation>
-        <ref name="db.anchor.attlist"/>
-        <empty/>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.setindex.status.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.index.type.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.setindex.info">
+      <ref name="db._info"/>
+    </define>
+    <define name="db.setindex">
+      <element name="setindex">
+        <a:documentation>An index to a set of books</a:documentation>
+        <s:pattern name="Root must have version">
+          <s:rule context="/db:setindex">
+            <s:assert test="@version">The root element must have a version attribute.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.setindex.attlist"/>
+        <ref name="db.setindex.info"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <choice>
+          <zeroOrMore>
+            <ref name="db.indexdiv"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="db.indexentry"/>
+          </zeroOrMore>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.alt.role.attribute">
+    <define name="db.indexdiv.status.attribute">
+      <ref name="db.status.attribute"/>
+    </define>
+    <define name="db.indexdiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.alt.attlist">
+    <define name="db.indexdiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.alt.role.attribute"/>
+          <ref name="db.indexdiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.label.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.indexdiv.status.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.alt">
-      <element name="alt">
-        <a:documentation>A text-only annotation, often used for accessibility</a:documentation>
-        <ref name="db.alt.attlist"/>
+    <define name="db.indexdiv.info">
+      <ref name="db._info.title.req"/>
+    </define>
+    <define name="db.indexdiv">
+      <element name="indexdiv">
+        <a:documentation>A division in an index</a:documentation>
+        <ref name="db.indexdiv.attlist"/>
+        <ref name="db.indexdiv.info"/>
         <zeroOrMore>
-          <choice>
-            <text/>
-            <ref name="db.inlinemediaobject"/>
-          </choice>
+          <ref name="db.all.blocks"/>
         </zeroOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="db.indexentry"/>
+          </oneOrMore>
+          <ref name="db.segmentedlist"/>
+        </choice>
       </element>
     </define>
   </div>
-  <define name="db.annotations.attribute">
-    <attribute name="annotations">
-      <a:documentation>Identifies one or more annotations that apply to this element</a:documentation>
-    </attribute>
-  </define>
   <div>
-    <define name="db.annotation.role.attribute">
+    <define name="db.indexentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.annotation.annotates.attribute">
-      <attribute name="annotates">
-        <a:documentation>Identifies one ore more elements to which this annotation applies</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.annotation.attlist">
+    <define name="db.indexentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.annotation.role.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.annotation.annotates.attribute"/>
+          <ref name="db.indexentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.annotation.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.annotation">
-      <element name="annotation">
-        <a:documentation>An annotation</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:annotation">
-            <s:assert test="not(.//db:annotation)">annotation must not occur in the descendants of annotation</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.annotation.attlist"/>
-        <ref name="db.annotation.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.indexentry">
+      <element name="indexentry">
+        <a:documentation>An entry in an index</a:documentation>
+        <ref name="db.indexentry.attlist"/>
+        <ref name="db.primaryie"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.seeie"/>
+            <ref name="db.seealsoie"/>
+          </choice>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="db.secondaryie"/>
+          <zeroOrMore>
+            <choice>
+              <ref name="db.seeie"/>
+              <ref name="db.seealsoie"/>
+              <ref name="db.tertiaryie"/>
+            </choice>
+          </zeroOrMore>
+        </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.xlink.from.attribute">
-    <optional>
-      <attribute name="xlink:from">
-        <a:documentation>Specifies the XLink traversal-from</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </optional>
-  </define>
-  <define name="db.xlink.label.attribute">
-    <optional>
-      <attribute name="xlink:label">
-        <a:documentation>Specifies the XLink label</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </optional>
-  </define>
-  <define name="db.xlink.to.attribute">
-    <optional>
-      <attribute name="xlink:to">
-        <a:documentation>Specifies the XLink traversal-to</a:documentation>
-        <data type="NMTOKEN"/>
-      </attribute>
-    </optional>
-  </define>
   <div>
-    <define name="db.extendedlink.role.attribute">
+    <define name="db.primaryie.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.extendedlink.attlist">
+    <define name="db.primaryie.attlist">
       <interleave>
         <optional>
-          <ref name="db.extendedlink.role.attribute"/>
+          <ref name="db.primaryie.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <optional>
-          <attribute name="xlink:type" a:defaultValue="extended">
-            <a:documentation>Identifies the XLink link type </a:documentation>
-            <value>extended</value>
-            <a:documentation>An XLink extended link</a:documentation>
-          </attribute>
-        </optional>
-        <optional>
-          <ref name="db.xlink.role.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.xlink.title.attribute"/>
+          <ref name="db.linkends.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.extendedlink">
-      <element name="extendedlink">
-        <a:documentation>An XLink extended link</a:documentation>
-        <ref name="db.extendedlink.attlist"/>
-        <oneOrMore>
-          <choice>
-            <ref name="db.locator"/>
-            <ref name="db.arc"/>
-          </choice>
-        </oneOrMore>
+    <define name="db.primaryie">
+      <element name="primaryie">
+        <a:documentation>A primary term in an index entry, not in the text</a:documentation>
+        <ref name="db.primaryie.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.locator.role.attribute">
+    <define name="db.secondaryie.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.locator.attlist">
+    <define name="db.secondaryie.attlist">
       <interleave>
         <optional>
-          <ref name="db.locator.role.attribute"/>
+          <ref name="db.secondaryie.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <optional>
-          <attribute name="xlink:type" a:defaultValue="locator">
-            <a:documentation>Identifies the XLink link type </a:documentation>
-            <value>locator</value>
-            <a:documentation>An XLink locator link</a:documentation>
-          </attribute>
-        </optional>
-        <ref name="db.xlink.href.attribute"/>
-        <optional>
-          <ref name="db.xlink.role.attribute"/>
+          <ref name="db.linkends.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.secondaryie">
+      <element name="secondaryie">
+        <a:documentation>A secondary term in an index entry, rather than in the text</a:documentation>
+        <ref name="db.secondaryie.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.tertiaryie.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.tertiaryie.attlist">
+      <interleave>
         <optional>
-          <ref name="db.xlink.title.attribute"/>
+          <ref name="db.tertiaryie.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
         <optional>
-          <ref name="db.xlink.label.attribute"/>
+          <ref name="db.linkends.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.locator">
-      <element name="locator">
-        <a:documentation>An XLink locator in an extendedlink</a:documentation>
-        <ref name="db.locator.attlist"/>
-        <empty/>
+    <define name="db.tertiaryie">
+      <element name="tertiaryie">
+        <a:documentation>A tertiary term in an index entry, rather than in the text</a:documentation>
+        <ref name="db.tertiaryie.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.arc.role.attribute">
+    <define name="db.seeie.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.arc.attlist">
+    <define name="db.seeie.attlist">
       <interleave>
         <optional>
-          <ref name="db.arc.role.attribute"/>
+          <ref name="db.seeie.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <optional>
-          <attribute name="xlink:type" a:defaultValue="arc">
-            <a:documentation>Identifies the XLink link type </a:documentation>
-            <value>arc</value>
-            <a:documentation>An XLink arc link</a:documentation>
-          </attribute>
-        </optional>
-        <optional>
-          <ref name="db.xlink.arcrole.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.xlink.title.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.xlink.show.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.xlink.actuate.attribute"/>
+          <ref name="db.linkend.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.seeie">
+      <element name="seeie">
+        <a:documentation>A See
+entry in an index, rather than in the text</a:documentation>
+        <ref name="db.seeie.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.seealsoie.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.seealsoie.attlist">
+      <interleave>
         <optional>
-          <ref name="db.xlink.from.attribute"/>
+          <ref name="db.seealsoie.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
         <optional>
-          <ref name="db.xlink.to.attribute"/>
+          <ref name="db.linkends.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.arc">
-      <element name="arc">
-        <a:documentation>An XLink arc in an extendedlink</a:documentation>
-        <ref name="db.arc.attlist"/>
-        <empty/>
+    <define name="db.seealsoie">
+      <element name="seealsoie">
+        <a:documentation>A See also
+ entry in an index, rather than in the text</a:documentation>
+        <ref name="db.seealsoie.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.status.attribute">
-    <attribute name="status">
-      <a:documentation>Identifies the editorial or publication status of the element on which it occurs</a:documentation>
+  <define name="db.toc.pagenum.attribute">
+    <attribute name="pagenum">
+      <a:documentation>Indicates the page on which this element occurs in some version of the printed document</a:documentation>
     </attribute>
   </define>
-  <define name="db.toplevel.sections">
-    <choice>
-      <choice>
-        <group>
-          <oneOrMore>
-            <ref name="db.section"/>
-          </oneOrMore>
-          <zeroOrMore>
-            <ref name="db.simplesect"/>
-          </zeroOrMore>
-        </group>
-        <oneOrMore>
-          <ref name="db.simplesect"/>
-        </oneOrMore>
-      </choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.sect1"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.simplesect"/>
-        </zeroOrMore>
-      </group>
-      <oneOrMore>
-        <ref name="db.refentry"/>
-      </oneOrMore>
-    </choice>
-  </define>
-  <define name="db.toplevel.blocks.or.sections">
-    <choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
-        <optional>
-          <ref name="db.toplevel.sections"/>
-        </optional>
-      </group>
-      <ref name="db.toplevel.sections"/>
-    </choice>
-  </define>
-  <define name="db.recursive.sections">
-    <choice>
-      <choice>
-        <group>
-          <oneOrMore>
-            <ref name="db.section"/>
-          </oneOrMore>
-          <zeroOrMore>
-            <ref name="db.simplesect"/>
-          </zeroOrMore>
-        </group>
-        <oneOrMore>
-          <ref name="db.simplesect"/>
-        </oneOrMore>
-      </choice>
-      <oneOrMore>
-        <ref name="db.refentry"/>
-      </oneOrMore>
-    </choice>
-  </define>
-  <define name="db.recursive.blocks.or.sections">
-    <choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
-        <optional>
-          <ref name="db.recursive.sections"/>
-        </optional>
-      </group>
-      <ref name="db.recursive.sections"/>
-    </choice>
-  </define>
-  <define name="db.divisions">
-    <choice>
-      <ref name="db.part"/>
-      <ref name="db.reference"/>
-    </choice>
-  </define>
-  <define name="db.components">
-    <choice>
-      <ref name="db.dedication"/>
-      <ref name="db.acknowledgements"/>
-      <ref name="db.preface"/>
-      <ref name="db.chapter"/>
-      <ref name="db.appendix"/>
-      <ref name="db.article"/>
-      <ref name="db.colophon"/>
-    </choice>
-  </define>
-  <define name="db.navigation.components">
-    <choice>
-      <notAllowed/>
-      <ref name="db.glossary"/>
-      <ref name="db.bibliography"/>
-      <ref name="db.index"/>
-      <ref name="db.toc"/>
-    </choice>
-  </define>
-  <define name="db.component.contentmodel">
-    <zeroOrMore>
-      <ref name="db.navigation.components"/>
-    </zeroOrMore>
-    <ref name="db.toplevel.blocks.or.sections"/>
-    <zeroOrMore>
-      <ref name="db.navigation.components"/>
-    </zeroOrMore>
-  </define>
-  <define name="db.setindex.components">
-    <choice>
-      <notAllowed/>
-      <ref name="db.setindex"/>
-    </choice>
-  </define>
-  <define name="db.toc.components">
-    <choice>
-      <notAllowed/>
-      <ref name="db.toc"/>
-    </choice>
-  </define>
-  <define name="db.set.components">
-    <choice>
-      <ref name="db.set"/>
-      <ref name="db.book"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.set.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.set.role.attribute">
+    <define name="db.toc.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.set.attlist">
+    <define name="db.toc.attlist">
       <interleave>
         <optional>
-          <ref name="db.set.role.attribute"/>
+          <ref name="db.toc.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.set.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.set.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.toc.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.set">
-      <element name="set">
-        <a:documentation>A collection of books</a:documentation>
+    <define name="db.toc">
+      <element name="toc">
+        <a:documentation>A table of contents</a:documentation>
         <s:pattern name="Root must have version">
-          <s:rule context="/db:set">
+          <s:rule context="/db:toc">
             <s:assert test="@version">The root element must have a version attribute.</s:assert>
           </s:rule>
         </s:pattern>
-        <ref name="db.set.attlist"/>
-        <ref name="db.set.info"/>
-        <optional>
-          <ref name="db.toc.components"/>
-        </optional>
-        <oneOrMore>
-          <ref name="db.set.components"/>
-        </oneOrMore>
-        <optional>
-          <ref name="db.setindex.components"/>
-        </optional>
+        <ref name="db.toc.attlist"/>
+        <ref name="db.toc.info"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.tocdiv"/>
+            <ref name="db.tocentry"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.book.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.book.role.attribute">
+    <define name="db.tocdiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.book.attlist">
+    <define name="db.tocdiv.pagenum.attribute">
+      <ref name="db.toc.pagenum.attribute"/>
+    </define>
+    <define name="db.tocdiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.book.role.attribute"/>
+          <ref name="db.tocdiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.tocdiv.pagenum.attribute"/>
         </optional>
         <optional>
-          <ref name="db.book.status.attribute"/>
+          <ref name="db.linkend.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.book.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.tocdiv.info">
+      <ref name="db._info"/>
     </define>
-    <define name="db.book">
-      <element name="book">
-        <a:documentation>A book</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:book">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.book.attlist"/>
-        <ref name="db.book.info"/>
+    <define name="db.tocdiv">
+      <element name="tocdiv">
+        <a:documentation>A division in a table of contents</a:documentation>
+        <ref name="db.tocdiv.attlist"/>
+        <ref name="db.tocdiv.info"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
         <oneOrMore>
           <choice>
-            <ref name="db.navigation.components"/>
-            <ref name="db.components"/>
-            <ref name="db.divisions"/>
+            <ref name="db.tocdiv"/>
+            <ref name="db.tocentry"/>
           </choice>
         </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.dedication.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.dedication.role.attribute">
+    <define name="db.tocentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.dedication.attlist">
+    <define name="db.tocentry.pagenum.attribute">
+      <ref name="db.toc.pagenum.attribute"/>
+    </define>
+    <define name="db.tocentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.dedication.role.attribute"/>
+          <ref name="db.tocentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.tocentry.pagenum.attribute"/>
         </optional>
         <optional>
-          <ref name="db.dedication.status.attribute"/>
+          <ref name="db.linkend.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.dedication.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.dedication">
-      <element name="dedication">
-        <a:documentation>The dedication of a book or other component</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:dedication">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.dedication.attlist"/>
-        <ref name="db.dedication.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.tocentry">
+      <element name="tocentry">
+        <a:documentation>A component title in a table of contents</a:documentation>
+        <ref name="db.tocentry.attlist"/>
+        <zeroOrMore>
+          <ref name="db.all.inlines"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
+  <define name="db.task.info">
+    <ref name="db._info.title.req"/>
+  </define>
   <div>
-    <define name="db.acknowledgements.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.acknowledgements.role.attribute">
+    <define name="db.task.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.acknowledgements.attlist">
+    <define name="db.task.attlist">
       <interleave>
         <optional>
-          <ref name="db.acknowledgements.role.attribute"/>
+          <ref name="db.task.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.task">
+      <element name="task">
+        <a:documentation>A task to be completed</a:documentation>
+        <ref name="db.task.attlist"/>
+        <ref name="db.task.info"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.tasksummary"/>
         </optional>
         <optional>
-          <ref name="db.acknowledgements.status.attribute"/>
+          <ref name="db.taskprerequisites"/>
+        </optional>
+        <ref name="db.procedure"/>
+        <zeroOrMore>
+          <ref name="db.example"/>
+        </zeroOrMore>
+        <optional>
+          <ref name="db.taskrelated"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.acknowledgements.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.acknowledgements">
-      <element name="acknowledgements">
-        <a:documentation>Acknowledgements of a book or other component</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:acknowledgements">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.acknowledgements.attlist"/>
-        <ref name="db.acknowledgements.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.colophon.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.colophon.role.attribute">
+    <define name="db.tasksummary.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.colophon.attlist">
+    <define name="db.tasksummary.attlist">
       <interleave>
         <optional>
-          <ref name="db.colophon.role.attribute"/>
+          <ref name="db.tasksummary.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colophon.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.colophon.info">
-      <ref name="db._info"/>
+    <define name="db.tasksummary.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.colophon">
-      <element name="colophon">
-        <a:documentation>Text at the back of a book describing facts about its production</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:colophon">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.colophon.attlist"/>
-        <ref name="db.colophon.info"/>
+    <define name="db.tasksummary">
+      <element name="tasksummary">
+        <a:documentation>A summary of a task</a:documentation>
+        <ref name="db.tasksummary.attlist"/>
+        <ref name="db.tasksummary.info"/>
         <oneOrMore>
           <ref name="db.all.blocks"/>
         </oneOrMore>
@@ -9304,2245 +9359,2051 @@ O, the molecular formula for water)</a:documentation>
     </define>
   </div>
   <div>
-    <define name="db.appendix.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.appendix.role.attribute">
+    <define name="db.taskprerequisites.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.appendix.attlist">
+    <define name="db.taskprerequisites.attlist">
       <interleave>
         <optional>
-          <ref name="db.appendix.role.attribute"/>
+          <ref name="db.taskprerequisites.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.appendix.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.appendix.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.taskprerequisites.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.appendix">
-      <element name="appendix">
-        <a:documentation>An appendix in a Book or Article</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:appendix">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.appendix.attlist"/>
-        <ref name="db.appendix.info"/>
-        <ref name="db.component.contentmodel"/>
+    <define name="db.taskprerequisites">
+      <element name="taskprerequisites">
+        <a:documentation>The prerequisites for a task</a:documentation>
+        <ref name="db.taskprerequisites.attlist"/>
+        <ref name="db.taskprerequisites.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.chapter.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.chapter.role.attribute">
+    <define name="db.taskrelated.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.chapter.attlist">
+    <define name="db.taskrelated.attlist">
       <interleave>
         <optional>
-          <ref name="db.chapter.role.attribute"/>
+          <ref name="db.taskrelated.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.chapter.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.chapter.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.taskrelated.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.chapter">
-      <element name="chapter">
-        <a:documentation>A chapter, as of a book</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:chapter">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.chapter.attlist"/>
-        <ref name="db.chapter.info"/>
-        <ref name="db.component.contentmodel"/>
+    <define name="db.taskrelated">
+      <element name="taskrelated">
+        <a:documentation>Information related to a task</a:documentation>
+        <ref name="db.taskrelated.attlist"/>
+        <ref name="db.taskrelated.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
-  <define name="db.part.components">
+  <define name="db.area.units.enumeration">
     <choice>
-      <choice>
-        <ref name="db.navigation.components"/>
-        <ref name="db.components"/>
-      </choice>
-      <choice>
-        <ref name="db.refentry"/>
-        <ref name="db.reference"/>
-      </choice>
+      <value>calspair</value>
+      <a:documentation>Coordinates expressed as a pair of CALS graphic coordinates.</a:documentation>
+      <value>linecolumn</value>
+      <a:documentation>Coordinates expressed as a line and column.</a:documentation>
+      <value>linecolumnpair</value>
+      <a:documentation>Coordinates expressed as a pair of lines and columns.</a:documentation>
+      <value>linerange</value>
+      <a:documentation>Coordinates expressed as a line range.</a:documentation>
+    </choice>
+  </define>
+  <define name="db.area.units-enum.attribute">
+    <optional>
+      <attribute name="units">
+        <a:documentation>Identifies the units used in the coords attribute The default units vary according to the type of callout specified: calspair
+ for graphics and linecolumn
+ for line-oriented elements.</a:documentation>
+        <ref name="db.area.units.enumeration"/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="db.area.units-other.attributes">
+    <optional>
+      <attribute name="units">
+        <a:documentation>Indicates that non-standard units are used for this area
+. In this case otherunits
+ must be specified.</a:documentation>
+        <value>other</value>
+        <a:documentation>Coordinates expressed in some non-standard units.</a:documentation>
+      </attribute>
+    </optional>
+    <attribute name="otherunits">
+      <a:documentation>Identifies the units used in the coords
+ attribute when the units
+ attribute is other
+. This attribute is forbidden otherwise.</a:documentation>
+      <data type="NMTOKEN"/>
+    </attribute>
+  </define>
+  <define name="db.area.units.attribute">
+    <choice>
+      <ref name="db.area.units-enum.attribute"/>
+      <ref name="db.area.units-other.attributes"/>
     </choice>
   </define>
   <div>
-    <define name="db.part.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.part.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.part.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.part.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.part.status.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.part.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.part">
-      <element name="part">
-        <a:documentation>A division in a book</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:part">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.part.attlist"/>
-        <ref name="db.part.info"/>
-        <optional>
-          <ref name="db.partintro"/>
-        </optional>
-        <oneOrMore>
-          <ref name="db.part.components"/>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.preface.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.preface.role.attribute">
+    <define name="db.calloutlist.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.preface.attlist">
+    <define name="db.calloutlist.attlist">
       <interleave>
         <optional>
-          <ref name="db.preface.role.attribute"/>
+          <ref name="db.calloutlist.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.preface.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.preface.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.calloutlist.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.preface">
-      <element name="preface">
-        <a:documentation>Introductory matter preceding the first chapter of a book</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:preface">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.preface.attlist"/>
-        <ref name="db.preface.info"/>
-        <ref name="db.component.contentmodel"/>
+    <define name="db.calloutlist">
+      <element name="calloutlist">
+        <a:documentation>A list of callout
+s</a:documentation>
+        <ref name="db.calloutlist.attlist"/>
+        <ref name="db.calloutlist.info"/>
+        <zeroOrMore>
+          <ref name="db.all.blocks"/>
+        </zeroOrMore>
+        <oneOrMore>
+          <ref name="db.callout"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.partintro.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.partintro.role.attribute">
+    <define name="db.callout.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.partintro.attlist">
+    <define name="db.callout.arearefs.attribute">
+      <attribute name="arearefs">
+        <a:documentation>Identifies the areas described by this callout.</a:documentation>
+        <data type="IDREFS"/>
+      </attribute>
+    </define>
+    <define name="db.callout.attlist">
       <interleave>
         <optional>
-          <ref name="db.partintro.role.attribute"/>
+          <ref name="db.callout.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.partintro.status.attribute"/>
-        </optional>
+        <ref name="db.callout.arearefs.attribute"/>
       </interleave>
     </define>
-    <define name="db.partintro.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.partintro">
-      <element name="partintro">
-        <a:documentation>An introduction to the contents of a part</a:documentation>
-        <ref name="db.partintro.attlist"/>
-        <ref name="db.partintro.info"/>
-        <ref name="db.toplevel.blocks.or.sections"/>
+    <define name="db.callout">
+      <element name="callout">
+        <a:documentation>A called out
+ description of a marked Area</a:documentation>
+        <ref name="db.callout.attlist"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.section.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.section.role.attribute">
+    <define name="db.programlistingco.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.section.attlist">
+    <define name="db.programlistingco.attlist">
       <interleave>
         <optional>
-          <ref name="db.section.role.attribute"/>
+          <ref name="db.programlistingco.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.section.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.section.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.programlistingco.info">
+      <ref name="db._info.title.forbidden"/>
     </define>
-    <define name="db.section">
-      <element name="section">
-        <a:documentation>A recursive section</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:section">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.section.attlist"/>
-        <ref name="db.section.info"/>
-        <ref name="db.recursive.blocks.or.sections"/>
+    <define name="db.programlistingco">
+      <element name="programlistingco">
+        <a:documentation>A program listing with associated areas used in callouts</a:documentation>
+        <ref name="db.programlistingco.attlist"/>
+        <ref name="db.programlistingco.info"/>
+        <ref name="db.areaspec"/>
+        <ref name="db.programlisting"/>
         <zeroOrMore>
-          <ref name="db.navigation.components"/>
+          <ref name="db.calloutlist"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.simplesect.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.simplesect.role.attribute">
+    <define name="db.areaspec.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.simplesect.attlist">
+    <define name="db.areaspec.attlist">
       <interleave>
         <optional>
-          <ref name="db.simplesect.role.attribute"/>
+          <ref name="db.areaspec.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.simplesect.status.attribute"/>
-        </optional>
+        <ref name="db.area.units.attribute"/>
       </interleave>
     </define>
-    <define name="db.simplesect.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.simplesect">
-      <element name="simplesect">
-        <a:documentation>A section of a document with no subdivisions</a:documentation>
-        <ref name="db.simplesect.attlist"/>
-        <ref name="db.simplesect.info"/>
+    <define name="db.areaspec">
+      <element name="areaspec">
+        <a:documentation>A collection of regions in a graphic or code example</a:documentation>
+        <ref name="db.areaspec.attlist"/>
         <oneOrMore>
-          <ref name="db.all.blocks"/>
+          <choice>
+            <ref name="db.area"/>
+            <ref name="db.areaset"/>
+          </choice>
         </oneOrMore>
       </element>
     </define>
   </div>
-  <define name="db.article.components">
-    <ref name="db.toplevel.sections"/>
-  </define>
   <div>
-    <define name="db.article.status.attribute">
-      <ref name="db.status.attribute"/>
+    <define name="db.area.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.article.class.enumeration">
-      <choice>
-        <value>faq</value>
-        <a:documentation>A collection of frequently asked questions.</a:documentation>
-        <value>journalarticle</value>
-        <a:documentation>An article in a journal or other periodical.</a:documentation>
-        <value>productsheet</value>
-        <a:documentation>A description of a product.</a:documentation>
-        <value>specification</value>
-        <a:documentation>A specification.</a:documentation>
-        <value>techreport</value>
-        <a:documentation>A technical report.</a:documentation>
-        <value>whitepaper</value>
-        <a:documentation>A white paper.</a:documentation>
-      </choice>
+    <define name="db.area.linkends.attribute">
+      <attribute name="linkends">
+        <a:documentation>Point to the callout
+s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.)</a:documentation>
+        <data type="IDREFS"/>
+      </attribute>
     </define>
-    <define name="db.article.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the nature of the article</a:documentation>
-        <ref name="db.article.class.enumeration"/>
+    <define name="db.area.label.attribute">
+      <attribute name="label">
+        <a:documentation>Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute.</a:documentation>
       </attribute>
     </define>
-    <define name="db.article.role.attribute">
-      <attribute name="role"/>
+    <define name="db.area.coords.attribute">
+      <attribute name="coords">
+        <a:documentation>Provides the coordinates of the area. The coordinates must be interpreted using the units
+ specified.</a:documentation>
+      </attribute>
     </define>
-    <define name="db.article.attlist">
+    <define name="db.area.attlist">
       <interleave>
         <optional>
-          <ref name="db.article.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.area.role.attribute"/>
         </optional>
+        <ref name="db.common.idreq.attributes"/>
+        <ref name="db.area.units.attribute"/>
         <optional>
-          <ref name="db.article.status.attribute"/>
+          <choice>
+            <ref name="db.area.linkends.attribute"/>
+            <ref name="db.href.attributes"/>
+          </choice>
         </optional>
         <optional>
-          <ref name="db.article.class.attribute"/>
+          <ref name="db.area.label.attribute"/>
         </optional>
+        <ref name="db.area.coords.attribute"/>
       </interleave>
     </define>
-    <define name="db.article.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.area">
+      <element name="area">
+        <a:documentation>A region defined for a Callout in a graphic or code example</a:documentation>
+        <ref name="db.area.attlist"/>
+        <optional>
+          <ref name="db.alt"/>
+        </optional>
+      </element>
     </define>
-    <define name="db.article">
-      <element name="article">
-        <a:documentation>An article</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:article">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.article.attlist"/>
-        <ref name="db.article.info"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.navigation.components"/>
-            <ref name="db.appendix"/>
-            <ref name="db.acknowledgements"/>
-            <ref name="db.colophon"/>
-          </choice>
-        </zeroOrMore>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.article.components"/>
-            </optional>
-          </group>
-          <ref name="db.article.components"/>
-        </choice>
-        <zeroOrMore>
+  </div>
+  <div>
+    <!-- The only difference is that xml:id is optional -->
+    <define name="db.area.inareaset.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.area.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.area.units.attribute"/>
+        <optional>
           <choice>
-            <ref name="db.navigation.components"/>
-            <ref name="db.appendix"/>
-            <ref name="db.acknowledgements"/>
-            <ref name="db.colophon"/>
+            <ref name="db.area.linkends.attribute"/>
+            <ref name="db.href.attributes"/>
           </choice>
-        </zeroOrMore>
+        </optional>
+        <optional>
+          <ref name="db.area.label.attribute"/>
+        </optional>
+        <ref name="db.area.coords.attribute"/>
+      </interleave>
+    </define>
+    <define name="db.area.inareaset">
+      <element name="area">
+        <a:documentation>A region defined for a Callout in a graphic or code example</a:documentation>
+        <ref name="db.area.inareaset.attlist"/>
+        <optional>
+          <ref name="db.alt"/>
+        </optional>
       </element>
     </define>
   </div>
-  <define name="db.sect1.sections">
-    <choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.sect2"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.simplesect"/>
-        </zeroOrMore>
-      </group>
-      <oneOrMore>
-        <ref name="db.simplesect"/>
-      </oneOrMore>
-    </choice>
-  </define>
   <div>
-    <define name="db.sect1.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.sect1.role.attribute">
+    <define name="db.areaset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.sect1.attlist">
+    <define name="db.areaset.linkends.attribute">
+      <ref name="db.linkends.attribute"/>
+    </define>
+    <define name="db.areaset.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.areaset.attlist">
       <interleave>
         <optional>
-          <ref name="db.sect1.role.attribute"/>
+          <ref name="db.areaset.role.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.idreq.attributes"/>
+        <ref name="db.area.units.attribute"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <choice>
+            <ref name="db.areaset.linkends.attribute"/>
+            <ref name="db.href.attributes"/>
+          </choice>
         </optional>
         <optional>
-          <ref name="db.sect1.status.attribute"/>
+          <ref name="db.areaset.label.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.sect1.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.sect1">
-      <element name="sect1">
-        <a:documentation>A top-level section of document</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:sect1">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.sect1.attlist"/>
-        <ref name="db.sect1.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.sect1.sections"/>
-            </optional>
-          </group>
-          <ref name="db.sect1.sections"/>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.navigation.components"/>
-        </zeroOrMore>
+    <define name="db.areaset">
+      <element name="areaset">
+        <a:documentation>A set of related areas in a graphic or code example</a:documentation>
+        <ref name="db.areaset.attlist"/>
+        <oneOrMore>
+          <ref name="db.area.inareaset"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
-  <define name="db.sect2.sections">
-    <choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.sect3"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.simplesect"/>
-        </zeroOrMore>
-      </group>
-      <oneOrMore>
-        <ref name="db.simplesect"/>
-      </oneOrMore>
-    </choice>
-  </define>
   <div>
-    <define name="db.sect2.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.sect2.role.attribute">
+    <define name="db.screenco.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.sect2.attlist">
+    <define name="db.screenco.attlist">
       <interleave>
         <optional>
-          <ref name="db.sect2.role.attribute"/>
+          <ref name="db.screenco.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.sect2.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.sect2.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.screenco.info">
+      <ref name="db._info.title.forbidden"/>
     </define>
-    <define name="db.sect2">
-      <element name="sect2">
-        <a:documentation>A subsection within a Sect1</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:sect2">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.sect2.attlist"/>
-        <ref name="db.sect2.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.sect2.sections"/>
-            </optional>
-          </group>
-          <ref name="db.sect2.sections"/>
-        </choice>
+    <define name="db.screenco">
+      <element name="screenco">
+        <a:documentation>A screen with associated areas used in callouts</a:documentation>
+        <ref name="db.screenco.attlist"/>
+        <ref name="db.screenco.info"/>
+        <ref name="db.areaspec"/>
+        <ref name="db.screen"/>
         <zeroOrMore>
-          <ref name="db.navigation.components"/>
+          <ref name="db.calloutlist"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.sect3.sections">
-    <choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.sect4"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.simplesect"/>
-        </zeroOrMore>
-      </group>
-      <oneOrMore>
-        <ref name="db.simplesect"/>
-      </oneOrMore>
-    </choice>
-  </define>
   <div>
-    <define name="db.sect3.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.sect3.role.attribute">
+    <define name="db.imageobjectco.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.sect3.attlist">
+    <define name="db.imageobjectco.attlist">
       <interleave>
         <optional>
-          <ref name="db.sect3.role.attribute"/>
+          <ref name="db.imageobjectco.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.sect3.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.sect3.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.imageobjectco.info">
+      <ref name="db._info.title.forbidden"/>
     </define>
-    <define name="db.sect3">
-      <element name="sect3">
-        <a:documentation>A subsection within a Sect2</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:sect3">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.sect3.attlist"/>
-        <ref name="db.sect3.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.sect3.sections"/>
-            </optional>
-          </group>
-          <ref name="db.sect3.sections"/>
-        </choice>
+    <define name="db.imageobjectco">
+      <element name="imageobjectco">
+        <a:documentation>A wrapper for an image object with callouts</a:documentation>
+        <ref name="db.imageobjectco.attlist"/>
+        <ref name="db.imageobjectco.info"/>
+        <ref name="db.areaspec"/>
+        <oneOrMore>
+          <ref name="db.imageobject"/>
+        </oneOrMore>
         <zeroOrMore>
-          <ref name="db.navigation.components"/>
+          <ref name="db.calloutlist"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.sect4.sections">
-    <choice>
-      <group>
-        <oneOrMore>
-          <ref name="db.sect5"/>
-        </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.simplesect"/>
-        </zeroOrMore>
-      </group>
-      <oneOrMore>
-        <ref name="db.simplesect"/>
-      </oneOrMore>
-    </choice>
-  </define>
   <div>
-    <define name="db.sect4.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.sect4.role.attribute">
+    <define name="db.co.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.sect4.attlist">
+    <define name="db.co.linkends.attribute">
+      <ref name="db.linkends.attribute"/>
+    </define>
+    <define name="db.co.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.co.attlist">
       <interleave>
         <optional>
-          <ref name="db.sect4.role.attribute"/>
+          <ref name="db.co.role.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.idreq.attributes"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.co.linkends.attribute"/>
         </optional>
         <optional>
-          <ref name="db.sect4.status.attribute"/>
+          <ref name="db.co.label.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.sect4.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.sect4">
-      <element name="sect4">
-        <a:documentation>A subsection within a Sect3</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:sect4">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.sect4.attlist"/>
-        <ref name="db.sect4.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.sect4.sections"/>
-            </optional>
-          </group>
-          <ref name="db.sect4.sections"/>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.navigation.components"/>
-        </zeroOrMore>
+    <define name="db.co">
+      <element name="co">
+        <a:documentation>The location of a callout embedded in text</a:documentation>
+        <ref name="db.co.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
-  <define name="db.sect5.sections">
-    <oneOrMore>
-      <ref name="db.simplesect"/>
-    </oneOrMore>
-  </define>
   <div>
-    <define name="db.sect5.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.sect5.role.attribute">
+    <define name="db.coref.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.sect5.attlist">
+    <define name="db.coref.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.coref.attlist">
       <interleave>
         <optional>
-          <ref name="db.sect5.role.attribute"/>
+          <ref name="db.coref.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
+        <ref name="db.linkend.attribute"/>
         <optional>
-          <ref name="db.sect5.status.attribute"/>
+          <ref name="db.coref.label.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.sect5.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.sect5">
-      <element name="sect5">
-        <a:documentation>A subsection within a Sect4</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:sect5">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.sect5.attlist"/>
-        <ref name="db.sect5.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.sect5.sections"/>
-            </optional>
-          </group>
-          <ref name="db.sect5.sections"/>
-        </choice>
-        <zeroOrMore>
-          <ref name="db.navigation.components"/>
-        </zeroOrMore>
+    <define name="db.coref">
+      <element name="coref">
+        <a:documentation>A cross reference to a co</a:documentation>
+        <ref name="db.coref.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
-  <define name="db.toplevel.refsection">
-    <choice>
-      <oneOrMore>
-        <ref name="db.refsection"/>
-      </oneOrMore>
-      <oneOrMore>
-        <ref name="db.refsect1"/>
-      </oneOrMore>
-    </choice>
-  </define>
-  <define name="db.secondlevel.refsection">
-    <choice>
-      <oneOrMore>
-        <ref name="db.refsection"/>
-      </oneOrMore>
-      <oneOrMore>
-        <ref name="db.refsect2"/>
-      </oneOrMore>
-    </choice>
-  </define>
-  <define name="db.reference.components">
-    <ref name="db.refentry"/>
-  </define>
   <div>
-    <define name="db.reference.role.attribute">
+    <define name="db.productionset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.reference.attlist">
+    <define name="db.productionset.attlist">
       <interleave>
         <optional>
-          <ref name="db.reference.role.attribute"/>
+          <ref name="db.productionset.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.status.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.reference.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.productionset.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.reference">
-      <element name="reference">
-        <a:documentation>A collection of reference entries</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:reference">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.reference.attlist"/>
-        <ref name="db.reference.info"/>
-        <optional>
-          <ref name="db.partintro"/>
-        </optional>
+    <define name="db.productionset">
+      <element name="productionset">
+        <a:documentation>A set of EBNF productions</a:documentation>
+        <ref name="db.productionset.attlist"/>
+        <ref name="db.productionset.info"/>
         <oneOrMore>
-          <ref name="db.reference.components"/>
+          <choice>
+            <ref name="db.production"/>
+            <ref name="db.productionrecap"/>
+          </choice>
         </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refentry.role.attribute">
+    <define name="db.production.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refentry.attlist">
+    <define name="db.production.attlist">
       <interleave>
         <optional>
-          <ref name="db.refentry.role.attribute"/>
+          <ref name="db.production.role.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
+        <ref name="db.common.idreq.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.status.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.refentry.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.refentry">
-      <element name="refentry">
-        <a:documentation>A reference page (originally a UNIX man-style reference page)</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:refentry">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.refentry.attlist"/>
+    <define name="db.production">
+      <element name="production">
+        <a:documentation>A production in a set of EBNF productions</a:documentation>
+        <ref name="db.production.attlist"/>
+        <ref name="db.lhs"/>
+        <ref name="db.rhs"/>
         <zeroOrMore>
-          <ref name="db.indexterm"/>
-        </zeroOrMore>
-        <ref name="db.refentry.info"/>
-        <optional>
-          <ref name="db.refmeta"/>
-        </optional>
-        <oneOrMore>
-          <ref name="db.refnamediv"/>
-        </oneOrMore>
-        <optional>
-          <ref name="db.refsynopsisdiv"/>
-        </optional>
-        <ref name="db.toplevel.refsection"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.refmeta.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.refmeta.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.refmeta.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.refmeta">
-      <element name="refmeta">
-        <a:documentation>Meta-information for a reference entry</a:documentation>
-        <ref name="db.refmeta.attlist"/>
-        <zeroOrMore>
-          <ref name="db.indexterm"/>
-        </zeroOrMore>
-        <ref name="db.refentrytitle"/>
-        <optional>
-          <ref name="db.manvolnum"/>
-        </optional>
-        <zeroOrMore>
-          <ref name="db.refmiscinfo"/>
-        </zeroOrMore>
-        <zeroOrMore>
-          <ref name="db.indexterm"/>
+          <ref name="db.constraint"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.refmiscinfo.class.enumeration">
-    <choice>
-      <value>source</value>
-      <a:documentation>The name of the software product or component to which this topic applies</a:documentation>
-      <value>version</value>
-      <a:documentation>The version of the software product or component to which this topic applies</a:documentation>
-      <value>manual</value>
-      <a:documentation>The section title of the reference page (e.g., User Commands)</a:documentation>
-      <value>sectdesc</value>
-      <a:documentation>The section title of the reference page (believed synonymous with "manual" but in wide use)</a:documentation>
-      <value>software</value>
-      <a:documentation>The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use)</a:documentation>
-    </choice>
-  </define>
-  <define name="db.refmiscinfo.class-enum.attribute">
-    <optional>
-      <attribute name="class">
-        <a:documentation>Identifies the kind of miscellaneous information</a:documentation>
-        <ref name="db.refmiscinfo.class.enumeration"/>
-      </attribute>
-    </optional>
-  </define>
-  <define name="db.refmiscinfo.class-other.attribute">
-    <attribute name="otherclass">
-      <a:documentation>Identifies the nature of non-standard miscellaneous information</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.refmiscinfo.class-other.attributes">
-    <interleave>
-      <attribute name="class">
-        <a:documentation>Identifies the kind of miscellaneious information</a:documentation>
-        <value>other</value>
-        <a:documentation>Indicates that the information is some 'other' kind.</a:documentation>
-      </attribute>
-      <ref name="db.refmiscinfo.class-other.attribute"/>
-    </interleave>
-  </define>
-  <define name="db.refmiscinfo.class.attribute">
-    <choice>
-      <ref name="db.refmiscinfo.class-enum.attribute"/>
-      <ref name="db.refmiscinfo.class-other.attributes"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.refmiscinfo.role.attribute">
+    <define name="db.lhs.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refmiscinfo.attlist">
+    <define name="db.lhs.attlist">
       <interleave>
         <optional>
-          <ref name="db.refmiscinfo.role.attribute"/>
+          <ref name="db.lhs.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.refmiscinfo.class.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.refmiscinfo">
-      <element name="refmiscinfo">
-        <a:documentation>Meta-information for a reference entry other than the title and volume number</a:documentation>
-        <ref name="db.refmiscinfo.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.lhs">
+      <element name="lhs">
+        <a:documentation>The left-hand side of an EBNF production</a:documentation>
+        <ref name="db.lhs.attlist"/>
+        <text/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refnamediv.role.attribute">
+    <define name="db.rhs.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refnamediv.attlist">
+    <define name="db.rhs.attlist">
       <interleave>
         <optional>
-          <ref name="db.refnamediv.role.attribute"/>
+          <ref name="db.rhs.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.refnamediv">
-      <element name="refnamediv">
-        <a:documentation>The name, purpose, and classification of a reference page</a:documentation>
-        <ref name="db.refnamediv.attlist"/>
-        <optional>
-          <ref name="db.refdescriptor"/>
-        </optional>
-        <oneOrMore>
-          <ref name="db.refname"/>
-        </oneOrMore>
-        <ref name="db.refpurpose"/>
+    <define name="db.rhs">
+      <element name="rhs">
+        <a:documentation>The right-hand side of an EBNF production</a:documentation>
+        <ref name="db.rhs.attlist"/>
         <zeroOrMore>
-          <ref name="db.refclass"/>
+          <choice>
+            <text/>
+            <ref name="db.nonterminal"/>
+            <ref name="db.lineannotation"/>
+            <ref name="db.sbr"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refdescriptor.role.attribute">
+    <define name="db.nonterminal.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refdescriptor.attlist">
+    <define name="db.nonterminal.def.attribute">
+      <attribute name="def">
+        <a:documentation>Specifies a URI that points to a production
+where the nonterminal
+ is defined</a:documentation>
+        <data type="anyURI"/>
+      </attribute>
+    </define>
+    <define name="db.nonterminal.attlist">
       <interleave>
         <optional>
-          <ref name="db.refdescriptor.role.attribute"/>
+          <ref name="db.nonterminal.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.nonterminal.def.attribute"/>
       </interleave>
     </define>
-    <define name="db.refdescriptor">
-      <element name="refdescriptor">
-        <a:documentation>A description of the topic of a reference page</a:documentation>
-        <ref name="db.refdescriptor.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.nonterminal">
+      <element name="nonterminal">
+        <a:documentation>A non-terminal in an EBNF production</a:documentation>
+        <ref name="db.nonterminal.attlist"/>
+        <text/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refname.role.attribute">
+    <define name="db.constraint.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refname.attlist">
+    <define name="db.constraint.attlist">
       <interleave>
         <optional>
-          <ref name="db.refname.role.attribute"/>
+          <ref name="db.constraint.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.req.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.refname">
-      <element name="refname">
-        <a:documentation>The name of (one of) the subject(s) of a reference page</a:documentation>
-        <ref name="db.refname.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.constraint">
+      <element name="constraint">
+        <a:documentation>A constraint in an EBNF production</a:documentation>
+        <ref name="db.constraint.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refpurpose.role.attribute">
+    <define name="db.productionrecap.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refpurpose.attlist">
+    <define name="db.productionrecap.attlist">
       <interleave>
         <optional>
-          <ref name="db.refpurpose.role.attribute"/>
+          <ref name="db.productionrecap.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.common.req.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.refpurpose">
-      <element name="refpurpose">
-        <a:documentation>A short (one sentence) synopsis of the topic of a reference page</a:documentation>
-        <ref name="db.refpurpose.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.productionrecap">
+      <element name="productionrecap">
+        <a:documentation>A cross-reference to an EBNF production</a:documentation>
+        <ref name="db.productionrecap.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refclass.role.attribute">
+    <define name="db.constraintdef.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refclass.attlist">
+    <define name="db.constraintdef.attlist">
       <interleave>
         <optional>
-          <ref name="db.refclass.role.attribute"/>
+          <ref name="db.constraintdef.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.refclass">
-      <element name="refclass">
-        <a:documentation>The scope or other indication of applicability of a reference entry</a:documentation>
-        <ref name="db.refclass.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <text/>
-            <ref name="db.application"/>
-          </choice>
-        </zeroOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.refsynopsisdiv.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.refsynopsisdiv.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.refsynopsisdiv.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.refsynopsisdiv.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.refsynopsisdiv">
-      <element name="refsynopsisdiv">
-        <a:documentation>A syntactic synopsis of the subject of the reference page</a:documentation>
-        <ref name="db.refsynopsisdiv.attlist"/>
-        <ref name="db.refsynopsisdiv.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.secondlevel.refsection"/>
-            </optional>
-          </group>
-          <ref name="db.secondlevel.refsection"/>
-        </choice>
+    <define name="db.constraintdef.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.constraintdef">
+      <element name="constraintdef">
+        <a:documentation>The definition of a constraint in an EBNF production</a:documentation>
+        <ref name="db.constraintdef.attlist"/>
+        <ref name="db.constraintdef.info"/>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
+  <define name="db.char.attribute">
+    <attribute name="char">
+      <a:documentation>Specifies the alignment character when align
+ is set to char
+.</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.charoff.attribute">
+    <attribute name="charoff">
+      <a:documentation>Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char
+ when align
+ is set to char
+.</a:documentation>
+      <data type="decimal">
+        <param name="minExclusive">0</param>
+        <param name="maxExclusive">100</param>
+      </data>
+    </attribute>
+  </define>
+  <define name="db.frame.attribute">
+    <attribute name="frame">
+      <a:documentation>Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table.</a:documentation>
+      <choice>
+        <value>all</value>
+        <a:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</a:documentation>
+        <value>bottom</value>
+        <a:documentation>Frame only the bottom of the table.</a:documentation>
+        <value>none</value>
+        <a:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</a:documentation>
+        <value>sides</value>
+        <a:documentation>Frame the left and right sides of the table.</a:documentation>
+        <value>top</value>
+        <a:documentation>Frame the top of the table.</a:documentation>
+        <value>topbot</value>
+        <a:documentation>Frame the top and bottom of the table.</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.colsep.attribute">
+    <attribute name="colsep">
+      <a:documentation>Specifies the presence or absence of the column separator</a:documentation>
+      <choice>
+        <value>0</value>
+        <a:documentation>No column separator rule.</a:documentation>
+        <value>1</value>
+        <a:documentation>Provide a column separator rule on the right</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.rowsep.attribute">
+    <attribute name="rowsep">
+      <a:documentation>Specifies the presence or absence of the row separator</a:documentation>
+      <choice>
+        <value>0</value>
+        <a:documentation>No row separator rule.</a:documentation>
+        <value>1</value>
+        <a:documentation>Provide a row separator rule below</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.orient.attribute">
+    <attribute name="orient">
+      <a:documentation>Specifies the orientation of the table</a:documentation>
+      <choice>
+        <value>land</value>
+        <a:documentation>90 degrees counter-clockwise from the rest of the text flow.</a:documentation>
+        <value>port</value>
+        <a:documentation>The same orientation as the rest of the text flow.</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.tabstyle.attribute">
+    <attribute name="tabstyle">
+      <a:documentation>Specifies the table style</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.rowheader.attribute">
+    <attribute name="rowheader">
+      <a:documentation>Indicates whether or not the entries in the first column should be considered row headers</a:documentation>
+      <choice>
+        <value>firstcol</value>
+        <a:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</a:documentation>
+        <value>norowheader</value>
+        <a:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.align.attribute">
+    <attribute name="align">
+      <a:documentation>Specifies the horizontal alignment of text in an entry.</a:documentation>
+      <choice>
+        <value>center</value>
+        <a:documentation>Centered.</a:documentation>
+        <value>char</value>
+        <a:documentation>Aligned on a particular character.</a:documentation>
+        <value>justify</value>
+        <a:documentation>Left and right justified.</a:documentation>
+        <value>left</value>
+        <a:documentation>Left justified.</a:documentation>
+        <value>right</value>
+        <a:documentation>Right justified.</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.valign.attribute">
+    <attribute name="valign">
+      <a:documentation>Specifies the vertical alignment of text in an entry.</a:documentation>
+      <choice>
+        <value>bottom</value>
+        <a:documentation>Aligned on the bottom of the entry.</a:documentation>
+        <value>middle</value>
+        <a:documentation>Aligned in the middle.</a:documentation>
+        <value>top</value>
+        <a:documentation>Aligned at the top of the entry.</a:documentation>
+      </choice>
+    </attribute>
+  </define>
+  <define name="db.specify-col-by-colname.attributes">
+    <attribute name="colname">
+      <a:documentation>Specifies a column specification by name.</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.specify-col-by-namest.attributes">
+    <attribute name="namest">
+      <a:documentation>Specifies a starting column by name.</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.specify-span-by-spanspec.attributes">
+    <attribute name="spanname">
+      <a:documentation>Specifies a span by name.</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.specify-span-directly.attributes">
+    <interleave>
+      <attribute name="namest">
+        <a:documentation>Specifies a starting column by name.</a:documentation>
+      </attribute>
+      <attribute name="nameend">
+        <a:documentation>Specifies an ending column by name.</a:documentation>
+      </attribute>
+    </interleave>
+  </define>
+  <define name="db.column-spec.attributes">
+    <choice>
+      <ref name="db.specify-col-by-colname.attributes"/>
+      <ref name="db.specify-col-by-namest.attributes"/>
+      <ref name="db.specify-span-by-spanspec.attributes"/>
+      <ref name="db.specify-span-directly.attributes"/>
+    </choice>
+  </define>
+  <define name="db.colname.attribute">
+    <attribute name="colname">
+      <a:documentation>Provides a name for a column specification.</a:documentation>
+    </attribute>
+  </define>
+  <define name="db.spanname.attribute">
+    <attribute name="spanname">
+      <a:documentation>Provides a name for a span specification.</a:documentation>
+    </attribute>
+  </define>
   <div>
-    <define name="db.refsection.role.attribute">
+    <define name="db.tgroup.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refsection.attlist">
+    <define name="db.tgroup.tgroupstyle.attribute">
+      <attribute name="tgroupstyle">
+        <a:documentation>Additional style information for downstream processing; typically the name of a style.</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.tgroup.cols.attribute">
+      <attribute name="cols">
+        <a:documentation>The number of columns in the table. Must be an integer greater than zero.</a:documentation>
+        <data type="positiveInteger"/>
+      </attribute>
+    </define>
+    <define name="db.tgroup.attlist">
       <interleave>
         <optional>
-          <ref name="db.refsection.role.attribute"/>
+          <ref name="db.tgroup.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.status.attribute"/>
+          <ref name="db.char.attribute"/>
         </optional>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.charoff.attribute"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.refsection.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.refsection">
-      <element name="refsection">
-        <a:documentation>A recursive section in a refentry</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:refsection">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.refsection.attlist"/>
-        <ref name="db.refsection.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <zeroOrMore>
-              <ref name="db.refsection"/>
-            </zeroOrMore>
-          </group>
-          <oneOrMore>
-            <ref name="db.refsection"/>
-          </oneOrMore>
-        </choice>
-      </element>
-    </define>
-  </div>
-  <define name="db.refsect1.sections">
-    <oneOrMore>
-      <ref name="db.refsect2"/>
-    </oneOrMore>
-  </define>
-  <div>
-    <define name="db.refsect1.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.refsect1.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.refsect1.attlist">
-      <interleave>
         <optional>
-          <ref name="db.refsect1.role.attribute"/>
+          <ref name="db.tgroup.tgroupstyle.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.tgroup.cols.attribute"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.colsep.attribute"/>
         </optional>
         <optional>
-          <ref name="db.refsect1.status.attribute"/>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.align.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.refsect1.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.refsect1">
-      <element name="refsect1">
-        <a:documentation>A major subsection of a reference entry</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:refsect1">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.refsect1.attlist"/>
-        <ref name="db.refsect1.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.refsect1.sections"/>
-            </optional>
-          </group>
-          <ref name="db.refsect1.sections"/>
-        </choice>
+    <define name="db.tgroup">
+      <element name="tgroup">
+        <a:documentation>A wrapper for the main content of a table, or part of a table</a:documentation>
+        <ref name="db.tgroup.attlist"/>
+        <zeroOrMore>
+          <ref name="db.colspec"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="db.spanspec"/>
+        </zeroOrMore>
+        <optional>
+          <ref name="db.cals.thead"/>
+        </optional>
+        <optional>
+          <ref name="db.cals.tfoot"/>
+        </optional>
+        <ref name="db.cals.tbody"/>
       </element>
     </define>
   </div>
-  <define name="db.refsect2.sections">
-    <oneOrMore>
-      <ref name="db.refsect3"/>
-    </oneOrMore>
-  </define>
   <div>
-    <define name="db.refsect2.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.refsect2.role.attribute">
+    <define name="db.colspec.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refsect2.attlist">
+    <define name="db.colspec.colnum.attribute">
+      <attribute name="colnum">
+        <a:documentation>The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one.</a:documentation>
+        <data type="positiveInteger"/>
+      </attribute>
+    </define>
+    <define name="db.colspec.colwidth.attribute">
+      <attribute name="colwidth">
+        <a:documentation>Specifies the width of the column.</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.colspec.attlist">
       <interleave>
         <optional>
-          <ref name="db.refsect2.role.attribute"/>
+          <ref name="db.colspec.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.colspec.colnum.attribute"/>
         </optional>
         <optional>
-          <ref name="db.refsect2.status.attribute"/>
+          <ref name="db.char.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colspec.colwidth.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.charoff.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colname.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.align.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.refsect2.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.refsect2">
-      <element name="refsect2">
-        <a:documentation>A subsection of a refsect1</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:refsect2">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.refsect2.attlist"/>
-        <ref name="db.refsect2.info"/>
-        <choice>
-          <group>
-            <oneOrMore>
-              <ref name="db.all.blocks"/>
-            </oneOrMore>
-            <optional>
-              <ref name="db.refsect2.sections"/>
-            </optional>
-          </group>
-          <ref name="db.refsect2.sections"/>
-        </choice>
+    <define name="db.colspec">
+      <element name="colspec">
+        <a:documentation>Specifications for a column in a table</a:documentation>
+        <ref name="db.colspec.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.refsect3.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.refsect3.role.attribute">
+    <define name="db.spanspec.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.refsect3.attlist">
+    <define name="db.spanspec.namest.attribute">
+      <attribute name="namest">
+        <a:documentation>Specifies a starting column by name.</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.spanspec.nameend.attribute">
+      <attribute name="nameend">
+        <a:documentation>Specifies an ending column by name.</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.spanspec.attlist">
       <interleave>
         <optional>
-          <ref name="db.refsect3.role.attribute"/>
+          <ref name="db.spanspec.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.spanname.attribute"/>
+        <ref name="db.spanspec.namest.attribute"/>
+        <ref name="db.spanspec.nameend.attribute"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.char.attribute"/>
         </optional>
         <optional>
-          <ref name="db.refsect3.status.attribute"/>
+          <ref name="db.colsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.charoff.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.align.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.refsect3.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.refsect3">
-      <element name="refsect3">
-        <a:documentation>A subsection of a refsect2</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:refsect3">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.refsect3.attlist"/>
-        <ref name="db.refsect3.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.spanspec">
+      <element name="spanspec">
+        <a:documentation>Formatting information for a spanned column in a table</a:documentation>
+        <ref name="db.spanspec.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
-  <define name="db.glossary.inlines">
-    <choice>
-      <ref name="db.firstterm"/>
-      <ref name="db.glossterm"/>
-    </choice>
-  </define>
-  <define name="db.baseform.attribute">
-    <optional>
-      <attribute name="baseform">
-        <a:documentation>Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form.</a:documentation>
-      </attribute>
-    </optional>
-  </define>
   <div>
-    <define name="db.glosslist.role.attribute">
+    <define name="db.cals.thead.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glosslist.attlist">
+    <define name="db.cals.thead.attlist">
       <interleave>
         <optional>
-          <ref name="db.glosslist.role.attribute"/>
+          <ref name="db.cals.thead.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.glosslist.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.glosslist">
-      <element name="glosslist">
-        <a:documentation>A wrapper for a list of glossary entries</a:documentation>
-        <ref name="db.glosslist.attlist"/>
         <optional>
-          <ref name="db.glosslist.info"/>
+          <ref name="db.valign.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.cals.thead">
+      <element name="thead">
+        <a:documentation>A table header consisting of one or more rows</a:documentation>
+        <ref name="db.cals.thead.attlist"/>
         <zeroOrMore>
-          <ref name="db.all.blocks"/>
+          <ref name="db.colspec"/>
         </zeroOrMore>
         <oneOrMore>
-          <ref name="db.glossentry"/>
+          <ref name="db.row"/>
         </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glossentry.role.attribute">
+    <define name="db.cals.tfoot.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glossentry.sortas.attribute">
-      <attribute name="sortas">
-        <a:documentation>Specifies the string by which the element's content is to be sorted; if unspecified, the content is used</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.glossentry.attlist">
+    <define name="db.cals.tfoot.attlist">
       <interleave>
         <optional>
-          <ref name="db.glossentry.role.attribute"/>
+          <ref name="db.cals.tfoot.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.glossentry.sortas.attribute"/>
+          <ref name="db.valign.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.glossentry">
-      <element name="glossentry">
-        <a:documentation>An entry in a Glossary or GlossList</a:documentation>
-        <ref name="db.glossentry.attlist"/>
-        <ref name="db.glossterm"/>
-        <optional>
-          <ref name="db.acronym"/>
-        </optional>
-        <optional>
-          <ref name="db.abbrev"/>
-        </optional>
+    <define name="db.cals.tfoot">
+      <element name="tfoot">
+        <a:documentation>A table footer consisting of one or more rows</a:documentation>
+        <ref name="db.cals.tfoot.attlist"/>
         <zeroOrMore>
-          <ref name="db.indexterm"/>
+          <ref name="db.colspec"/>
         </zeroOrMore>
-        <choice>
-          <ref name="db.glosssee"/>
-          <oneOrMore>
-            <ref name="db.glossdef"/>
-          </oneOrMore>
-        </choice>
+        <oneOrMore>
+          <ref name="db.row"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glossdef.role.attribute">
+    <define name="db.cals.tbody.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glossdef.subject.attribute">
-      <attribute name="subject">
-        <a:documentation>Specifies a list of keywords for the definition</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.glossdef.attlist">
+    <define name="db.cals.tbody.attlist">
       <interleave>
         <optional>
-          <ref name="db.glossdef.role.attribute"/>
+          <ref name="db.cals.tbody.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.glossdef.subject.attribute"/>
+          <ref name="db.valign.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.glossdef">
-      <element name="glossdef">
-        <a:documentation>A definition in a GlossEntry</a:documentation>
-        <ref name="db.glossdef.attlist"/>
+    <define name="db.cals.tbody">
+      <element name="tbody">
+        <a:documentation>A wrapper for the rows of a table or informal table</a:documentation>
+        <ref name="db.cals.tbody.attlist"/>
         <oneOrMore>
-          <ref name="db.all.blocks"/>
+          <ref name="db.row"/>
         </oneOrMore>
-        <zeroOrMore>
-          <ref name="db.glossseealso"/>
-        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glosssee.role.attribute">
+    <define name="db.row.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glosssee.otherterm.attribute">
-      <attribute name="otherterm">
-        <a:documentation>Identifies the other term</a:documentation>
-        <data type="IDREF"/>
+    <define name="db.row.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.row.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.valign.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.row">
+      <element name="row">
+        <a:documentation>A row in a table</a:documentation>
+        <ref name="db.row.attlist"/>
+        <oneOrMore>
+          <choice>
+            <ref name="db.entry"/>
+            <ref name="db.entrytbl"/>
+          </choice>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.entry.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.entry.morerows.attribute">
+      <attribute name="morerows">
+        <a:documentation>Specifies the number of additional rows which this entry occupies. Defaults to zero.</a:documentation>
+        <data type="integer"/>
       </attribute>
     </define>
-    <define name="db.glosssee.attlist">
+    <define name="db.entry.rotate.attribute">
+      <attribute name="rotate">
+        <a:documentation>Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.</a:documentation>
+        <choice>
+          <value>0</value>
+          <a:documentation>Do not rotate the cell.</a:documentation>
+          <value>1</value>
+          <a:documentation>Rotate the cell 90 degrees counter-clockwise.</a:documentation>
+        </choice>
+      </attribute>
+    </define>
+    <define name="db.entry.attlist">
       <interleave>
         <optional>
-          <ref name="db.glosssee.role.attribute"/>
+          <ref name="db.entry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.glosssee.otherterm.attribute"/>
+          <ref name="db.valign.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.char.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.charoff.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.entry.morerows.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.column-spec.attributes"/>
+        </optional>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.entry.rotate.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.align.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.glosssee">
-      <element name="glosssee">
-        <a:documentation>A cross-reference from one glossentry
- to another</a:documentation>
-        <s:pattern name="Glosssary 'see' type constraint">
-          <s:rule context="db:glosssee[@otherterm]">
-            <s:assert test="local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'">@otherterm on glosssee must point to a glossentry.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.glosssee.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.entry">
+      <element name="entry">
+        <a:documentation>A cell in a table</a:documentation>
+        <ref name="db.entry.attlist"/>
+        <choice>
+          <zeroOrMore>
+            <ref name="db.all.inlines"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="db.all.blocks"/>
+          </zeroOrMore>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glossseealso.role.attribute">
+    <define name="db.entrytbl.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glossseealso.otherterm.attribute">
-      <attribute name="otherterm">
-        <a:documentation>Identifies the other term</a:documentation>
-        <data type="IDREF"/>
+    <define name="db.entrytbl.tgroupstyle.attribute">
+      <attribute name="tgroupstyle">
+        <a:documentation>Additional style information for downstream processing; typically the name of a style.</a:documentation>
       </attribute>
     </define>
-    <define name="db.glossseealso.attlist">
+    <define name="db.entrytbl.cols.attribute">
+      <attribute name="cols">
+        <a:documentation>The number of columns in the entry table. Must be an integer greater than zero.</a:documentation>
+        <data type="positiveInteger"/>
+      </attribute>
+    </define>
+    <define name="db.entrytbl.attlist">
       <interleave>
         <optional>
-          <ref name="db.glossseealso.role.attribute"/>
+          <ref name="db.entrytbl.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.glossseealso.otherterm.attribute"/>
+          <ref name="db.char.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.charoff.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.column-spec.attributes"/>
+        </optional>
+        <optional>
+          <ref name="db.entrytbl.tgroupstyle.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.entrytbl.cols.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.align.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.glossseealso">
-      <element name="glossseealso">
-        <a:documentation>A cross-reference from one GlossEntry to another</a:documentation>
-        <s:pattern name="Glossary 'seealso' type constraint">
-          <s:rule context="db:glossseealso[@otherterm]">
-            <s:assert test="local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'">@otherterm on glossseealso must point to a glossentry.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.glossseealso.attlist"/>
+    <define name="db.entrytbl">
+      <element name="entrytbl">
+        <a:documentation>A subtable appearing in place of an Entry in a table</a:documentation>
+        <ref name="db.entrytbl.attlist"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <ref name="db.colspec"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="db.spanspec"/>
         </zeroOrMore>
+        <optional>
+          <ref name="db.cals.entrytbl.thead"/>
+        </optional>
+        <ref name="db.cals.entrytbl.tbody"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.firstterm.role.attribute">
+    <define name="db.cals.entrytbl.thead.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.firstterm.attlist">
+    <define name="db.cals.entrytbl.thead.attlist">
       <interleave>
         <optional>
-          <ref name="db.firstterm.role.attribute"/>
+          <ref name="db.cals.entrytbl.thead.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.baseform.attribute"/>
+        <optional>
+          <ref name="db.valign.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.firstterm">
-      <element name="firstterm">
-        <a:documentation>The first occurrence of a term</a:documentation>
-        <s:pattern name="Glossary 'firstterm' type constraint">
-          <s:rule context="db:firstterm[@linkend]">
-            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on firstterm must point to a glossentry.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.firstterm.attlist"/>
+    <define name="db.cals.entrytbl.thead">
+      <element name="thead">
+        <a:documentation>A table header consisting of one or more rows</a:documentation>
+        <ref name="db.cals.entrytbl.thead.attlist"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <ref name="db.colspec"/>
         </zeroOrMore>
+        <oneOrMore>
+          <ref name="db.entrytbl.row"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glossterm.role.attribute">
+    <define name="db.cals.entrytbl.tbody.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glossterm.attlist">
+    <define name="db.cals.entrytbl.tbody.attlist">
       <interleave>
         <optional>
-          <ref name="db.glossterm.role.attribute"/>
+          <ref name="db.cals.entrytbl.tbody.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.baseform.attribute"/>
+        <optional>
+          <ref name="db.valign.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.glossterm">
-      <element name="glossterm">
-        <a:documentation>A glossary term</a:documentation>
-        <s:pattern name="Glossary 'glossterm' type constraint">
-          <s:rule context="db:glossterm[@linkend]">
-            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on glossterm must point to a glossentry.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.glossterm.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.cals.entrytbl.tbody">
+      <element name="tbody">
+        <a:documentation>A wrapper for the rows of a table or informal table</a:documentation>
+        <ref name="db.cals.entrytbl.tbody.attlist"/>
+        <oneOrMore>
+          <ref name="db.entrytbl.row"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glossary.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.glossary.role.attribute">
+    <define name="db.entrytbl.row.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glossary.attlist">
+    <define name="db.entrytbl.row.attlist">
       <interleave>
         <optional>
-          <ref name="db.glossary.role.attribute"/>
+          <ref name="db.entrytbl.row.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.rowsep.attribute"/>
         </optional>
         <optional>
-          <ref name="db.glossary.status.attribute"/>
+          <ref name="db.valign.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.glossary.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.glossary">
-      <element name="glossary">
-        <a:documentation>A glossary</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:glossary">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.glossary.attlist"/>
-        <ref name="db.glossary.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <choice>
-          <zeroOrMore>
-            <ref name="db.glossdiv"/>
-          </zeroOrMore>
-          <zeroOrMore>
-            <ref name="db.glossentry"/>
-          </zeroOrMore>
-        </choice>
-        <optional>
-          <ref name="db.bibliography"/>
-        </optional>
+    <define name="db.entrytbl.row">
+      <element name="row">
+        <a:documentation>A row in a table</a:documentation>
+        <ref name="db.entrytbl.row.attlist"/>
+        <oneOrMore>
+          <ref name="db.entry"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.glossdiv.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.glossdiv.role.attribute">
+    <define name="db.cals.table.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.glossdiv.attlist">
+    <define name="db.cals.table.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.cals.table.attlist">
       <interleave>
         <optional>
-          <ref name="db.glossdiv.role.attribute"/>
+          <ref name="db.cals.table.role.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.cals.table.label.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.label.attribute"/>
+          <ref name="db.tabstyle.attribute"/>
         </optional>
         <optional>
-          <ref name="db.glossdiv.status.attribute"/>
+          <ref name="db.floatstyle.attribute"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.glossdiv.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.glossdiv">
-      <element name="glossdiv">
-        <a:documentation>A division in a Glossary</a:documentation>
-        <ref name="db.glossdiv.attlist"/>
-        <ref name="db.glossdiv.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <oneOrMore>
-          <ref name="db.glossentry"/>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.termdef.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.termdef.attlist">
-      <interleave>
         <optional>
-          <ref name="db.termdef.role.attribute"/>
+          <ref name="db.orient.attribute"/>
         </optional>
         <optional>
-          <ref name="db.glossentry.sortas.attribute"/>
+          <ref name="db.colsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.frame.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.pgwide.attribute"/>
+        </optional>
+        <optional>
+          <attribute name="shortentry">
+            <a:documentation>Indicates if the short or long title should be used in a List of Tables</a:documentation>
+            <choice>
+              <value>0</value>
+              <a:documentation>Indicates that the full title should be used.</a:documentation>
+              <value>1</value>
+              <a:documentation>Indicates that the short short title (titleabbrev) should be used.</a:documentation>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <attribute name="tocentry">
+            <a:documentation>Indicates if the table should appear in a List of Tables</a:documentation>
+            <choice>
+              <value>0</value>
+              <a:documentation>Indicates that the table should not occur in the List of Tables.</a:documentation>
+              <value>1</value>
+              <a:documentation>Indicates that the table should appear in the List of Tables.</a:documentation>
+            </choice>
+          </attribute>
+        </optional>
+        <optional>
+          <ref name="db.rowheader.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <ref name="db.baseform.attribute"/>
       </interleave>
     </define>
-    <define name="db.termdef">
-      <element name="termdef">
-        <a:documentation>An inline definition of a term</a:documentation>
-        <s:pattern name="Glossary term definition constraint">
-          <s:rule context="db:termdef">
-            <s:assert test="count(db:firstterm) = 1">A termdef must contain exactly one firstterm</s:assert>
+    <define name="db.cals.table.info">
+      <ref name="db._info.title.onlyreq"/>
+    </define>
+    <define name="db.cals.table">
+      <element name="table">
+        <a:documentation>A formal table in a document</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:example)">example must not occur in the descendants of table</s:assert>
           </s:rule>
         </s:pattern>
-        <ref name="db.termdef.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
-      </element>
-    </define>
-  </div>
-  <define name="db.relation.attribute">
-    <attribute name="relation">
-      <a:documentation>Identifies the relationship between the bibliographic elemnts</a:documentation>
-    </attribute>
-  </define>
-  <div>
-    <define name="db.biblioentry.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.biblioentry.attlist">
-      <interleave>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:informaltable)">informaltable must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.cals.table.attlist"/>
+        <ref name="db.cals.table.info"/>
+        <interleave>
+          <optional>
+            <ref name="db.alt"/>
+          </optional>
+          <zeroOrMore>
+            <ref name="db.indexing.inlines"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="db.textobject"/>
+          </zeroOrMore>
+        </interleave>
+        <choice>
+          <oneOrMore>
+            <ref name="db.mediaobject"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="db.tgroup"/>
+          </oneOrMore>
+        </choice>
         <optional>
-          <ref name="db.biblioentry.role.attribute"/>
+          <ref name="db.caption"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.biblioentry">
-      <element name="biblioentry">
-        <a:documentation>An entry in a Bibliography</a:documentation>
-        <ref name="db.biblioentry.attlist"/>
-        <oneOrMore>
-          <ref name="db.bibliographic.elements"/>
-        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.bibliomixed.role.attribute">
+    <define name="db.cals.informaltable.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.bibliomixed.attlist">
+    <define name="db.cals.informaltable.attlist">
       <interleave>
         <optional>
-          <ref name="db.bibliomixed.role.attribute"/>
+          <ref name="db.cals.informaltable.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.tabstyle.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.floatstyle.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.orient.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.colsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.rowsep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.frame.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.pgwide.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.rowheader.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.bibliomixed">
-      <element name="bibliomixed">
-        <a:documentation>An entry in a Bibliography</a:documentation>
-        <ref name="db.bibliomixed.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <text/>
-            <ref name="db.bibliographic.elements"/>
-          </choice>
-        </zeroOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.biblioset.relation.attribute">
-      <ref name="db.relation.attribute"/>
-    </define>
-    <define name="db.biblioset.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.biblioset.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.biblioset.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.biblioset.relation.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.biblioset">
-      <element name="biblioset">
-        <a:documentation>A raw container for related bibliographic information</a:documentation>
-        <ref name="db.biblioset.attlist"/>
-        <oneOrMore>
-          <ref name="db.bibliographic.elements"/>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.bibliomset.relation.attribute">
-      <ref name="db.relation.attribute"/>
-    </define>
-    <define name="db.bibliomset.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.bibliomset.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.bibliomset.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.bibliomset.relation.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.bibliomset">
-      <element name="bibliomset">
-        <a:documentation>A cooked container for related bibliographic information</a:documentation>
-        <ref name="db.bibliomset.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.bibliographic.elements"/>
-          </choice>
-        </zeroOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.bibliomisc.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.bibliomisc.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.bibliomisc.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.bibliomisc">
-      <element name="bibliomisc">
-        <a:documentation>Untyped bibliographic information</a:documentation>
-        <ref name="db.bibliomisc.attlist"/>
-        <ref name="db._text"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.bibliography.status.attrib">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.bibliography.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.bibliography.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.bibliography.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.bibliography.status.attrib"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.bibliography.info">
-      <ref name="db._info"/>
+    <define name="db.cals.informaltable.info">
+      <ref name="db._info.title.forbidden"/>
     </define>
-    <define name="db.bibliography">
-      <element name="bibliography">
-        <a:documentation>A bibliography</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:bibliography">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.bibliography.attlist"/>
-        <ref name="db.bibliography.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
+    <define name="db.cals.informaltable">
+      <element name="informaltable">
+        <a:documentation>A table without a title</a:documentation>
+        <ref name="db.cals.informaltable.attlist"/>
+        <ref name="db.cals.informaltable.info"/>
+        <interleave>
+          <optional>
+            <ref name="db.alt"/>
+          </optional>
+          <zeroOrMore>
+            <ref name="db.indexing.inlines"/>
+          </zeroOrMore>
+          <zeroOrMore>
+            <ref name="db.textobject"/>
+          </zeroOrMore>
+        </interleave>
         <choice>
           <oneOrMore>
-            <ref name="db.bibliodiv"/>
+            <ref name="db.mediaobject"/>
           </oneOrMore>
           <oneOrMore>
-            <choice>
-              <ref name="db.biblioentry"/>
-              <ref name="db.bibliomixed"/>
-            </choice>
+            <ref name="db.tgroup"/>
           </oneOrMore>
         </choice>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.bibliodiv.status.attrib">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.bibliodiv.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.bibliodiv.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.bibliodiv.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.bibliodiv.status.attrib"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.bibliodiv.info">
-      <ref name="db._info.title.req"/>
-    </define>
-    <define name="db.bibliodiv">
-      <element name="bibliodiv">
-        <a:documentation>A section of a Bibliography</a:documentation>
-        <ref name="db.bibliodiv.attlist"/>
-        <ref name="db.bibliodiv.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <oneOrMore>
-          <choice>
-            <ref name="db.biblioentry"/>
-            <ref name="db.bibliomixed"/>
-          </choice>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.bibliolist.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.bibliolist.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.bibliolist.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.bibliolist.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.bibliolist">
-      <element name="bibliolist">
-        <a:documentation>A wrapper for a list of bibliography entries</a:documentation>
-        <ref name="db.bibliolist.attlist"/>
         <optional>
-          <ref name="db.bibliolist.info"/>
+          <ref name="db.caption"/>
         </optional>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <oneOrMore>
-          <choice>
-            <ref name="db.biblioentry"/>
-            <ref name="db.bibliomixed"/>
-          </choice>
-        </oneOrMore>
       </element>
     </define>
   </div>
-  <div>
-    <define name="db.biblioref.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.biblioref.xrefstyle.attribute">
-      <ref name="db.xrefstyle.attribute"/>
-    </define>
-    <define name="db.biblioref.endterm.attribute">
-      <ref name="db.endterm.attribute"/>
-    </define>
-    <define name="db.biblioref.units.attribute">
-      <attribute name="units">
-        <a:documentation>The units (for example, pages) used to identify the beginning and ending of a reference.</a:documentation>
-        <data type="token"/>
-      </attribute>
-    </define>
-    <define name="db.biblioref.begin.attribute">
-      <attribute name="begin">
-        <a:documentation>Identifies the beginning of a reference; the location within the work that is being referenced.</a:documentation>
-        <data type="token"/>
-      </attribute>
-    </define>
-    <define name="db.biblioref.end.attribute">
-      <attribute name="end">
-        <a:documentation>Identifies the end of a reference.</a:documentation>
-        <data type="token"/>
-      </attribute>
-    </define>
-    <define name="db.biblioref.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.biblioref.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.req.linking.attributes"/>
-        <optional>
-          <ref name="db.biblioref.xrefstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.biblioref.endterm.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.biblioref.units.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.biblioref.begin.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.biblioref.end.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.biblioref">
-      <element name="biblioref">
-        <a:documentation>A cross-reference to a bibliographic entry</a:documentation>
-        <ref name="db.biblioref.attlist"/>
-        <empty/>
-      </element>
-    </define>
-  </div>
-  <define name="db.significance.enumeration">
-    <choice>
-      <value>normal</value>
-      <a:documentation>Normal</a:documentation>
-      <value>preferred</value>
-      <a:documentation>Preferred</a:documentation>
-    </choice>
-  </define>
-  <define name="db.significance.attribute">
-    <attribute name="significance">
-      <a:documentation>Specifies the significance of the term</a:documentation>
-      <ref name="db.significance.enumeration"/>
-    </attribute>
-  </define>
-  <define name="db.zone.attribute">
-    <attribute name="zone">
-      <a:documentation>Specifies the IDs of the elements to which this term applies</a:documentation>
-      <data type="IDREFS"/>
-    </attribute>
-  </define>
-  <define name="db.indexterm.pagenum.attribute">
-    <attribute name="pagenum">
-      <a:documentation>Indicates the page on which this index term occurs in some version of the printed document</a:documentation>
-    </attribute>
+  <define name="db.html.coreattrs">
+    <interleave>
+      <optional>
+        <attribute name="class">
+          <a:documentation>This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="style">
+          <a:documentation>This attribute specifies style information for the current element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="title">
+          <a:documentation>This attribute offers advisory information about the element for which it is set.</a:documentation>
+        </attribute>
+      </optional>
+    </interleave>
   </define>
-  <define name="db.scope.enumeration">
-    <choice>
-      <value>all</value>
-      <a:documentation>All indexes</a:documentation>
-      <value>global</value>
-      <a:documentation>The global index (as for a combined index of a set of box)</a:documentation>
-      <value>local</value>
-      <a:documentation>The local index (the index for this document only)</a:documentation>
-    </choice>
+  <define name="db.html.i18n">
+    <optional>
+      <attribute name="lang">
+        <a:documentation>This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.</a:documentation>
+      </attribute>
+    </optional>
   </define>
-  <define name="db.scope.attribute">
-    <attribute name="scope">
-      <a:documentation>Specifies the scope of the index term</a:documentation>
-      <ref name="db.scope.enumeration"/>
-    </attribute>
+  <define name="db.html.events">
+    <interleave>
+      <optional>
+        <attribute name="onclick">
+          <a:documentation>Occurs when the pointing device button is clicked over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="ondblclick">
+          <a:documentation>Occurs when the pointing device button is double clicked over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onmousedown">
+          <a:documentation>Occurs when the pointing device button is pressed over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onmouseup">
+          <a:documentation>Occurs when the pointing device button is released over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onmouseover">
+          <a:documentation>Occurs when the pointing device is moved onto an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onmousemove">
+          <a:documentation>Occurs when the pointing device is moved while it is over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onmouseout">
+          <a:documentation>Occurs when the pointing device is moved away from an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onkeypress">
+          <a:documentation>Occurs when a key is pressed and released over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onkeydown">
+          <a:documentation>Occurs when a key is pressed down over an element.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="onkeyup">
+          <a:documentation>Occurs when a key is released over an element.</a:documentation>
+        </attribute>
+      </optional>
+    </interleave>
   </define>
-  <define name="db.sortas.attribute">
-    <attribute name="sortas">
-      <a:documentation>Specifies the string by which the term is to be sorted; if unspecified, the term content is used</a:documentation>
-    </attribute>
+  <define name="db.html.attrs">
+    <interleave>
+      <ref name="db.common.attributes"/>
+      <ref name="db.html.coreattrs"/>
+      <ref name="db.html.i18n"/>
+      <ref name="db.html.events"/>
+    </interleave>
   </define>
-  <define name="db.index.type.attribute">
-    <attribute name="type">
-      <a:documentation>Specifies the target index for this term</a:documentation>
-    </attribute>
+  <define name="db.html.cellhalign">
+    <interleave>
+      <optional>
+        <attribute name="align">
+          <a:documentation>Specifies the alignment of data and the justification of text in a cell.</a:documentation>
+          <choice>
+            <value>left</value>
+            <a:documentation>Left-flush data/Left-justify text. This is the default value for table data.</a:documentation>
+            <value>center</value>
+            <a:documentation>Center data/Center-justify text. This is the default value for table headers.</a:documentation>
+            <value>right</value>
+            <a:documentation>Right-flush data/Right-justify text.</a:documentation>
+            <value>justify</value>
+            <a:documentation>Double-justify text.</a:documentation>
+            <value>char</value>
+            <a:documentation>Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.</a:documentation>
+          </choice>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="char">
+          <a:documentation>This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="charoff">
+          <a:documentation>When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute.</a:documentation>
+          <choice>
+            <data type="integer"/>
+            <data type="string">
+              <param name="pattern">[0-9]+%</param>
+            </data>
+          </choice>
+        </attribute>
+      </optional>
+    </interleave>
   </define>
-  <div>
-    <define name="db.itermset.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.itermset.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.itermset.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.itermset">
-      <element name="itermset">
-        <a:documentation>A set of index terms in the meta-information of a document</a:documentation>
-        <ref name="db.itermset.attlist"/>
-        <oneOrMore>
-          <ref name="db.indexterm.singular"/>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <define name="db.indexterm.contentmodel">
+  <define name="db.html.cellvalign">
     <optional>
-      <ref name="db.primary"/>
+      <attribute name="valign">
+        <a:documentation>Specifies the vertical position of data within a cell.</a:documentation>
+        <choice>
+          <value>top</value>
+          <a:documentation>Cell data is flush with the top of the cell.</a:documentation>
+          <value>middle</value>
+          <a:documentation>Cell data is centered vertically within the cell. This is the default value.</a:documentation>
+          <value>bottom</value>
+          <a:documentation>Cell data is flush with the bottom of the cell.</a:documentation>
+          <value>baseline</value>
+          <a:documentation>All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.</a:documentation>
+        </choice>
+      </attribute>
     </optional>
-    <optional>
-      <choice>
-        <group>
-          <ref name="db.secondary"/>
-          <optional>
-            <choice>
-              <group>
-                <ref name="db.tertiary"/>
-                <optional>
-                  <choice>
-                    <ref name="db.see"/>
-                    <oneOrMore>
-                      <ref name="db.seealso"/>
-                    </oneOrMore>
-                  </choice>
-                </optional>
-              </group>
-              <ref name="db.see"/>
-              <oneOrMore>
-                <ref name="db.seealso"/>
-              </oneOrMore>
-            </choice>
-          </optional>
-        </group>
-        <ref name="db.see"/>
-        <oneOrMore>
-          <ref name="db.seealso"/>
-        </oneOrMore>
-      </choice>
+  </define>
+  <define name="db.html.table.attributes">
+    <interleave>
+      <optional>
+        <attribute name="summary">
+          <a:documentation>Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="width">
+          <a:documentation>Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent.</a:documentation>
+          <choice>
+            <data type="integer"/>
+            <data type="string">
+              <param name="pattern">[0-9]+%</param>
+            </data>
+          </choice>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="border">
+          <a:documentation>Specifies the width (in pixels only) of the frame around a table.</a:documentation>
+          <data type="nonNegativeInteger"/>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="frame">
+          <a:documentation>Specifies which sides of the frame surrounding a table will be visible.</a:documentation>
+          <choice>
+            <value>void</value>
+            <a:documentation>No sides. This is the default value.</a:documentation>
+            <value>above</value>
+            <a:documentation>The top side only.</a:documentation>
+            <value>below</value>
+            <a:documentation>The bottom side only.</a:documentation>
+            <value>hsides</value>
+            <a:documentation>The top and bottom sides only.</a:documentation>
+            <value>lhs</value>
+            <a:documentation>The left-hand side only.</a:documentation>
+            <value>rhs</value>
+            <a:documentation>The right-hand side only.</a:documentation>
+            <value>vsides</value>
+            <a:documentation>The right and left sides only.</a:documentation>
+            <value>box</value>
+            <a:documentation>All four sides.</a:documentation>
+            <value>border</value>
+            <a:documentation>All four sides.</a:documentation>
+          </choice>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="rules">
+          <a:documentation>Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.</a:documentation>
+          <choice>
+            <value>none</value>
+            <a:documentation>No rules. This is the default value.</a:documentation>
+            <value>groups</value>
+            <a:documentation>Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.</a:documentation>
+            <value>rows</value>
+            <a:documentation>Rules will appear between rows only.</a:documentation>
+            <value>cols</value>
+            <a:documentation>Rules will appear between columns only.</a:documentation>
+            <value>all</value>
+            <a:documentation>Rules will appear between all rows and columns.</a:documentation>
+          </choice>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="cellspacing">
+          <a:documentation>Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells.</a:documentation>
+          <choice>
+            <data type="integer"/>
+            <data type="string">
+              <param name="pattern">[0-9]+%</param>
+            </data>
+          </choice>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="cellpadding">
+          <a:documentation>Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space.</a:documentation>
+          <choice>
+            <data type="integer"/>
+            <data type="string">
+              <param name="pattern">[0-9]+%</param>
+            </data>
+          </choice>
+        </attribute>
+      </optional>
+    </interleave>
+  </define>
+  <define name="db.html.tablecell.attributes">
+    <interleave>
+      <optional>
+        <attribute name="abbr">
+          <a:documentation>Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="axis">
+          <a:documentation>This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="headers">
+          <a:documentation>Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets.</a:documentation>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="scope">
+          <a:documentation>Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables.</a:documentation>
+          <choice>
+            <value>row</value>
+            <a:documentation>The current cell provides header information for the rest of the row that contains it</a:documentation>
+            <value>col</value>
+            <a:documentation>The current cell provides header information for the rest of the column that contains it.</a:documentation>
+            <value>rowgroup</value>
+            <a:documentation>The header cell provides header information for the rest of the row group that contains it.</a:documentation>
+            <value>colgroup</value>
+            <a:documentation>The header cell provides header information for the rest of the column group that contains it.</a:documentation>
+          </choice>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="rowspan">
+          <a:documentation>Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1
+). The value zero (0
+) means that the cell spans all rows from the current row to the last row of the table section (thead
+, tbody
+, or tfoot
+) in which the cell is defined.</a:documentation>
+          <data type="nonNegativeInteger"/>
+        </attribute>
+      </optional>
+      <optional>
+        <attribute name="colspan">
+          <a:documentation>Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1
+). The value zero (0
+) means that the cell spans all columns from the current column to the last column of the column group (colgroup
+) in which the cell is defined.</a:documentation>
+          <data type="nonNegativeInteger"/>
+        </attribute>
+      </optional>
+    </interleave>
+  </define>
+  <define name="db.html.table.info">
+    <ref name="db._info.title.forbidden"/>
+  </define>
+  <define name="db.html.table.model">
+    <optional>
+      <ref name="db.html.table.info"/>
+    </optional>
+    <ref name="db.html.caption"/>
+    <choice>
+      <zeroOrMore>
+        <ref name="db.html.col"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="db.html.colgroup"/>
+      </zeroOrMore>
+    </choice>
+    <optional>
+      <ref name="db.html.thead"/>
+    </optional>
+    <optional>
+      <ref name="db.html.tfoot"/>
+    </optional>
+    <choice>
+      <oneOrMore>
+        <ref name="db.html.tbody"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="db.html.tr"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="db.html.informaltable.info">
+    <ref name="db._info.title.forbidden"/>
+  </define>
+  <define name="db.html.informaltable.model">
+    <optional>
+      <ref name="db.html.informaltable.info"/>
+    </optional>
+    <choice>
+      <zeroOrMore>
+        <ref name="db.html.col"/>
+      </zeroOrMore>
+      <zeroOrMore>
+        <ref name="db.html.colgroup"/>
+      </zeroOrMore>
+    </choice>
+    <optional>
+      <ref name="db.html.thead"/>
+    </optional>
+    <optional>
+      <ref name="db.html.tfoot"/>
     </optional>
+    <choice>
+      <oneOrMore>
+        <ref name="db.html.tbody"/>
+      </oneOrMore>
+      <oneOrMore>
+        <ref name="db.html.tr"/>
+      </oneOrMore>
+    </choice>
   </define>
   <div>
-    <define name="db.indexterm.singular.role.attribute">
+    <define name="db.html.table.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.indexterm.singular.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of index term</a:documentation>
-        <value>singular</value>
-        <a:documentation>A singular index term</a:documentation>
-      </attribute>
+    <define name="db.html.table.label.attribute">
+      <ref name="db.label.attribute"/>
     </define>
-    <define name="db.indexterm.singular.attlist">
+    <define name="db.html.table.attlist">
       <interleave>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.table.attributes"/>
         <optional>
-          <ref name="db.indexterm.singular.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.significance.attribute"/>
+          <ref name="db.html.table.role.attribute"/>
         </optional>
         <optional>
-          <ref name="db.zone.attribute"/>
+          <ref name="db.html.table.label.attribute"/>
         </optional>
         <optional>
-          <ref name="db.indexterm.pagenum.attribute"/>
+          <ref name="db.orient.attribute"/>
         </optional>
         <optional>
-          <ref name="db.scope.attribute"/>
+          <ref name="db.pgwide.attribute"/>
         </optional>
         <optional>
-          <ref name="db.index.type.attribute"/>
+          <ref name="db.tabstyle.attribute"/>
         </optional>
         <optional>
-          <ref name="db.indexterm.singular.class.attribute"/>
+          <ref name="db.floatstyle.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.indexterm.singular">
-      <element name="indexterm">
-        <a:documentation>A wrapper for an indexed term</a:documentation>
-        <ref name="db.indexterm.singular.attlist"/>
-        <ref name="db.indexterm.contentmodel"/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.indexterm.startofrange.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.indexterm.startofrange.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of index term</a:documentation>
-        <value>startofrange</value>
-        <a:documentation>The start of a range</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.indexterm.startofrange.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.indexterm.startofrange.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.significance.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.zone.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.indexterm.pagenum.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.scope.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.index.type.attribute"/>
-        </optional>
-        <ref name="db.indexterm.startofrange.class.attribute"/>
-      </interleave>
-    </define>
-    <define name="db.indexterm.startofrange">
-      <element name="indexterm">
-        <a:documentation>A wrapper for an indexed term that covers a range</a:documentation>
-        <ref name="db.indexterm.startofrange.attlist"/>
-        <ref name="db.indexterm.contentmodel"/>
+    <define name="db.html.table">
+      <element name="table">
+        <a:documentation>A formal (captioned) HTML table in a document</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:example)">example must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:informaltable)">informaltable must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:table">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of table</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.html.table.attlist"/>
+        <ref name="db.html.table.model"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.indexterm.endofrange.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.indexterm.endofrange.class.attribute">
-      <attribute name="class">
-        <a:documentation>Identifies the class of index term</a:documentation>
-        <value>endofrange</value>
-        <a:documentation>The end of a range</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.indexterm.endofrange.startref.attribute">
-      <attribute name="startref">
-        <a:documentation>Points to the start of the range</a:documentation>
-        <data type="IDREF"/>
-      </attribute>
-    </define>
-    <define name="db.indexterm.endofrange.attlist">
+    <define name="db.html.informaltable.attlist">
       <interleave>
-        <optional>
-          <ref name="db.indexterm.endofrange.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <ref name="db.indexterm.endofrange.class.attribute"/>
-        <ref name="db.indexterm.endofrange.startref.attribute"/>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.table.attributes"/>
       </interleave>
     </define>
-    <define name="db.indexterm.endofrange">
-      <element name="indexterm">
-        <a:documentation>Identifies the end of a range associated with an indexed term</a:documentation>
-        <ref name="db.indexterm.endofrange.attlist"/>
-        <empty/>
+    <define name="db.html.informaltable">
+      <element name="informaltable">
+        <a:documentation>An HTML table without a title</a:documentation>
+        <ref name="db.html.informaltable.attlist"/>
+        <ref name="db.html.informaltable.model"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.indexterm">
-      <choice>
-        <ref name="db.indexterm.singular"/>
-        <ref name="db.indexterm.startofrange"/>
-        <ref name="db.indexterm.endofrange"/>
-      </choice>
-    </define>
-  </div>
-  <div>
-    <define name="db.primary.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.primary.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.primary.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.sortas.attribute"/>
-        </optional>
-      </interleave>
+    <define name="db.html.caption.attlist">
+      <ref name="db.html.attrs"/>
     </define>
-    <define name="db.primary">
-      <element name="primary">
-        <a:documentation>The primary word or phrase under which an index term should be sorted</a:documentation>
-        <ref name="db.primary.attlist"/>
+    <define name="db.html.caption">
+      <element name="caption">
+        <a:documentation>An HTML table caption</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:example)">example must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:table)">table must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:task)">task must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caption">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caption</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.html.caption.attlist"/>
         <zeroOrMore>
           <ref name="db.all.inlines"/>
         </zeroOrMore>
@@ -11550,620 +11411,547 @@ O, the molecular formula for water)</a:documentation>
     </define>
   </div>
   <div>
-    <define name="db.secondary.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.secondary.attlist">
+    <define name="db.html.col.attlist">
       <interleave>
+        <ref name="db.html.attrs"/>
         <optional>
-          <ref name="db.secondary.role.attribute"/>
+          <attribute name="span">
+            <a:documentation>This attribute, whose value must be an integer &gt; 0, specifies the number of columns spanned
+ by the col
+ element; the col
+ element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N &gt; 1, the current col
+ element shares its attributes with the next N-1 columns.</a:documentation>
+            <data type="nonNegativeInteger"/>
+          </attribute>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.sortas.attribute"/>
+          <attribute name="width">
+            <a:documentation>Specifies a default width for each column spanned by the current col
+ element. It has the same meaning as the width
+ attribute for the colgroup
+ element and overrides it.</a:documentation>
+          </attribute>
         </optional>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.secondary">
-      <element name="secondary">
-        <a:documentation>A secondary word or phrase in an index term</a:documentation>
-        <ref name="db.secondary.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.html.col">
+      <element name="col">
+        <a:documentation>Specifications for a column in an HTML table</a:documentation>
+        <ref name="db.html.col.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.tertiary.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.tertiary.attlist">
+    <define name="db.html.colgroup.attlist">
       <interleave>
+        <ref name="db.html.attrs"/>
         <optional>
-          <ref name="db.tertiary.role.attribute"/>
+          <attribute name="span">
+            <a:documentation>This attribute, which must be an integer &gt; 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup
+ defines a column group containing one column. If the span attribute is set to N &gt; 0, the current colgroup
+ element defines a column group containing N columns. User agents must ignore this attribute if the colgroup
+ element contains one or more col
+ elements.</a:documentation>
+            <data type="nonNegativeInteger"/>
+          </attribute>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.sortas.attribute"/>
+          <attribute name="width">
+            <a:documentation>This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0*
+ (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0*
+ will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col
+ element.</a:documentation>
+          </attribute>
         </optional>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.tertiary">
-      <element name="tertiary">
-        <a:documentation>A tertiary word or phrase in an index term</a:documentation>
-        <ref name="db.tertiary.attlist"/>
+    <define name="db.html.colgroup">
+      <element name="colgroup">
+        <a:documentation>A group of columns in an HTML table</a:documentation>
+        <ref name="db.html.colgroup.attlist"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <ref name="db.html.col"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.see.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.see.attlist">
+    <define name="db.html.thead.attlist">
       <interleave>
-        <optional>
-          <ref name="db.see.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.see">
-      <element name="see">
-        <a:documentation>Part of an index term directing the reader instead to another entry in the index</a:documentation>
-        <ref name="db.see.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.html.thead">
+      <element name="thead">
+        <a:documentation>A table header consisting of one or more rows in an HTML table</a:documentation>
+        <ref name="db.html.thead.attlist"/>
+        <oneOrMore>
+          <ref name="db.html.tr"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.seealso.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.seealso.attlist">
+    <define name="db.html.tfoot.attlist">
       <interleave>
-        <optional>
-          <ref name="db.seealso.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.seealso">
-      <element name="seealso">
-        <a:documentation>Part of an index term directing the reader also to another entry in the index</a:documentation>
-        <ref name="db.seealso.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.html.tfoot">
+      <element name="tfoot">
+        <a:documentation>A table footer consisting of one or more rows in an HTML table</a:documentation>
+        <ref name="db.html.tfoot.attlist"/>
+        <oneOrMore>
+          <ref name="db.html.tr"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.index.status.attribute">
-      <ref name="db.status.attribute"/>
+    <define name="db.html.tbody.attlist">
+      <interleave>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
+      </interleave>
     </define>
-    <define name="db.index.role.attribute">
-      <attribute name="role"/>
+    <define name="db.html.tbody">
+      <element name="tbody">
+        <a:documentation>A wrapper for the rows of an HTML table or informal HTML table</a:documentation>
+        <ref name="db.html.tbody.attlist"/>
+        <oneOrMore>
+          <ref name="db.html.tr"/>
+        </oneOrMore>
+      </element>
     </define>
-    <define name="db.index.attlist">
+  </div>
+  <div>
+    <define name="db.html.tr.attlist">
       <interleave>
-        <optional>
-          <ref name="db.index.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.index.status.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.index.type.attribute"/>
-        </optional>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.index.info">
-      <ref name="db._info"/>
+    <define name="db.html.tr">
+      <element name="tr">
+        <a:documentation>A row in an HTML table</a:documentation>
+        <ref name="db.html.tr.attlist"/>
+        <oneOrMore>
+          <choice>
+            <ref name="db.html.th"/>
+            <ref name="db.html.td"/>
+          </choice>
+        </oneOrMore>
+      </element>
     </define>
-    <!--
-
-      Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
-      Authors can use an empty index to indicate where a generated index should
-      appear.
-    -->
-    <define name="db.index">
-      <element name="index">
-        <a:documentation>An index to a book or part of a book</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:index">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.index.attlist"/>
-        <ref name="db.index.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
+  </div>
+  <div>
+    <define name="db.html.th.attlist">
+      <interleave>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.tablecell.attributes"/>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
+      </interleave>
+    </define>
+    <define name="db.html.th">
+      <element name="th">
+        <a:documentation>A table header entry in an HTML table</a:documentation>
+        <ref name="db.html.th.attlist"/>
         <choice>
           <zeroOrMore>
-            <ref name="db.indexdiv"/>
+            <ref name="db.all.inlines"/>
           </zeroOrMore>
           <zeroOrMore>
-            <ref name="db.indexentry"/>
+            <ref name="db.all.blocks"/>
           </zeroOrMore>
-          <ref name="db.segmentedlist"/>
         </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.setindex.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.setindex.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.setindex.attlist">
+    <define name="db.html.td.attlist">
       <interleave>
-        <optional>
-          <ref name="db.setindex.role.attribute"/>
-        </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.setindex.status.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.index.type.attribute"/>
-        </optional>
+        <ref name="db.html.attrs"/>
+        <ref name="db.html.tablecell.attributes"/>
+        <ref name="db.html.cellhalign"/>
+        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.setindex.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.setindex">
-      <element name="setindex">
-        <a:documentation>An index to a set of books</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:setindex">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.setindex.attlist"/>
-        <ref name="db.setindex.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
+    <define name="db.html.td">
+      <element name="td">
+        <a:documentation>A table entry in an HTML table</a:documentation>
+        <ref name="db.html.td.attlist"/>
         <choice>
           <zeroOrMore>
-            <ref name="db.indexdiv"/>
+            <ref name="db.all.inlines"/>
           </zeroOrMore>
           <zeroOrMore>
-            <ref name="db.indexentry"/>
+            <ref name="db.all.blocks"/>
           </zeroOrMore>
         </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.indexdiv.status.attribute">
-      <ref name="db.status.attribute"/>
-    </define>
-    <define name="db.indexdiv.role.attribute">
+    <define name="db.msgset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.indexdiv.attlist">
+    <define name="db.msgset.attlist">
       <interleave>
         <optional>
-          <ref name="db.indexdiv.role.attribute"/>
+          <ref name="db.msgset.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.indexdiv.status.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.indexdiv.info">
-      <ref name="db._info.title.req"/>
+    <define name="db.msgset.info">
+      <ref name="db._info.title.only"/>
     </define>
-    <define name="db.indexdiv">
-      <element name="indexdiv">
-        <a:documentation>A division in an index</a:documentation>
-        <ref name="db.indexdiv.attlist"/>
-        <ref name="db.indexdiv.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
+    <define name="db.msgset">
+      <element name="msgset">
+        <a:documentation>A detailed set of messages, usually error messages</a:documentation>
+        <ref name="db.msgset.attlist"/>
+        <ref name="db.msgset.info"/>
         <choice>
           <oneOrMore>
-            <ref name="db.indexentry"/>
+            <ref name="db.msgentry"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="db.simplemsgentry"/>
           </oneOrMore>
-          <ref name="db.segmentedlist"/>
         </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.indexentry.role.attribute">
+    <define name="db.msgentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.indexentry.attlist">
+    <define name="db.msgentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.indexentry.role.attribute"/>
+          <ref name="db.msgentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.indexentry">
-      <element name="indexentry">
-        <a:documentation>An entry in an index</a:documentation>
-        <ref name="db.indexentry.attlist"/>
-        <ref name="db.primaryie"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.seeie"/>
-            <ref name="db.seealsoie"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.msgentry">
+      <element name="msgentry">
+        <a:documentation>A wrapper for an entry in a message set</a:documentation>
+        <ref name="db.msgentry.attlist"/>
+        <oneOrMore>
+          <ref name="db.msg"/>
+        </oneOrMore>
+        <optional>
+          <ref name="db.msginfo"/>
+        </optional>
         <zeroOrMore>
-          <ref name="db.secondaryie"/>
-          <zeroOrMore>
-            <choice>
-              <ref name="db.seeie"/>
-              <ref name="db.seealsoie"/>
-              <ref name="db.tertiaryie"/>
-            </choice>
-          </zeroOrMore>
+          <ref name="db.msgexplan"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.primaryie.role.attribute">
+    <define name="db.simplemsgentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.primaryie.attlist">
+    <define name="db.simplemsgentry.msgaud.attribute">
+      <attribute name="msgaud">
+        <a:documentation>The audience to which the message relevant</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.simplemsgentry.msgorig.attribute">
+      <attribute name="msgorig">
+        <a:documentation>The origin of the message</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.simplemsgentry.msglevel.attribute">
+      <attribute name="msglevel">
+        <a:documentation>The level of importance or severity of a message</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.simplemsgentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.primaryie.role.attribute"/>
+          <ref name="db.simplemsgentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.linkends.attribute"/>
+          <ref name="db.simplemsgentry.msgaud.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.simplemsgentry.msgorig.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.simplemsgentry.msglevel.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.primaryie">
-      <element name="primaryie">
-        <a:documentation>A primary term in an index entry, not in the text</a:documentation>
-        <ref name="db.primaryie.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.simplemsgentry">
+      <element name="simplemsgentry">
+        <a:documentation>A wrapper for a simpler entry in a message set</a:documentation>
+        <ref name="db.simplemsgentry.attlist"/>
+        <ref name="db.msgtext"/>
+        <oneOrMore>
+          <ref name="db.msgexplan"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.secondaryie.role.attribute">
+    <define name="db.msg.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.secondaryie.attlist">
+    <define name="db.msg.attlist">
       <interleave>
         <optional>
-          <ref name="db.secondaryie.role.attribute"/>
+          <ref name="db.msg.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.linkends.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.secondaryie">
-      <element name="secondaryie">
-        <a:documentation>A secondary term in an index entry, rather than in the text</a:documentation>
-        <ref name="db.secondaryie.attlist"/>
+    <define name="db.msg.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.msg">
+      <element name="msg">
+        <a:documentation>A message in a message set</a:documentation>
+        <ref name="db.msg.attlist"/>
+        <ref name="db.msg.info"/>
+        <ref name="db.msgmain"/>
         <zeroOrMore>
-          <ref name="db.all.inlines"/>
+          <choice>
+            <ref name="db.msgsub"/>
+            <ref name="db.msgrel"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.tertiaryie.role.attribute">
+    <define name="db.msgmain.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.tertiaryie.attlist">
+    <define name="db.msgmain.attlist">
       <interleave>
         <optional>
-          <ref name="db.tertiaryie.role.attribute"/>
+          <ref name="db.msgmain.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.linkends.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.tertiaryie">
-      <element name="tertiaryie">
-        <a:documentation>A tertiary term in an index entry, rather than in the text</a:documentation>
-        <ref name="db.tertiaryie.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.msgmain.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.msgmain">
+      <element name="msgmain">
+        <a:documentation>The primary component of a message in a message set </a:documentation>
+        <ref name="db.msgmain.attlist"/>
+        <ref name="db.msgmain.info"/>
+        <ref name="db.msgtext"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.seeie.role.attribute">
+    <define name="db.msgsub.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.seeie.attlist">
+    <define name="db.msgsub.attlist">
       <interleave>
         <optional>
-          <ref name="db.seeie.role.attribute"/>
+          <ref name="db.msgsub.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.linkend.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.seeie">
-      <element name="seeie">
-        <a:documentation>A See
-entry in an index, rather than in the text</a:documentation>
-        <ref name="db.seeie.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.msgsub.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.msgsub">
+      <element name="msgsub">
+        <a:documentation>A subcomponent of a message in a message set</a:documentation>
+        <ref name="db.msgsub.attlist"/>
+        <ref name="db.msgsub.info"/>
+        <ref name="db.msgtext"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.seealsoie.role.attribute">
+    <define name="db.msgrel.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.seealsoie.attlist">
+    <define name="db.msgrel.attlist">
       <interleave>
         <optional>
-          <ref name="db.seealsoie.role.attribute"/>
+          <ref name="db.msgrel.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.linkends.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.seealsoie">
-      <element name="seealsoie">
-        <a:documentation>A See also
- entry in an index, rather than in the text</a:documentation>
-        <ref name="db.seealsoie.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.msgrel.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.msgrel">
+      <element name="msgrel">
+        <a:documentation>A related component of a message in a message set</a:documentation>
+        <ref name="db.msgrel.attlist"/>
+        <ref name="db.msgrel.info"/>
+        <ref name="db.msgtext"/>
       </element>
     </define>
   </div>
-  <define name="db.toc.pagenum.attribute">
-    <attribute name="pagenum">
-      <a:documentation>Indicates the page on which this element occurs in some version of the printed document</a:documentation>
-    </attribute>
-  </define>
   <div>
-    <define name="db.toc.role.attribute">
+    <define name="db.msgtext.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.toc.attlist">
+    <define name="db.msgtext.attlist">
       <interleave>
         <optional>
-          <ref name="db.toc.role.attribute"/>
+          <ref name="db.msgtext.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.toc.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.toc">
-      <element name="toc">
-        <a:documentation>A table of contents</a:documentation>
-        <s:pattern name="Root must have version">
-          <s:rule context="/db:toc">
-            <s:assert test="@version">The root element must have a version attribute.</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.toc.attlist"/>
-        <ref name="db.toc.info"/>
-        <zeroOrMore>
+    <define name="db.msgtext">
+      <element name="msgtext">
+        <a:documentation>The actual text of a message component in a message set</a:documentation>
+        <ref name="db.msgtext.attlist"/>
+        <oneOrMore>
           <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.tocdiv"/>
-            <ref name="db.tocentry"/>
-          </choice>
-        </zeroOrMore>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.tocdiv.role.attribute">
+    <define name="db.msginfo.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.tocdiv.pagenum.attribute">
-      <ref name="db.toc.pagenum.attribute"/>
-    </define>
-    <define name="db.tocdiv.attlist">
+    <define name="db.msginfo.attlist">
       <interleave>
         <optional>
-          <ref name="db.tocdiv.role.attribute"/>
+          <ref name="db.msginfo.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.tocdiv.pagenum.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.linkend.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.tocdiv.info">
-      <ref name="db._info"/>
-    </define>
-    <define name="db.tocdiv">
-      <element name="tocdiv">
-        <a:documentation>A division in a table of contents</a:documentation>
-        <ref name="db.tocdiv.attlist"/>
-        <ref name="db.tocdiv.info"/>
+    <define name="db.msginfo">
+      <element name="msginfo">
+        <a:documentation>Information about a message in a message set</a:documentation>
+        <ref name="db.msginfo.attlist"/>
         <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <oneOrMore>
           <choice>
-            <ref name="db.tocdiv"/>
-            <ref name="db.tocentry"/>
+            <ref name="db.msglevel"/>
+            <ref name="db.msgorig"/>
+            <ref name="db.msgaud"/>
           </choice>
-        </oneOrMore>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.tocentry.role.attribute">
+    <define name="db.msglevel.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.tocentry.pagenum.attribute">
-      <ref name="db.toc.pagenum.attribute"/>
-    </define>
-    <define name="db.tocentry.attlist">
+    <define name="db.msglevel.attlist">
       <interleave>
         <optional>
-          <ref name="db.tocentry.role.attribute"/>
+          <ref name="db.msglevel.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <ref name="db.tocentry.pagenum.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.linkend.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.tocentry">
-      <element name="tocentry">
-        <a:documentation>A component title in a table of contents</a:documentation>
-        <ref name="db.tocentry.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.msglevel">
+      <element name="msglevel">
+        <a:documentation>The level of importance or severity of a message in a message set</a:documentation>
+        <ref name="db.msglevel.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
-  <define name="db.task.info">
-    <ref name="db._info.title.req"/>
-  </define>
   <div>
-    <define name="db.task.role.attribute">
+    <define name="db.msgorig.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.task.attlist">
+    <define name="db.msgorig.attlist">
       <interleave>
         <optional>
-          <ref name="db.task.role.attribute"/>
+          <ref name="db.msgorig.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.task">
-      <element name="task">
-        <a:documentation>A task to be completed</a:documentation>
-        <ref name="db.task.attlist"/>
-        <ref name="db.task.info"/>
-        <optional>
-          <ref name="db.tasksummary"/>
-        </optional>
-        <optional>
-          <ref name="db.taskprerequisites"/>
-        </optional>
-        <ref name="db.procedure"/>
-        <zeroOrMore>
-          <ref name="db.example"/>
-        </zeroOrMore>
-        <optional>
-          <ref name="db.taskrelated"/>
-        </optional>
+    <define name="db.msgorig">
+      <element name="msgorig">
+        <a:documentation>The origin of a message in a message set</a:documentation>
+        <ref name="db.msgorig.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.tasksummary.role.attribute">
+    <define name="db.msgaud.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.tasksummary.attlist">
+    <define name="db.msgaud.attlist">
       <interleave>
         <optional>
-          <ref name="db.tasksummary.role.attribute"/>
+          <ref name="db.msgaud.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.tasksummary.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.tasksummary">
-      <element name="tasksummary">
-        <a:documentation>A summary of a task</a:documentation>
-        <ref name="db.tasksummary.attlist"/>
-        <ref name="db.tasksummary.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.msgaud">
+      <element name="msgaud">
+        <a:documentation>The audience to which a message in a message set is relevant</a:documentation>
+        <ref name="db.msgaud.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.taskprerequisites.role.attribute">
+    <define name="db.msgexplan.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.taskprerequisites.attlist">
+    <define name="db.msgexplan.attlist">
       <interleave>
         <optional>
-          <ref name="db.taskprerequisites.role.attribute"/>
+          <ref name="db.msgexplan.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.taskprerequisites.info">
+    <define name="db.msgexplan.info">
       <ref name="db._info.title.only"/>
     </define>
-    <define name="db.taskprerequisites">
-      <element name="taskprerequisites">
-        <a:documentation>The prerequisites for a task</a:documentation>
-        <ref name="db.taskprerequisites.attlist"/>
-        <ref name="db.taskprerequisites.info"/>
+    <define name="db.msgexplan">
+      <element name="msgexplan">
+        <a:documentation>Explanatory material relating to a message in a message set</a:documentation>
+        <ref name="db.msgexplan.attlist"/>
+        <ref name="db.msgexplan.info"/>
         <oneOrMore>
           <ref name="db.all.blocks"/>
         </oneOrMore>
@@ -12171,3107 +11959,3341 @@ entry in an index, rather than in the text</a:documentation>
     </define>
   </div>
   <div>
-    <define name="db.taskrelated.role.attribute">
+    <define name="db.qandaset.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.taskrelated.attlist">
+    <define name="db.qandaset.defaultlabel.enumeration">
+      <choice>
+        <value>none</value>
+        <a:documentation>No labels</a:documentation>
+        <value>number</value>
+        <a:documentation>Numeric labels</a:documentation>
+        <value>qanda</value>
+        <a:documentation>"Q:" and "A:" labels</a:documentation>
+      </choice>
+    </define>
+    <define name="db.qandaset.defaultlabel.attribute">
+      <attribute name="defaultlabel">
+        <a:documentation>Specifies the default labelling</a:documentation>
+        <ref name="db.qandaset.defaultlabel.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.qandaset.attlist">
       <interleave>
         <optional>
-          <ref name="db.taskrelated.role.attribute"/>
+          <ref name="db.qandaset.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.qandaset.defaultlabel.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.taskrelated.info">
+    <define name="db.qandaset.info">
       <ref name="db._info.title.only"/>
     </define>
-    <define name="db.taskrelated">
-      <element name="taskrelated">
-        <a:documentation>Information related to a task</a:documentation>
-        <ref name="db.taskrelated.attlist"/>
-        <ref name="db.taskrelated.info"/>
-        <oneOrMore>
+    <define name="db.qandaset">
+      <element name="qandaset">
+        <a:documentation>A question-and-answer set</a:documentation>
+        <ref name="db.qandaset.attlist"/>
+        <ref name="db.qandaset.info"/>
+        <zeroOrMore>
           <ref name="db.all.blocks"/>
-        </oneOrMore>
+        </zeroOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="db.qandadiv"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="db.qandaentry"/>
+          </oneOrMore>
+        </choice>
       </element>
     </define>
   </div>
-  <define name="db.area.units.enumeration">
-    <choice>
-      <value>calspair</value>
-      <a:documentation>Coordinates expressed as a pair of CALS graphic coordinates.</a:documentation>
-      <value>linecolumn</value>
-      <a:documentation>Coordinates expressed as a line and column.</a:documentation>
-      <value>linecolumnpair</value>
-      <a:documentation>Coordinates expressed as a pair of lines and columns.</a:documentation>
-      <value>linerange</value>
-      <a:documentation>Coordinates expressed as a line range.</a:documentation>
-    </choice>
-  </define>
-  <define name="db.area.units-enum.attribute">
-    <optional>
-      <attribute name="units">
-        <a:documentation>Identifies the units used in the coords attribute The default units vary according to the type of callout specified: calspair
- for graphics and linecolumn
- for line-oriented elements.</a:documentation>
-        <ref name="db.area.units.enumeration"/>
-      </attribute>
-    </optional>
-  </define>
-  <define name="db.area.units-other.attributes">
-    <optional>
-      <attribute name="units">
-        <a:documentation>Indicates that non-standard units are used for this area
-. In this case otherunits
- must be specified.</a:documentation>
-        <value>other</value>
-        <a:documentation>Coordinates expressed in some non-standard units.</a:documentation>
-      </attribute>
-    </optional>
-    <attribute name="otherunits">
-      <a:documentation>Identifies the units used in the coords
- attribute when the units
- attribute is other
-. This attribute is forbidden otherwise.</a:documentation>
-      <data type="NMTOKEN"/>
-    </attribute>
-  </define>
-  <define name="db.area.units.attribute">
-    <choice>
-      <ref name="db.area.units-enum.attribute"/>
-      <ref name="db.area.units-other.attributes"/>
-    </choice>
-  </define>
   <div>
-    <define name="db.calloutlist.role.attribute">
+    <define name="db.qandadiv.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.calloutlist.attlist">
+    <define name="db.qandadiv.attlist">
       <interleave>
         <optional>
-          <ref name="db.calloutlist.role.attribute"/>
+          <ref name="db.qandadiv.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.calloutlist.info">
+    <define name="db.qandadiv.info">
       <ref name="db._info.title.only"/>
     </define>
-    <define name="db.calloutlist">
-      <element name="calloutlist">
-        <a:documentation>A list of callout
-s</a:documentation>
-        <ref name="db.calloutlist.attlist"/>
-        <ref name="db.calloutlist.info"/>
+    <define name="db.qandadiv">
+      <element name="qandadiv">
+        <a:documentation>A titled division in a QandASet</a:documentation>
+        <ref name="db.qandadiv.attlist"/>
+        <ref name="db.qandadiv.info"/>
         <zeroOrMore>
           <ref name="db.all.blocks"/>
         </zeroOrMore>
-        <oneOrMore>
-          <ref name="db.callout"/>
-        </oneOrMore>
+        <choice>
+          <oneOrMore>
+            <ref name="db.qandadiv"/>
+          </oneOrMore>
+          <oneOrMore>
+            <ref name="db.qandaentry"/>
+          </oneOrMore>
+        </choice>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.callout.role.attribute">
+    <define name="db.qandaentry.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.callout.arearefs.attribute">
-      <attribute name="arearefs">
-        <a:documentation>Identifies the areas described by this callout.</a:documentation>
-        <data type="IDREFS"/>
-      </attribute>
-    </define>
-    <define name="db.callout.attlist">
+    <define name="db.qandaentry.attlist">
       <interleave>
         <optional>
-          <ref name="db.callout.role.attribute"/>
+          <ref name="db.qandaentry.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.callout.arearefs.attribute"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.callout">
-      <element name="callout">
-        <a:documentation>A called out
- description of a marked Area</a:documentation>
-        <ref name="db.callout.attlist"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.qandaentry.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.qandaentry">
+      <element name="qandaentry">
+        <a:documentation>A question/answer set within a QandASet</a:documentation>
+        <ref name="db.qandaentry.attlist"/>
+        <ref name="db.qandaentry.info"/>
+        <ref name="db.question"/>
+        <zeroOrMore>
+          <ref name="db.answer"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.programlistingco.role.attribute">
+    <define name="db.question.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.programlistingco.attlist">
+    <define name="db.question.attlist">
       <interleave>
         <optional>
-          <ref name="db.programlistingco.role.attribute"/>
+          <ref name="db.question.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.programlistingco.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.programlistingco">
-      <element name="programlistingco">
-        <a:documentation>A program listing with associated areas used in callouts</a:documentation>
-        <ref name="db.programlistingco.attlist"/>
-        <ref name="db.programlistingco.info"/>
-        <ref name="db.areaspec"/>
-        <ref name="db.programlisting"/>
-        <zeroOrMore>
-          <ref name="db.calloutlist"/>
-        </zeroOrMore>
+    <define name="db.question">
+      <element name="question">
+        <a:documentation>A question in a QandASet</a:documentation>
+        <ref name="db.question.attlist"/>
+        <optional>
+          <ref name="db.label"/>
+        </optional>
+        <oneOrMore>
+          <ref name="db.all.blocks"/>
+        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.areaspec.role.attribute">
+    <define name="db.answer.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.areaspec.attlist">
+    <define name="db.answer.attlist">
       <interleave>
         <optional>
-          <ref name="db.areaspec.role.attribute"/>
+          <ref name="db.answer.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.area.units.attribute"/>
       </interleave>
     </define>
-    <define name="db.areaspec">
-      <element name="areaspec">
-        <a:documentation>A collection of regions in a graphic or code example</a:documentation>
-        <ref name="db.areaspec.attlist"/>
+    <define name="db.answer">
+      <element name="answer">
+        <a:documentation>An answer to a question posed in a QandASet</a:documentation>
+        <ref name="db.answer.attlist"/>
+        <optional>
+          <ref name="db.label"/>
+        </optional>
         <oneOrMore>
-          <choice>
-            <ref name="db.area"/>
-            <ref name="db.areaset"/>
-          </choice>
+          <ref name="db.all.blocks"/>
         </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.area.role.attribute">
+    <define name="db.label.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.area.linkends.attribute">
-      <attribute name="linkends">
-        <a:documentation>Point to the callout
-s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.)</a:documentation>
-        <data type="IDREFS"/>
-      </attribute>
-    </define>
-    <define name="db.area.label.attribute">
-      <attribute name="label">
-        <a:documentation>Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute.</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.area.coords.attribute">
-      <attribute name="coords">
-        <a:documentation>Provides the coordinates of the area. The coordinates must be interpreted using the units
- specified.</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.area.attlist">
+    <define name="db.label.attlist">
       <interleave>
         <optional>
-          <ref name="db.area.role.attribute"/>
-        </optional>
-        <ref name="db.common.idreq.attributes"/>
-        <ref name="db.area.units.attribute"/>
-        <optional>
-          <choice>
-            <ref name="db.area.linkends.attribute"/>
-            <ref name="db.href.attributes"/>
-          </choice>
-        </optional>
-        <optional>
-          <ref name="db.area.label.attribute"/>
+          <ref name="db.label.role.attribute"/>
         </optional>
-        <ref name="db.area.coords.attribute"/>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.area">
-      <element name="area">
-        <a:documentation>A region defined for a Callout in a graphic or code example</a:documentation>
-        <ref name="db.area.attlist"/>
-        <optional>
-          <ref name="db.alt"/>
-        </optional>
+    <define name="db.label">
+      <element name="label">
+        <a:documentation>A label on a Question or Answer</a:documentation>
+        <ref name="db.label.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
+  <define name="db.math.inlines">
+    <ref name="db.inlineequation"/>
+  </define>
+  <define name="db.equation.content">
+    <choice>
+      <choice>
+        <oneOrMore>
+          <ref name="db.mediaobject"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="db.mathphrase"/>
+        </oneOrMore>
+      </choice>
+      <oneOrMore>
+        <ref name="db._any.mml"/>
+      </oneOrMore>
+    </choice>
+  </define>
+  <define name="db.inlineequation.content">
+    <choice>
+      <choice>
+        <oneOrMore>
+          <ref name="db.inlinemediaobject"/>
+        </oneOrMore>
+        <oneOrMore>
+          <ref name="db.mathphrase"/>
+        </oneOrMore>
+      </choice>
+      <oneOrMore>
+        <ref name="db._any.mml"/>
+      </oneOrMore>
+    </choice>
+  </define>
   <div>
-    <!-- The only difference is that xml:id is optional -->
-    <define name="db.area.inareaset.attlist">
+    <define name="db.equation.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.equation.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.equation.attlist">
       <interleave>
         <optional>
-          <ref name="db.area.role.attribute"/>
+          <ref name="db.equation.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.area.units.attribute"/>
+        <ref name="db.common.linking.attributes"/>
         <optional>
-          <choice>
-            <ref name="db.area.linkends.attribute"/>
-            <ref name="db.href.attributes"/>
-          </choice>
+          <ref name="db.equation.label.attribute"/>
         </optional>
         <optional>
-          <ref name="db.area.label.attribute"/>
+          <ref name="db.pgwide.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.floatstyle.attribute"/>
         </optional>
-        <ref name="db.area.coords.attribute"/>
       </interleave>
     </define>
-    <define name="db.area.inareaset">
-      <element name="area">
-        <a:documentation>A region defined for a Callout in a graphic or code example</a:documentation>
-        <ref name="db.area.inareaset.attlist"/>
+    <define name="db.equation.info">
+      <ref name="db._info.title.only"/>
+    </define>
+    <define name="db.equation">
+      <element name="equation">
+        <a:documentation>A displayed mathematical equation</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:example)">example must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:table)">table must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:equation">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of equation</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.equation.attlist"/>
+        <ref name="db.equation.info"/>
         <optional>
           <ref name="db.alt"/>
         </optional>
+        <ref name="db.equation.content"/>
+        <optional>
+          <ref name="db.caption"/>
+        </optional>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.areaset.role.attribute">
+    <define name="db.informalequation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.areaset.linkends.attribute">
-      <ref name="db.linkends.attribute"/>
-    </define>
-    <define name="db.areaset.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.areaset.attlist">
+    <define name="db.informalequation.attlist">
       <interleave>
         <optional>
-          <ref name="db.areaset.role.attribute"/>
+          <ref name="db.informalequation.role.attribute"/>
         </optional>
-        <ref name="db.common.idreq.attributes"/>
-        <ref name="db.area.units.attribute"/>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.informalequation.info">
+      <ref name="db._info.title.forbidden"/>
+    </define>
+    <define name="db.informalequation">
+      <element name="informalequation">
+        <a:documentation>A displayed mathematical equation without a title</a:documentation>
+        <ref name="db.informalequation.attlist"/>
+        <ref name="db.informalequation.info"/>
         <optional>
-          <choice>
-            <ref name="db.areaset.linkends.attribute"/>
-            <ref name="db.href.attributes"/>
-          </choice>
+          <ref name="db.alt"/>
         </optional>
+        <ref name="db.equation.content"/>
         <optional>
-          <ref name="db.areaset.label.attribute"/>
+          <ref name="db.caption"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.areaset">
-      <element name="areaset">
-        <a:documentation>A set of related areas in a graphic or code example</a:documentation>
-        <ref name="db.areaset.attlist"/>
-        <oneOrMore>
-          <ref name="db.area.inareaset"/>
-        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.screenco.role.attribute">
+    <define name="db.inlineequation.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.screenco.attlist">
+    <define name="db.inlineequation.attlist">
       <interleave>
         <optional>
-          <ref name="db.screenco.role.attribute"/>
+          <ref name="db.inlineequation.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.screenco.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.screenco">
-      <element name="screenco">
-        <a:documentation>A screen with associated areas used in callouts</a:documentation>
-        <ref name="db.screenco.attlist"/>
-        <ref name="db.screenco.info"/>
-        <ref name="db.areaspec"/>
-        <ref name="db.screen"/>
-        <zeroOrMore>
-          <ref name="db.calloutlist"/>
-        </zeroOrMore>
+    <define name="db.inlineequation">
+      <element name="inlineequation">
+        <a:documentation>A mathematical equation or expression occurring inline</a:documentation>
+        <ref name="db.inlineequation.attlist"/>
+        <optional>
+          <ref name="db.alt"/>
+        </optional>
+        <ref name="db.inlineequation.content"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.imageobjectco.role.attribute">
+    <define name="db.mathphrase.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.imageobjectco.attlist">
+    <define name="db.mathphrase.attlist">
       <interleave>
         <optional>
-          <ref name="db.imageobjectco.role.attribute"/>
+          <ref name="db.mathphrase.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.imageobjectco.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.imageobjectco">
-      <element name="imageobjectco">
-        <a:documentation>A wrapper for an image object with callouts</a:documentation>
-        <ref name="db.imageobjectco.attlist"/>
-        <ref name="db.imageobjectco.info"/>
-        <ref name="db.areaspec"/>
-        <oneOrMore>
-          <ref name="db.imageobject"/>
-        </oneOrMore>
+    <define name="db.mathphrase">
+      <element name="mathphrase">
+        <a:documentation>A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup</a:documentation>
+        <ref name="db.mathphrase.attlist"/>
         <zeroOrMore>
-          <ref name="db.calloutlist"/>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.ubiq.inlines"/>
+            <ref name="db._emphasis"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.co.role.attribute">
+    <define name="db.imagedata.mathml.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.co.linkends.attribute">
-      <ref name="db.linkends.attribute"/>
-    </define>
-    <define name="db.co.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.co.attlist">
+    <define name="db.imagedata.mathml.attlist">
       <interleave>
         <optional>
-          <ref name="db.co.role.attribute"/>
+          <ref name="db.imagedata.mathml.role.attribute"/>
         </optional>
-        <ref name="db.common.idreq.attributes"/>
+        <ref name="db.common.attributes"/>
         <optional>
-          <ref name="db.co.linkends.attribute"/>
+          <attribute name="format">
+            <a:documentation>Specifies that the format of the data is MathML</a:documentation>
+            <value>mathml</value>
+            <a:documentation>Specifies MathML.</a:documentation>
+          </attribute>
         </optional>
         <optional>
-          <ref name="db.co.label.attribute"/>
+          <ref name="db.imagedata.align.attribute"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.co">
-      <element name="co">
-        <a:documentation>The location of a callout embedded in text</a:documentation>
-        <ref name="db.co.attlist"/>
-        <empty/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.coref.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.coref.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.coref.attlist">
-      <interleave>
         <optional>
-          <ref name="db.coref.role.attribute"/>
+          <ref name="db.imagedata.valign.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.linkend.attribute"/>
         <optional>
-          <ref name="db.coref.label.attribute"/>
+          <ref name="db.imagedata.width.attribute"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.coref">
-      <element name="coref">
-        <a:documentation>A cross reference to a co</a:documentation>
-        <ref name="db.coref.attlist"/>
-        <empty/>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.productionset.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.productionset.attlist">
-      <interleave>
         <optional>
-          <ref name="db.productionset.role.attribute"/>
+          <ref name="db.imagedata.contentwidth.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.scalefit.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.scale.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.depth.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.contentdepth.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.productionset.info">
-      <ref name="db._info.title.only"/>
+    <define name="db.imagedata.mathml.info">
+      <ref name="db._info.title.forbidden"/>
     </define>
-    <define name="db.productionset">
-      <element name="productionset">
-        <a:documentation>A set of EBNF productions</a:documentation>
-        <ref name="db.productionset.attlist"/>
-        <ref name="db.productionset.info"/>
+    <define name="db.imagedata.mathml">
+      <element name="imagedata">
+        <a:documentation>A MathML expression in a media object</a:documentation>
+        <ref name="db.imagedata.mathml.attlist"/>
+        <ref name="db.imagedata.mathml.info"/>
         <oneOrMore>
-          <choice>
-            <ref name="db.production"/>
-            <ref name="db.productionrecap"/>
-          </choice>
+          <ref name="db._any.mml"/>
         </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.production.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.production.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.production.role.attribute"/>
-        </optional>
-        <ref name="db.common.idreq.attributes"/>
-        <ref name="db.common.linking.attributes"/>
-      </interleave>
-    </define>
-    <define name="db.production">
-      <element name="production">
-        <a:documentation>A production in a set of EBNF productions</a:documentation>
-        <ref name="db.production.attlist"/>
-        <ref name="db.lhs"/>
-        <ref name="db.rhs"/>
+    <define name="db._any.mml">
+      <element>
+        <a:documentation>Any element from the MathML namespace</a:documentation>
+        <nsName ns="http://www.w3.org/1998/Math/MathML"/>
         <zeroOrMore>
-          <ref name="db.constraint"/>
+          <choice>
+            <ref name="db._any.attribute"/>
+            <text/>
+            <ref name="db._any"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.lhs.role.attribute">
+    <define name="db.imagedata.svg.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.lhs.attlist">
+    <define name="db.imagedata.svg.attlist">
       <interleave>
         <optional>
-          <ref name="db.lhs.role.attribute"/>
+          <ref name="db.imagedata.svg.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <attribute name="format">
+            <a:documentation>Specifies that the format of the data is SVG</a:documentation>
+            <value>svg</value>
+            <a:documentation>Specifies SVG.</a:documentation>
+          </attribute>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.align.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.valign.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.width.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.contentwidth.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.scalefit.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.scale.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.depth.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.imagedata.contentdepth.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.lhs">
-      <element name="lhs">
-        <a:documentation>The left-hand side of an EBNF production</a:documentation>
-        <ref name="db.lhs.attlist"/>
-        <text/>
-      </element>
+    <define name="db.imagedata.svg.info">
+      <ref name="db._info.title.forbidden"/>
+    </define>
+    <define name="db.imagedata.svg">
+      <element name="imagedata">
+        <a:documentation>An SVG drawing in a media object</a:documentation>
+        <ref name="db.imagedata.svg.attlist"/>
+        <ref name="db.imagedata.svg.info"/>
+        <oneOrMore>
+          <ref name="db._any.svg"/>
+        </oneOrMore>
+      </element>
     </define>
   </div>
   <div>
-    <define name="db.rhs.role.attribute">
+    <define name="db._any.svg">
+      <element>
+        <a:documentation>Any element from the SVG namespace</a:documentation>
+        <nsName ns="http://www.w3.org/2000/svg"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._any.attribute"/>
+            <text/>
+            <ref name="db._any"/>
+          </choice>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <define name="db.markup.inlines">
+    <choice>
+      <ref name="db.tag"/>
+      <ref name="db.markup"/>
+      <ref name="db.token"/>
+      <ref name="db.symbol"/>
+      <ref name="db.literal"/>
+      <ref name="db.code"/>
+      <ref name="db.constant"/>
+      <ref name="db.email"/>
+      <ref name="db.uri"/>
+    </choice>
+  </define>
+  <div>
+    <define name="db.markup.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.rhs.attlist">
+    <define name="db.markup.attlist">
       <interleave>
         <optional>
-          <ref name="db.rhs.role.attribute"/>
+          <ref name="db.markup.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.rhs">
-      <element name="rhs">
-        <a:documentation>The right-hand side of an EBNF production</a:documentation>
-        <ref name="db.rhs.attlist"/>
-        <zeroOrMore>
-          <choice>
-            <text/>
-            <ref name="db.nonterminal"/>
-            <ref name="db.lineannotation"/>
-            <ref name="db.sbr"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.markup">
+      <element name="markup">
+        <a:documentation>A string of formatting markup in text that is to be represented literally</a:documentation>
+        <ref name="db.markup.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.nonterminal.role.attribute">
+    <define name="db.tag.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.nonterminal.def.attribute">
-      <attribute name="def">
-        <a:documentation>Specifies a URI that points to a production
-where the nonterminal
- is defined</a:documentation>
+    <define name="db.tag.class.enumeration">
+      <choice>
+        <value>attribute</value>
+        <a:documentation>An attribute</a:documentation>
+        <value>attvalue</value>
+        <a:documentation>An attribute value</a:documentation>
+        <value>element</value>
+        <a:documentation>An element</a:documentation>
+        <value>emptytag</value>
+        <a:documentation>An empty element tag</a:documentation>
+        <value>endtag</value>
+        <a:documentation>An end tag</a:documentation>
+        <value>genentity</value>
+        <a:documentation>A general entity</a:documentation>
+        <value>localname</value>
+        <a:documentation>The local name part of a qualified name</a:documentation>
+        <value>namespace</value>
+        <a:documentation>A namespace</a:documentation>
+        <value>numcharref</value>
+        <a:documentation>A numeric character reference</a:documentation>
+        <value>paramentity</value>
+        <a:documentation>A parameter entity</a:documentation>
+        <value>pi</value>
+        <a:documentation>A processing instruction</a:documentation>
+        <value>prefix</value>
+        <a:documentation>The prefix part of a qualified name</a:documentation>
+        <value>comment</value>
+        <a:documentation>An SGML comment</a:documentation>
+        <value>starttag</value>
+        <a:documentation>A start tag</a:documentation>
+        <value>xmlpi</value>
+        <a:documentation>An XML processing instruction</a:documentation>
+      </choice>
+    </define>
+    <define name="db.tag.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the nature of the tag content</a:documentation>
+        <ref name="db.tag.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.tag.namespace.attribute">
+      <attribute name="namespace">
+        <a:documentation>Identifies the namespace of the tag content</a:documentation>
         <data type="anyURI"/>
       </attribute>
     </define>
-    <define name="db.nonterminal.attlist">
+    <define name="db.tag.attlist">
       <interleave>
         <optional>
-          <ref name="db.nonterminal.role.attribute"/>
+          <ref name="db.tag.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.nonterminal.def.attribute"/>
+        <optional>
+          <ref name="db.tag.class.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.tag.namespace.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.nonterminal">
-      <element name="nonterminal">
-        <a:documentation>A non-terminal in an EBNF production</a:documentation>
-        <ref name="db.nonterminal.attlist"/>
-        <text/>
+    <define name="db.tag">
+      <element name="tag">
+        <a:documentation>A component of XML (or SGML) markup</a:documentation>
+        <ref name="db.tag.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.constraint.role.attribute">
+    <define name="db.symbol.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of symbol</a:documentation>
+        <value>limit</value>
+        <a:documentation>The value is a limit of some kind</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.symbol.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.constraint.attlist">
+    <define name="db.symbol.attlist">
       <interleave>
         <optional>
-          <ref name="db.constraint.role.attribute"/>
+          <ref name="db.symbol.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.req.linking.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.symbol.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.constraint">
-      <element name="constraint">
-        <a:documentation>A constraint in an EBNF production</a:documentation>
-        <ref name="db.constraint.attlist"/>
-        <empty/>
+    <define name="db.symbol">
+      <element name="symbol">
+        <a:documentation>A name that is replaced by a value before processing</a:documentation>
+        <ref name="db.symbol.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.productionrecap.role.attribute">
+    <define name="db.token.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.productionrecap.attlist">
+    <define name="db.token.attlist">
       <interleave>
         <optional>
-          <ref name="db.productionrecap.role.attribute"/>
+          <ref name="db.token.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <ref name="db.common.req.linking.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.productionrecap">
-      <element name="productionrecap">
-        <a:documentation>A cross-reference to an EBNF production</a:documentation>
-        <ref name="db.productionrecap.attlist"/>
-        <empty/>
+    <define name="db.token">
+      <element name="token">
+        <a:documentation>A unit of information</a:documentation>
+        <ref name="db.token.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.constraintdef.role.attribute">
+    <define name="db.literal.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.constraintdef.attlist">
+    <define name="db.literal.attlist">
       <interleave>
         <optional>
-          <ref name="db.constraintdef.role.attribute"/>
+          <ref name="db.literal.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.constraintdef.info">
-      <ref name="db._info.title.only"/>
+    <define name="db.literal">
+      <element name="literal">
+        <a:documentation>Inline text that is some literal value</a:documentation>
+        <ref name="db.literal.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
-    <define name="db.constraintdef">
-      <element name="constraintdef">
-        <a:documentation>The definition of a constraint in an EBNF production</a:documentation>
-        <ref name="db.constraintdef.attlist"/>
-        <ref name="db.constraintdef.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+  </div>
+  <div>
+    <define name="code.language.attribute">
+      <attribute name="language">
+        <a:documentation>Identifies the (computer) language of the code fragment</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.code.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.code.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.code.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="code.language.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.code">
+      <element name="code">
+        <a:documentation>An inline code fragment</a:documentation>
+        <ref name="db.code.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.programming.inlines"/>
+            <ref name="db._text"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
-  <define name="db.char.attribute">
-    <attribute name="char">
-      <a:documentation>Specifies the alignment character when align
- is set to char
-.</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.charoff.attribute">
-    <attribute name="charoff">
-      <a:documentation>Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char
- when align
- is set to char
-.</a:documentation>
-      <data type="decimal">
-        <param name="minExclusive">0</param>
-        <param name="maxExclusive">100</param>
-      </data>
-    </attribute>
-  </define>
-  <define name="db.frame.attribute">
-    <attribute name="frame">
-      <a:documentation>Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table.</a:documentation>
-      <choice>
-        <value>all</value>
-        <a:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</a:documentation>
-        <value>bottom</value>
-        <a:documentation>Frame only the bottom of the table.</a:documentation>
-        <value>none</value>
-        <a:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</a:documentation>
-        <value>sides</value>
-        <a:documentation>Frame the left and right sides of the table.</a:documentation>
-        <value>top</value>
-        <a:documentation>Frame the top of the table.</a:documentation>
-        <value>topbot</value>
-        <a:documentation>Frame the top and bottom of the table.</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.colsep.attribute">
-    <attribute name="colsep">
-      <a:documentation>Specifies the presence or absence of the column separator</a:documentation>
-      <choice>
-        <value>0</value>
-        <a:documentation>No column separator rule.</a:documentation>
-        <value>1</value>
-        <a:documentation>Provide a column separator rule on the right</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.rowsep.attribute">
-    <attribute name="rowsep">
-      <a:documentation>Specifies the presence or absence of the row separator</a:documentation>
-      <choice>
-        <value>0</value>
-        <a:documentation>No row separator rule.</a:documentation>
-        <value>1</value>
-        <a:documentation>Provide a row separator rule below</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.orient.attribute">
-    <attribute name="orient">
-      <a:documentation>Specifies the orientation of the table</a:documentation>
-      <choice>
-        <value>land</value>
-        <a:documentation>90 degrees counter-clockwise from the rest of the text flow.</a:documentation>
-        <value>port</value>
-        <a:documentation>The same orientation as the rest of the text flow.</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.tabstyle.attribute">
-    <attribute name="tabstyle">
-      <a:documentation>Specifies the table style</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.rowheader.attribute">
-    <attribute name="rowheader">
-      <a:documentation>Indicates whether or not the entries in the first column should be considered row headers</a:documentation>
-      <choice>
-        <value>firstcol</value>
-        <a:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</a:documentation>
-        <value>norowheader</value>
-        <a:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.align.attribute">
-    <attribute name="align">
-      <a:documentation>Specifies the horizontal alignment of text in an entry.</a:documentation>
-      <choice>
-        <value>center</value>
-        <a:documentation>Centered.</a:documentation>
-        <value>char</value>
-        <a:documentation>Aligned on a particular character.</a:documentation>
-        <value>justify</value>
-        <a:documentation>Left and right justified.</a:documentation>
-        <value>left</value>
-        <a:documentation>Left justified.</a:documentation>
-        <value>right</value>
-        <a:documentation>Right justified.</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.valign.attribute">
-    <attribute name="valign">
-      <a:documentation>Specifies the vertical alignment of text in an entry.</a:documentation>
-      <choice>
-        <value>bottom</value>
-        <a:documentation>Aligned on the bottom of the entry.</a:documentation>
-        <value>middle</value>
-        <a:documentation>Aligned in the middle.</a:documentation>
-        <value>top</value>
-        <a:documentation>Aligned at the top of the entry.</a:documentation>
-      </choice>
-    </attribute>
-  </define>
-  <define name="db.specify-col-by-colname.attributes">
-    <attribute name="colname">
-      <a:documentation>Specifies a column specification by name.</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.specify-col-by-namest.attributes">
-    <attribute name="namest">
-      <a:documentation>Specifies a starting column by name.</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.specify-span-by-spanspec.attributes">
-    <attribute name="spanname">
-      <a:documentation>Specifies a span by name.</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.specify-span-directly.attributes">
-    <interleave>
-      <attribute name="namest">
-        <a:documentation>Specifies a starting column by name.</a:documentation>
-      </attribute>
-      <attribute name="nameend">
-        <a:documentation>Specifies an ending column by name.</a:documentation>
-      </attribute>
-    </interleave>
-  </define>
-  <define name="db.column-spec.attributes">
-    <choice>
-      <ref name="db.specify-col-by-colname.attributes"/>
-      <ref name="db.specify-col-by-namest.attributes"/>
-      <ref name="db.specify-span-by-spanspec.attributes"/>
-      <ref name="db.specify-span-directly.attributes"/>
-    </choice>
-  </define>
-  <define name="db.colname.attribute">
-    <attribute name="colname">
-      <a:documentation>Provides a name for a column specification.</a:documentation>
-    </attribute>
-  </define>
-  <define name="db.spanname.attribute">
-    <attribute name="spanname">
-      <a:documentation>Provides a name for a span specification.</a:documentation>
-    </attribute>
-  </define>
   <div>
-    <define name="db.tgroup.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.tgroup.tgroupstyle.attribute">
-      <attribute name="tgroupstyle">
-        <a:documentation>Additional style information for downstream processing; typically the name of a style.</a:documentation>
+    <define name="db.constant.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of constant</a:documentation>
+        <value>limit</value>
+        <a:documentation>The value is a limit of some kind</a:documentation>
       </attribute>
     </define>
-    <define name="db.tgroup.cols.attribute">
-      <attribute name="cols">
-        <a:documentation>The number of columns in the table. Must be an integer greater than zero.</a:documentation>
-        <data type="positiveInteger"/>
-      </attribute>
+    <define name="db.constant.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.tgroup.attlist">
+    <define name="db.constant.attlist">
       <interleave>
         <optional>
-          <ref name="db.tgroup.role.attribute"/>
+          <ref name="db.constant.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.char.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.charoff.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.tgroup.tgroupstyle.attribute"/>
-        </optional>
-        <ref name="db.tgroup.cols.attribute"/>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.align.attribute"/>
+          <ref name="db.constant.class.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.tgroup">
-      <element name="tgroup">
-        <a:documentation>A wrapper for the main content of a table, or part of a table</a:documentation>
-        <ref name="db.tgroup.attlist"/>
-        <zeroOrMore>
-          <ref name="db.colspec"/>
-        </zeroOrMore>
-        <zeroOrMore>
-          <ref name="db.spanspec"/>
-        </zeroOrMore>
-        <optional>
-          <ref name="db.cals.thead"/>
-        </optional>
-        <optional>
-          <ref name="db.cals.tfoot"/>
-        </optional>
-        <ref name="db.cals.tbody"/>
+    <define name="db.constant">
+      <element name="constant">
+        <a:documentation>A programming or system constant</a:documentation>
+        <ref name="db.constant.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.colspec.role.attribute">
+    <define name="db.productname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.colspec.colnum.attribute">
-      <attribute name="colnum">
-        <a:documentation>The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one.</a:documentation>
-        <data type="positiveInteger"/>
-      </attribute>
+    <define name="db.productname.class.enumeration">
+      <choice>
+        <value>copyright</value>
+        <a:documentation>A name with a copyright</a:documentation>
+        <value>registered</value>
+        <a:documentation>A name with a registered copyright</a:documentation>
+        <value>service</value>
+        <a:documentation>A name of a service</a:documentation>
+        <value>trade</value>
+        <a:documentation>A name which is trademarked</a:documentation>
+      </choice>
     </define>
-    <define name="db.colspec.colwidth.attribute">
-      <attribute name="colwidth">
-        <a:documentation>Specifies the width of the column.</a:documentation>
+    <define name="db.productname.class.attribute">
+      <attribute name="class">
+        <a:documentation>Specifies the class of product name</a:documentation>
+        <ref name="db.productname.class.enumeration"/>
       </attribute>
     </define>
-    <define name="db.colspec.attlist">
+    <define name="db.productname.attlist">
       <interleave>
         <optional>
-          <ref name="db.colspec.role.attribute"/>
+          <ref name="db.productname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.colspec.colnum.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.char.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colspec.colwidth.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.charoff.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colname.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.align.attribute"/>
+          <ref name="db.productname.class.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.colspec">
-      <element name="colspec">
-        <a:documentation>Specifications for a column in a table</a:documentation>
-        <ref name="db.colspec.attlist"/>
-        <empty/>
-      </element>
+    <define name="db.productname">
+      <element name="productname">
+        <a:documentation>The formal name of a product</a:documentation>
+        <ref name="db.productname.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
   </div>
   <div>
-    <define name="db.spanspec.role.attribute">
+    <define name="db.productnumber.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.spanspec.namest.attribute">
-      <attribute name="namest">
-        <a:documentation>Specifies a starting column by name.</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.spanspec.nameend.attribute">
-      <attribute name="nameend">
-        <a:documentation>Specifies an ending column by name.</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.spanspec.attlist">
+    <define name="db.productnumber.attlist">
       <interleave>
         <optional>
-          <ref name="db.spanspec.role.attribute"/>
+          <ref name="db.productnumber.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <ref name="db.spanname.attribute"/>
-        <ref name="db.spanspec.namest.attribute"/>
-        <ref name="db.spanspec.nameend.attribute"/>
-        <optional>
-          <ref name="db.char.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.charoff.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.align.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.spanspec">
-      <element name="spanspec">
-        <a:documentation>Formatting information for a spanned column in a table</a:documentation>
-        <ref name="db.spanspec.attlist"/>
-        <empty/>
+    <define name="db.productnumber">
+      <element name="productnumber">
+        <a:documentation>A number assigned to a product</a:documentation>
+        <ref name="db.productnumber.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cals.thead.role.attribute">
+    <define name="db.database.class.enumeration">
+      <choice>
+        <value>altkey</value>
+        <a:documentation>An alternate or secondary key</a:documentation>
+        <value>constraint</value>
+        <a:documentation>A constraint</a:documentation>
+        <value>datatype</value>
+        <a:documentation>A data type</a:documentation>
+        <value>field</value>
+        <a:documentation>A field</a:documentation>
+        <value>foreignkey</value>
+        <a:documentation>A foreign key</a:documentation>
+        <value>group</value>
+        <a:documentation>A group</a:documentation>
+        <value>index</value>
+        <a:documentation>An index</a:documentation>
+        <value>key1</value>
+        <a:documentation>The first or primary key</a:documentation>
+        <value>key2</value>
+        <a:documentation>An alternate or secondary key</a:documentation>
+        <value>name</value>
+        <a:documentation>A name</a:documentation>
+        <value>primarykey</value>
+        <a:documentation>The primary key</a:documentation>
+        <value>procedure</value>
+        <a:documentation>A (stored) procedure</a:documentation>
+        <value>record</value>
+        <a:documentation>A record</a:documentation>
+        <value>rule</value>
+        <a:documentation>A rule</a:documentation>
+        <value>secondarykey</value>
+        <a:documentation>The secondary key</a:documentation>
+        <value>table</value>
+        <a:documentation>A table</a:documentation>
+        <value>user</value>
+        <a:documentation>A user</a:documentation>
+        <value>view</value>
+        <a:documentation>A view</a:documentation>
+      </choice>
+    </define>
+    <define name="db.database.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of database artifact</a:documentation>
+        <ref name="db.database.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.database.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.thead.attlist">
+    <define name="db.database.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.thead.role.attribute"/>
+          <ref name="db.database.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.valign.attribute"/>
+          <ref name="db.database.class.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.cals.thead">
-      <element name="thead">
-        <a:documentation>A table header consisting of one or more rows</a:documentation>
-        <ref name="db.cals.thead.attlist"/>
-        <zeroOrMore>
-          <ref name="db.colspec"/>
-        </zeroOrMore>
-        <oneOrMore>
-          <ref name="db.row"/>
-        </oneOrMore>
+    <define name="db.database">
+      <element name="database">
+        <a:documentation>The name of a database, or part of a database</a:documentation>
+        <ref name="db.database.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cals.tfoot.role.attribute">
+    <define name="db.application.class.enumeration">
+      <choice>
+        <value>hardware</value>
+        <a:documentation>A hardware application</a:documentation>
+        <value>software</value>
+        <a:documentation>A software application</a:documentation>
+      </choice>
+    </define>
+    <define name="db.application.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of application</a:documentation>
+        <ref name="db.application.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.application.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.tfoot.attlist">
+    <define name="db.application.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.tfoot.role.attribute"/>
+          <ref name="db.application.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.valign.attribute"/>
+          <ref name="db.application.class.attribute"/>
         </optional>
       </interleave>
     </define>
-    <define name="db.cals.tfoot">
-      <element name="tfoot">
-        <a:documentation>A table footer consisting of one or more rows</a:documentation>
-        <ref name="db.cals.tfoot.attlist"/>
-        <zeroOrMore>
-          <ref name="db.colspec"/>
-        </zeroOrMore>
-        <oneOrMore>
-          <ref name="db.row"/>
-        </oneOrMore>
+    <define name="db.application">
+      <element name="application">
+        <a:documentation>The name of a software program</a:documentation>
+        <ref name="db.application.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cals.tbody.role.attribute">
+    <define name="db.hardware.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.tbody.attlist">
+    <define name="db.hardware.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.tbody.role.attribute"/>
+          <ref name="db.hardware.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.valign.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.cals.tbody">
-      <element name="tbody">
-        <a:documentation>A wrapper for the rows of a table or informal table</a:documentation>
-        <ref name="db.cals.tbody.attlist"/>
-        <oneOrMore>
-          <ref name="db.row"/>
-        </oneOrMore>
+    <define name="db.hardware">
+      <element name="hardware">
+        <a:documentation>A physical part of a computer system</a:documentation>
+        <ref name="db.hardware.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
+  <define name="db.gui.inlines">
+    <choice>
+      <ref name="db.guiicon"/>
+      <ref name="db.guibutton"/>
+      <ref name="db.guimenuitem"/>
+      <ref name="db.guimenu"/>
+      <ref name="db.guisubmenu"/>
+      <ref name="db.guilabel"/>
+      <ref name="db.menuchoice"/>
+      <ref name="db.mousebutton"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.row.role.attribute">
+    <define name="db.guibutton.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.row.attlist">
+    <define name="db.guibutton.attlist">
       <interleave>
         <optional>
-          <ref name="db.row.role.attribute"/>
+          <ref name="db.guibutton.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.valign.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.row">
-      <element name="row">
-        <a:documentation>A row in a table</a:documentation>
-        <ref name="db.row.attlist"/>
-        <oneOrMore>
+    <define name="db.guibutton">
+      <element name="guibutton">
+        <a:documentation>The text on a button in a GUI</a:documentation>
+        <ref name="db.guibutton.attlist"/>
+        <zeroOrMore>
           <choice>
-            <ref name="db.entry"/>
-            <ref name="db.entrytbl"/>
+            <ref name="db._text"/>
+            <ref name="db.accel"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
           </choice>
-        </oneOrMore>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.entry.role.attribute">
+    <define name="db.guiicon.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.entry.morerows.attribute">
-      <attribute name="morerows">
-        <a:documentation>Specifies the number of additional rows which this entry occupies. Defaults to zero.</a:documentation>
-        <data type="integer"/>
-      </attribute>
-    </define>
-    <define name="db.entry.rotate.attribute">
-      <attribute name="rotate">
-        <a:documentation>Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.</a:documentation>
-        <choice>
-          <value>0</value>
-          <a:documentation>Do not rotate the cell.</a:documentation>
-          <value>1</value>
-          <a:documentation>Rotate the cell 90 degrees counter-clockwise.</a:documentation>
-        </choice>
-      </attribute>
-    </define>
-    <define name="db.entry.attlist">
+    <define name="db.guiicon.attlist">
       <interleave>
         <optional>
-          <ref name="db.entry.role.attribute"/>
+          <ref name="db.guiicon.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.valign.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.char.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.charoff.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.entry.morerows.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.column-spec.attributes"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.entry.rotate.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.align.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.entry">
-      <element name="entry">
-        <a:documentation>A cell in a table</a:documentation>
-        <ref name="db.entry.attlist"/>
-        <choice>
-          <zeroOrMore>
-            <ref name="db.all.inlines"/>
-          </zeroOrMore>
-          <zeroOrMore>
-            <ref name="db.all.blocks"/>
-          </zeroOrMore>
-        </choice>
+    <define name="db.guiicon">
+      <element name="guiicon">
+        <a:documentation>Graphic and/or text appearing as a icon in a GUI</a:documentation>
+        <ref name="db.guiicon.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.accel"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.entrytbl.role.attribute">
+    <define name="db.guilabel.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.entrytbl.tgroupstyle.attribute">
-      <attribute name="tgroupstyle">
-        <a:documentation>Additional style information for downstream processing; typically the name of a style.</a:documentation>
-      </attribute>
-    </define>
-    <define name="db.entrytbl.cols.attribute">
-      <attribute name="cols">
-        <a:documentation>The number of columns in the entry table. Must be an integer greater than zero.</a:documentation>
-        <data type="positiveInteger"/>
-      </attribute>
-    </define>
-    <define name="db.entrytbl.attlist">
+    <define name="db.guilabel.attlist">
       <interleave>
         <optional>
-          <ref name="db.entrytbl.role.attribute"/>
+          <ref name="db.guilabel.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.char.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.charoff.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.column-spec.attributes"/>
-        </optional>
-        <optional>
-          <ref name="db.entrytbl.tgroupstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.entrytbl.cols.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.align.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.entrytbl">
-      <element name="entrytbl">
-        <a:documentation>A subtable appearing in place of an Entry in a table</a:documentation>
-        <ref name="db.entrytbl.attlist"/>
-        <zeroOrMore>
-          <ref name="db.colspec"/>
-        </zeroOrMore>
+    <define name="db.guilabel">
+      <element name="guilabel">
+        <a:documentation>The text of a label in a GUI</a:documentation>
+        <ref name="db.guilabel.attlist"/>
         <zeroOrMore>
-          <ref name="db.spanspec"/>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.accel"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+          </choice>
         </zeroOrMore>
-        <optional>
-          <ref name="db.cals.entrytbl.thead"/>
-        </optional>
-        <ref name="db.cals.entrytbl.tbody"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cals.entrytbl.thead.role.attribute">
+    <define name="db.guimenu.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.entrytbl.thead.attlist">
+    <define name="db.guimenu.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.entrytbl.thead.role.attribute"/>
+          <ref name="db.guimenu.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.valign.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.cals.entrytbl.thead">
-      <element name="thead">
-        <a:documentation>A table header consisting of one or more rows</a:documentation>
-        <ref name="db.cals.entrytbl.thead.attlist"/>
+    <define name="db.guimenu">
+      <element name="guimenu">
+        <a:documentation>The name of a menu in a GUI</a:documentation>
+        <ref name="db.guimenu.attlist"/>
         <zeroOrMore>
-          <ref name="db.colspec"/>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.accel"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+          </choice>
         </zeroOrMore>
-        <oneOrMore>
-          <ref name="db.entrytbl.row"/>
-        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cals.entrytbl.tbody.role.attribute">
+    <define name="db.guimenuitem.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.entrytbl.tbody.attlist">
+    <define name="db.guimenuitem.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.entrytbl.tbody.role.attribute"/>
+          <ref name="db.guimenuitem.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.valign.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.cals.entrytbl.tbody">
-      <element name="tbody">
-        <a:documentation>A wrapper for the rows of a table or informal table</a:documentation>
-        <ref name="db.cals.entrytbl.tbody.attlist"/>
-        <oneOrMore>
-          <ref name="db.entrytbl.row"/>
-        </oneOrMore>
+    <define name="db.guimenuitem">
+      <element name="guimenuitem">
+        <a:documentation>The name of a terminal menu item in a GUI</a:documentation>
+        <ref name="db.guimenuitem.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.accel"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.entrytbl.row.role.attribute">
+    <define name="db.guisubmenu.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.entrytbl.row.attlist">
+    <define name="db.guisubmenu.attlist">
       <interleave>
         <optional>
-          <ref name="db.entrytbl.row.role.attribute"/>
+          <ref name="db.guisubmenu.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.valign.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.entrytbl.row">
-      <element name="row">
-        <a:documentation>A row in a table</a:documentation>
-        <ref name="db.entrytbl.row.attlist"/>
-        <oneOrMore>
-          <ref name="db.entry"/>
-        </oneOrMore>
+    <define name="db.guisubmenu">
+      <element name="guisubmenu">
+        <a:documentation>The name of a submenu in a GUI</a:documentation>
+        <ref name="db.guisubmenu.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.accel"/>
+            <ref name="db.superscript"/>
+            <ref name="db.subscript"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.cals.table.role.attribute">
+    <define name="db.menuchoice.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.table.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.cals.table.attlist">
+    <define name="db.menuchoice.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.table.role.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.cals.table.label.attribute"/>
+          <ref name="db.menuchoice.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.menuchoice">
+      <element name="menuchoice">
+        <a:documentation>A selection or series of selections from a menu</a:documentation>
+        <ref name="db.menuchoice.attlist"/>
         <optional>
-          <ref name="db.tabstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.floatstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.orient.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.frame.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.pgwide.attribute"/>
+          <ref name="db.shortcut"/>
         </optional>
+        <oneOrMore>
+          <choice>
+            <ref name="db.guibutton"/>
+            <ref name="db.guiicon"/>
+            <ref name="db.guilabel"/>
+            <ref name="db.guimenu"/>
+            <ref name="db.guimenuitem"/>
+            <ref name="db.guisubmenu"/>
+          </choice>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.mousebutton.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.mousebutton.attlist">
+      <interleave>
         <optional>
-          <attribute name="shortentry">
-            <a:documentation>Indicates if the short or long title should be used in a List of Tables</a:documentation>
-            <choice>
-              <value>0</value>
-              <a:documentation>Indicates that the full title should be used.</a:documentation>
-              <value>1</value>
-              <a:documentation>Indicates that the short short title (titleabbrev) should be used.</a:documentation>
-            </choice>
-          </attribute>
-        </optional>
-        <optional>
-          <attribute name="tocentry">
-            <a:documentation>Indicates if the table should appear in a List of Tables</a:documentation>
-            <choice>
-              <value>0</value>
-              <a:documentation>Indicates that the table should not occur in the List of Tables.</a:documentation>
-              <value>1</value>
-              <a:documentation>Indicates that the table should appear in the List of Tables.</a:documentation>
-            </choice>
-          </attribute>
-        </optional>
-        <optional>
-          <ref name="db.rowheader.attribute"/>
+          <ref name="db.mousebutton.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.cals.table.info">
-      <ref name="db._info.title.onlyreq"/>
-    </define>
-    <define name="db.cals.table">
-      <element name="table">
-        <a:documentation>A formal table in a document</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:example)">example must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:informaltable)">informaltable must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.cals.table.attlist"/>
-        <ref name="db.cals.table.info"/>
-        <interleave>
-          <optional>
-            <ref name="db.alt"/>
-          </optional>
-          <zeroOrMore>
-            <ref name="db.indexing.inlines"/>
-          </zeroOrMore>
-          <zeroOrMore>
-            <ref name="db.textobject"/>
-          </zeroOrMore>
-        </interleave>
-        <choice>
-          <oneOrMore>
-            <ref name="db.mediaobject"/>
-          </oneOrMore>
-          <oneOrMore>
-            <ref name="db.tgroup"/>
-          </oneOrMore>
-        </choice>
-        <optional>
-          <ref name="db.caption"/>
-        </optional>
+    <define name="db.mousebutton">
+      <element name="mousebutton">
+        <a:documentation>The conventional name of a mouse button</a:documentation>
+        <ref name="db.mousebutton.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
+  <define name="db.keyboard.inlines">
+    <choice>
+      <ref name="db.keycombo"/>
+      <ref name="db.keycap"/>
+      <ref name="db.keycode"/>
+      <ref name="db.keysym"/>
+      <ref name="db.shortcut"/>
+      <ref name="db.accel"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.cals.informaltable.role.attribute">
+    <define name="db.keycap.function.enumeration">
+      <choice>
+        <value>alt</value>
+        <a:documentation>The "Alt" key</a:documentation>
+        <value>backspace</value>
+        <a:documentation>The "Backspace" key</a:documentation>
+        <value>command</value>
+        <a:documentation>The "Command" key</a:documentation>
+        <value>control</value>
+        <a:documentation>The "Control" key</a:documentation>
+        <value>delete</value>
+        <a:documentation>The "Delete" key</a:documentation>
+        <value>down</value>
+        <a:documentation>The down arrow</a:documentation>
+        <value>end</value>
+        <a:documentation>The "End" key</a:documentation>
+        <value>enter</value>
+        <a:documentation>The "Enter" or "Return" key</a:documentation>
+        <value>escape</value>
+        <a:documentation>The "Escape" key</a:documentation>
+        <value>home</value>
+        <a:documentation>The "Home" key</a:documentation>
+        <value>insert</value>
+        <a:documentation>The "Insert" key</a:documentation>
+        <value>left</value>
+        <a:documentation>The left arrow</a:documentation>
+        <value>meta</value>
+        <a:documentation>The "Meta" key</a:documentation>
+        <value>option</value>
+        <a:documentation>The "Option" key</a:documentation>
+        <value>pagedown</value>
+        <a:documentation>The page down key</a:documentation>
+        <value>pageup</value>
+        <a:documentation>The page up key</a:documentation>
+        <value>right</value>
+        <a:documentation>The right arrow</a:documentation>
+        <value>shift</value>
+        <a:documentation>The "Shift" key</a:documentation>
+        <value>space</value>
+        <a:documentation>The spacebar</a:documentation>
+        <value>tab</value>
+        <a:documentation>The "Tab" key</a:documentation>
+        <value>up</value>
+        <a:documentation>The up arrow</a:documentation>
+      </choice>
+    </define>
+    <define name="db.keycap.function-enum.attribute">
+      <optional>
+        <attribute name="function">
+          <a:documentation>Identifies the function key</a:documentation>
+          <ref name="db.keycap.function.enumeration"/>
+        </attribute>
+      </optional>
+    </define>
+    <define name="db.keycap.function-other.attributes">
+      <optional>
+        <attribute name="function">
+          <a:documentation>Identifies the function key</a:documentation>
+          <value>other</value>
+          <a:documentation>Indicates a non-standard function key</a:documentation>
+        </attribute>
+      </optional>
+      <attribute name="otherfunction">
+        <a:documentation>Specifies a keyword that identifies the non-standard key</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.keycap.function.attrib">
+      <choice>
+        <ref name="db.keycap.function-enum.attribute"/>
+        <ref name="db.keycap.function-other.attributes"/>
+      </choice>
+    </define>
+    <define name="db.keycap.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.cals.informaltable.attlist">
+    <define name="db.keycap.attlist">
       <interleave>
         <optional>
-          <ref name="db.cals.informaltable.role.attribute"/>
+          <ref name="db.keycap.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.tabstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.floatstyle.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.orient.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.colsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowsep.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.frame.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.pgwide.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.rowheader.attribute"/>
-        </optional>
+        <ref name="db.keycap.function.attrib"/>
       </interleave>
     </define>
-    <define name="db.cals.informaltable.info">
-      <ref name="db._info.title.forbidden"/>
+    <define name="db.keycap">
+      <element name="keycap">
+        <a:documentation>The text printed on a key on a keyboard</a:documentation>
+        <ref name="db.keycap.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
-    <define name="db.cals.informaltable">
-      <element name="informaltable">
-        <a:documentation>A table without a title</a:documentation>
-        <ref name="db.cals.informaltable.attlist"/>
-        <ref name="db.cals.informaltable.info"/>
-        <interleave>
-          <optional>
-            <ref name="db.alt"/>
-          </optional>
-          <zeroOrMore>
-            <ref name="db.indexing.inlines"/>
-          </zeroOrMore>
-          <zeroOrMore>
-            <ref name="db.textobject"/>
-          </zeroOrMore>
-        </interleave>
-        <choice>
-          <oneOrMore>
-            <ref name="db.mediaobject"/>
-          </oneOrMore>
-          <oneOrMore>
-            <ref name="db.tgroup"/>
-          </oneOrMore>
-        </choice>
+  </div>
+  <div>
+    <define name="db.keycode.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.keycode.attlist">
+      <interleave>
         <optional>
-          <ref name="db.caption"/>
+          <ref name="db.keycode.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.keycode">
+      <element name="keycode">
+        <a:documentation>The internal, frequently numeric, identifier for a key on a keyboard</a:documentation>
+        <ref name="db.keycode.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
-  <define name="db.html.coreattrs">
-    <interleave>
-      <optional>
-        <attribute name="class">
-          <a:documentation>This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.</a:documentation>
-        </attribute>
-      </optional>
+  <define name="db.keycombination.contentmodel">
+    <choice>
+      <choice>
+        <ref name="db.keycap"/>
+        <ref name="db.keycombo"/>
+        <ref name="db.keysym"/>
+      </choice>
+      <ref name="db.mousebutton"/>
+    </choice>
+  </define>
+  <div>
+    <define name="db.keycombo.action.enumeration">
+      <choice>
+        <value>click</value>
+        <a:documentation>A (single) mouse click.</a:documentation>
+        <value>double-click</value>
+        <a:documentation>A double mouse click.</a:documentation>
+        <value>press</value>
+        <a:documentation>A mouse or key press.</a:documentation>
+        <value>seq</value>
+        <a:documentation>Sequential clicks or presses.</a:documentation>
+        <value>simul</value>
+        <a:documentation>Simultaneous clicks or presses.</a:documentation>
+      </choice>
+    </define>
+    <define name="db.keycombo.action-enum.attribute">
       <optional>
-        <attribute name="style">
-          <a:documentation>This attribute specifies style information for the current element.</a:documentation>
+        <attribute name="action">
+          <a:documentation>Identifies the nature of the action taken. If keycombo
+ contains more than one element, simul
+ is the default, otherwise there is no default.</a:documentation>
+          <ref name="db.keycombo.action.enumeration"/>
         </attribute>
       </optional>
+    </define>
+    <define name="db.keycombo.action-other.attributes">
       <optional>
-        <attribute name="title">
-          <a:documentation>This attribute offers advisory information about the element for which it is set.</a:documentation>
+        <attribute name="action">
+          <a:documentation>Identifies the nature of the action taken</a:documentation>
+          <value>other</value>
+          <a:documentation>Indicates a non-standard action</a:documentation>
         </attribute>
       </optional>
-    </interleave>
-  </define>
-  <define name="db.html.i18n">
-    <optional>
-      <attribute name="lang">
-        <a:documentation>This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.</a:documentation>
+      <attribute name="otheraction">
+        <a:documentation>Identifies the non-standard action in some unspecified way.</a:documentation>
       </attribute>
-    </optional>
+    </define>
+    <define name="db.keycombo.action.attrib">
+      <choice>
+        <ref name="db.keycombo.action-enum.attribute"/>
+        <ref name="db.keycombo.action-other.attributes"/>
+      </choice>
+    </define>
+    <define name="db.keycombo.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.keycombo.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.keycombo.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <ref name="db.keycombo.action.attrib"/>
+      </interleave>
+    </define>
+    <define name="db.keycombo">
+      <element name="keycombo">
+        <a:documentation>A combination of input actions</a:documentation>
+        <ref name="db.keycombo.attlist"/>
+        <oneOrMore>
+          <ref name="db.keycombination.contentmodel"/>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.keysym.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.keysym.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.keysym.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.keysym">
+      <element name="keysym">
+        <a:documentation>The symbolic name of a key on a keyboard</a:documentation>
+        <ref name="db.keysym.attlist"/>
+        <ref name="db._text"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.accel.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.accel.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.accel.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.accel">
+      <element name="accel">
+        <a:documentation>A graphical user interface (GUI) keyboard shortcut</a:documentation>
+        <ref name="db.accel.attlist"/>
+        <ref name="db._text"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.shortcut.action.attrib">
+      <ref name="db.keycombo.action.attrib"/>
+    </define>
+    <define name="db.shortcut.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.shortcut.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.shortcut.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <ref name="db.shortcut.action.attrib"/>
+      </interleave>
+    </define>
+    <define name="db.shortcut">
+      <element name="shortcut">
+        <a:documentation>A key combination for an action that is also accessible through a menu</a:documentation>
+        <ref name="db.shortcut.attlist"/>
+        <oneOrMore>
+          <ref name="db.keycombination.contentmodel"/>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <define name="db.os.inlines">
+    <choice>
+      <ref name="db.prompt"/>
+      <ref name="db.envar"/>
+      <ref name="db.filename"/>
+      <ref name="db.command"/>
+      <ref name="db.computeroutput"/>
+      <ref name="db.userinput"/>
+    </choice>
   </define>
-  <define name="db.html.events">
-    <interleave>
-      <optional>
-        <attribute name="onclick">
-          <a:documentation>Occurs when the pointing device button is clicked over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="ondblclick">
-          <a:documentation>Occurs when the pointing device button is double clicked over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onmousedown">
-          <a:documentation>Occurs when the pointing device button is pressed over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onmouseup">
-          <a:documentation>Occurs when the pointing device button is released over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onmouseover">
-          <a:documentation>Occurs when the pointing device is moved onto an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onmousemove">
-          <a:documentation>Occurs when the pointing device is moved while it is over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onmouseout">
-          <a:documentation>Occurs when the pointing device is moved away from an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onkeypress">
-          <a:documentation>Occurs when a key is pressed and released over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onkeydown">
-          <a:documentation>Occurs when a key is pressed down over an element.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="onkeyup">
-          <a:documentation>Occurs when a key is released over an element.</a:documentation>
-        </attribute>
-      </optional>
-    </interleave>
+  <define name="db.computeroutput.inlines">
+    <choice>
+      <choice>
+        <text/>
+        <ref name="db.ubiq.inlines"/>
+        <ref name="db.os.inlines"/>
+        <ref name="db.technical.inlines"/>
+      </choice>
+      <ref name="db.co"/>
+      <ref name="db.markup.inlines"/>
+    </choice>
   </define>
-  <define name="db.html.attrs">
-    <interleave>
-      <ref name="db.common.attributes"/>
-      <ref name="db.html.coreattrs"/>
-      <ref name="db.html.i18n"/>
-      <ref name="db.html.events"/>
-    </interleave>
+  <define name="db.userinput.inlines">
+    <choice>
+      <choice>
+        <text/>
+        <ref name="db.ubiq.inlines"/>
+        <ref name="db.os.inlines"/>
+        <ref name="db.technical.inlines"/>
+      </choice>
+      <ref name="db.co"/>
+      <ref name="db.markup.inlines"/>
+      <ref name="db.gui.inlines"/>
+      <ref name="db.keyboard.inlines"/>
+    </choice>
   </define>
-  <define name="db.html.cellhalign">
-    <interleave>
-      <optional>
-        <attribute name="align">
-          <a:documentation>Specifies the alignment of data and the justification of text in a cell.</a:documentation>
-          <choice>
-            <value>left</value>
-            <a:documentation>Left-flush data/Left-justify text. This is the default value for table data.</a:documentation>
-            <value>center</value>
-            <a:documentation>Center data/Center-justify text. This is the default value for table headers.</a:documentation>
-            <value>right</value>
-            <a:documentation>Right-flush data/Right-justify text.</a:documentation>
-            <value>justify</value>
-            <a:documentation>Double-justify text.</a:documentation>
-            <value>char</value>
-            <a:documentation>Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.</a:documentation>
-          </choice>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="char">
-          <a:documentation>This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="charoff">
-          <a:documentation>When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute.</a:documentation>
-          <choice>
-            <data type="integer"/>
-            <data type="string">
-              <param name="pattern">[0-9]+%</param>
-            </data>
-          </choice>
-        </attribute>
-      </optional>
-    </interleave>
+  <define name="db.prompt.inlines">
+    <choice>
+      <ref name="db._text"/>
+      <ref name="db.co"/>
+    </choice>
   </define>
-  <define name="db.html.cellvalign">
-    <optional>
-      <attribute name="valign">
-        <a:documentation>Specifies the vertical position of data within a cell.</a:documentation>
-        <choice>
-          <value>top</value>
-          <a:documentation>Cell data is flush with the top of the cell.</a:documentation>
-          <value>middle</value>
-          <a:documentation>Cell data is centered vertically within the cell. This is the default value.</a:documentation>
-          <value>bottom</value>
-          <a:documentation>Cell data is flush with the bottom of the cell.</a:documentation>
-          <value>baseline</value>
-          <a:documentation>All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.</a:documentation>
-        </choice>
+  <div>
+    <define name="db.prompt.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.prompt.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.prompt.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.prompt">
+      <element name="prompt">
+        <a:documentation>A character or string indicating the start of an input field in a  computer display</a:documentation>
+        <ref name="db.prompt.attlist"/>
+        <zeroOrMore>
+          <ref name="db.prompt.inlines"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.envar.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.envar.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.envar.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.envar">
+      <element name="envar">
+        <a:documentation>A software environment variable</a:documentation>
+        <ref name="db.envar.attlist"/>
+        <ref name="db._text"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.filename.class.enumeration">
+      <choice>
+        <value>devicefile</value>
+        <a:documentation>A device</a:documentation>
+        <value>directory</value>
+        <a:documentation>A directory</a:documentation>
+        <value>extension</value>
+        <a:documentation>A filename extension</a:documentation>
+        <value>headerfile</value>
+        <a:documentation>A header file (as for a programming language)</a:documentation>
+        <value>libraryfile</value>
+        <a:documentation>A library file</a:documentation>
+        <value>partition</value>
+        <a:documentation>A partition (as of a hard disk)</a:documentation>
+        <value>symlink</value>
+        <a:documentation>A symbolic link</a:documentation>
+      </choice>
+    </define>
+    <define name="db.filename.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the class of filename</a:documentation>
+        <ref name="db.filename.class.enumeration"/>
       </attribute>
-    </optional>
-  </define>
-  <define name="db.html.table.attributes">
-    <interleave>
-      <optional>
-        <attribute name="summary">
-          <a:documentation>Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="width">
-          <a:documentation>Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent.</a:documentation>
-          <choice>
-            <data type="integer"/>
-            <data type="string">
-              <param name="pattern">[0-9]+%</param>
-            </data>
-          </choice>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="border">
-          <a:documentation>Specifies the width (in pixels only) of the frame around a table.</a:documentation>
-          <data type="nonNegativeInteger"/>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="frame">
-          <a:documentation>Specifies which sides of the frame surrounding a table will be visible.</a:documentation>
-          <choice>
-            <value>void</value>
-            <a:documentation>No sides. This is the default value.</a:documentation>
-            <value>above</value>
-            <a:documentation>The top side only.</a:documentation>
-            <value>below</value>
-            <a:documentation>The bottom side only.</a:documentation>
-            <value>hsides</value>
-            <a:documentation>The top and bottom sides only.</a:documentation>
-            <value>lhs</value>
-            <a:documentation>The left-hand side only.</a:documentation>
-            <value>rhs</value>
-            <a:documentation>The right-hand side only.</a:documentation>
-            <value>vsides</value>
-            <a:documentation>The right and left sides only.</a:documentation>
-            <value>box</value>
-            <a:documentation>All four sides.</a:documentation>
-            <value>border</value>
-            <a:documentation>All four sides.</a:documentation>
-          </choice>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="rules">
-          <a:documentation>Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.</a:documentation>
-          <choice>
-            <value>none</value>
-            <a:documentation>No rules. This is the default value.</a:documentation>
-            <value>groups</value>
-            <a:documentation>Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.</a:documentation>
-            <value>rows</value>
-            <a:documentation>Rules will appear between rows only.</a:documentation>
-            <value>cols</value>
-            <a:documentation>Rules will appear between columns only.</a:documentation>
-            <value>all</value>
-            <a:documentation>Rules will appear between all rows and columns.</a:documentation>
-          </choice>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="cellspacing">
-          <a:documentation>Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells.</a:documentation>
-          <choice>
-            <data type="integer"/>
-            <data type="string">
-              <param name="pattern">[0-9]+%</param>
-            </data>
-          </choice>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="cellpadding">
-          <a:documentation>Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space.</a:documentation>
-          <choice>
-            <data type="integer"/>
-            <data type="string">
-              <param name="pattern">[0-9]+%</param>
-            </data>
-          </choice>
-        </attribute>
-      </optional>
-    </interleave>
-  </define>
-  <define name="db.html.tablecell.attributes">
-    <interleave>
-      <optional>
-        <attribute name="abbr">
-          <a:documentation>Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="axis">
-          <a:documentation>This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="headers">
-          <a:documentation>Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets.</a:documentation>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="scope">
-          <a:documentation>Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables.</a:documentation>
+    </define>
+    <define name="db.filename.path.attribute">
+      <attribute name="path">
+        <a:documentation>Specifies the path of the filename</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.filename.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.filename.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.filename.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.filename.path.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.filename.class.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.filename">
+      <element name="filename">
+        <a:documentation>The name of a file</a:documentation>
+        <ref name="db.filename.attlist"/>
+        <ref name="db._text"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.command.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.command.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.command.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.command">
+      <element name="command">
+        <a:documentation>The name of an executable program or other software command</a:documentation>
+        <ref name="db.command.attlist"/>
+        <ref name="db._text"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.computeroutput.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.computeroutput.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.computeroutput.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.computeroutput">
+      <element name="computeroutput">
+        <a:documentation>Data, generally text, displayed or presented by a computer</a:documentation>
+        <ref name="db.computeroutput.attlist"/>
+        <zeroOrMore>
+          <ref name="db.computeroutput.inlines"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.userinput.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.userinput.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.userinput.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.userinput">
+      <element name="userinput">
+        <a:documentation>Data entered by the user</a:documentation>
+        <ref name="db.userinput.attlist"/>
+        <zeroOrMore>
+          <ref name="db.userinput.inlines"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.cmdsynopsis.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.cmdsynopsis.sepchar.attribute">
+      <attribute name="sepchar">
+        <a:documentation>Specifies the character that should separate the command and its top-level arguments</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.cmdsynopsis.cmdlength.attribute">
+      <attribute name="cmdlength">
+        <a:documentation>Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line</a:documentation>
+      </attribute>
+    </define>
+    <define name="db.cmdsynopsis.label.attribute">
+      <ref name="db.label.attribute"/>
+    </define>
+    <define name="db.cmdsynopsis.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.cmdsynopsis.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.cmdsynopsis.sepchar.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.cmdsynopsis.cmdlength.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.cmdsynopsis.label.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.cmdsynopsis.info">
+      <ref name="db._info.title.forbidden"/>
+    </define>
+    <define name="db.cmdsynopsis">
+      <element name="cmdsynopsis">
+        <a:documentation>A syntax summary for a software command</a:documentation>
+        <ref name="db.cmdsynopsis.attlist"/>
+        <ref name="db.cmdsynopsis.info"/>
+        <oneOrMore>
           <choice>
-            <value>row</value>
-            <a:documentation>The current cell provides header information for the rest of the row that contains it</a:documentation>
-            <value>col</value>
-            <a:documentation>The current cell provides header information for the rest of the column that contains it.</a:documentation>
-            <value>rowgroup</value>
-            <a:documentation>The header cell provides header information for the rest of the row group that contains it.</a:documentation>
-            <value>colgroup</value>
-            <a:documentation>The header cell provides header information for the rest of the column group that contains it.</a:documentation>
+            <ref name="db.command"/>
+            <ref name="db.arg"/>
+            <ref name="db.group"/>
+            <ref name="db.sbr"/>
           </choice>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="rowspan">
-          <a:documentation>Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1
-). The value zero (0
-) means that the cell spans all rows from the current row to the last row of the table section (thead
-, tbody
-, or tfoot
-) in which the cell is defined.</a:documentation>
-          <data type="nonNegativeInteger"/>
-        </attribute>
-      </optional>
-      <optional>
-        <attribute name="colspan">
-          <a:documentation>Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1
-). The value zero (0
-) means that the cell spans all columns from the current column to the last column of the column group (colgroup
-) in which the cell is defined.</a:documentation>
-          <data type="nonNegativeInteger"/>
-        </attribute>
-      </optional>
-    </interleave>
+        </oneOrMore>
+        <zeroOrMore>
+          <ref name="db.synopfragment"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <define name="db.rep.enumeration">
+    <choice>
+      <value>norepeat</value>
+      <a:documentation>Can not be repeated.</a:documentation>
+      <value>repeat</value>
+      <a:documentation>Can be repeated.</a:documentation>
+    </choice>
   </define>
-  <define name="db.html.table.info">
-    <ref name="db._info.title.forbidden"/>
+  <define name="db.rep.attribute">
+    <attribute name="rep" a:defaultValue="norepeat">
+      <a:documentation>Indicates whether or not repetition is possible.</a:documentation>
+      <ref name="db.rep.enumeration"/>
+    </attribute>
   </define>
-  <define name="db.html.table.model">
-    <optional>
-      <ref name="db.html.table.info"/>
-    </optional>
-    <ref name="db.html.caption"/>
+  <define name="db.choice.enumeration">
     <choice>
-      <zeroOrMore>
-        <ref name="db.html.col"/>
-      </zeroOrMore>
-      <zeroOrMore>
-        <ref name="db.html.colgroup"/>
-      </zeroOrMore>
+      <value>opt</value>
+      <a:documentation>Formatted to indicate that it is optional.</a:documentation>
+      <value>plain</value>
+      <a:documentation>Formatted without indication.</a:documentation>
+      <value>req</value>
+      <a:documentation>Formatted to indicate that it is required.</a:documentation>
     </choice>
-    <optional>
-      <ref name="db.html.thead"/>
-    </optional>
-    <optional>
-      <ref name="db.html.tfoot"/>
-    </optional>
+  </define>
+  <define name="db.choice.opt.attribute">
+    <attribute name="choice" a:defaultValue="opt">
+      <a:documentation>Indicates optionality.</a:documentation>
+      <ref name="db.choice.enumeration"/>
+    </attribute>
+  </define>
+  <define name="db.choice.req.attribute">
+    <attribute name="choice" a:defaultValue="req">
+      <a:documentation>Indicates optionality.</a:documentation>
+      <ref name="db.choice.enumeration"/>
+    </attribute>
+  </define>
+  <div>
+    <define name="db.arg.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.arg.rep.attribute">
+      <ref name="db.rep.attribute"/>
+    </define>
+    <define name="db.arg.choice.attribute">
+      <ref name="db.choice.opt.attribute"/>
+    </define>
+    <define name="db.arg.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.arg.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.arg.rep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.arg.choice.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.arg">
+      <element name="arg">
+        <a:documentation>An argument in a CmdSynopsis</a:documentation>
+        <ref name="db.arg.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.arg"/>
+            <ref name="db.group"/>
+            <ref name="db.option"/>
+            <ref name="db.synopfragmentref"/>
+            <ref name="db.sbr"/>
+          </choice>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.group.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.group.rep.attribute">
+      <ref name="db.rep.attribute"/>
+    </define>
+    <define name="db.group.choice.attribute">
+      <ref name="db.choice.opt.attribute"/>
+    </define>
+    <define name="db.group.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.group.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.group.rep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.group.choice.attribute"/>
+        </optional>
+      </interleave>
+    </define>
+    <define name="db.group">
+      <element name="group">
+        <a:documentation>A group of elements in a CmdSynopsis</a:documentation>
+        <ref name="db.group.attlist"/>
+        <oneOrMore>
+          <choice>
+            <ref name="db.arg"/>
+            <ref name="db.group"/>
+            <ref name="db.option"/>
+            <ref name="db.synopfragmentref"/>
+            <ref name="db.replaceable"/>
+            <ref name="db.sbr"/>
+          </choice>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.sbr.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.sbr.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.sbr.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.sbr">
+      <element name="sbr">
+        <a:documentation>An explicit line break in a command synopsis</a:documentation>
+        <ref name="db.sbr.attlist"/>
+        <empty/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.synopfragment.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.synopfragment.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.synopfragment.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.synopfragment">
+      <element name="synopfragment">
+        <a:documentation>A portion of a CmdSynopsis broken out from the main body of the synopsis</a:documentation>
+        <ref name="db.synopfragment.attlist"/>
+        <oneOrMore>
+          <choice>
+            <ref name="db.arg"/>
+            <ref name="db.group"/>
+          </choice>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.synopfragmentref.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.synopfragmentref.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.synopfragmentref.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.linkend.attribute"/>
+      </interleave>
+    </define>
+    <define name="db.synopfragmentref">
+      <element name="synopfragmentref">
+        <a:documentation>A reference to a fragment of a command synopsis</a:documentation>
+        <s:pattern name="Synopsis fragment type constraint">
+          <s:rule context="db:synopfragmentref">
+            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on synopfragmentref must point to a synopfragment.</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.synopfragmentref.attlist"/>
+        <text/>
+      </element>
+    </define>
+  </div>
+  <define name="db.programming.inlines">
     <choice>
-      <oneOrMore>
-        <ref name="db.html.tbody"/>
-      </oneOrMore>
-      <oneOrMore>
-        <ref name="db.html.tr"/>
-      </oneOrMore>
+      <ref name="db.function"/>
+      <ref name="db.parameter"/>
+      <ref name="db.varname"/>
+      <ref name="db.returnvalue"/>
+      <ref name="db.type"/>
+      <ref name="db.classname"/>
+      <ref name="db.exceptionname"/>
+      <ref name="db.interfacename"/>
+      <ref name="db.methodname"/>
+      <ref name="db.modifier"/>
+      <ref name="db.initializer"/>
+      <ref name="db.oo.inlines"/>
     </choice>
   </define>
-  <define name="db.html.informaltable.info">
-    <ref name="db._info.title.forbidden"/>
-  </define>
-  <define name="db.html.informaltable.model">
-    <optional>
-      <ref name="db.html.informaltable.info"/>
-    </optional>
+  <define name="db.oo.inlines">
     <choice>
-      <zeroOrMore>
-        <ref name="db.html.col"/>
-      </zeroOrMore>
-      <zeroOrMore>
-        <ref name="db.html.colgroup"/>
-      </zeroOrMore>
+      <ref name="db.ooclass"/>
+      <ref name="db.ooexception"/>
+      <ref name="db.oointerface"/>
     </choice>
-    <optional>
-      <ref name="db.html.thead"/>
-    </optional>
-    <optional>
-      <ref name="db.html.tfoot"/>
-    </optional>
+  </define>
+  <define name="db.synopsis.blocks">
     <choice>
-      <oneOrMore>
-        <ref name="db.html.tbody"/>
-      </oneOrMore>
-      <oneOrMore>
-        <ref name="db.html.tr"/>
-      </oneOrMore>
+      <choice>
+        <ref name="db.funcsynopsis"/>
+        <ref name="db.classsynopsis"/>
+        <ref name="db.methodsynopsis"/>
+        <ref name="db.constructorsynopsis"/>
+        <ref name="db.destructorsynopsis"/>
+        <ref name="db.fieldsynopsis"/>
+      </choice>
+      <ref name="db.cmdsynopsis"/>
     </choice>
   </define>
   <div>
-    <define name="db.html.table.role.attribute">
+    <define name="db.synopsis.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.html.table.label.attribute">
+    <define name="db.synopsis.label.attribute">
       <ref name="db.label.attribute"/>
     </define>
-    <define name="db.html.table.attlist">
+    <define name="db.synopsis.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.table.attributes"/>
         <optional>
-          <ref name="db.html.table.role.attribute"/>
+          <ref name="db.synopsis.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <ref name="db.verbatim.attributes"/>
         <optional>
-          <ref name="db.html.table.label.attribute"/>
+          <ref name="db.synopsis.label.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.synopsis">
+      <element name="synopsis">
+        <a:documentation>A general-purpose element for representing the syntax of commands or functions</a:documentation>
+        <ref name="db.synopsis.attlist"/>
+        <ref name="db.verbatim.contentmodel"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.funcsynopsis.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.funcsynopsis.attlist">
+      <interleave>
         <optional>
-          <ref name="db.orient.attribute"/>
+          <ref name="db.funcsynopsis.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.pgwide.attribute"/>
+          <ref name="db.language.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.funcsynopsis.info">
+      <ref name="db._info.title.forbidden"/>
+    </define>
+    <define name="db.funcsynopsis">
+      <element name="funcsynopsis">
+        <a:documentation>The syntax summary for a function definition</a:documentation>
+        <ref name="db.funcsynopsis.attlist"/>
+        <ref name="db.funcsynopsis.info"/>
+        <oneOrMore>
+          <choice>
+            <ref name="db.funcsynopsisinfo"/>
+            <ref name="db.funcprototype"/>
+          </choice>
+        </oneOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.funcsynopsisinfo.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.funcsynopsisinfo.attlist">
+      <interleave>
         <optional>
-          <ref name="db.tabstyle.attribute"/>
+          <ref name="db.funcsynopsisinfo.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <ref name="db.verbatim.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.funcsynopsisinfo">
+      <element name="funcsynopsisinfo">
+        <a:documentation>Information supplementing the FuncDefs of a FuncSynopsis</a:documentation>
+        <ref name="db.funcsynopsisinfo.attlist"/>
+        <ref name="db.verbatim.contentmodel"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.funcprototype.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.funcprototype.attlist">
+      <interleave>
         <optional>
-          <ref name="db.floatstyle.attribute"/>
+          <ref name="db.funcprototype.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.table">
-      <element name="table">
-        <a:documentation>A formal (captioned) HTML table in a document</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:example)">example must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:table">
-            <s:assert test="not(.//db:informaltable)">informaltable must not occur in the descendants of table</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.html.table.attlist"/>
-        <ref name="db.html.table.model"/>
+    <define name="db.funcprototype">
+      <element name="funcprototype">
+        <a:documentation>The prototype of a function</a:documentation>
+        <ref name="db.funcprototype.attlist"/>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
+        <ref name="db.funcdef"/>
+        <choice>
+          <ref name="db.void"/>
+          <ref name="db.varargs"/>
+          <group>
+            <oneOrMore>
+              <ref name="db.paramdef"/>
+            </oneOrMore>
+            <optional>
+              <ref name="db.varargs"/>
+            </optional>
+          </group>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.funcdef.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.funcdef.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.funcdef.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.funcdef">
+      <element name="funcdef">
+        <a:documentation>A function (subroutine) name and its return type</a:documentation>
+        <ref name="db.funcdef.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.type"/>
+            <ref name="db.function"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.informaltable.attlist">
+    <define name="db.function.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.function.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.table.attributes"/>
+        <optional>
+          <ref name="db.function.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.informaltable">
-      <element name="informaltable">
-        <a:documentation>An HTML table without a title</a:documentation>
-        <ref name="db.html.informaltable.attlist"/>
-        <ref name="db.html.informaltable.model"/>
+    <define name="db.function">
+      <element name="function">
+        <a:documentation>The name of a function or subroutine, as in a programming language</a:documentation>
+        <ref name="db.function.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.caption.attlist">
-      <ref name="db.html.attrs"/>
+    <define name="db.void.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.html.caption">
-      <element name="caption">
-        <a:documentation>An HTML table caption</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:example)">example must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:table)">table must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:caption">
-            <s:assert test="not(.//db:task)">task must not occur in the descendants of caption</s:assert>
-          </s:rule>
-        </s:pattern>
-        <ref name="db.html.caption.attlist"/>
-        <zeroOrMore>
-          <ref name="db.all.inlines"/>
-        </zeroOrMore>
+    <define name="db.void.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.void.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.void">
+      <element name="void">
+        <a:documentation>An empty element in a function synopsis indicating that the function in question takes no arguments</a:documentation>
+        <ref name="db.void.attlist"/>
+        <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.col.attlist">
+    <define name="db.varargs.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.varargs.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <optional>
-          <attribute name="span">
-            <a:documentation>This attribute, whose value must be an integer &gt; 0, specifies the number of columns spanned
- by the col
- element; the col
- element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N &gt; 1, the current col
- element shares its attributes with the next N-1 columns.</a:documentation>
-            <data type="nonNegativeInteger"/>
-          </attribute>
-        </optional>
         <optional>
-          <attribute name="width">
-            <a:documentation>Specifies a default width for each column spanned by the current col
- element. It has the same meaning as the width
- attribute for the colgroup
- element and overrides it.</a:documentation>
-          </attribute>
+          <ref name="db.varargs.role.attribute"/>
         </optional>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.col">
-      <element name="col">
-        <a:documentation>Specifications for a column in an HTML table</a:documentation>
-        <ref name="db.html.col.attlist"/>
+    <define name="db.varargs">
+      <element name="varargs">
+        <a:documentation>An empty element in a function synopsis indicating a variable number of arguments</a:documentation>
+        <ref name="db.varargs.attlist"/>
         <empty/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.colgroup.attlist">
+    <define name="db.paramdef.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.paramdef.choice.enumeration">
+      <choice>
+        <value>opt</value>
+        <a:documentation>Formatted to indicate that it is optional.</a:documentation>
+        <value>req</value>
+        <a:documentation>Formatted to indicate that it is required.</a:documentation>
+      </choice>
+    </define>
+    <define name="db.paramdef.choice.attribute">
+      <attribute name="choice" a:defaultValue="opt">
+        <a:documentation>Indicates optionality.</a:documentation>
+        <ref name="db.paramdef.choice.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.paramdef.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
         <optional>
-          <attribute name="span">
-            <a:documentation>This attribute, which must be an integer &gt; 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup
- defines a column group containing one column. If the span attribute is set to N &gt; 0, the current colgroup
- element defines a column group containing N columns. User agents must ignore this attribute if the colgroup
- element contains one or more col
- elements.</a:documentation>
-            <data type="nonNegativeInteger"/>
-          </attribute>
+          <ref name="db.paramdef.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
         <optional>
-          <attribute name="width">
-            <a:documentation>This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0*
- (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0*
- will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col
- element.</a:documentation>
-          </attribute>
+          <ref name="db.paramdef.choice.attribute"/>
         </optional>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
       </interleave>
     </define>
-    <define name="db.html.colgroup">
-      <element name="colgroup">
-        <a:documentation>A group of columns in an HTML table</a:documentation>
-        <ref name="db.html.colgroup.attlist"/>
+    <define name="db.paramdef">
+      <element name="paramdef">
+        <a:documentation>Information about a function parameter in a programming language</a:documentation>
+        <ref name="db.paramdef.attlist"/>
         <zeroOrMore>
-          <ref name="db.html.col"/>
+          <choice>
+            <ref name="db._text"/>
+            <ref name="db.initializer"/>
+            <ref name="db.type"/>
+            <ref name="db.parameter"/>
+            <ref name="db.funcparams"/>
+          </choice>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.thead.attlist">
+    <define name="db.funcparams.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.funcparams.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <optional>
+          <ref name="db.funcparams.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.thead">
-      <element name="thead">
-        <a:documentation>A table header consisting of one or more rows in an HTML table</a:documentation>
-        <ref name="db.html.thead.attlist"/>
-        <oneOrMore>
-          <ref name="db.html.tr"/>
-        </oneOrMore>
+    <define name="db.funcparams">
+      <element name="funcparams">
+        <a:documentation>Parameters for a function referenced through a function pointer in a synopsis</a:documentation>
+        <ref name="db.funcparams.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.tfoot.attlist">
+    <define name="db.classsynopsis.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.classsynopsis.class.enumeration">
+      <choice>
+        <value>class</value>
+        <a:documentation>This is the synopsis of a class</a:documentation>
+        <value>interface</value>
+        <a:documentation>This is the synopsis of an interface</a:documentation>
+      </choice>
+    </define>
+    <define name="db.classsynopsis.class.attribute">
+      <attribute name="class">
+        <a:documentation>Specifies the nature of the synopsis</a:documentation>
+        <ref name="db.classsynopsis.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.classsynopsis.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <optional>
+          <ref name="db.classsynopsis.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.language.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.classsynopsis.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.html.tfoot">
-      <element name="tfoot">
-        <a:documentation>A table footer consisting of one or more rows in an HTML table</a:documentation>
-        <ref name="db.html.tfoot.attlist"/>
+    <define name="db.classsynopsis">
+      <element name="classsynopsis">
+        <a:documentation>The syntax summary for a class definition</a:documentation>
+        <ref name="db.classsynopsis.attlist"/>
         <oneOrMore>
-          <ref name="db.html.tr"/>
+          <ref name="db.oo.inlines"/>
         </oneOrMore>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.classsynopsisinfo"/>
+            <ref name="db.methodsynopsis"/>
+            <ref name="db.constructorsynopsis"/>
+            <ref name="db.destructorsynopsis"/>
+            <ref name="db.fieldsynopsis"/>
+          </choice>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.tbody.attlist">
+    <define name="db.classsynopsisinfo.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.classsynopsisinfo.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <optional>
+          <ref name="db.classsynopsisinfo.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+        <ref name="db.verbatim.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.tbody">
-      <element name="tbody">
-        <a:documentation>A wrapper for the rows of an HTML table or informal HTML table</a:documentation>
-        <ref name="db.html.tbody.attlist"/>
-        <oneOrMore>
-          <ref name="db.html.tr"/>
-        </oneOrMore>
+    <define name="db.classsynopsisinfo">
+      <element name="classsynopsisinfo">
+        <a:documentation>Information supplementing the contents of a ClassSynopsis</a:documentation>
+        <ref name="db.classsynopsisinfo.attlist"/>
+        <ref name="db.verbatim.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.tr.attlist">
+    <define name="db.ooclass.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.ooclass.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <optional>
+          <ref name="db.ooclass.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.tr">
-      <element name="tr">
-        <a:documentation>A row in an HTML table</a:documentation>
-        <ref name="db.html.tr.attlist"/>
-        <oneOrMore>
+    <define name="db.ooclass">
+      <element name="ooclass">
+        <a:documentation>A class in an object-oriented programming language</a:documentation>
+        <ref name="db.ooclass.attlist"/>
+        <zeroOrMore>
           <choice>
-            <ref name="db.html.th"/>
-            <ref name="db.html.td"/>
+            <ref name="db.package"/>
+            <ref name="db.modifier"/>
           </choice>
-        </oneOrMore>
+        </zeroOrMore>
+        <ref name="db.classname"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.th.attlist">
+    <define name="db.oointerface.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.oointerface.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.tablecell.attributes"/>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <optional>
+          <ref name="db.oointerface.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.th">
-      <element name="th">
-        <a:documentation>A table header entry in an HTML table</a:documentation>
-        <ref name="db.html.th.attlist"/>
-        <choice>
-          <zeroOrMore>
-            <ref name="db.all.inlines"/>
-          </zeroOrMore>
-          <zeroOrMore>
-            <ref name="db.all.blocks"/>
-          </zeroOrMore>
-        </choice>
+    <define name="db.oointerface">
+      <element name="oointerface">
+        <a:documentation>An interface in an object-oriented programming language</a:documentation>
+        <ref name="db.oointerface.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.package"/>
+            <ref name="db.modifier"/>
+          </choice>
+        </zeroOrMore>
+        <ref name="db.interfacename"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.html.td.attlist">
+    <define name="db.ooexception.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.ooexception.attlist">
       <interleave>
-        <ref name="db.html.attrs"/>
-        <ref name="db.html.tablecell.attributes"/>
-        <ref name="db.html.cellhalign"/>
-        <ref name="db.html.cellvalign"/>
+        <optional>
+          <ref name="db.ooexception.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.html.td">
-      <element name="td">
-        <a:documentation>A table entry in an HTML table</a:documentation>
-        <ref name="db.html.td.attlist"/>
-        <choice>
-          <zeroOrMore>
-            <ref name="db.all.inlines"/>
-          </zeroOrMore>
-          <zeroOrMore>
-            <ref name="db.all.blocks"/>
-          </zeroOrMore>
-        </choice>
+    <define name="db.ooexception">
+      <element name="ooexception">
+        <a:documentation>An exception in an object-oriented programming language</a:documentation>
+        <ref name="db.ooexception.attlist"/>
+        <zeroOrMore>
+          <choice>
+            <ref name="db.package"/>
+            <ref name="db.modifier"/>
+          </choice>
+        </zeroOrMore>
+        <ref name="db.exceptionname"/>
       </element>
     </define>
   </div>
+  <define name="db.modifier.xml.space.attribute">
+    <attribute name="xml:space">
+      <a:documentation>Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example).</a:documentation>
+      <value>preserve</value>
+      <a:documentation>Extra whitespace and line breaks must be preserved.</a:documentation>
+      <!--
+        Ideally the definition of xml:space used on modifier would be
+        different from the definition used on the verbatim elements. The
+        verbatim elements forbid the use of xml:space="default" which
+        wouldn't be a problem on modifier. But doing that causes the
+        generated XSD schemas to be broken so I'm just reusing the existing
+        definition for now. It won't be backwards incompatible to fix this
+        problem in the future.
+           | ## Extra whitespace and line breaks are not preserved.
+             "default"
+      -->
+    </attribute>
+  </define>
   <div>
-    <define name="db.msgset.role.attribute">
+    <define name="db.modifier.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgset.attlist">
+    <define name="db.modifier.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgset.role.attribute"/>
+          <ref name="db.modifier.xml.space.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.modifier.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msgset.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.msgset">
-      <element name="msgset">
-        <a:documentation>A detailed set of messages, usually error messages</a:documentation>
-        <ref name="db.msgset.attlist"/>
-        <ref name="db.msgset.info"/>
-        <choice>
-          <oneOrMore>
-            <ref name="db.msgentry"/>
-          </oneOrMore>
-          <oneOrMore>
-            <ref name="db.simplemsgentry"/>
-          </oneOrMore>
-        </choice>
+    <define name="db.modifier">
+      <element name="modifier">
+        <a:documentation>Modifiers in a synopsis</a:documentation>
+        <ref name="db.modifier.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgentry.role.attribute">
+    <define name="db.interfacename.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgentry.attlist">
+    <define name="db.interfacename.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgentry.role.attribute"/>
+          <ref name="db.interfacename.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msgentry">
-      <element name="msgentry">
-        <a:documentation>A wrapper for an entry in a message set</a:documentation>
-        <ref name="db.msgentry.attlist"/>
-        <oneOrMore>
-          <ref name="db.msg"/>
-        </oneOrMore>
-        <optional>
-          <ref name="db.msginfo"/>
-        </optional>
-        <zeroOrMore>
-          <ref name="db.msgexplan"/>
-        </zeroOrMore>
+    <define name="db.interfacename">
+      <element name="interfacename">
+        <a:documentation>The name of an interface</a:documentation>
+        <ref name="db.interfacename.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.simplemsgentry.role.attribute">
+    <define name="db.exceptionname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.simplemsgentry.msgaud.attribute">
-      <attribute name="msgaud">
-        <a:documentation>The audience to which the message relevant</a:documentation>
-      </attribute>
+    <define name="db.exceptionname.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.exceptionname.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
     </define>
-    <define name="db.simplemsgentry.msgorig.attribute">
-      <attribute name="msgorig">
-        <a:documentation>The origin of the message</a:documentation>
-      </attribute>
+    <define name="db.exceptionname">
+      <element name="exceptionname">
+        <a:documentation>The name of an exception</a:documentation>
+        <ref name="db.exceptionname.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
-    <define name="db.simplemsgentry.msglevel.attribute">
-      <attribute name="msglevel">
-        <a:documentation>The level of importance or severity of a message</a:documentation>
-      </attribute>
+  </div>
+  <div>
+    <define name="db.fieldsynopsis.role.attribute">
+      <attribute name="role"/>
     </define>
-    <define name="db.simplemsgentry.attlist">
+    <define name="db.fieldsynopsis.attlist">
       <interleave>
         <optional>
-          <ref name="db.simplemsgentry.role.attribute"/>
+          <ref name="db.fieldsynopsis.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
         <optional>
-          <ref name="db.simplemsgentry.msgaud.attribute"/>
+          <ref name="db.language.attribute"/>
         </optional>
+      </interleave>
+    </define>
+    <define name="db.fieldsynopsis">
+      <element name="fieldsynopsis">
+        <a:documentation>The name of a field in a class definition</a:documentation>
+        <ref name="db.fieldsynopsis.attlist"/>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
         <optional>
-          <ref name="db.simplemsgentry.msgorig.attribute"/>
+          <ref name="db.type"/>
         </optional>
+        <ref name="db.varname"/>
         <optional>
-          <ref name="db.simplemsgentry.msglevel.attribute"/>
+          <ref name="db.initializer"/>
         </optional>
-      </interleave>
-    </define>
-    <define name="db.simplemsgentry">
-      <element name="simplemsgentry">
-        <a:documentation>A wrapper for a simpler entry in a message set</a:documentation>
-        <ref name="db.simplemsgentry.attlist"/>
-        <ref name="db.msgtext"/>
-        <oneOrMore>
-          <ref name="db.msgexplan"/>
-        </oneOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msg.role.attribute">
+    <define name="db.initializer.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msg.attlist">
+    <define name="db.initializer.attlist">
       <interleave>
         <optional>
-          <ref name="db.msg.role.attribute"/>
+          <ref name="db.initializer.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msg.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.msg">
-      <element name="msg">
-        <a:documentation>A message in a message set</a:documentation>
-        <ref name="db.msg.attlist"/>
-        <ref name="db.msg.info"/>
-        <ref name="db.msgmain"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db.msgsub"/>
-            <ref name="db.msgrel"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.initializer">
+      <element name="initializer">
+        <a:documentation>The initializer for a FieldSynopsis</a:documentation>
+        <ref name="db.initializer.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgmain.role.attribute">
+    <define name="db.constructorsynopsis.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgmain.attlist">
+    <define name="db.constructorsynopsis.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgmain.role.attribute"/>
+          <ref name="db.constructorsynopsis.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.language.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.msgmain.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.msgmain">
-      <element name="msgmain">
-        <a:documentation>The primary component of a message in a message set </a:documentation>
-        <ref name="db.msgmain.attlist"/>
-        <ref name="db.msgmain.info"/>
-        <ref name="db.msgtext"/>
+    <define name="db.constructorsynopsis">
+      <element name="constructorsynopsis">
+        <a:documentation>A syntax summary for a constructor</a:documentation>
+        <ref name="db.constructorsynopsis.attlist"/>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
+        <optional>
+          <ref name="db.methodname"/>
+        </optional>
+        <choice>
+          <oneOrMore>
+            <ref name="db.methodparam"/>
+          </oneOrMore>
+          <optional>
+            <ref name="db.void"/>
+          </optional>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.exceptionname"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgsub.role.attribute">
+    <define name="db.destructorsynopsis.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgsub.attlist">
+    <define name="db.destructorsynopsis.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgsub.role.attribute"/>
+          <ref name="db.destructorsynopsis.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.language.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.msgsub.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.msgsub">
-      <element name="msgsub">
-        <a:documentation>A subcomponent of a message in a message set</a:documentation>
-        <ref name="db.msgsub.attlist"/>
-        <ref name="db.msgsub.info"/>
-        <ref name="db.msgtext"/>
+    <define name="db.destructorsynopsis">
+      <element name="destructorsynopsis">
+        <a:documentation>A syntax summary for a destructor</a:documentation>
+        <ref name="db.destructorsynopsis.attlist"/>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
+        <optional>
+          <ref name="db.methodname"/>
+        </optional>
+        <choice>
+          <oneOrMore>
+            <ref name="db.methodparam"/>
+          </oneOrMore>
+          <optional>
+            <ref name="db.void"/>
+          </optional>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.exceptionname"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgrel.role.attribute">
+    <define name="db.methodsynopsis.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgrel.attlist">
+    <define name="db.methodsynopsis.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgrel.role.attribute"/>
+          <ref name="db.methodsynopsis.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.language.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.msgrel.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.msgrel">
-      <element name="msgrel">
-        <a:documentation>A related component of a message in a message set</a:documentation>
-        <ref name="db.msgrel.attlist"/>
-        <ref name="db.msgrel.info"/>
-        <ref name="db.msgtext"/>
+    <define name="db.methodsynopsis">
+      <element name="methodsynopsis">
+        <a:documentation>A syntax summary for a method</a:documentation>
+        <ref name="db.methodsynopsis.attlist"/>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
+        <optional>
+          <choice>
+            <ref name="db.type"/>
+            <ref name="db.void"/>
+          </choice>
+        </optional>
+        <ref name="db.methodname"/>
+        <choice>
+          <oneOrMore>
+            <ref name="db.methodparam"/>
+          </oneOrMore>
+          <ref name="db.void"/>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.exceptionname"/>
+        </zeroOrMore>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgtext.role.attribute">
+    <define name="db.methodname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgtext.attlist">
+    <define name="db.methodname.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgtext.role.attribute"/>
+          <ref name="db.methodname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msgtext">
-      <element name="msgtext">
-        <a:documentation>The actual text of a message component in a message set</a:documentation>
-        <ref name="db.msgtext.attlist"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.methodname">
+      <element name="methodname">
+        <a:documentation>The name of a method</a:documentation>
+        <ref name="db.methodname.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msginfo.role.attribute">
+    <define name="db.methodparam.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msginfo.attlist">
+    <define name="db.methodparam.rep.attribute">
+      <ref name="db.rep.attribute"/>
+    </define>
+    <define name="db.methodparam.choice.attribute">
+      <ref name="db.choice.req.attribute"/>
+    </define>
+    <define name="db.methodparam.attlist">
       <interleave>
         <optional>
-          <ref name="db.msginfo.role.attribute"/>
+          <ref name="db.methodparam.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.methodparam.rep.attribute"/>
+        </optional>
+        <optional>
+          <ref name="db.methodparam.choice.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.msginfo">
-      <element name="msginfo">
-        <a:documentation>Information about a message in a message set</a:documentation>
-        <ref name="db.msginfo.attlist"/>
+    <define name="db.methodparam">
+      <element name="methodparam">
+        <a:documentation>Parameters to a method</a:documentation>
+        <ref name="db.methodparam.attlist"/>
         <zeroOrMore>
-          <choice>
-            <ref name="db.msglevel"/>
-            <ref name="db.msgorig"/>
-            <ref name="db.msgaud"/>
-          </choice>
+          <ref name="db.modifier"/>
+        </zeroOrMore>
+        <optional>
+          <ref name="db.type"/>
+        </optional>
+        <choice>
+          <group>
+            <zeroOrMore>
+              <ref name="db.modifier"/>
+            </zeroOrMore>
+            <ref name="db.parameter"/>
+            <optional>
+              <ref name="db.initializer"/>
+            </optional>
+          </group>
+          <ref name="db.funcparams"/>
+        </choice>
+        <zeroOrMore>
+          <ref name="db.modifier"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msglevel.role.attribute">
+    <define name="db.varname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msglevel.attlist">
+    <define name="db.varname.attlist">
       <interleave>
         <optional>
-          <ref name="db.msglevel.role.attribute"/>
+          <ref name="db.varname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msglevel">
-      <element name="msglevel">
-        <a:documentation>The level of importance or severity of a message in a message set</a:documentation>
-        <ref name="db.msglevel.attlist"/>
+    <define name="db.varname">
+      <element name="varname">
+        <a:documentation>The name of a variable</a:documentation>
+        <ref name="db.varname.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgorig.role.attribute">
+    <define name="db.returnvalue.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgorig.attlist">
+    <define name="db.returnvalue.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgorig.role.attribute"/>
+          <ref name="db.returnvalue.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msgorig">
-      <element name="msgorig">
-        <a:documentation>The origin of a message in a message set</a:documentation>
-        <ref name="db.msgorig.attlist"/>
+    <define name="db.returnvalue">
+      <element name="returnvalue">
+        <a:documentation>The value returned by a function</a:documentation>
+        <ref name="db.returnvalue.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgaud.role.attribute">
+    <define name="db.type.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgaud.attlist">
+    <define name="db.type.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgaud.role.attribute"/>
+          <ref name="db.type.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msgaud">
-      <element name="msgaud">
-        <a:documentation>The audience to which a message in a message set is relevant</a:documentation>
-        <ref name="db.msgaud.attlist"/>
+    <define name="db.type">
+      <element name="type">
+        <a:documentation>The classification of a value</a:documentation>
+        <ref name="db.type.attlist"/>
         <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.msgexplan.role.attribute">
+    <define name="db.classname.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.msgexplan.attlist">
+    <define name="db.classname.attlist">
       <interleave>
         <optional>
-          <ref name="db.msgexplan.role.attribute"/>
+          <ref name="db.classname.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.msgexplan.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.msgexplan">
-      <element name="msgexplan">
-        <a:documentation>Explanatory material relating to a message in a message set</a:documentation>
-        <ref name="db.msgexplan.attlist"/>
-        <ref name="db.msgexplan.info"/>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.classname">
+      <element name="classname">
+        <a:documentation>The name of a class, in the object-oriented programming sense</a:documentation>
+        <ref name="db.classname.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.qandaset.role.attribute">
+    <define name="db.programlisting.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.qandaset.defaultlabel.enumeration">
-      <choice>
-        <value>none</value>
-        <a:documentation>No labels</a:documentation>
-        <value>number</value>
-        <a:documentation>Numeric labels</a:documentation>
-        <value>qanda</value>
-        <a:documentation>"Q:" and "A:" labels</a:documentation>
-      </choice>
-    </define>
-    <define name="db.qandaset.defaultlabel.attribute">
-      <attribute name="defaultlabel">
-        <a:documentation>Specifies the default labelling</a:documentation>
-        <ref name="db.qandaset.defaultlabel.enumeration"/>
-      </attribute>
+    <define name="db.programlisting.width.attribute">
+      <ref name="db.width.characters.attribute"/>
     </define>
-    <define name="db.qandaset.attlist">
+    <define name="db.programlisting.attlist">
       <interleave>
         <optional>
-          <ref name="db.qandaset.role.attribute"/>
+          <ref name="db.programlisting.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <ref name="db.verbatim.attributes"/>
         <optional>
-          <ref name="db.qandaset.defaultlabel.attribute"/>
-        </optional>
-      </interleave>
-    </define>
-    <define name="db.qandaset.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.qandaset">
-      <element name="qandaset">
-        <a:documentation>A question-and-answer set</a:documentation>
-        <ref name="db.qandaset.attlist"/>
-        <ref name="db.qandaset.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <choice>
-          <oneOrMore>
-            <ref name="db.qandadiv"/>
-          </oneOrMore>
-          <oneOrMore>
-            <ref name="db.qandaentry"/>
-          </oneOrMore>
-        </choice>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db.qandadiv.role.attribute">
-      <attribute name="role"/>
-    </define>
-    <define name="db.qandadiv.attlist">
-      <interleave>
-        <optional>
-          <ref name="db.qandadiv.role.attribute"/>
+          <ref name="db.programlisting.width.attribute"/>
         </optional>
-        <ref name="db.common.attributes"/>
-        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.qandadiv.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.qandadiv">
-      <element name="qandadiv">
-        <a:documentation>A titled division in a QandASet</a:documentation>
-        <ref name="db.qandadiv.attlist"/>
-        <ref name="db.qandadiv.info"/>
-        <zeroOrMore>
-          <ref name="db.all.blocks"/>
-        </zeroOrMore>
-        <choice>
-          <oneOrMore>
-            <ref name="db.qandadiv"/>
-          </oneOrMore>
-          <oneOrMore>
-            <ref name="db.qandaentry"/>
-          </oneOrMore>
-        </choice>
+    <define name="db.programlisting">
+      <element name="programlisting">
+        <a:documentation>A literal listing of all or part of a program</a:documentation>
+        <ref name="db.programlisting.attlist"/>
+        <ref name="db.verbatim.contentmodel"/>
       </element>
     </define>
   </div>
+  <define name="db.admonition.blocks">
+    <choice>
+      <ref name="db.caution"/>
+      <ref name="db.important"/>
+      <ref name="db.note"/>
+      <ref name="db.tip"/>
+      <ref name="db.warning"/>
+    </choice>
+  </define>
+  <define name="db.admonition.contentmodel">
+    <ref name="db._info.title.only"/>
+    <oneOrMore>
+      <ref name="db.all.blocks"/>
+    </oneOrMore>
+  </define>
   <div>
-    <define name="db.qandaentry.role.attribute">
+    <define name="db.caution.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.qandaentry.attlist">
+    <define name="db.caution.attlist">
       <interleave>
         <optional>
-          <ref name="db.qandaentry.role.attribute"/>
+          <ref name="db.caution.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.qandaentry.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.qandaentry">
-      <element name="qandaentry">
-        <a:documentation>A question/answer set within a QandASet</a:documentation>
-        <ref name="db.qandaentry.attlist"/>
-        <ref name="db.qandaentry.info"/>
-        <ref name="db.question"/>
-        <zeroOrMore>
-          <ref name="db.answer"/>
-        </zeroOrMore>
+    <define name="db.caution">
+      <element name="caution">
+        <a:documentation>A note of caution</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caution">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caution</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caution">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of caution</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caution">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of caution</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caution">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caution</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:caution">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caution</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.caution.attlist"/>
+        <ref name="db.admonition.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.question.role.attribute">
+    <define name="db.important.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.question.attlist">
+    <define name="db.important.attlist">
       <interleave>
         <optional>
-          <ref name="db.question.role.attribute"/>
+          <ref name="db.important.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.question">
-      <element name="question">
-        <a:documentation>A question in a QandASet</a:documentation>
-        <ref name="db.question.attlist"/>
-        <optional>
-          <ref name="db.label"/>
-        </optional>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.important">
+      <element name="important">
+        <a:documentation>An admonition set off from the text</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:important">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of important</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:important">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of important</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:important">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of important</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:important">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of important</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:important">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of important</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.important.attlist"/>
+        <ref name="db.admonition.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.answer.role.attribute">
+    <define name="db.note.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.answer.attlist">
+    <define name="db.note.attlist">
       <interleave>
         <optional>
-          <ref name="db.answer.role.attribute"/>
+          <ref name="db.note.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.answer">
-      <element name="answer">
-        <a:documentation>An answer to a question posed in a QandASet</a:documentation>
-        <ref name="db.answer.attlist"/>
-        <optional>
-          <ref name="db.label"/>
-        </optional>
-        <oneOrMore>
-          <ref name="db.all.blocks"/>
-        </oneOrMore>
+    <define name="db.note">
+      <element name="note">
+        <a:documentation>A message set off from the text</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:note">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of note</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:note">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of note</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:note">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of note</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:note">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of note</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:note">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of note</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.note.attlist"/>
+        <ref name="db.admonition.contentmodel"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.label.role.attribute">
+    <define name="db.tip.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.label.attlist">
+    <define name="db.tip.attlist">
       <interleave>
         <optional>
-          <ref name="db.label.role.attribute"/>
+          <ref name="db.tip.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.label">
-      <element name="label">
-        <a:documentation>A label on a Question or Answer</a:documentation>
-        <ref name="db.label.attlist"/>
-        <ref name="db._text"/>
+    <define name="db.tip">
+      <element name="tip">
+        <a:documentation>A suggestion to the user, set off from the text</a:documentation>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:tip">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of tip</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:tip">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of tip</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:tip">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of tip</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:tip">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of tip</s:assert>
+          </s:rule>
+        </s:pattern>
+        <s:pattern name="Element exclusion">
+          <s:rule context="db:tip">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of tip</s:assert>
+          </s:rule>
+        </s:pattern>
+        <ref name="db.tip.attlist"/>
+        <ref name="db.admonition.contentmodel"/>
       </element>
     </define>
   </div>
-  <define name="db.math.inlines">
-    <ref name="db.inlineequation"/>
-  </define>
-  <define name="db.equation.content">
-    <choice>
-      <choice>
-        <oneOrMore>
-          <ref name="db.mediaobject"/>
-        </oneOrMore>
-        <oneOrMore>
-          <ref name="db.mathphrase"/>
-        </oneOrMore>
-      </choice>
-      <oneOrMore>
-        <ref name="db._any.mml"/>
-      </oneOrMore>
-    </choice>
-  </define>
-  <define name="db.inlineequation.content">
-    <choice>
-      <oneOrMore>
-        <ref name="db.inlinemediaobject"/>
-      </oneOrMore>
-      <oneOrMore>
-        <ref name="db.mathphrase"/>
-      </oneOrMore>
-    </choice>
-  </define>
   <div>
-    <define name="db.equation.role.attribute">
+    <define name="db.warning.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.equation.label.attribute">
-      <ref name="db.label.attribute"/>
-    </define>
-    <define name="db.equation.attlist">
+    <define name="db.warning.attlist">
       <interleave>
         <optional>
-          <ref name="db.equation.role.attribute"/>
+          <ref name="db.warning.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
-        <optional>
-          <ref name="db.equation.label.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.pgwide.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.floatstyle.attribute"/>
-        </optional>
       </interleave>
     </define>
-    <define name="db.equation.info">
-      <ref name="db._info.title.only"/>
-    </define>
-    <define name="db.equation">
-      <element name="equation">
-        <a:documentation>A displayed mathematical equation</a:documentation>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:example)">example must not occur in the descendants of equation</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of equation</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:table)">table must not occur in the descendants of equation</s:assert>
-          </s:rule>
-        </s:pattern>
-        <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:equation)">equation must not occur in the descendants of equation</s:assert>
-          </s:rule>
-        </s:pattern>
+    <define name="db.warning">
+      <element name="warning">
+        <a:documentation>An admonition set off from the text</a:documentation>
         <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of equation</s:assert>
+          <s:rule context="db:warning">
+            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of warning</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:important)">important must not occur in the descendants of equation</s:assert>
+          <s:rule context="db:warning">
+            <s:assert test="not(.//db:important)">important must not occur in the descendants of warning</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:note)">note must not occur in the descendants of equation</s:assert>
+          <s:rule context="db:warning">
+            <s:assert test="not(.//db:note)">note must not occur in the descendants of warning</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of equation</s:assert>
+          <s:rule context="db:warning">
+            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of warning</s:assert>
           </s:rule>
         </s:pattern>
         <s:pattern name="Element exclusion">
-          <s:rule context="db:equation">
-            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of equation</s:assert>
+          <s:rule context="db:warning">
+            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of warning</s:assert>
           </s:rule>
         </s:pattern>
-        <ref name="db.equation.attlist"/>
-        <ref name="db.equation.info"/>
-        <optional>
-          <ref name="db.alt"/>
-        </optional>
-        <ref name="db.equation.content"/>
-        <optional>
-          <ref name="db.caption"/>
-        </optional>
+        <ref name="db.warning.attlist"/>
+        <ref name="db.admonition.contentmodel"/>
       </element>
     </define>
   </div>
+  <define name="db.error.inlines">
+    <choice>
+      <ref name="db.errorcode"/>
+      <ref name="db.errortext"/>
+      <ref name="db.errorname"/>
+      <ref name="db.errortype"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.informalequation.role.attribute">
+    <define name="db.errorcode.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.informalequation.attlist">
+    <define name="db.errorcode.attlist">
       <interleave>
         <optional>
-          <ref name="db.informalequation.role.attribute"/>
+          <ref name="db.errorcode.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.informalequation.info">
-      <ref name="db._info.title.forbidden"/>
+    <define name="db.errorcode">
+      <element name="errorcode">
+        <a:documentation>An error code</a:documentation>
+        <ref name="db.errorcode.attlist"/>
+        <ref name="db._text"/>
+      </element>
     </define>
-    <define name="db.informalequation">
-      <element name="informalequation">
-        <a:documentation>A displayed mathematical equation without a title</a:documentation>
-        <ref name="db.informalequation.attlist"/>
-        <ref name="db.informalequation.info"/>
+  </div>
+  <div>
+    <define name="db.errorname.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.errorname.attlist">
+      <interleave>
         <optional>
-          <ref name="db.alt"/>
+          <ref name="db.errorname.role.attribute"/>
         </optional>
-        <ref name="db.equation.content"/>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.errorname">
+      <element name="errorname">
+        <a:documentation>An error name</a:documentation>
+        <ref name="db.errorname.attlist"/>
+        <ref name="db._text"/>
+      </element>
+    </define>
+  </div>
+  <div>
+    <define name="db.errortext.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.errortext.attlist">
+      <interleave>
         <optional>
-          <ref name="db.caption"/>
+          <ref name="db.errortext.role.attribute"/>
         </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.errortext">
+      <element name="errortext">
+        <a:documentation>An error message.</a:documentation>
+        <ref name="db.errortext.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.inlineequation.role.attribute">
+    <define name="db.errortype.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.inlineequation.attlist">
+    <define name="db.errortype.attlist">
       <interleave>
         <optional>
-          <ref name="db.inlineequation.role.attribute"/>
+          <ref name="db.errortype.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.inlineequation">
-      <element name="inlineequation">
-        <a:documentation>A mathematical equation or expression occurring inline</a:documentation>
-        <ref name="db.inlineequation.attlist"/>
-        <optional>
-          <ref name="db.alt"/>
-        </optional>
-        <ref name="db.inlineequation.content"/>
+    <define name="db.errortype">
+      <element name="errortype">
+        <a:documentation>The classification of an error message</a:documentation>
+        <ref name="db.errortype.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
+  <define name="db.systemitem.inlines">
+    <choice>
+      <ref name="db._text"/>
+      <ref name="db.co"/>
+    </choice>
+  </define>
   <div>
-    <define name="db.mathphrase.role.attribute">
+    <define name="db.systemitem.class.enumeration">
+      <choice>
+        <value>daemon</value>
+        <a:documentation>A daemon or other system process (syslogd)</a:documentation>
+        <value>domainname</value>
+        <a:documentation>A domain name (example.com)</a:documentation>
+        <value>etheraddress</value>
+        <a:documentation>An ethernet address (00:05:4E:49:FD:8E)</a:documentation>
+        <value>event</value>
+        <a:documentation>An event of some sort (SIGHUP)</a:documentation>
+        <value>eventhandler</value>
+        <a:documentation>An event handler of some sort (hangup)</a:documentation>
+        <value>filesystem</value>
+        <a:documentation>A filesystem (ext3)</a:documentation>
+        <value>fqdomainname</value>
+        <a:documentation>A fully qualified domain name (my.example.com)</a:documentation>
+        <value>groupname</value>
+        <a:documentation>A group name (wheel)</a:documentation>
+        <value>ipaddress</value>
+        <a:documentation>An IP address (127.0.0.1)</a:documentation>
+        <value>library</value>
+        <a:documentation>A library (libncurses)</a:documentation>
+        <value>macro</value>
+        <a:documentation>A macro</a:documentation>
+        <value>netmask</value>
+        <a:documentation>A netmask (255.255.255.192)</a:documentation>
+        <value>newsgroup</value>
+        <a:documentation>A newsgroup (comp.text.xml)</a:documentation>
+        <value>osname</value>
+        <a:documentation>An operating system name (Hurd)</a:documentation>
+        <value>process</value>
+        <a:documentation>A process (gnome-cups-icon)</a:documentation>
+        <value>protocol</value>
+        <a:documentation>A protocol (ftp)</a:documentation>
+        <value>resource</value>
+        <a:documentation>A resource</a:documentation>
+        <value>server</value>
+        <a:documentation>A server (mail.example.com)</a:documentation>
+        <value>service</value>
+        <a:documentation>A service (ppp)</a:documentation>
+        <value>systemname</value>
+        <a:documentation>A system name (hephaistos)</a:documentation>
+        <value>username</value>
+        <a:documentation>A user name (ndw)</a:documentation>
+      </choice>
+    </define>
+    <define name="db.systemitem.class.attribute">
+      <attribute name="class">
+        <a:documentation>Identifies the nature of the system item</a:documentation>
+        <ref name="db.systemitem.class.enumeration"/>
+      </attribute>
+    </define>
+    <define name="db.systemitem.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.mathphrase.attlist">
+    <define name="db.systemitem.attlist">
       <interleave>
         <optional>
-          <ref name="db.mathphrase.role.attribute"/>
+          <ref name="db.systemitem.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
         <ref name="db.common.linking.attributes"/>
+        <optional>
+          <ref name="db.systemitem.class.attribute"/>
+        </optional>
       </interleave>
     </define>
-    <define name="db.mathphrase">
-      <element name="mathphrase">
-        <a:documentation>A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup</a:documentation>
-        <ref name="db.mathphrase.attlist"/>
+    <define name="db.systemitem">
+      <element name="systemitem">
+        <a:documentation>A system-related item or term</a:documentation>
+        <ref name="db.systemitem.attlist"/>
         <zeroOrMore>
-          <choice>
-            <ref name="db._text"/>
-            <ref name="db.ubiq.inlines"/>
-            <ref name="db._emphasis"/>
-          </choice>
+          <ref name="db.systemitem.inlines"/>
         </zeroOrMore>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.imagedata.mathml.role.attribute">
+    <define name="db.option.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.imagedata.mathml.attlist">
+    <define name="db.option.attlist">
       <interleave>
         <optional>
-          <ref name="db.imagedata.mathml.role.attribute"/>
+          <ref name="db.option.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <attribute name="format">
-            <a:documentation>Specifies that the format of the data is MathML</a:documentation>
-            <value>mathml</value>
-            <a:documentation>Specifies MathML.</a:documentation>
-          </attribute>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.align.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.valign.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.width.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.contentwidth.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.scalefit.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.scale.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.depth.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.contentdepth.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.imagedata.mathml.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.imagedata.mathml">
-      <element name="imagedata">
-        <a:documentation>A MathML expression in a media object</a:documentation>
-        <ref name="db.imagedata.mathml.attlist"/>
-        <ref name="db.imagedata.mathml.info"/>
-        <oneOrMore>
-          <ref name="db._any.mml"/>
-        </oneOrMore>
-      </element>
-    </define>
-  </div>
-  <div>
-    <define name="db._any.mml">
-      <element>
-        <a:documentation>Any element from the MathML namespace</a:documentation>
-        <nsName ns="http://www.w3.org/1998/Math/MathML"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._any.attribute"/>
-            <text/>
-            <ref name="db._any"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.option">
+      <element name="option">
+        <a:documentation>An option for a software command</a:documentation>
+        <ref name="db.option.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db.imagedata.svg.role.attribute">
+    <define name="db.optional.role.attribute">
       <attribute name="role"/>
     </define>
-    <define name="db.imagedata.svg.attlist">
+    <define name="db.optional.attlist">
       <interleave>
         <optional>
-          <ref name="db.imagedata.svg.role.attribute"/>
+          <ref name="db.optional.role.attribute"/>
         </optional>
         <ref name="db.common.attributes"/>
-        <optional>
-          <attribute name="format">
-            <a:documentation>Specifies that the format of the data is SVG</a:documentation>
-            <value>svg</value>
-            <a:documentation>Specifies SVG.</a:documentation>
-          </attribute>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.align.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.valign.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.width.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.contentwidth.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.scalefit.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.scale.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.depth.attribute"/>
-        </optional>
-        <optional>
-          <ref name="db.imagedata.contentdepth.attribute"/>
-        </optional>
+        <ref name="db.common.linking.attributes"/>
       </interleave>
     </define>
-    <define name="db.imagedata.svg.info">
-      <ref name="db._info.title.forbidden"/>
-    </define>
-    <define name="db.imagedata.svg">
-      <element name="imagedata">
-        <a:documentation>An SVG drawing in a media object</a:documentation>
-        <ref name="db.imagedata.svg.attlist"/>
-        <ref name="db.imagedata.svg.info"/>
-        <oneOrMore>
-          <ref name="db._any.svg"/>
-        </oneOrMore>
+    <define name="db.optional">
+      <element name="optional">
+        <a:documentation>Optional information</a:documentation>
+        <ref name="db.optional.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>
   <div>
-    <define name="db._any.svg">
-      <element>
-        <a:documentation>Any element from the SVG namespace</a:documentation>
-        <nsName ns="http://www.w3.org/2000/svg"/>
-        <zeroOrMore>
-          <choice>
-            <ref name="db._any.attribute"/>
-            <text/>
-            <ref name="db._any"/>
-          </choice>
-        </zeroOrMore>
+    <define name="db.property.role.attribute">
+      <attribute name="role"/>
+    </define>
+    <define name="db.property.attlist">
+      <interleave>
+        <optional>
+          <ref name="db.property.role.attribute"/>
+        </optional>
+        <ref name="db.common.attributes"/>
+        <ref name="db.common.linking.attributes"/>
+      </interleave>
+    </define>
+    <define name="db.property">
+      <element name="property">
+        <a:documentation>A unit of data associated with some part of a computer system</a:documentation>
+        <ref name="db.property.attlist"/>
+        <ref name="db._text"/>
       </element>
     </define>
   </div>