<?xml version="1.0" encoding="utf-8"?>
<grammar xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dtd="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:db="http://docbook.org/docbook-ng" xmlns:dbx="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://docbook.org/docbook-ng">

<!-- DocBook NG: The "Jägermeister" Release -->
<!-- See http://docbook.org/docbook-ng/ -->

   <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.refentry"/>
            <ref name="db.refsection"/>
         </choice>
         <ref name="db.setindex"/>
      </choice>
   </start>

   <div>
      <db:refname>*:*</db:refname>
      <db:refpurpose>Any element from any namespace except the DocBook namespace</db:refpurpose>
      <define name="db._any">
         <element>
            <anyName>
               <except>
                  <nsName/>
               </except>
            </anyName>
            <zeroOrMore>
               <ref name="db._any.attribute"/>
            </zeroOrMore>
            <zeroOrMore>
               <text/>
               <ref name="db._any"/>
            </zeroOrMore>
         </element>
      </define>

      <define name="db._any.attribute">
         <attribute>
            <anyName/>
         </attribute>
      </define>

   </div>
   <define name="db.effectivity.attributes">
      <optional>
         <attribute name="arch">
            <dbx:description>
               <db:para>The <db:tag class="attribute">arch</db:tag>
 attribute designates the computer or chip architecture to which the element applies.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="condition">
            <dbx:description>
               <db:para>The <db:tag class="attribute">condition</db:tag>
 attribute provides a standard place for application-specific effectivity.</db:para>
               <db:para>Many DocBook users observed that in order to add an effectivity condition that was unique to their environment required <db:quote>abusing</db:quote>
 the semantics of one of the existing attributes, or adding their own, making their customization <db:link linkend="s-notdocbook">an extension rather than a subset</db:link>
. The<db:tag class="attribute">condition</db:tag>
 attribute is a general-purpose effectivity attribute with no specified semantics.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="conformance">
            <dbx:description>The <db:tag class="attribute">conformance</db:tag>
 attribute indicates standards conformance characteristics of the item contained in the element. These characteristics are application-specific; DocBook provides no default semantics.</dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="os">
            <dbx:description>
               <db:para>The <db:tag class="attribute">os</db:tag>
 attribute indicates the operating system to which the element is applicable.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="revision">
            <dbx:description>
               <db:para>The <db:tag class="attribute">revision</db:tag>
 attribute indicates the editorial revision to which the element belongs.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="security">
            <dbx:description>
               <db:para>The <db:tag class="attribute">security</db:tag>
 attribute indicates something about the security level associated with the element to which it applies.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="userlevel">
            <dbx:description>
               <db:para>The <db:tag class="attribute">userlevel</db:tag>
 attribute indicates the level of user experience to which element applies.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="vendor">
            <dbx:description>
               <db:para>The <db:tag class="attribute">vendor</db:tag>
 attribute indicates the computer vendor to which the element applies.</db:para>
            </dbx:description>
         </attribute>
      </optional>
      <optional>
         <attribute name="wordsize">
            <dbx:description>
               <db:para>The <db:tag class="attribute">wordsize</db:tag>
 attribute indicates the word size (width in bits) of the computer architecture to which the element applies.</db:para>
            </dbx:description>
         </attribute>
      </optional>
   </define>

   <define name="db.linkend.attribute">
      <attribute name="linkend">
         <data type="IDREF"/>
      </attribute>
   </define>

   <define name="db.linkends.attribute">
      <attribute name="linkends">
         <data type="IDREFS"/>
      </attribute>
   </define>

   <define name="db.href.attribute">
      <interleave>
         <attribute name="xlink:href"/>
         <optional>
            <attribute name="xlink:type" dtd:defaultValue="simple">
               <value>simple</value>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:role">
               <data type="anyURI"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:arcrole">
               <data type="anyURI"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:title"/>
         </optional>
         <optional>
            <attribute name="xlink:show">
               <choice>
                  <value>new</value>
                  <value>replace</value>
                  <value>embed</value>
                  <value>other</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:actuate">
               <choice>
                  <value>onLoad</value>
                  <value>onRequest</value>
                  <value>other</value>
                  <value>none</value>
               </choice>
            </attribute>
         </optional>
      </interleave>
   </define>

   <define name="db.common.attributes">
      <optional>
         <attribute name="xml:id">
            <data type="ID"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="version"/>
      </optional>
      <optional>
         <attribute name="xml:lang"/>
      </optional>
      <optional>
         <attribute name="xml:base"/>
      </optional>
      <optional>
         <attribute name="remap"/>
      </optional>
      <optional>
         <attribute name="xreflabel"/>
      </optional>
      <optional>
         <attribute name="revisionflag">
            <choice>
               <value>changed</value>
               <value>added</value>
               <value>deleted</value>
               <value>off</value>
            </choice>
         </attribute>
      </optional>
      <ref name="db.effectivity.attributes"/>
   </define>

   <define name="db.common.idreq.attributes">
      <attribute name="xml:id">
         <data type="ID"/>
      </attribute>
      <optional>
         <attribute name="version"/>
      </optional>
      <optional>
         <attribute name="xml:lang"/>
      </optional>
      <optional>
         <attribute name="xml:base"/>
      </optional>
      <optional>
         <attribute name="remap"/>
      </optional>
      <optional>
         <attribute name="xreflabel"/>
      </optional>
      <optional>
         <attribute name="revisionflag">
            <choice>
               <value>changed</value>
               <value>added</value>
               <value>deleted</value>
               <value>off</value>
            </choice>
         </attribute>
      </optional>
      <ref name="db.effectivity.attributes"/>
   </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"/>
      </optional>
      <choice>
         <attribute name="fileref"/>
         <attribute name="entityref">
            <data type="ENTITY"/>
         </attribute>
      </choice>
   </define>

   <define name="db.verbatim.attributes">
      <optional>
         <attribute name="continuation">
            <choice>
               <value>continues</value>
               <value>restarts</value>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="linenumbering">
            <choice>
               <value>numbered</value>
               <value>unnumbered</value>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="startinglinenumber">
            <data type="integer"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="language"/>
      </optional>
      <optional>
         <attribute name="xml:space">
            <value>preserve</value>
         </attribute>
      </optional>
   </define>

   <define name="db.spacing.attribute">
      <attribute name="spacing">
         <choice>
            <value>compact</value>
            <value>normal</value>
         </choice>
      </attribute>
   </define>

   <define name="db.float.attribute">
      <attribute name="float"/>
   </define>

   <define name="db.pgwide.attribute">
      <attribute name="pgwide">
         <dbx:description>
            <db:para>If <db:tag class="attribute">pgwide</db:tag>
 has the value 0 (false), then the element  is rendered in the current text flow (with flow column width). A value of 1 (true) specifies that the element should be rendered across the full text page.</db:para>
         </dbx:description>
         <choice>
            <value>0</value>
            <value>1</value>
         </choice>
      </attribute>
   </define>

   <define name="db.language.attribute">
      <optional>
         <attribute name="language"/>
      </optional>
   </define>

   <define name="db.performance.attribute">
      <attribute name="performance">
         <choice>
            <value>optional</value>
            <value>required</value>
         </choice>
      </attribute>
   </define>

   <define name="db.floatstyle.attribute">
      <attribute name="floatstyle"/>
   </define>

   <ctrl:other-attribute name="db.biblio.class.attribute" enum-name="db.biblio.class-enum.attribute" other-name="db.biblio.class-other.attributes" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

   <define name="db.biblio.class-enum.attribute">
      <optional>
         <attribute name="class">
            <dbx:description>
               <db:para>The <db:tag class="atribute">class</db:tag>
 identifies the kind of bibliographic identifier:</db:para>
               <db:informaltable>
                  <db:tgroup cols="2">
                     <db:thead>
                        <db:row>
                           <db:entry>Value</db:entry>
                           <db:entry>Identifier</db:entry>
                        </db:row>
                     </db:thead>
                     <db:tbody>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">doi</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>A <db:link xlink:href="http://www.doi.org/">Digital Object Identifier</db:link>
.</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">isbn</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>An <db:link xlink:href="http://www.isbn.org/">International Standard Book Number</db:link>
.</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">isrn</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>An International Standard Technical Report Number as defined by ISO 10444:1994.</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">issn</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>An <db:link xlink:href="http://www.issn.org/">International Standard Serial Number</db:link>
.</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">libraryofcongress</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>A Library of Congress subject identifer</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">pubnumber</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>A publication number, for example from a private or corporate numbering scheme.</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">uri</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>A Uniform Resource Identifier.</db:para>
                           </db:entry>
                        </db:row>
                        <db:row>
                           <db:entry>
                              <db:tag class="attvalue">other</db:tag>
                           </db:entry>
                           <db:entry>
                              <db:para>Some other kind of identifier. If the value <db:tag class="attvalue">other</db:tag>
 is specified, the <db:tag class="attribute">otherclass</db:tag>
 attribute must also be provided.</db:para>
                           </db:entry>
                        </db:row>
                     </db:tbody>
                  </db:tgroup>
               </db:informaltable>
            </dbx:description>
            <choice>
               <value>doi</value>
               <value>isbn</value>
               <value>isrn</value>
               <value>issn</value>
               <value>libraryofcongress</value>
               <value>pubnumber</value>
               <value>uri</value>
            </choice>
         </attribute>
      </optional>
   </define>

   <define name="db.biblio.class-other.attributes">
      <interleave>
         <attribute name="class">
            <value>other</value>
         </attribute>
         <attribute name="otherclass">
            <dbx:description>
               <db:para>The value of the <db:tag class="attribute">otherclass</db:tag>
 attribute specifies some identifier for the class. It is required when the value <db:tag class="attvalue">other</db:tag>
 is specified for the <db:tag class="attribute">class</db:tag>
 attribute; it is forbidden otherwise.</db:para>
            </dbx:description>
            <data type="NMTOKEN"/>
         </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"/>
         </choice>
         <choice>
            <ref name="db.alt"/>
            <ref name="db.annotation"/>
         </choice>
         <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._phrase">
      <element name="phrase">
         <ref name="db.phrase.attlist"/>
         <ref name="db._text"/>
      </element>
   </define>

   <define name="db._emphasis">
      <element name="emphasis">
         <ref name="db.emphasis.attlist"/>
         <zeroOrMore>
            <choice>
               <ref name="db._text"/>
               <ref name="db._emphasis"/>
            </choice>
         </zeroOrMore>
      </element>
   </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>
         <text/>
         <ref name="db.ubiq.inlines"/>
         <ref name="db.general.inlines"/>
         <ref name="db.domain.inlines"/>
         <ref name="db.extension.inlines"/>
      </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.anchor"/>
         </choice>
         <ref name="db.biblioref"/>
      </choice>
   </define>

   <define name="db.extension.inlines">
      <choice>
         <notAllowed/>
         <choice xmlns:html="http://www.w3.org/1999/xhtml">
            <ref name="db.html.input"/>
            <ref name="db.html.button"/>
            <ref name="db.html.label"/>
            <ref name="db.html.select"/>
            <ref name="db.html.textarea"/>
         </choice>
      </choice>
   </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>
         <ref name="db.nopara.blocks"/>
         <ref name="db.para.blocks"/>
         <ref name="db.extension.blocks"/>
      </choice>
   </define>

   <ctrl:exclude from="db.formal.blocks" exclude="db.formal.blocks" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

   <ctrl:exclude from="db.formal.blocks" exclude="db.admonition.blocks" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

   <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>

   <ctrl:exclude from="db.admonition.blocks" exclude="db.admonition.blocks" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

   <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">
      <choice>
         <notAllowed/>
         <ref xmlns:html="http://www.w3.org/1999/xhtml" name="db.html.form"/>
      </choice>
   </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.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>
      <db:refname>title</db:refname>
      <db:refpurpose>The text of the title of a section of a document or of a formal block-level element</db:refpurpose>
      <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">
            <ref name="db.title.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>titleabbrev</db:refname>
      <db:refpurpose>The abbreviation of a Title</db:refpurpose>
      <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">
            <ref name="db.titleabbrev.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>subtitle</db:refname>
      <db:refpurpose>The subtitle of a document</db:refpurpose>
      <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">
            <ref name="db.subtitle.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>info</db:refname>
      <db:refpurpose>A wrapper for information about a component or other block</db:refpurpose>
      <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">
            <ref name="db.info.attlist"/>
            <ref name="db._title"/>
            <zeroOrMore>
               <ref name="db.info.elements"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>info</db:refname>
      <db:refpurpose>A wrapper for information about a component or other block with a required title</db:refpurpose>
      <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">
            <ref name="db.titlereq.info.attlist"/>
            <ref name="db._title.req"/>
            <zeroOrMore>
               <ref name="db.info.elements"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>info</db:refname>
      <db:refpurpose>A wrapper for information about a component or other block with only a title</db:refpurpose>
      <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">
            <ref name="db.titleonly.info.attlist"/>
            <ref name="db._title.only"/>
            <zeroOrMore>
               <ref name="db.info.elements"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>info</db:refname>
      <db:refpurpose>A wrapper for information about a component or other block with only a required title</db:refpurpose>
      <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">
            <ref name="db.titleonlyreq.info.attlist"/>
            <ref name="db._title.onlyreq"/>
            <zeroOrMore>
               <ref name="db.info.elements"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>info</db:refname>
      <db:refpurpose>A wrapper for information about a component or other block without a title</db:refpurpose>
      <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">
            <ref name="db.titleforbidden.info.attlist"/>
            <zeroOrMore>
               <ref name="db.info.elements"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>subjectset</db:refname>
      <db:refpurpose>A set of terms describing the subject matter of a document</db:refpurpose>
      <define name="db.subjectset.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="scheme">
                  <data type="NMTOKEN"/>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.subjectset">
         <element name="subjectset">
            <ref name="db.subjectset.attlist"/>
            <oneOrMore>
               <ref name="db.subject"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>subject</db:refname>
      <db:refpurpose>One of a group of terms describing the subject matter of a document</db:refpurpose>
      <define name="db.subject.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="weight"/>
            </optional>
         </interleave>
      </define>

      <define name="db.subject">
         <element name="subject">
            <ref name="db.subject.attlist"/>
            <oneOrMore>
               <ref name="db.subjectterm"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>subjectterm</db:refname>
      <db:refpurpose>A term in a group of terms describing the subject matter of a document</db:refpurpose>
      <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">
            <ref name="db.subjectterm.attlist"/>
            <text/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>keywordset</db:refname>
      <db:refpurpose>A set of keywords describing the content of a document</db:refpurpose>
      <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">
            <ref name="db.keywordset.attlist"/>
            <oneOrMore>
               <ref name="db.keyword"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>keyword</db:refname>
      <db:refpurpose>One of a set of keywords describing the content of a document</db:refpurpose>
      <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">
            <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>
      <db:refname>procedure</db:refname>
      <db:refpurpose>A list of operations to be performed in a well-defined sequence</db:refpurpose>
      <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">
            <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>
      <db:refname>step</db:refname>
      <db:refpurpose>A unit of action in a procedure</db:refpurpose>
      <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>

      <define name="db.step">
         <element name="step">
            <ref name="db.step.attlist"/>
            <ref name="db.step.info"/>
            <zeroOrMore>
               <ref name="db.all.blocks"/>
            </zeroOrMore>
            <optional>
               <choice>
                  <ref name="db.substeps"/>
                  <ref name="db.stepalternatives"/>
               </choice>
            </optional>
            <zeroOrMore>
               <ref name="db.all.blocks"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>stepalternatives</db:refname>
      <db:refpurpose>Alternative steps in a procedure</db:refpurpose>
      <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">
            <ref name="db.stepalternatives.attlist"/>
            <ref name="db.stepalternatives.info"/>
            <oneOrMore>
               <ref name="db.step"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>substeps</db:refname>
      <db:refpurpose>A wrapper for steps that occur within steps in a procedure</db:refpurpose>
      <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">
            <ref name="db.substeps.attlist"/>
            <oneOrMore>
               <ref name="db.step"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>sidebar</db:refname>
      <db:refpurpose>A portion of a document that is isolated from the main narrative flow</db:refpurpose>
      <ctrl:exclude from="db.sidebar" exclude="db.sidebar" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <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">
            <s:rule context="db:sidebar" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of sidebar</s:assert>
            </s:rule>
            <ref name="db.sidebar.attlist"/>
            <ref name="db.sidebar.info"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>abstract</db:refname>
      <db:refpurpose>A summary</db:refpurpose>
      <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">
            <ref name="db.abstract.attlist"/>
            <ref name="db.abstract.info"/>
            <oneOrMore>
               <ref name="db.para.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>personblurb</db:refname>
      <db:refpurpose>A short description or note about a person</db:refpurpose>
      <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">
            <ref name="db.personblurb.attlist"/>
            <ref name="db.personblurb.info"/>
            <oneOrMore>
               <ref name="db.para.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>blockquote</db:refname>
      <db:refpurpose>A quotation set off from the main text</db:refpurpose>
      <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">
            <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>
      <db:refname>attribution</db:refname>
      <db:refpurpose>The source of a block quote or epigraph</db:refpurpose>
      <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">
            <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>
      <db:refname>bridgehead</db:refname>
      <db:refpurpose>A free-floating heading</db:refpurpose>
      <define name="db.bridgehead.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="renderas">
                  <choice>
                     <value>other</value>
                     <value>sect1</value>
                     <value>sect2</value>
                     <value>sect3</value>
                     <value>sect4</value>
                     <value>sect5</value>
                  </choice>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.bridgehead">
         <element name="bridgehead">
            <ref name="db.bridgehead.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>remark</db:refname>
      <db:refpurpose>A remark (or comment) intended for presentation in a draft manuscript</db:refpurpose>
      <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">
            <ref name="db.remark.attlist"/>
            <ref name="db._text"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>epigraph</db:refname>
      <db:refpurpose>A short inscription at the beginning of a document or component</db:refpurpose>
      <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">
            <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>
      <db:refname>footnote</db:refname>
      <db:refpurpose>A footnote</db:refpurpose>
      <ctrl:exclude from="db.footnote" exclude="db.footnote" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <ctrl:exclude from="db.footnote" exclude="db.formal.blocks" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <ctrl:exclude from="db.footnote" exclude="db.admonition.blocks" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <ctrl:exclude from="db.footnote" exclude="db.indexterm" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <ctrl:exclude from="db.footnote" exclude="db.sidebar" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <ctrl:exclude from="db.footnote" exclude="db.task" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <ctrl:exclude from="db.footnote" exclude="db.epigraph" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/"/>

      <define name="db.footnote.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="label"/>
            </optional>
         </interleave>
      </define>

      <define name="db.footnote">
         <element name="footnote">
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:footnote)">footnote must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:example)">example must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:figure)">figure must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:table)">table must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:table)">table must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:indexterm)">indexterm must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:indexterm)">indexterm must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:indexterm)">indexterm must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:sidebar)">sidebar must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:task)">task must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <s:rule context="db:footnote" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:epigraph)">epigraph must not occur in the descendants of footnote</s:assert>
            </s:rule>
            <ref name="db.footnote.attlist"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>formalpara</db:refname>
      <db:refpurpose>A paragraph with a title</db:refpurpose>
      <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">
            <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>
      <db:refname>para</db:refname>
      <db:refpurpose>A paragraph</db:refpurpose>
      <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">
            <s:rule context="/db:para" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="@version">The root element must have a version attribute.</s:assert>
            </s:rule>
            <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>
      <db:refname>simpara</db:refname>
      <db:refpurpose>A paragraph that contains only text and inline markup, no block elements</db:refpurpose>
      <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">
            <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>
      <db:refname>caution</db:refname>
      <db:refpurpose>A note of caution</db:refpurpose>
      <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">
            <s:rule context="db:caution" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of caution</s:assert>
            </s:rule>
            <s:rule context="db:caution" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of caution</s:assert>
            </s:rule>
            <s:rule context="db:caution" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of caution</s:assert>
            </s:rule>
            <s:rule context="db:caution" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of caution</s:assert>
            </s:rule>
            <s:rule context="db:caution" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of caution</s:assert>
            </s:rule>
            <ref name="db.caution.attlist"/>
            <ref name="db.admonition.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>important</db:refname>
      <db:refpurpose>An admonition set off from the text</db:refpurpose>
      <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">
            <s:rule context="db:important" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of important</s:assert>
            </s:rule>
            <s:rule context="db:important" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of important</s:assert>
            </s:rule>
            <s:rule context="db:important" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of important</s:assert>
            </s:rule>
            <s:rule context="db:important" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of important</s:assert>
            </s:rule>
            <s:rule context="db:important" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of important</s:assert>
            </s:rule>
            <ref name="db.important.attlist"/>
            <ref name="db.admonition.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>note</db:refname>
      <db:refpurpose>A message set off from the text</db:refpurpose>
      <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">
            <s:rule context="db:note" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of note</s:assert>
            </s:rule>
            <s:rule context="db:note" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of note</s:assert>
            </s:rule>
            <s:rule context="db:note" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of note</s:assert>
            </s:rule>
            <s:rule context="db:note" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of note</s:assert>
            </s:rule>
            <s:rule context="db:note" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of note</s:assert>
            </s:rule>
            <ref name="db.note.attlist"/>
            <ref name="db.admonition.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>tip</db:refname>
      <db:refpurpose>A suggestion to the user, set off from the text</db:refpurpose>
      <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">
            <s:rule context="db:tip" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of tip</s:assert>
            </s:rule>
            <s:rule context="db:tip" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of tip</s:assert>
            </s:rule>
            <s:rule context="db:tip" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of tip</s:assert>
            </s:rule>
            <s:rule context="db:tip" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of tip</s:assert>
            </s:rule>
            <s:rule context="db:tip" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of tip</s:assert>
            </s:rule>
            <ref name="db.tip.attlist"/>
            <ref name="db.admonition.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>warning</db:refname>
      <db:refpurpose>An admonition set off from the text</db:refpurpose>
      <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">
            <s:rule context="db:warning" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of warning</s:assert>
            </s:rule>
            <s:rule context="db:warning" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of warning</s:assert>
            </s:rule>
            <s:rule context="db:warning" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of warning</s:assert>
            </s:rule>
            <s:rule context="db:warning" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of warning</s:assert>
            </s:rule>
            <s:rule context="db:warning" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of warning</s:assert>
            </s:rule>
            <ref name="db.warning.attlist"/>
            <ref name="db.admonition.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>itemizedlist</db:refname>
      <db:refpurpose>A list in which each entry is marked with a bullet or other dingbat</db:refpurpose>
      <define name="db.itemizedlist.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="mark"/>
            </optional>
         </interleave>
      </define>

      <define name="db.itemizedlist.info">
         <ref name="db._info.title.only"/>
      </define>

      <define name="db.itemizedlist">
         <element name="itemizedlist">
            <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>
      <db:refname>orderedlist</db:refname>
      <db:refpurpose>A list in which each entry is marked with a sequentially incremented label</db:refpurpose>
      <define name="db.orderedlist.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="continuation">
                  <choice>
                     <value>continues</value>
                     <value>restarts</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="inheritnum">
                  <choice>
                     <value>ignore</value>
                     <value>inherit</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="numeration">
                  <choice>
                     <value>arabic</value>
                     <value>upperalpha</value>
                     <value>loweralpha</value>
                     <value>upperroman</value>
                     <value>lowerroman</value>
                  </choice>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.orderedlist.info">
         <ref name="db._info.title.only"/>
      </define>

      <define name="db.orderedlist">
         <element name="orderedlist">
            <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>
      <db:refname>listitem</db:refname>
      <db:refpurpose>A wrapper for the elements of a list item</db:refpurpose>
      <define name="db.listitem.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="override"/>
            </optional>
         </interleave>
      </define>

      <define name="db.listitem">
         <element name="listitem">
            <ref name="db.listitem.attlist"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>segmentedlist</db:refname>
      <db:refpurpose>A segmented list, a list of sets of elements</db:refpurpose>
      <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">
            <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>
      <db:refname>segtitle</db:refname>
      <db:refpurpose>The title of an element of a list item in a segmented list</db:refpurpose>
      <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">
            <ref name="db.segtitle.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>seglistitem</db:refname>
      <db:refpurpose>A list item in a segmented list</db:refpurpose>
      <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">
            <s:rule context="db:seglistitem" xmlns:s="http://www.ascc.net/xml/schematron">
               <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>
            <ref name="db.seglistitem.attlist"/>
            <oneOrMore>
               <ref name="db.seg"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>seg</db:refname>
      <db:refpurpose>An element of a list item in a segmented list</db:refpurpose>
      <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">
            <ref name="db.seg.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>simplelist</db:refname>
      <db:refpurpose>An undecorated list of single words or short phrases</db:refpurpose>
      <define name="db.simplelist.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="type">
                  <choice>
                     <value>horiz</value>
                     <value>vert</value>
                     <value>inline</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="columns">
                  <data type="integer"/>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.simplelist">
         <element name="simplelist">
            <ref name="db.simplelist.attlist"/>
            <oneOrMore>
               <ref name="db.member"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>member</db:refname>
      <db:refpurpose>An element of a simple list</db:refpurpose>
      <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">
            <ref name="db.member.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>variablelist</db:refname>
      <db:refpurpose>A list in which each entry is composed of a set of one or more terms and an associated description</db:refpurpose>
      <define name="db.variablelist.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="termlength"/>
            </optional>
         </interleave>
      </define>

      <define name="db.variablelist.info">
         <ref name="db._info.title.only"/>
      </define>

      <define name="db.variablelist">
         <element name="variablelist">
            <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>
      <db:refname>varlistentry</db:refname>
      <db:refpurpose>A wrapper for a set of terms and the associated description in a variable list</db:refpurpose>
      <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">
            <ref name="db.varlistentry.attlist"/>
            <oneOrMore>
               <ref name="db.term"/>
            </oneOrMore>
            <ref name="db.listitem"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>term</db:refname>
      <db:refpurpose>The word or phrase being defined or described in a variable list</db:refpurpose>
      <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">
            <ref name="db.term.attlist"/>
            <zeroOrMore>
               <ref name="db.all.inlines"/>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>example</db:refname>
      <db:refpurpose>A formal example, with a title</db:refpurpose>
      <define name="db.example.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="label"/>
            </optional>
            <optional>
               <ref name="db.floatstyle.attribute"/>
            </optional>
            <optional>
               <ref name="db.float.attribute"/>
            </optional>
            <optional>
               <attribute name="width"/>
            </optional>
         </interleave>
      </define>

      <define name="db.example.info">
         <ref name="db._info.title.onlyreq"/>
      </define>

      <define name="db.example">
         <element name="example">
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:example)">example must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:figure)">figure must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:table)">table must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:table)">table must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of example</s:assert>
            </s:rule>
            <s:rule context="db:example" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of example</s:assert>
            </s:rule>
            <ref name="db.example.attlist"/>
            <ref name="db.example.info"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>informalexample</db:refname>
      <db:refpurpose>A displayed example without a title</db:refpurpose>
      <define name="db.informalexample.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="width"/>
            </optional>
         </interleave>
      </define>

      <define name="db.informalexample.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.informalexample">
         <element name="informalexample">
            <ref name="db.informalexample.attlist"/>
            <ref name="db.informalexample.info"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </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>
      <db:refname>programlisting</db:refname>
      <db:refpurpose>A literal listing of all or part of a program</db:refpurpose>
      <define name="db.programlisting.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="width"/>
            </optional>
         </interleave>
      </define>

      <define name="db.programlisting">
         <element name="programlisting">
            <ref name="db.programlisting.attlist"/>
            <ref name="db.verbatim.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>literallayout</db:refname>
      <db:refpurpose>A block of text in which line breaks and white space are to be reproduced faithfully</db:refpurpose>
      <define name="db.literallayout.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="class">
                  <choice>
                     <value>monospaced</value>
                     <value>normal</value>
                  </choice>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.literallayout">
         <element name="literallayout">
            <ref name="db.literallayout.attlist"/>
            <ref name="db.verbatim.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>screen</db:refname>
      <db:refpurpose>Text that a user sees or might see on a computer screen</db:refpurpose>
      <define name="db.screen.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="width"/>
            </optional>
         </interleave>
      </define>

      <define name="db.screen">
         <element name="screen">
            <ref name="db.screen.attlist"/>
            <ref name="db.verbatim.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>screenshot</db:refname>
      <db:refpurpose>A representation of what the user sees or might see on a computer screen</db:refpurpose>
      <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">
            <ref name="db.screenshot.attlist"/>
            <ref name="db.screenshot.info"/>
            <ref name="db.mediaobject"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>figure</db:refname>
      <db:refpurpose>A formal figure, generally an illustration, with a title</db:refpurpose>
      <define name="db.figure.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="label"/>
            </optional>
            <optional>
               <ref name="db.pgwide.attribute"/>
            </optional>
            <optional>
               <ref name="db.floatstyle.attribute"/>
            </optional>
            <optional>
               <ref name="db.float.attribute"/>
            </optional>
         </interleave>
      </define>

      <define name="db.figure.info">
         <ref name="db._info.title.onlyreq"/>
      </define>

      <define name="db.figure">
         <element name="figure">
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:example)">example must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:figure)">figure must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:table)">table must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:table)">table must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:caution)">caution must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:important)">important must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:note)">note must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:tip)">tip must not occur in the descendants of figure</s:assert>
            </s:rule>
            <s:rule context="db:figure" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="not(.//db:warning)">warning must not occur in the descendants of figure</s:assert>
            </s:rule>
            <ref name="db.figure.attlist"/>
            <ref name="db.figure.info"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>informalfigure</db:refname>
      <db:refpurpose>A untitled figure</db:refpurpose>
      <define name="db.informalfigure.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="label"/>
            </optional>
            <optional>
               <ref name="db.pgwide.attribute"/>
            </optional>
            <optional>
               <ref name="db.floatstyle.attribute"/>
            </optional>
            <optional>
               <ref name="db.float.attribute"/>
            </optional>
         </interleave>
      </define>

      <define name="db.informalfigure.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.informalfigure">
         <element name="informalfigure">
            <ref name="db.informalfigure.attlist"/>
            <ref name="db.informalfigure.info"/>
            <oneOrMore>
               <ref name="db.all.blocks"/>
            </oneOrMore>
         </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>
      <db:refname>mediaobject</db:refname>
      <db:refpurpose>A displayed media object (video, audio, image, etc.)</db:refpurpose>
      <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">
            <ref name="db.mediaobject.attlist"/>
            <ref name="db.mediaobject.info"/>
            <oneOrMore>
               <ref name="db.mediaobject.content"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>inlinemediaobject</db:refname>
      <db:refpurpose>An inline media object (video, audio, image, and so on)</db:refpurpose>
      <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">
            <ref name="db.inlinemediaobject.attlist"/>
            <ref name="db.inlinemediaobject.info"/>
            <oneOrMore>
               <ref name="db.mediaobject.content"/>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>videoobject</db:refname>
      <db:refpurpose>A wrapper for video data and its associated meta-information</db:refpurpose>
      <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">
            <ref name="db.videoobject.attlist"/>
            <ref name="db.videoobject.info"/>
            <ref name="db.videodata"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>audioobject</db:refname>
      <db:refpurpose>A wrapper for audio data and its associated meta-information</db:refpurpose>
      <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">
            <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"/>
         <ref xmlns:svg="http://www.w3.org/2000/svg" name="db._any.svg"/>
      </choice>
   </define>

   <div>
      <db:refname>imageobject</db:refname>
      <db:refpurpose>A wrapper for image data and its associated meta-information</db:refpurpose>
      <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">
            <ref name="db.imageobject.attlist"/>
            <ref name="db.imageobject.info"/>
            <ref name="db.imageobject.content"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>textobject</db:refname>
      <db:refpurpose>A wrapper for a text description of an object and its associated meta-information</db:refpurpose>
      <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">
            <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>
      <db:refname>videodata</db:refname>
      <db:refpurpose>Pointer to external video data</db:refpurpose>
      <define name="db.videodata.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="align">
                  <choice>
                     <value>center</value>
                     <value>char</value>
                     <value>justify</value>
                     <value>left</value>
                     <value>right</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="valign">
                  <choice>
                     <value>bottom</value>
                     <value>middle</value>
                     <value>top</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="width"/>
            </optional>
            <optional>
               <attribute name="contentwidth"/>
            </optional>
            <optional>
               <attribute name="scalefit">
                  <choice>
                     <value>0</value>
                     <value>1</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="scale"/>
            </optional>
            <optional>
               <attribute name="depth"/>
            </optional>
            <optional>
               <attribute name="contentdepth"/>
            </optional>
         </interleave>
      </define>

      <define name="db.videodata.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.videodata">
         <element name="videodata">
            <ref name="db.videodata.attlist"/>
            <ref name="db.videodata.info"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>audiodata</db:refname>
      <db:refpurpose>Pointer to external audio data</db:refpurpose>
      <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">
            <ref name="db.audiodata.attlist"/>
            <ref name="db.audiodata.info"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>imagedata</db:refname>
      <db:refpurpose>Pointer to external image data</db:refpurpose>
      <define name="db.imagedata.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="align">
                  <choice>
                     <value>center</value>
                     <value>char</value>
                     <value>justify</value>
                     <value>left</value>
                     <value>right</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="valign">
                  <choice>
                     <value>bottom</value>
                     <value>middle</value>
                     <value>top</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="width"/>
            </optional>
            <optional>
               <attribute name="contentwidth"/>
            </optional>
            <optional>
               <attribute name="scalefit">
                  <choice>
                     <value>0</value>
                     <value>1</value>
                  </choice>
               </attribute>
            </optional>
            <optional>
               <attribute name="scale"/>
            </optional>
            <optional>
               <attribute name="depth"/>
            </optional>
            <optional>
               <attribute name="contentdepth"/>
            </optional>
         </interleave>
      </define>

      <define name="db.imagedata.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.imagedata">
         <element name="imagedata">
            <ref name="db.imagedata.attlist"/>
            <ref name="db.imagedata.info"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>textdata</db:refname>
      <db:refpurpose>Pointer to external text data</db:refpurpose>
      <define name="db.textdata.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="encoding"/>
            </optional>
         </interleave>
      </define>

      <define name="db.textdata.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.textdata">
         <element name="textdata">
            <ref name="db.textdata.attlist"/>
            <ref name="db.textdata.info"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>synopsis</db:refname>
      <db:refpurpose>A general-purpose element for representing the syntax of commands or functions</db:refpurpose>
      <define name="db.synopsis.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="label"/>
            </optional>
         </interleave>
      </define>

      <define name="db.synopsis">
         <element name="synopsis">
            <ref name="db.synopsis.attlist"/>
            <ref name="db.verbatim.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>cmdsynopsis</db:refname>
      <db:refpurpose>A syntax summary for a software command</db:refpurpose>
      <define name="db.cmdsynopsis.role.attribute">
         <attribute name="role"/>
      </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>
               <attribute name="sepchar"/>
            </optional>
            <optional>
               <attribute name="cmdlength"/>
            </optional>
            <optional>
               <attribute name="label"/>
            </optional>
         </interleave>
      </define>

      <define name="db.cmdsynopsis.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.cmdsynopsis">
         <element name="cmdsynopsis">
            <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="rep.attribute">
      <attribute name="rep">
         <choice>
            <value>norepeat</value>
            <value>repeat</value>
         </choice>
      </attribute>
   </define>

   <define name="choice.attribute">
      <attribute name="choice">
         <choice>
            <value>opt</value>
            <value>plain</value>
            <value>req</value>
         </choice>
      </attribute>
   </define>

   <div>
      <db:refname>arg</db:refname>
      <db:refpurpose>An argument in a CmdSynopsis</db:refpurpose>
      <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="rep.attribute"/>
            </optional>
            <optional>
               <ref name="choice.attribute"/>
            </optional>
         </interleave>
      </define>

      <define name="db.arg">
         <element name="arg">
            <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>
      <db:refname>group</db:refname>
      <db:refpurpose>A group of elements in a CmdSynopsis</db:refpurpose>
      <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="rep.attribute"/>
            </optional>
            <optional>
               <ref name="choice.attribute"/>
            </optional>
         </interleave>
      </define>

      <define name="db.group">
         <element name="group">
            <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>
      <db:refname>sbr</db:refname>
      <db:refpurpose>An explicit line break in a command synopsis</db:refpurpose>
      <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">
            <ref name="db.sbr.attlist"/>
            <empty/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>synopfragment</db:refname>
      <db:refpurpose>A portion of a CmdSynopsis broken out from the main body of the synopsis</db:refpurpose>
      <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">
            <ref name="db.synopfragment.attlist"/>
            <oneOrMore>
               <choice>
                  <ref name="db.arg"/>
                  <ref name="db.group"/>
               </choice>
            </oneOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>synopfragmentref</db:refname>
      <db:refpurpose>A reference to a fragment of a command synopsis</db:refpurpose>
      <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">
            <s:rule context="db:synopfragmentref" xmlns:s="http://www.ascc.net/xml/schematron">
               <s:assert test="local-name(//*[@id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/docbook-ng'">@linkend on synopfragmentref must point to a synopfragment.</s:assert>
            </s:rule>
            <ref name="db.synopfragmentref.attlist"/>
            <text/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>funcsynopsis</db:refname>
      <db:refpurpose>The syntax summary for a function definition</db:refpurpose>
      <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"/>
            <ref name="db.language.attribute"/>
         </interleave>
      </define>

      <define name="db.funcsynopsis.info">
         <ref name="db._info.title.forbidden"/>
      </define>

      <define name="db.funcsynopsis">
         <element name="funcsynopsis">
            <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>
      <db:refname>funcsynopsisinfo</db:refname>
      <db:refpurpose>Information supplementing the FuncDefs of a FuncSynopsis</db:refpurpose>
      <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">
            <ref name="db.funcsynopsisinfo.attlist"/>
            <ref name="db.verbatim.contentmodel"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>funcprototype</db:refname>
      <db:refpurpose>The prototype of a function</db:refpurpose>
      <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">
            <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>
      <db:refname>funcdef</db:refname>
      <db:refpurpose>A function (subroutine) name and its return type</db:refpurpose>
      <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">
            <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>
      <db:refname>void</db:refname>
      <db:refpurpose>An empty element in a function synopsis indicating that the function in question takes no arguments</db:refpurpose>
      <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">
            <ref name="db.void.attlist"/>
            <empty/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>varargs</db:refname>
      <db:refpurpose>An empty element in a function synopsis indicating a variable number of arguments</db:refpurpose>
      <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">
            <ref name="db.varargs.attlist"/>
            <empty/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>paramdef</db:refname>
      <db:refpurpose>Information about a function parameter in a programming language</db:refpurpose>
      <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>
               <attribute name="choice">
                  <choice>
                     <value>opt</value>
                     <value>req</value>
                  </choice>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.paramdef">
         <element name="paramdef">
            <ref name="db.paramdef.attlist"/>
            <zeroOrMore>
               <choice>
                  <ref name="db._text"/>
                  <ref name="db.initializer"/>
                  <ref name="db.type"/>
                  <ref name="db.parameter"/>
                  <ref name="db.funcparams"/>
               </choice>
            </zeroOrMore>
         </element>
      </define>

   </div>
   <div>
      <db:refname>funcparams</db:refname>
      <db:refpurpose>Parameters for a function referenced through a function pointer in a synopsis</db:refpurpose>
      <define name="db.funcparams.role.attribute">
         <attribute name="role"/>
      </define>

      <define name="db.funcparams.attlist">
         <interleave>
            <optional>
               <ref name="db.funcparams.role.attribute"/>
            </optional>
            <ref name="db.common.attributes"/>
            <ref name="db.common.linking.attributes"/>
         </interleave>
      </define>

      <define name="db.funcparams">
         <element name="funcparams">
            <ref name="db.funcparams.attlist"/>
            <ref name="db._text"/>
         </element>
      </define>

   </div>
   <div>
      <db:refname>classsynopsis</db:refname>
      <db:refpurpose>The syntax summary for a class definition</db:refpurpose>
      <define name="db.classsynopsis.role.attribute">
         <attribute name="role"/>
      </define>

      <define name="db.classsynopsis.attlist">
         <interleave>
            <optional>
               <ref name="db.classsynopsis.role.attribute"/>
            </optional>
            <ref name="db.common.attributes"/>
            <ref name="db.common.linking.attributes"/>
            <ref name="db.language.attribute"/>
            <optional>
               <attribute name="class">
                  <choice>
                     <value>class</value>
                     <value>interface</value>
                  </choice>
               </attribute>
            </optional>
         </interleave>
      </define>

      <define name="db.classsynopsis">
         <element name="classsynopsis">
            <ref name="db.classsynopsis.attlist"/>
            <oneOrMore>
               <ref name="db.oo.inlines"/>
            </oneOrMore>
            <zeroOrMore>
               <choice>
                  <ref name="db.classsynopsisinfo"/>
                  <ref name="db.methodsy