<?xml version="1.0" encoding="utf-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:svg="http://www.w3.org/2000/svg" xmlns:s="http://www.ascc.net/xml/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://docbook.org/ns/docbook">
  <s:ns prefix="a" uri="http://relaxng.org/ns/compatibility/annotations/1.0"/>
  <s:ns prefix="ctrl" uri="http://nwalsh.com/xmlns/schema-control/"/>
  <s:ns prefix="db" uri="http://docbook.org/ns/docbook"/>
  <s:ns prefix="dbx" uri="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup"/>
  <s:ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>
  <s:ns prefix="mml" uri="http://www.w3.org/1998/Math/MathML"/>
  <s:ns prefix="rng" uri="http://relaxng.org/ns/structure/1.0"/>
  <s:ns prefix="s" uri="http://www.ascc.net/xml/schematron"/>
  <s:ns prefix="svg" uri="http://www.w3.org/2000/svg"/>
  <s:ns prefix="xi" uri="http://www.w3.org/2001/XInclude"/>
  <s:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/>
<!-- DocBook V5.0b2-->
<!-- See http://docbook.org/ns/docbook -->
  <start>
    <choice>
      <choice>
        <ref name="db.set"/>
        <ref name="db.book"/>
        <ref name="db.divisions"/>
        <ref name="db.components"/>
        <ref name="db.navigation.components"/>
        <ref name="db.section"/>
        <ref name="db.para"/>
      </choice>
      <choice>
        <ref name="db.sect1"/>
        <ref name="db.sect2"/>
        <ref name="db.sect3"/>
        <ref name="db.sect4"/>
        <ref name="db.sect5"/>
      </choice>
      <choice>
        <ref name="db.refentry"/>
        <ref name="db.refsection"/>
      </choice>
      <choice>
        <ref name="db.refsect1"/>
        <ref name="db.refsect2"/>
        <ref name="db.refsect3"/>
      </choice>
      <ref name="db.setindex"/>
    </choice>
  </start>
  <div>
    <define name="db._any">
      <element>
        <a:documentation>Any element from any namespace except the DocBook namespace</a:documentation>
        <anyName>
          <except>
            <nsName/>
            <nsName ns="http://www.w3.org/1999/xhtml"/>
          </except>
        </anyName>
        <zeroOrMore>
          <choice>
            <attribute>
              <anyName/>
            </attribute>
            <text/>
            <ref name="db._any"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <define name="db.effectivity.attributes">
    <optional>
      <attribute name="arch">
        <a:documentation>Designates the computer or chip architecture to which the element applies</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="condition">
        <a:documentation>provides a standard place for application-specific effectivity</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="conformance">
        <a:documentation>Indicates standards conformance characteristics of the element</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="os">
        <a:documentation>Indicates the operating system to which the element is applicable</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="revision">
        <a:documentation>Indicates the editorial revision to which the element belongs</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="security">
        <a:documentation>Indicates something about the security level associated with the element to which it applies</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="userlevel">
        <a:documentation>Indicates the level of user experience for which the element applies</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="vendor">
        <a:documentation>Indicates the computer vendor to which the element applies.</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="wordsize">
        <a:documentation>Indicates the word size (width in bits) of the computer architecture to which the element applies</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="db.linkend.attribute">
    <attribute name="linkend">
      <a:documentation>Points to an internal link target by identifying the value of its xml:id attribute</a:documentation>
      <data type="IDREF"/>
    </attribute>
  </define>
  <define name="db.linkends.attribute">
    <attribute name="linkends">
      <a:documentation>Points to one or more internal link targets by identifying the value of their xml:id attributes</a:documentation>
      <data type="IDREFS"/>
    </attribute>
  </define>
  <define name="db.xlink.href.attribute">
    <attribute name="xlink:href">
      <a:documentation>Identifies a link target with a URI</a:documentation>
    </attribute>
  </define>
  <define name="db.xlink.type.attribute">
    <attribute name="xlink:type">
      <a:documentation>Identifies the element as an XLink simple link</a:documentation>
      <value>simple</value>
    </attribute>
  </define>
  <define name="db.xlink.role.attribute">
    <attribute name="xlink:role">
      <a:documentation>Identifies the XLink role of the link</a:documentation>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.arcrole.attribute">
    <attribute name="xlink:arcrole">
      <a:documentation>Identifies the XLink arcrole of the link</a:documentation>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.title.attribute">
    <optional>
      <attribute name="xlink:title">
        <a:documentation>Identifies the XLink title of the link</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="db.xlink.show.enumeration">
    <choice>
      <value>new</value>
      <a:documentation>An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.</a:documentation>
      <value>replace</value>
      <a:documentation>An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</a:documentation>
      <value>embed</value>
      <a:documentation>An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.</a:documentation>
      <value>other</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.</a:documentation>
      <value>none</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</a:documentation>
    </choice>
  </define>
  <define name="db.xlink.show.attribute">
    <attribute name="xlink:show">
      <a:documentation>Identifies the XLink show behavior of the link</a:documentation>
      <ref name="db.xlink.show.enumeration"/>
    </attribute>
  </define>
  <define name="db.xlink.actuate.enumeration">
    <choice>
      <value>onLoad</value>
      <a:documentation>An application should traverse to the ending resource immediately on loading the starting resource.</a:documentation>
      <value>onRequest</value>
      <a:documentation>An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.</a:documentation>
      <value>other</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.</a:documentation>
      <value>none</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</a:documentation>
    </choice>
  </define>
  <define name="db.xlink.actuate.attribute">
    <attribute name="xlink:actuate">
      <a:documentation>Identifies the XLink actuate behavior of the link</a:documentation>
      <ref name="db.xlink.actuate.enumeration"/>
    </attribute>
  </define>
  <define name="db.href.attribute">
    <interleave>
      <ref name="db.xlink.href.attribute"/>
      <optional>
        <ref name="db.xlink.type.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.role.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>
    </interleave>
  </define>
  <define name="db.xml.id.attribute">
    <attribute name="xml:id">
      <a:documentation>Identifies the unique ID value of the element</a:documentation>
      <data type="ID"/>
    </attribute>
  </define>
  <define name="db.version.attribute">
    <attribute name="version">
      <a:documentation>Specifies the DocBook version of the element and its descendants</a:documentation>
    </attribute>
  </define>
  <define name="db.xml.lang.attribute">
    <attribute name="xml:lang">
      <a:documentation>Specifies the natural language of the element and its descendants</a:documentation>
    </attribute>
  </define>
  <define name="db.xml.base.attribute">
    <attribute name="xml:base">
      <a:documentation>Specifies the base URI of the element and its descendants</a:documentation>
    </attribute>
  </define>
  <define name="db.remap.attribute">
    <attribute name="remap">
      <a:documentation>Provides the name or similar semantic identifier assigned to the content in some previous markup scheme</a:documentation>
    </attribute>
  </define>
  <define name="db.xreflabel.attribute">
    <attribute name="xreflabel">
      <a:documentation>Provides the text that is to be generated for a cross reference to the element</a:documentation>
    </attribute>
  </define>
  <define name="db.revisionflag.enumeration">
    <choice>
      <value>changed</value>
      <a:documentation>The element has been changed.</a:documentation>
      <value>added</value>
      <a:documentation>The element is new (has been added to the document).</a:documentation>
      <value>deleted</value>
      <a:documentation>The element has been deleted.</a:documentation>
      <value>off</value>
      <a:documentation>Explicitly turns off revision markup for this element.</a:documentation>
    </choice>
  </define>
  <define name="db.revisionflag.attribute">
    <attribute name="revisionflag">
      <a:documentation>Identifies the revision status of the element</a:documentation>
      <ref name="db.revisionflag.enumeration"/>
    </attribute>
  </define>
  <define name="db.dir.enumeration">
    <choice>
      <value>ltr</value>
      <a:documentation>Left-to-right text</a:documentation>
      <value>rtl</value>
      <a:documentation>Right-to-left text</a:documentation>
      <value>lro</value>
      <a:documentation>Left-to-right override</a:documentation>
      <value>rlo</value>
      <a:documentation>Right-to-left override</a:documentation>
    </choice>
  </define>
  <define name="db.dir.attribute">
    <attribute name="dir">
      <a:documentation>Identifies the direction of text in an element</a:documentation>
      <ref name="db.dir.enumeration"/>
    </attribute>
  </define>
  <define name="db.common.attributes">
    <interleave>
      <optional>
        <ref name="db.xml.id.attribute"/>
      </optional>
      <optional>
        <ref name="db.version.attribute"/>
      </optional>
      <optional>
        <ref name="db.xml.lang.attribute"/>
      </optional>
      <optional>
        <ref name="db.xml.base.attribute"/>
      </optional>
      <optional>
        <ref name="db.remap.attribute"/>
      </optional>
      <optional>
        <ref name="db.xreflabel.attribute"/>
      </optional>
      <optional>
        <ref name="db.revisionflag.attribute"/>
      </optional>
      <optional>
        <ref name="db.dir.attribute"/>
      </optional>
      <ref name="db.effectivity.attributes"/>
      <optional>
        <ref name="db.annotations.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="db.common.idreq.attributes">
    <interleave>
      <ref name="db.xml.id.attribute"/>
      <optional>
        <ref name="db.version.attribute"/>
      </optional>
      <optional>
        <ref name="db.xml.lang.attribute"/>
      </optional>
      <optional>
        <ref name="db.xml.base.attribute"/>
      </optional>
      <optional>
        <ref name="db.remap.attribute"/>
      </optional>
      <optional>
        <ref name="db.xreflabel.attribute"/>
      </optional>
      <optional>
        <ref name="db.revisionflag.attribute"/>
      </optional>
      <optional>
        <ref name="db.dir.attribute"/>
      </optional>
      <ref name="db.effectivity.attributes"/>
      <optional>
        <ref name="db.annotations.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="db.common.linking.attributes">
    <optional>
      <choice>
        <ref name="db.linkend.attribute"/>
        <ref name="db.href.attribute"/>
      </choice>
    </optional>
  </define>
  <define name="db.common.req.linking.attributes">
    <choice>
      <ref name="db.linkend.attribute"/>
      <ref name="db.href.attribute"/>
    </choice>
  </define>
  <define name="db.common.data.attributes">
    <optional>
      <attribute name="format">
        <a:documentation>Specifies the format of the data</a:documentation>
      </attribute>
    </optional>
    <choice>
      <attribute name="fileref">
        <a:documentation>Indentifies the location of the data by URI</a:documentation>
        <data type="anyURI"/>
      </attribute>
      <attribute name="entityref">
        <a:documentation>Identifies the location of the data by external identifier (entity name)</a:documentation>
        <data type="ENTITY"/>
      </attribute>
    </choice>
  </define>
  <define name="db.verbatim.continuation.enumeration">
    <choice>
      <value>continues</value>
      <a:documentation>Line numbering continues from the immediately preceding element with the same name.</a:documentation>
      <value>restarts</value>
      <a:documentation>Line numbering restarts (begins at 1, usually).</a:documentation>
    </choice>
  </define>
  <define name="db.verbatim.continuation.attribute">
    <attribute name="continuation">
      <a:documentation>Determines whether line numbering continues from the previous element or restarts.</a:documentation>
      <ref name="db.verbatim.continuation.enumeration"/>
    </attribute>
  </define>
  <define name="db.verbatim.linenumbering.enumeration">
    <choice>
      <value>numbered</value>
      <a:documentation>Lines are numbered.</a:documentation>
      <value>unnumbered</value>
      <a:documentation>Lines are not numbered.</a:documentation>
    </choice>
  </define>
  <define name="db.verbatim.linenumbering.attribute">
    <attribute name="linenumbering">
      <a:documentation>Determines whether lines are numbered.</a:documentation>
      <ref name="db.verbatim.linenumbering.enumeration"/>
    </attribute>
  </define>
  <define name="db.verbatim.startinglinenumber.attribute">
    <attribute name="startinglinenumber">
      <a:documentation>Specifies the initial line number.</a:documentation>
      <data type="integer"/>
    </attribute>
  </define>
  <define name="db.verbatim.language.attribute">
    <attribute name="language">
      <a:documentation>Identifies the language (i.e. programming language) of the verbatim content.</a:documentation>
    </attribute>
  </define>
  <define name="db.verbatim.xml.space.attribute">
    <attribute name="xml:space">
      <a:documentation>Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not.</a:documentation>
      <value>preserve</value>
      <a:documentation>Whitespace must be preserved.</a:documentation>
    </attribute>
  </define>
  <define name="db.verbatim.attributes">
    <interleave>
      <optional>
        <ref name="db.verbatim.continuation.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.linenumbering.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.startinglinenumber.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.language.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.xml.space.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="db.spacing.enumeration">
    <choice>
      <value>compact</value>
      <a:documentation>The spacing should be "compact".</a:documentation>
      <value>normal</value>
      <a:documentation>The spacing should be "normal".</a:documentation>
    </choice>
  </define>
  <define name="db.spacing.attribute">
    <attribute name="spacing">
      <a:documentation>Specifies (a hint about) the spacing of the content</a:documentation>
      <ref name="db.spacing.enumeration"/>
    </attribute>
  </define>
  <define name="db.pgwide.enumeration">
    <choice>
      <value>0</value>
      <a:documentation>The element should be rendered in the current text flow (with the flow column width).</a:documentation>
      <value>1</value>
      <a:documentation>The element should be rendered across the full text page.</a:documentation>
    </choice>
  </define>
  <define name="db.pgwide.attribute">
    <attribute name="pgwide">
      <a:documentation>Indicates if the element is rendered across the column or the page</a:documentation>
      <ref name="db.pgwide.enumeration"/>
    </attribute>
  </define>
  <define name="db.language.attribute">
    <attribute name="language">
      <a:documentation>Identifies the language (i.e. programming language) of the content.</a:documentation>
    </attribute>
  </define>
  <define name="db.performance.enumeration">
    <choice>
      <value>optional</value>
      <a:documentation>The content describes an optional step or steps.</a:documentation>
      <value>required</value>
      <a:documentation>The content describes a required step or steps.</a:documentation>
    </choice>
  </define>
  <define name="db.performance.attribute">
    <attribute name="performance">
      <a:documentation>Specifies if the content is required or optional.</a:documentation>
      <ref name="db.performance.enumeration"/>
    </attribute>
  </define>
  <define name="db.floatstyle.attribute">
    <attribute name="floatstyle">
      <a:documentation>Specifies style information to be used when rendering the float</a:documentation>
    </attribute>
  </define>
  <define name="db.halign.enumeration">
    <choice>
      <value>center</value>
      <a:documentation>Centered horizontally</a:documentation>
      <value>char</value>
      <a:documentation>Aligned horizontally on the specified character</a:documentation>
      <value>justify</value>
      <a:documentation>Fully justified (left and right margins or edges)</a:documentation>
      <value>left</value>
      <a:documentation>Left aligned</a:documentation>
      <value>right</value>
      <a:documentation>Right aligned</a:documentation>
    </choice>
  </define>
  <define name="db.valign.enumeration">
    <choice>
      <value>bottom</value>
      <a:documentation>Aligned on the bottom of the region</a:documentation>
      <value>middle</value>
      <a:documentation>Centered vertically</a:documentation>
      <value>top</value>
      <a:documentation>Aligned on the top of the region</a:documentation>
    </choice>
  </define>
  <define name="db.biblio.class.enumeration">
    <choice>
      <value>doi</value>
      <a:documentation>A document object identifier.</a:documentation>
      <value>isbn</value>
      <a:documentation>An international standard book number.</a:documentation>
      <value>isrn</value>
      <a:documentation>An international standard technical report number (ISO 10444).</a:documentation>
      <value>issn</value>
      <a:documentation>An international standard serial number.</a:documentation>
      <value>libraryofcongress</value>
      <a:documentation>A Library of Congress reference number.</a:documentation>
      <value>pubnumber</value>
      <a:documentation>A publication number (an internal number or possibly organizational standard).</a:documentation>
      <value>uri</value>
      <a:documentation>A Uniform Resource Identifier</a:documentation>
    </choice>
  </define>
  <define name="db.biblio.class-enum.attribute">
    <optional>
      <attribute name="class">
        <a:documentation>Identifies the kind of bibliographic identifier</a:documentation>
        <ref name="db.biblio.class.enumeration"/>
      </attribute>
    </optional>
  </define>
  <define name="db.biblio.class-other.attribute">
    <attribute name="otherclass">
      <a:documentation>Provides an identifier for elements with the class 'other'</a:documentation>
      <data type="NMTOKEN"/>
    </attribute>
  </define>
  <define name="db.biblio.class-other.attributes">
    <interleave>
      <attribute name="class">
        <value>other</value>
      </attribute>
      <ref name="db.biblio.class-other.attribute"/>
    </interleave>
  </define>
  <define name="db.biblio.class.attribute">
    <choice>
      <ref name="db.biblio.class-enum.attribute"/>
      <ref name="db.biblio.class-other.attributes"/>
    </choice>
  </define>
  <define name="db.ubiq.inlines">
    <choice>
      <choice>
        <ref name="db.inlinemediaobject"/>
        <ref name="db.remark"/>
        <ref name="db.superscript"/>
        <ref name="db.subscript"/>
        <ref name="db.link.inlines"/>
        <ref name="db.alt"/>
      </choice>
      <ref name="db.annotation"/>
      <ref name="db.indexterm"/>
    </choice>
  </define>
  <define name="db._text">
    <zeroOrMore>
      <choice>
        <text/>
        <ref name="db.ubiq.inlines"/>
        <ref name="db._phrase"/>
        <ref name="db.replaceable"/>
      </choice>
    </zeroOrMore>
  </define>
  <define name="db._title">
    <interleave>
      <optional>
        <ref name="db.title"/>
      </optional>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
      <optional>
        <ref name="db.subtitle"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.req">
    <interleave>
      <ref name="db.title"/>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
      <optional>
        <ref name="db.subtitle"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.only">
    <interleave>
      <optional>
        <ref name="db.title"/>
      </optional>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.onlyreq">
    <interleave>
      <ref name="db.title"/>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
    </interleave>
  </define>
  <define name="db._info">
    <choice>
      <group>
        <optional>
          <ref name="db._title.req"/>
        </optional>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <optional>
        <ref name="db.info"/>
      </optional>
    </choice>
  </define>
  <define name="db._info.title.req">
    <choice>
      <group>
        <ref name="db._title.req"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <ref name="db.titlereq.info"/>
    </choice>
  </define>
  <define name="db._info.title.only">
    <choice>
      <group>
        <ref name="db._title.only"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <ref name="db.titleonly.info"/>
    </choice>
  </define>
  <define name="db._info.title.onlyreq">
    <choice>
      <group>
        <ref name="db._title.onlyreq"/>
        <optional>
          <ref name="db.titleforbidden.info"/>
        </optional>
      </group>
      <ref name="db.titleonlyreq.info"/>
    </choice>
  </define>
  <define name="db._info.title.forbidden">
    <optional>
      <ref name="db.titleforbidden.info"/>
    </optional>
  </define>
  <define name="db.all.inlines">
    <choice>
      <choice>
        <text/>
        <ref name="db.ubiq.inlines"/>
        <ref name="db.general.inlines"/>
        <ref name="db.domain.inlines"/>
        <ref name="db.extension.inlines"/>
      </choice>
      <ref name="db.xi.include"/>
    </choice>
  </define>
  <define name="db.general.inlines">
    <choice>
      <ref name="db.publishing.inlines"/>
      <ref name="db.product.inlines"/>
      <ref name="db.bibliography.inlines"/>
      <ref name="db.graphic.inlines"/>
      <ref name="db.indexing.inlines"/>
      <ref name="db.link.inlines"/>
    </choice>
  </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.math.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.property"/>
        <ref name="db.termdef"/>
      </choice>
      <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>
  </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>
  </define>
  <define name="db.bibliography.inlines">
    <choice>
      <ref name="db.citation"/>
      <ref name="db.citerefentry"/>
      <ref name="db.citetitle"/>
      <ref name="db.citebiblioid"/>
      <ref name="db.author"/>
      <ref name="db.personname"/>
      <ref name="db.orgname"/>
      <ref name="db.editor"/>
    </choice>
  </define>
  <define name="db.publishing.inlines">
    <choice>
      <choice>
        <ref name="db.abbrev"/>
        <ref name="db.acronym"/>
        <ref name="db.date"/>
        <ref name="db.emphasis"/>
        <ref name="db.footnote"/>
        <ref name="db.footnoteref"/>
        <ref name="db.foreignphrase"/>
        <ref name="db.phrase"/>
        <ref name="db.quote"/>
        <ref name="db.subscript"/>
        <ref name="db.superscript"/>
        <ref name="db.wordasword"/>
      </choice>
      <ref name="db.glossary.inlines"/>
      <ref name="db.coref"/>
    </choice>
  </define>
  <define name="db.graphic.inlines">
    <ref name="db.inlinemediaobject"/>
  </define>
  <define name="db.indexing.inlines">
    <choice>
      <notAllowed/>
      <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>
        <ref name="db.xref"/>
        <ref name="db.link"/>
        <ref name="db.olink"/>
        <ref name="db.anchor"/>
      </choice>
      <ref name="db.biblioref"/>
    </choice>
  </define>
  <define name="db.extension.inlines">
    <notAllowed/>
  </define>
  <define name="db.nopara.blocks">
    <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.math.blocks"/>
    </choice>
  </define>
  <define name="db.para.blocks">
    <choice>
      <ref name="db.anchor"/>
      <ref name="db.para"/>
      <ref name="db.formalpara"/>
      <ref name="db.simpara"/>
    </choice>
  </define>
  <define name="db.all.blocks">
    <choice>
      <choice>
        <ref name="db.nopara.blocks"/>
        <ref name="db.para.blocks"/>
        <ref name="db.extension.blocks"/>
      </choice>
      <ref name="db.annotation"/>
      <ref name="db.xi.include"/>
    </choice>
  </define>
  <define name="db.formal.blocks">
    <choice>
      <ref name="db.example"/>
      <ref name="db.figure"/>
      <ref name="db.table"/>
    </choice>
  </define>
  <define name="db.informal.blocks">
    <choice>
      <ref name="db.informalexample"/>
      <ref name="db.informalfigure"/>
      <ref name="db.informaltable"/>
    </choice>
  </define>
  <define name="db.publishing.blocks">
    <choice>
      <ref name="db.sidebar"/>
      <ref name="db.blockquote"/>
      <ref name="db.address"/>
      <ref name="db.epigraph"/>
    </choice>
  </define>
  <define name="db.graphic.blocks">
    <choice>
      <ref name="db.mediaobject"/>
      <ref name="db.screenshot"/>
    </choice>
  </define>
  <define name="db.technical.blocks">
    <choice>
      <ref name="db.procedure"/>
      <ref name="db.task"/>
      <choice>
        <ref name="db.productionset"/>
        <ref name="db.constraintdef"/>
      </choice>
      <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>
        <ref name="db.itemizedlist"/>
        <ref name="db.orderedlist"/>
        <ref name="db.procedure"/>
        <ref name="db.simplelist"/>
        <ref name="db.variablelist"/>
        <ref name="db.segmentedlist"/>
      </choice>
      <ref name="db.glosslist"/>
      <ref name="db.bibliolist"/>
      <ref name="db.calloutlist"/>
      <ref name="db.qandaset"/>
    </choice>
  </define>
  <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>
  </define>
  <define name="db.extension.blocks">
    <notAllowed/>
  </define>
  <define name="db.info.elements">
    <choice>
      <choice>
        <ref name="db.abstract"/>
        <ref name="db.address"/>
        <ref name="db.artpagenums"/>
        <ref name="db.author"/>
        <ref name="db.authorgroup"/>
        <ref name="db.authorinitials"/>
        <ref name="db.bibliocoverage"/>
        <ref name="db.biblioid"/>
        <ref name="db.bibliosource"/>
        <ref name="db.collab"/>
        <ref name="db.confgroup"/>
        <ref name="db.contractsponsor"/>
        <ref name="db.contractnum"/>
        <ref name="db.copyright"/>
        <ref name="db.date"/>
        <ref name="db.edition"/>
        <ref name="db.editor"/>
        <ref name="db.issuenum"/>
        <ref name="db.keywordset"/>
        <ref name="db.legalnotice"/>
        <ref name="db.mediaobject"/>
        <ref name="db.orgname"/>
        <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.releaseinfo"/>
        <ref name="db.revhistory"/>
        <ref name="db.seriesvolnums"/>
        <ref name="db.subjectset"/>
        <ref name="db.volumenum"/>
      </choice>
      <ref name="db.annotation"/>
      <ref name="db.extendedlink"/>
      <choice>
        <ref name="db.bibliomisc"/>
        <ref name="db.bibliomset"/>
        <ref name="db.bibliorelation"/>
        <ref name="db.biblioset"/>
      </choice>
      <ref name="db.itermset"/>
    </choice>
  </define>
  <define name="db.bibliographic.elements">
    <choice>
      <ref name="db.info.elements"/>
      <ref name="db.abbrev"/>
      <ref name="db.citerefentry"/>
      <ref name="db.citetitle"/>
      <ref name="db.citebiblioid"/>
      <ref name="db.personname"/>
      <ref name="db.subtitle"/>
      <ref name="db.title"/>
    </choice>
  </define>
  <div>
    <define name="db.title.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.title.attlist">
      <interleave>
        <optional>
          <ref name="db.title.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.title">
      <element name="title">
        <a:documentation>The text of the title of a section of a document or of a formal block-level element</a:documentation>
        <ref name="db.title.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleabbrev.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleabbrev.attlist">
      <interleave>
        <optional>
          <ref name="db.titleabbrev.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.titleabbrev">
      <element name="titleabbrev">
        <a:documentation>The abbreviation of a Title</a:documentation>
        <ref name="db.titleabbrev.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subtitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subtitle.attlist">
      <interleave>
        <optional>
          <ref name="db.subtitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subtitle">
      <element name="subtitle">
        <a:documentation>The subtitle of a document</a:documentation>
        <ref name="db.subtitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.info.attlist">
      <interleave>
        <optional>
          <ref name="db.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block</a:documentation>
        <ref name="db.info.attlist"/>
        <ref name="db._title"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titlereq.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titlereq.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titlereq.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titlereq.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block with a required title</a:documentation>
        <ref name="db.titlereq.info.attlist"/>
        <ref name="db._title.req"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleonly.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleonly.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleonly.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleonly.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block with only a title</a:documentation>
        <ref name="db.titleonly.info.attlist"/>
        <ref name="db._title.only"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleonlyreq.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleonlyreq.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleonlyreq.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleonlyreq.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block with only a required title</a:documentation>
        <ref name="db.titleonlyreq.info.attlist"/>
        <ref name="db._title.onlyreq"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleforbidden.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleforbidden.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleforbidden.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleforbidden.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block without a title</a:documentation>
        <ref name="db.titleforbidden.info.attlist"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subjectset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subjectset.scheme.attribute">
      <attribute name="scheme">
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.subjectset.attlist">
      <interleave>
        <optional>
          <ref name="db.subjectset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.subjectset.scheme.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.subjectset">
      <element name="subjectset">
        <a:documentation>A set of terms describing the subject matter of a document</a:documentation>
        <ref name="db.subjectset.attlist"/>
        <oneOrMore>
          <ref name="db.subject"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subject.weight.attribute">
      <attribute name="weight"/>
    </define>
    <define name="db.subject.attlist">
      <interleave>
        <optional>
          <ref name="db.subject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.subject.weight.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.subject">
      <element name="subject">
        <a:documentation>One of a group of terms describing the subject matter of a document</a:documentation>
        <ref name="db.subject.attlist"/>
        <oneOrMore>
          <ref name="db.subjectterm"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subjectterm.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subjectterm.attlist">
      <interleave>
        <optional>
          <ref name="db.subjectterm.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subjectterm">
      <element name="subjectterm">
        <a:documentation>A term in a group of terms describing the subject matter of a document</a:documentation>
        <ref name="db.subjectterm.attlist"/>
        <text/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.keywordset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.keywordset.attlist">
      <interleave>
        <optional>
          <ref name="db.keywordset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.keywordset">
      <element name="keywordset">
        <a:documentation>A set of keywords describing the content of a document</a:documentation>
        <ref name="db.keywordset.attlist"/>
        <oneOrMore>
          <ref name="db.keyword"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.keyword.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.keyword.attlist">
      <interleave>
        <optional>
          <ref name="db.keyword.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.keyword">
      <element name="keyword">
        <a:documentation>One of a set of keywords describing the content of a document</a:documentation>
        <ref name="db.keyword.attlist"/>
        <text/>
      </element>
    </define>
  </div>
  <define name="db.table.choice">
    <choice>
      <notAllowed/>
      <ref name="db.cals.table"/>
      <ref name="db.html.table"/>
    </choice>
  </define>
  <define name="db.informaltable.choice">
    <choice>
      <notAllowed/>
      <ref name="db.cals.informaltable"/>
      <ref name="db.html.informaltable"/>
    </choice>
  </define>
  <define name="db.table">
    <ref name="db.table.choice"/>
  </define>
  <define name="db.informaltable">
    <ref name="db.informaltable.choice"/>
  </define>
  <div>
    <define name="db.procedure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.procedure.attlist">
      <interleave>
        <optional>
          <ref name="db.procedure.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.procedure.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.procedure">
      <element name="procedure">
        <a:documentation>A list of operations to be performed in a well-defined sequence</a:documentation>
        <ref name="db.procedure.attlist"/>
        <ref name="db.procedure.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.step"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.step.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.step.attlist">
      <interleave>
        <optional>
          <ref name="db.step.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.performance.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.step.info">
      <ref name="db._info.title.only"/>
    </define>
<!--

      This content model is blocks*, step|stepalternatives, blocks* but
      expressed this way it avoids UPA issues in XSD and DTD versions
    -->
    <define name="db.step">
      <element name="step">
        <a:documentation>A unit of action in a procedure</a:documentation>
        <ref name="db.step.attlist"/>
        <ref name="db.step.info"/>
        <choice>
          <group>
            <oneOrMore>
              <ref name="db.all.blocks"/>
            </oneOrMore>
            <optional>
              <choice>
                <ref name="db.substeps"/>
                <ref name="db.stepalternatives"/>
              </choice>
              <zeroOrMore>
                <ref name="db.all.blocks"/>
              </zeroOrMore>
            </optional>
          </group>
          <group>
            <choice>
              <ref name="db.substeps"/>
              <ref name="db.stepalternatives"/>
            </choice>
            <zeroOrMore>
              <ref name="db.all.blocks"/>
            </zeroOrMore>
          </group>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.stepalternatives.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.stepalternatives.attlist">
      <interleave>
        <optional>
          <ref name="db.stepalternatives.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.performance.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.stepalternatives.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.stepalternatives">
      <element name="stepalternatives">
        <a:documentation>Alternative steps in a procedure</a:documentation>
        <ref name="db.stepalternatives.attlist"/>
        <ref name="db.stepalternatives.info"/>
        <oneOrMore>
          <ref name="db.step"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.substeps.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.substeps.attlist">
      <interleave>
        <optional>
          <ref name="db.substeps.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.performance.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.substeps">
      <element name="substeps">
        <a:documentation>A wrapper for steps that occur within steps in a procedure</a:documentation>
        <ref name="db.substeps.attlist"/>
        <oneOrMore>
          <ref name="db.step"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.sidebar.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.sidebar.attlist">
      <interleave>
        <optional>
          <ref name="db.sidebar.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.sidebar.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.sidebar">
      <element name="sidebar">
        <a:documentation>A portion of a document that is isolated from the main narrative flow</a:documentation>
        <s:pattern name="Element exclusion">
          <s:rule context="db:sidebar">
            <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of sidebar</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.sidebar.attlist"/>
        <ref name="db.sidebar.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.abstract.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.abstract.attlist">
      <interleave>
        <optional>
          <ref name="db.abstract.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.abstract.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.abstract">
      <element name="abstract">
        <a:documentation>A summary</a:documentation>
        <ref name="db.abstract.attlist"/>
        <ref name="db.abstract.info"/>
        <oneOrMore>
          <ref name="db.para.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.personblurb.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.personblurb.attlist">
      <interleave>
        <optional>
          <ref name="db.personblurb.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.personblurb.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.personblurb">
      <element name="personblurb">
        <a:documentation>A short description or note about a person</a:documentation>
        <ref name="db.personblurb.attlist"/>
        <ref name="db.personblurb.info"/>
        <oneOrMore>
          <ref name="db.para.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.blockquote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.blockquote.attlist">
      <interleave>
        <optional>
          <ref name="db.blockquote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.blockquote.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.blockquote">
      <element name="blockquote">
        <a:documentation>A quotation set off from the main text</a:documentation>
        <ref name="db.blockquote.attlist"/>
        <ref name="db.blockquote.info"/>
        <optional>
          <ref name="db.attribution"/>
        </optional>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.attribution.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.attribution.attlist">
      <interleave>
        <optional>
          <ref name="db.attribution.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.attribution">
      <element name="attribution">
        <a:documentation>The source of a block quote or epigraph</a:documentation>
        <ref name="db.attribution.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.personname"/>
            <ref name="db.citetitle"/>
            <ref name="db.citation"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.bridgehead.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bridgehead.renderas.enumeration">
      <choice>
        <value>other</value>
        <value>sect1</value>
        <value>sect2</value>
        <value>sect3</value>
        <value>sect4</value>
        <value>sect5</value>
      </choice>
    </define>
    <define name="db.bridgehead.renderas.attribute">
      <attribute name="renderas">
        <ref name="db.bridgehead.renderas.enumeration"/>
      </attribute>
    </define>
    <define name="db.bridgehead.attlist">
      <interleave>
        <optional>
          <ref name="db.bridgehead.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.bridgehead.renderas.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.bridgehead">
      <element name="bridgehead">
        <a:documentation>A free-floating heading</a:documentation>
        <ref name="db.bridgehead.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.remark.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.remark.attlist">
      <interleave>
        <optional>
          <ref name="db.remark.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.remark">
      <element name="remark">
        <a:documentation>A remark (or comment) intended for presentation in a draft manuscript</a:documentation>
        <ref name="db.remark.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.epigraph.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.epigraph.attlist">
      <interleave>
        <optional>
          <ref name="db.epigraph.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.epigraph.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.epigraph">
      <element name="epigraph">
        <a:documentation>A short inscription at the beginning of a document or component</a:documentation>
        <ref name="db.epigraph.attlist"/>
        <ref name="db.epigraph.info"/>
        <optional>
          <ref name="db.attribution"/>
        </optional>
        <oneOrMore>
          <choice>
            <ref name="db.para.blocks"/>
            <ref name="db.literallayout"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.footnote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.footnote.label.attribute">
      <attribute name="label"/>
    </define>
    <define name="db.footnote.attlist">
      <interleave>
        <optional>
          <ref name="db.footnote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.footnote.label.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.footnote">
      <element name="footnote">
        <a:documentation>A footnote</a:documentation>
        <s:pattern name="Element exclusion">
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:footnote)">footnote 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:example)">example 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:figure)">figure 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:table)">table 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:table)">table 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: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: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: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: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:warning)">warning 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: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: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: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: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: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:rule>
        </s:pattern>
        <ref name="db.footnote.attlist"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.formalpara.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.formalpara.attlist">
      <interleave>
        <optional>
          <ref name="db.formalpara.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.formalpara.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.formalpara">
      <element name="formalpara">
        <a:documentation>A paragraph with a title</a:documentation>
        <ref name="db.formalpara.attlist"/>
        <ref name="db.formalpara.info"/>
        <zeroOrMore>
          <ref name="db.indexing.inlines"/>
        </zeroOrMore>
        <ref name="db.para"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.para.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.para.attlist">
      <interleave>
        <optional>
          <ref name="db.para.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.para.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.para">
      <element name="para">
        <a:documentation>A paragraph</a:documentation>
        <s:pattern name="Root must have version">
          <s:rule context="/db:para">
            <s:assert test="@version">The root element must have a version attribute.</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.para.attlist"/>
        <ref name="db.para.info"/>
        <zeroOrMore>
          <choice>
            <ref name="db.all.inlines"/>
            <ref name="db.nopara.blocks"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.simpara.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.simpara.attlist">
      <interleave>
        <optional>
          <ref name="db.simpara.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.simpara.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.simpara">
      <element name="simpara">
        <a:documentation>A paragraph that contains only text and inline markup, no block elements</a:documentation>
        <ref name="db.simpara.attlist"/>
        <ref name="db.simpara.info"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </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">
      <attribute name="role"/>
    </define>
    <define name="db.caution.attlist">
      <interleave>
        <optional>
          <ref name="db.caution.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"/>
        </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"/>
      </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"/>
    </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">
      <attribute name="role"/>
    </define>
    <define name="db.orderedlist.continuation.enumeration">
      <choice>
        <value>continues</value>
        <value>restarts</value>
      </choice>
    </define>
    <define name="db.orderedlist.continuation.attribute">
      <attribute name="continuation">
        <ref name="db.orderedlist.continuation.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.inheritnum.enumeration">
      <choice>
        <value>ignore</value>
        <value>inherit</value>
      </choice>
    </define>
    <define name="db.orderedlist.inheritnum.attribute">
      <attribute name="inheritnum">
        <ref name="db.orderedlist.inheritnum.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.numeration.enumeration">
      <choice>
        <value>arabic</value>
        <value>upperalpha</value>
        <value>loweralpha</value>
        <value>upperroman</value>
        <value>lowerroman</value>
      </choice>
    </define>
    <define name="db.orderedlist.numeration.attribute">
      <attribute name="numeration">
        <ref name="db.orderedlist.numeration.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.orderedlist.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.orderedlist.continuation.attribute"/>
        </optional>
        <optional>
          <ref name="db.orderedlist.inheritnum.attribute"/>
        </optional>
        <optional>
          <ref name="db.orderedlist.numeration.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.orderedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.orderedlist">
      <element name="orderedlist">
        <a:documentation>A list in which each entry is marked with a sequentially incremented label</a:documentation>
        <ref name="db.orderedlist.attlist"/>
        <ref name="db.orderedlist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.listitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.listitem.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.listitem.override.attribute">
      <attribute name="override"/>
    </define>
    <define name="db.listitem.attlist">
      <interleave>
        <optional>
          <ref name="db.listitem.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.listitem.override.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.listitem">
      <element name="listitem">
        <a:documentation>A wrapper for the elements of a list item</a:documentation>
        <ref name="db.listitem.attlist"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.segmentedlist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.segmentedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.segmentedlist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.segmentedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.segmentedlist">
      <element name="segmentedlist">
        <a:documentation>A segmented list, a list of sets of elements</a:documentation>
        <ref name="db.segmentedlist.attlist"/>
        <ref name="db.segmentedlist.info"/>
        <oneOrMore>
          <ref name="db.segtitle"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="db.seglistitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.segtitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.segtitle.attlist">
      <interleave>
        <optional>
          <ref name="db.segtitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.segtitle">
      <element name="segtitle">
        <a:documentation>The title of an element of a list item in a segmented list</a:documentation>
        <ref name="db.segtitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.seglistitem.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.seglistitem.attlist">
      <interleave>
        <optional>
          <ref name="db.seglistitem.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.seglistitem">
      <element name="seglistitem">
        <a:documentation>A list item in a segmented list</a:documentation>
        <s:pattern name="Cardinality of segments and titles">
          <s:rule context="db:seglistitem">
            <s:assert test="count(db:seg) = count(../db:segtitle)">The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.seglistitem.attlist"/>
        <oneOrMore>
          <ref name="db.seg"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.seg.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.seg.attlist">
      <interleave>
        <optional>
          <ref name="db.seg.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.seg">
      <element name="seg">
        <a:documentation>An element of a list item in a segmented list</a:documentation>
        <ref name="db.seg.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.simplelist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.simplelist.type.enumeration">
      <choice>
        <value>horiz</value>
        <value>vert</value>
        <value>inline</value>
      </choice>
    </define>
    <define name="db.simplelist.type.attribute">
      <attribute name="type">
        <ref name="db.simplelist.type.enumeration"/>
      </attribute>
    </define>
    <define name="db.simplelist.columns.attribute">
      <attribute name="columns">
        <data type="integer"/>
      </attribute>
    </define>
    <define name="db.simplelist.attlist">
      <interleave>
        <optional>
          <ref name="db.simplelist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.simplelist.type.attribute"/>
        </optional>
        <optional>
          <ref name="db.simplelist.columns.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.simplelist">
      <element name="simplelist">
        <a:documentation>An undecorated list of single words or short phrases</a:documentation>
        <ref name="db.simplelist.attlist"/>
        <oneOrMore>
          <ref name="db.member"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.member.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.member.attlist">
      <interleave>
        <optional>
          <ref name="db.member.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.member">
      <element name="member">
        <a:documentation>An element of a simple list</a:documentation>
        <ref name="db.member.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.variablelist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.variablelist.termlength.attribute">
      <attribute name="termlength"/>
    </define>
    <define name="db.variablelist.attlist">
      <interleave>
        <optional>
          <ref name="db.variablelist.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.variablelist.termlength.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.variablelist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.variablelist">
      <element name="variablelist">
        <a:documentation>A list in which each entry is composed of a set of one or more terms and an associated description</a:documentation>
        <ref name="db.variablelist.attlist"/>
        <ref name="db.variablelist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.varlistentry"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.varlistentry.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.varlistentry.attlist">
      <interleave>
        <optional>
          <ref name="db.varlistentry.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.varlistentry">
      <element name="varlistentry">
        <a:documentation>A wrapper for a set of terms and the associated description in a variable list</a:documentation>
        <ref name="db.varlistentry.attlist"/>
        <oneOrMore>
          <ref name="db.term"/>
        </oneOrMore>
        <ref name="db.listitem"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.term.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.term.attlist">
      <interleave>
        <optional>
          <ref name="db.term.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.term">
      <element name="term">
        <a:documentation>The word or phrase being defined or described in a variable list</a:documentation>
        <ref name="db.term.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.example.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.example.label.attribute">
      <attribute name="label"/>
    </define>
    <define name="db.example.width.attribute">
      <attribute name="width"/>
    </define>
    <define name="db.example.attlist">
      <interleave>
        <optional>
          <ref name="db.example.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.example.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.example.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.example.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.example">
      <element name="example">
        <a:documentation>A formal example, with a title</a:documentation>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:example)">example must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:table)">table must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:table)">table must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:important)">important must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:note)">note must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:example">
            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.example.attlist"/>
        <ref name="db.example.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.informalexample.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.informalexample.width.attribute">
      <attribute name="width"/>
    </define>
    <define name="db.informalexample.attlist">
      <interleave>
        <optional>
          <ref name="db.informalexample.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.informalexample.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.informalexample.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.informalexample">
      <element name="informalexample">
        <a:documentation>A displayed example without a title</a:documentation>
        <ref name="db.informalexample.attlist"/>
        <ref name="db.informalexample.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <define name="db.verbatim.inlines">
    <choice>
      <choice>
        <ref name="db.all.inlines"/>
        <ref name="db.lineannotation"/>
      </choice>
      <ref name="db.co"/>
    </choice>
  </define>
  <define name="db.verbatim.contentmodel">
    <ref name="db._info.title.forbidden"/>
    <choice>
      <ref name="db.textobject"/>
      <zeroOrMore>
        <ref name="db.verbatim.inlines"/>
      </zeroOrMore>
    </choice>
  </define>
  <div>
    <define name="db.programlisting.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.programlisting.width.attribute">
      <attribute name="width"/>
    </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"/>
    </define>
    <define name="db.literallayout.class.enumeration">
      <choice>
        <value>monospaced</value>
        <value>normal</value>
      </choice>
    </define>
    <define name="db.literallayout.class.attribute">
      <attribute name="class">
        <ref name="db.literallayout.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.literallayout.attlist">
      <interleave>
        <optional>
          <ref name="db.literallayout.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
        <optional>
          <ref name="db.literallayout.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.literallayout">
      <element name="literallayout">
        <a:documentation>A block of text in which line breaks and white space are to be reproduced faithfully</a:documentation>
        <ref name="db.literallayout.attlist"/>
        <ref name="db.verbatim.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.screen.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.screen.width.attribute">
      <attribute name="width">
        <a:documentation>Specifies the width (in characters) of the longest line (formatters may use this value to determine scaling or rotation).</a:documentation>
      </attribute>
    </define>
    <define name="db.screen.attlist">
      <interleave>
        <optional>
          <ref name="db.screen.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
        <optional>
          <ref name="db.screen.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.screen">
      <element name="screen">
        <a:documentation>Text that a user sees or might see on a computer screen</a:documentation>
        <ref name="db.screen.attlist"/>
        <ref name="db.verbatim.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.screenshot.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.screenshot.attlist">
      <interleave>
        <optional>
          <ref name="db.screenshot.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.screenshot.info">
      <ref name="db._info"/>
    </define>
    <define name="db.screenshot">
      <element name="screenshot">
        <a:documentation>A representation of what the user sees or might see on a computer screen</a:documentation>
        <ref name="db.screenshot.attlist"/>
        <ref name="db.screenshot.info"/>
        <ref name="db.mediaobject"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.figure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.figure.label.attribute">
      <attribute name="label"/>
    </define>
    <define name="db.figure.attlist">
      <interleave>
        <optional>
          <ref name="db.figure.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.figure.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.figure.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.figure">
      <element name="figure">
        <a:documentation>A formal figure, generally an illustration, with a title</a:documentation>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:example)">example must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:figure)">figure must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:table)">table must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:table)">table must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:caution)">caution must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:important)">important must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:note)">note must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:tip)">tip must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern name="Element exclusion">
          <s:rule context="db:figure">
            <s:assert test="not(.//db:warning)">warning must not occur in the descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.figure.attlist"/>
        <ref name="db.figure.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.informalfigure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.informalfigure.label.attribute">
      <attribute name="label"/>
    </define>
    <define name="db.informalfigure.attlist">
      <interleave>
        <optional>
          <ref name="db.informalfigure.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.informalfigure.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.informalfigure.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.informalfigure">
      <element name="informalfigure">
        <a:documentation>A untitled figure</a:documentation>
        <ref name="db.informalfigure.attlist"/>
        <ref name="db.informalfigure.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <define name="db.mediaobject.content">
    <choice>
      <choice>
        <ref name="db.videoobject"/>
        <ref name="db.audioobject"/>
        <ref name="db.imageobject"/>
        <ref name="db.textobject"/>
      </choice>
      <ref name="db.imageobjectco"/>
    </choice>
  </define>
  <div>
    <define name="db.mediaobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.mediaobject.attlist">
      <interleave>
        <optional>
          <ref name="db.mediaobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.mediaobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.mediaobject">
      <element name="mediaobject">
        <a:documentation>A displayed media object (video, audio, image, etc.)</a:documentation>
        <ref name="db.mediaobject.attlist"/>
        <ref name="db.mediaobject.info"/>
        <optional>
          <ref name="db.alt"/>
        </optional>
        <oneOrMore>
          <ref name="db.mediaobject.content"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.inlinemediaobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.inlinemediaobject.attlist">
      <interleave>
        <optional>
          <ref name="db.inlinemediaobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.inlinemediaobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.inlinemediaobject">
      <element name="inlinemediaobject">
        <a:documentation>An inline media object (video, audio, image, and so on)</a:documentation>
        <ref name="db.inlinemediaobject.attlist"/>
        <ref name="db.inlinemediaobject.info"/>
        <optional>
          <ref name="db.alt"/>
        </optional>
        <oneOrMore>
          <ref name="db.mediaobject.content"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.videoobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.videoobject.attlist">
      <interleave>
        <optional>
          <ref name="db.videoobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.videoobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.videoobject">
      <element name="videoobject">
        <a:documentation>A wrapper for video data and its associated meta-information</a:documentation>
        <ref name="db.videoobject.attlist"/>
        <ref name="db.videoobject.info"/>
        <ref name="db.videodata"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.audioobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.audioobject.attlist">
      <interleave>
        <optional>
          <ref name="db.audioobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.audioobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.audioobject">
      <element name="audioobject">
        <a:documentation>A wrapper for audio data and its associated meta-information</a:documentation>
        <ref name="db.audioobject.attlist"/>
        <ref name="db.audioobject.info"/>
        <ref name="db.audiodata"/>
      </element>
    </define>
  </div>
  <define name="db.imageobject.content">
    <choice>
      <ref name="db.imagedata"/>
      <oneOrMore>
        <ref name="db._any.svg"/>
      </oneOrMore>
    </choice>
  </define>
  <div>
    <define name="db.imageobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.imageobject.attlist">
      <interleave>
        <optional>
          <ref name="db.imageobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.imageobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.imageobject">
      <element name="imageobject">
        <a:documentation>A wrapper for image data and its associated meta-information</a:documentation>
        <ref name="db.imageobject.attlist"/>
        <ref name="db.imageobject.info"/>
        <ref name="db.imageobject.content"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.textobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.textobject.attlist">
      <interleave>
        <optional>
          <ref name="db.textobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.textobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.textobject">
      <element name="textobject">
        <a:documentation>A wrapper for a text description of an object and its associated meta-information</a:documentation>
        <ref name="db.textobject.attlist"/>
        <ref name="db.textobject.info"/>
        <choice>
          <ref name="db.phrase"/>
          <ref name="db.textdata"/>
          <oneOrMore>
            <ref name="db.all.blocks"/>
          </oneOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.videodata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.videodata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.videodata.align.attribute">
      <attribute name="align">
        <ref name="db.videodata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.videodata.valign.attribute">
      <attribute name="valign">
        <ref name="db.videodata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.width.attribute">
      <attribute name="width"/>
    </define>
    <define name="db.videodata.contentwidth.attribute">
      <attribute name="contentwidth"/>
    </define>
    <define name="db.videodata.scalefit.enumeration">
      <choice>
        <value>0</value>
        <value>1</value>
      </choice>
    </define>
    <define name="db.videodata.scalefit.attribute">
      <attribute name="scalefit">
        <ref name="db.videodata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.scale.attribute">
      <attribute name="scale"/>
    </define>
    <define name="db.videodata.depth.attribute">
      <attribute name="depth"/>
    </define>
    <define name="db.videodata.contentdepth.attribute">
      <attribute name="contentdepth"/>
    </define>
    <define name="db.videodata.attlist">
      <interleave>
        <optional>
          <ref name="db.videodata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.videodata.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.width.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.contentwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.scalefit.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.scale.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.depth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.contentdepth.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.videodata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.videodata">
      <element name="videodata">
        <a:documentation>Pointer to external video data</a:documentation>
        <ref name="db.videodata.attlist"/>
        <ref name="db.videodata.info"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.audiodata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.audiodata.attlist">
      <interleave>
        <optional>
          <ref name="db.audiodata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
      </interleave>
    </define>
    <define name="db.audiodata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.audiodata">
      <element name="audiodata">
        <a:documentation>Pointer to external audio data</a:documentation>
        <ref name="db.audiodata.attlist"/>
        <ref name="db.audiodata.info"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.imagedata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.imagedata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.imagedata.align.attribute">
      <attribute name="align">
        <ref name="db.imagedata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.imagedata.valign.attribute">
      <attribute name="valign">
        <ref name="db.imagedata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.width.attribute">
      <attribute name="width"/>
    </define>
    <define name="db.imagedata.contentwidth.attribute">
      <attribute name="contentwidth"/>
    </define>
    <define name="db.imagedata.scalefit.enumeration">
      <choice>
        <value>0</value>
        <value>1</value>
      </choice>
    </define>
    <define name="db.imagedata.scalefit.attribute">
      <attribute name="scalefit">
        <ref name="db.imagedata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.scale.attribute">
      <attribute name="scale"/>
    </define>
    <define name="db.imagedata.depth.attribute">
      <attribute name="depth"/>
    </define>
    <define name="db.imagedata.contentdepth.attribute">
      <attribute name="contentdepth"/>
    </define>
    <define name="db.imagedata.attlist">
      <interleave>
        <optional>
          <ref name="db.imagedata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <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.imagedata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.imagedata">
      <element name="imagedata">
        <a:documentation>Pointer to external image data</a:documentation>
        <ref name="db.imagedata.attlist"/>
        <ref name="db.imagedata.info"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.textdata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.textdata.encoding.attribute">
      <attribute name="encoding"/>
    </define>
    <define name="db.textdata.attlist">
      <interleave>
        <optional>
          <ref name="db.textdata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.textdata.encoding.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.textdata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.textdata">
      <element name="textdata">
        <a:documentation>Pointer to external text data</a:documentation>
        <ref name="db.textdata.attlist"/>
        <ref name="db.textdata.info"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.caption.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.caption.attlist">
      <interleave>
        <optional>
          <ref name="db.caption.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.caption.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.caption">
      <element name="caption">
        <a:documentation>A 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: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: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.caption.attlist"/>
        <ref name="db.caption.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.synopsis.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.synopsis.label.attribute">
      <attribute name="label"/>
    </define>
    <define name="db.synopsis.attlist">
      <interleave>
        <optional>
          <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.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.cmdsynopsis.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cmdsynopsis.sepchar.attribute">
      <attribute name="sepchar"/>
    </define>
    <define name="db.cmdsynopsis.cmdlength.attribute">
      <attribute name="cmdlength"/>
    </define>
    <define name="db.cmdsynopsis.label.attribute">
      <attribute name="label"/>
    </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>
            <ref name="db.command"/>
            <ref name="db.arg"/>
            <ref name="db.group"/>
            <ref name="db.sbr"/>
          </choice>
        </oneOrMore>
        <zeroOrMore>
          <ref name="db.synopfragment"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <define name="db.rep.enumeration">
    <choice>
      <value>norepeat</value>
      <value>repeat</value>
    </choice>
  </define>
  <define name="db.rep.attribute">
    <attribute name="rep">
      <ref name="db.rep.enumeration"/>
    </attribute>
  </define>
  <define name="db.choice.enumeration">
    <choice>
      <value>opt</value>
      <value>plain</value>
      <value>req</value>
    </choice>
  </define>
  <define name="db.choice.attribute">
    <attribute name="choice">
      <ref name="db.choice.enumeration"/>
    </attribute>
  </define>
  <div>
    <define name="db.arg.role.attribute">
      <attribute name="role"/>
    </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.rep.attribute"/>
        </optional>
        <optional>
          <ref name="db.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.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.rep.attribute"/>
        </optional>
        <optional>
          <ref name="db.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(//*[@id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@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>
  <div>
    <define name="db.funcsynopsis.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.funcsynopsis.attlist">
      <interleave>
        <optional>
          <ref name="db.funcsynopsis.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>
      </element>
    </define>
  </div>
  <div>
    <define name="db.funcsynopsisinfo.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.funcsynopsisinfo.attlist">
      <interleave>
        <optional>
          <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.funcprototype.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>
      </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.void.role.attribute">
      <attribute name="role"/>
    </define>
    <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.varargs.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.varargs.attlist">
      <interleave>
        <optional>
          <ref name="db.varargs.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/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.paramdef.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.paramdef.attlist">
      <interleave>
        <optional>
          <ref name="db.paramdef.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.choice.attribute"/>
        