<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="http://docbook.org/ns/docbook" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:db="http://docbook.org/ns/docbook" xmlns:trans="http://docbook.org/ns/transclusion" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!--
    This file is part of DocBook Slides V5.2-1
    
    Copyright 1992-2015 HaL Computer Systems, Inc.,
    O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
    Corporation, Norman Walsh, Sun Microsystems, Inc., and the
    Organization for the Advancement of Structured Information
    Standards (OASIS).
    
    Permission to use, copy, modify and distribute the DocBook schema
    and its accompanying documentation for any purpose and without fee
    is hereby granted in perpetuity, provided that the above copyright
    notice and this paragraph appear in all copies. The copyright
    holders make no representation about the suitability of the schema
    for any purpose. It is provided "as is" without expressed or implied
    warranty.
    
    If you modify the DocBook schema in any way, label your schema as a
    variant of DocBook. See the reference documentation
    (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
    for more information.
    
    Please direct all questions, bug reports, or suggestions for changes
    to the docbook-comment@lists.oasis-open.org mailing list. For more
    information, see http://www.oasis-open.org/docbook/.
    
    ======================================================================
  -->
  <s:ns prefix="a" uri="http://relaxng.org/ns/compatibility/annotations/1.0"/>
  <s:ns prefix="ctrl" uri="http://nwalsh.com/xmlns/schema-control/"/>
  <s:ns prefix="db" uri="http://docbook.org/ns/docbook"/>
  <s:ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>
  <s:ns prefix="rng" uri="http://relaxng.org/ns/structure/1.0"/>
  <s:ns prefix="s" uri="http://purl.oclc.org/dsdl/schematron"/>
  <s:ns prefix="trans" uri="http://docbook.org/ns/transclusion"/>
  <s:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/>
  <define name="db.status.attribute">
    <attribute name="status">
      <a:documentation>Identifies the editorial or publication status of the element on which it occurs</a:documentation>
    </attribute>
  </define>
  <define name="db.recursive.blocks.or.sections">
    <choice>
      <group>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.recursive.sections"/>
        </optional>
      </group>
      <ref name="db.recursive.sections"/>
    </choice>
  </define>
  <define name="db.navigation.components">
    <choice>
      <notAllowed/>
      <ref name="db.bibliography"/>
    </choice>
  </define>
  <div>
    <define name="db.section.status.attribute">
      <ref name="db.status.attribute"/>
    </define>
    <define name="db.section.class.enumeration">
      <value>legal</value>
      <a:documentation>A section of legal obligations or requirements</a:documentation>
    </define>
    <define name="db.section.class-enum.attribute">
      <attribute name="class">
        <a:documentation>Identifies the nature of the section</a:documentation>
        <ref name="db.section.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.section.class-other.attribute">
      <attribute name="otherclass">
        <a:documentation>Identifies a non-standard section class</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.section.class-other.attributes">
      <interleave>
        <attribute name="class">
          <a:documentation>Indicates that a non-standard section class is applied</a:documentation>
          <value>other</value>
          <a:documentation>Indicates that the identifier is some 'other' kind.</a:documentation>
        </attribute>
        <ref name="db.section.class-other.attribute"/>
      </interleave>
    </define>
    <define name="db.section.class.attribute">
      <choice>
        <ref name="db.section.class-enum.attribute"/>
        <ref name="db.section.class-other.attributes"/>
      </choice>
    </define>
    <define name="db.section.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.section.attlist">
      <interleave>
        <optional>
          <ref name="db.section.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.section.status.attribute"/>
        </optional>
        <optional>
          <ref name="db.section.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.section.info">
      <ref name="db._info.title.req"/>
    </define>
    <define name="db.section">
      <element name="section">
        <a:documentation>A recursive section</a:documentation>
        <ref name="db.section.attlist"/>
        <ref name="db.section.info"/>
        <zeroOrMore>
          <ref name="db.navigation.components"/>
        </zeroOrMore>
        <optional>
          <ref name="db.recursive.blocks.or.sections"/>
        </optional>
        <zeroOrMore>
          <ref name="db.navigation.components"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <define name="db.recursive.sections">
    <oneOrMore>
      <ref name="db.section"/>
    </oneOrMore>
  </define>
  <define name="db.relation.attribute">
    <attribute name="relation">
      <a:documentation>Identifies the relationship between the bibliographic elemnts</a:documentation>
    </attribute>
  </define>
  <div>
    <define name="db.bibliomixed.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliomixed.pubwork.attribute">
      <ref name="db.biblio.pubwork.attribute"/>
    </define>
    <define name="db.bibliomixed.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliomixed.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.bibliomixed.pubwork.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.bibliomixed">
      <element name="bibliomixed">
        <a:documentation>A cooked entry in a bibliography</a:documentation>
        <ref name="db.bibliomixed.attlist"/>
        <choice>
          <zeroOrMore>
            <choice>
              <ref name="db._text"/>
              <ref name="db.honorific"/>
              <ref name="db.firstname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
              <ref name="db.bibliographic.elements"/>
            </choice>
          </zeroOrMore>
          <zeroOrMore>
            <choice>
              <ref name="db._text"/>
              <ref name="db.honorific"/>
              <ref name="db.givenname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
              <ref name="db.bibliographic.elements"/>
            </choice>
          </zeroOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.bibliomset.relation.attribute">
      <ref name="db.relation.attribute"/>
    </define>
    <define name="db.bibliomset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliomset.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliomset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.bibliomset.relation.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.bibliomset">
      <element name="bibliomset">
        <a:documentation>A cooked container for related bibliographic information</a:documentation>
        <ref name="db.bibliomset.attlist"/>
        <choice>
          <zeroOrMore>
            <choice>
              <ref name="db._text"/>
              <ref name="db.honorific"/>
              <ref name="db.firstname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
              <ref name="db.bibliographic.elements"/>
            </choice>
          </zeroOrMore>
          <zeroOrMore>
            <choice>
              <ref name="db._text"/>
              <ref name="db.honorific"/>
              <ref name="db.givenname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
              <ref name="db.bibliographic.elements"/>
            </choice>
          </zeroOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.bibliomisc.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliomisc.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliomisc.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.bibliomisc">
      <element name="bibliomisc">
        <a:documentation>Untyped bibliographic information</a:documentation>
        <ref name="db.bibliomisc.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.bibliography.status.attrib">
      <ref name="db.status.attribute"/>
    </define>
    <define name="db.bibliography.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliography.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliography.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.bibliography.status.attrib"/>
        </optional>
      </interleave>
    </define>
    <define name="db.bibliography.info">
      <ref name="db._info"/>
    </define>
  </div>
  <div>
    <define name="db.bibliodiv.status.attrib">
      <ref name="db.status.attribute"/>
    </define>
    <define name="db.bibliodiv.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.bibliodiv.attlist">
      <interleave>
        <optional>
          <ref name="db.bibliodiv.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.bibliodiv.status.attrib"/>
        </optional>
      </interleave>
    </define>
    <define name="db.bibliodiv.info">
      <ref name="db._info.title.req"/>
    </define>
  </div>
  <div>
    <define name="db.bibliography">
      <element name="bibliography">
        <a:documentation>A bibliography</a:documentation>
        <ref name="db.bibliography.attlist"/>
        <ref name="db.bibliography.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <choice>
          <oneOrMore>
            <ref name="db.bibliodiv"/>
          </oneOrMore>
          <oneOrMore>
            <ref name="db.bibliomixed"/>
          </oneOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.bibliodiv">
      <element name="bibliodiv">
        <a:documentation>A section of a bibliography</a:documentation>
        <ref name="db.bibliodiv.attlist"/>
        <ref name="db.bibliodiv.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.bibliomixed"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <define name="db.char.attribute">
    <attribute name="char">
      <a:documentation>Specifies the alignment character when align
 is set to char
.</a:documentation>
    </attribute>
  </define>
  <define name="db.charoff.attribute">
    <attribute name="charoff">
      <a:documentation>Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char
 when align
 is set to char
.</a:documentation>
      <data type="decimal">
        <param name="minExclusive">0</param>
        <param name="maxExclusive">100</param>
      </data>
    </attribute>
  </define>
  <define name="db.frame.attribute">
    <attribute name="frame">
      <a:documentation>Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table.</a:documentation>
      <choice>
        <value>all</value>
        <a:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</a:documentation>
        <value>bottom</value>
        <a:documentation>Frame only the bottom of the table.</a:documentation>
        <value>none</value>
        <a:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</a:documentation>
        <value>sides</value>
        <a:documentation>Frame the left and right sides of the table.</a:documentation>
        <value>top</value>
        <a:documentation>Frame the top of the table.</a:documentation>
        <value>topbot</value>
        <a:documentation>Frame the top and bottom of the table.</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.colsep.attribute">
    <attribute name="colsep">
      <a:documentation>Specifies the presence or absence of the column separator</a:documentation>
      <choice>
        <value>0</value>
        <a:documentation>No column separator rule.</a:documentation>
        <value>1</value>
        <a:documentation>Provide a column separator rule on the right</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.rowsep.attribute">
    <attribute name="rowsep">
      <a:documentation>Specifies the presence or absence of the row separator</a:documentation>
      <choice>
        <value>0</value>
        <a:documentation>No row separator rule.</a:documentation>
        <value>1</value>
        <a:documentation>Provide a row separator rule below</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.orient.attribute">
    <attribute name="orient">
      <a:documentation>Specifies the orientation of the table</a:documentation>
      <choice>
        <value>land</value>
        <a:documentation>90 degrees counter-clockwise from the rest of the text flow.</a:documentation>
        <value>port</value>
        <a:documentation>The same orientation as the rest of the text flow.</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.tabstyle.attribute">
    <attribute name="tabstyle">
      <a:documentation>Specifies the table style</a:documentation>
    </attribute>
  </define>
  <define name="db.rowheader.attribute">
    <attribute name="rowheader">
      <a:documentation>Indicates whether or not the entries in the first column should be considered row headers</a:documentation>
      <choice>
        <value>firstcol</value>
        <a:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</a:documentation>
        <value>headers</value>
        <a:documentation>Indicates that row headers are identified by use of the headers attribute on entries in the table.</a:documentation>
        <value>norowheader</value>
        <a:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.align.attribute">
    <attribute name="align">
      <a:documentation>Specifies the horizontal alignment of text in an entry.</a:documentation>
      <choice>
        <value>center</value>
        <a:documentation>Centered.</a:documentation>
        <value>char</value>
        <a:documentation>Aligned on a particular character.</a:documentation>
        <value>justify</value>
        <a:documentation>Left and right justified.</a:documentation>
        <value>left</value>
        <a:documentation>Left justified.</a:documentation>
        <value>right</value>
        <a:documentation>Right justified.</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.valign.attribute">
    <attribute name="valign">
      <a:documentation>Specifies the vertical alignment of text in an entry.</a:documentation>
      <choice>
        <value>bottom</value>
        <a:documentation>Aligned on the bottom of the entry.</a:documentation>
        <value>middle</value>
        <a:documentation>Aligned in the middle.</a:documentation>
        <value>top</value>
        <a:documentation>Aligned at the top of the entry.</a:documentation>
      </choice>
    </attribute>
  </define>
  <define name="db.specify-col-by-colname.attributes">
    <attribute name="colname">
      <a:documentation>Specifies a column specification by name.</a:documentation>
    </attribute>
  </define>
  <define name="db.specify-col-by-namest.attributes">
    <attribute name="namest">
      <a:documentation>Specifies a starting column by name.</a:documentation>
    </attribute>
  </define>
  <define name="db.specify-span-by-spanspec.attributes">
    <attribute name="spanname">
      <a:documentation>Specifies a span by name.</a:documentation>
    </attribute>
  </define>
  <define name="db.specify-span-directly.attributes">
    <interleave>
      <attribute name="namest">
        <a:documentation>Specifies a starting column by name.</a:documentation>
      </attribute>
      <attribute name="nameend">
        <a:documentation>Specifies an ending column by name.</a:documentation>
      </attribute>
    </interleave>
  </define>
  <define name="db.column-spec.attributes">
    <choice>
      <ref name="db.specify-col-by-colname.attributes"/>
      <ref name="db.specify-col-by-namest.attributes"/>
      <ref name="db.specify-span-by-spanspec.attributes"/>
      <ref name="db.specify-span-directly.attributes"/>
    </choice>
  </define>
  <define name="db.colname.attribute">
    <attribute name="colname">
      <a:documentation>Provides a name for a column specification.</a:documentation>
    </attribute>
  </define>
  <define name="db.spanname.attribute">
    <attribute name="spanname">
      <a:documentation>Provides a name for a span specification.</a:documentation>
    </attribute>
  </define>
  <div>
    <define name="db.tgroup.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.tgroup.tgroupstyle.attribute">
      <attribute name="tgroupstyle">
        <a:documentation>Additional style information for downstream processing; typically the name of a style.</a:documentation>
      </attribute>
    </define>
    <define name="db.tgroup.cols.attribute">
      <attribute name="cols">
        <a:documentation>The number of columns in the table. Must be an integer greater than zero.</a:documentation>
        <data type="positiveInteger"/>
      </attribute>
    </define>
    <define name="db.tgroup.attlist">
      <interleave>
        <optional>
          <ref name="db.tgroup.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.char.attribute"/>
        </optional>
        <optional>
          <ref name="db.charoff.attribute"/>
        </optional>
        <optional>
          <ref name="db.tgroup.tgroupstyle.attribute"/>
        </optional>
        <ref name="db.tgroup.cols.attribute"/>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.align.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.tgroup">
      <element name="tgroup">
        <a:documentation>A wrapper for the main content of a table, or part of a table</a:documentation>
        <ref name="db.tgroup.attlist"/>
        <zeroOrMore>
          <ref name="db.colspec"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="db.spanspec"/>
        </zeroOrMore>
        <optional>
          <ref name="db.cals.thead"/>
        </optional>
        <optional>
          <ref name="db.cals.tfoot"/>
        </optional>
        <ref name="db.cals.tbody"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.colspec.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.colspec.colnum.attribute">
      <attribute name="colnum">
        <a:documentation>The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one.</a:documentation>
        <data type="positiveInteger"/>
      </attribute>
    </define>
    <define name="db.colspec.colwidth.attribute">
      <attribute name="colwidth">
        <a:documentation>Specifies the width of the column.</a:documentation>
      </attribute>
    </define>
    <define name="db.colspec.attlist">
      <interleave>
        <optional>
          <ref name="db.colspec.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.colspec.colnum.attribute"/>
        </optional>
        <optional>
          <ref name="db.char.attribute"/>
        </optional>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.colspec.colwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.charoff.attribute"/>
        </optional>
        <optional>
          <ref name="db.colname.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowheader.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.colspec">
      <element name="colspec">
        <a:documentation>Specifications for a column in a table</a:documentation>
        <ref name="db.colspec.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.spanspec.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.spanspec.namest.attribute">
      <attribute name="namest">
        <a:documentation>Specifies a starting column by name.</a:documentation>
      </attribute>
    </define>
    <define name="db.spanspec.nameend.attribute">
      <attribute name="nameend">
        <a:documentation>Specifies an ending column by name.</a:documentation>
      </attribute>
    </define>
    <define name="db.spanspec.attlist">
      <interleave>
        <optional>
          <ref name="db.spanspec.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.spanname.attribute"/>
        <ref name="db.spanspec.namest.attribute"/>
        <ref name="db.spanspec.nameend.attribute"/>
        <optional>
          <ref name="db.char.attribute"/>
        </optional>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.charoff.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.align.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.spanspec">
      <element name="spanspec">
        <a:documentation>Formatting information for a spanned column in a table</a:documentation>
        <ref name="db.spanspec.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.thead.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.thead.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.thead.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.thead">
      <element name="thead">
        <a:documentation>A table header consisting of one or more rows</a:documentation>
        <ref name="db.cals.thead.attlist"/>
        <zeroOrMore>
          <ref name="db.colspec"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.row"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.tfoot.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.tfoot.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.tfoot.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.tfoot">
      <element name="tfoot">
        <a:documentation>A table footer consisting of one or more rows</a:documentation>
        <ref name="db.cals.tfoot.attlist"/>
        <zeroOrMore>
          <ref name="db.colspec"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.row"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.tbody.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.tbody.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.tbody.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.tbody">
      <element name="tbody">
        <a:documentation>A wrapper for the rows of a table or informal table</a:documentation>
        <ref name="db.cals.tbody.attlist"/>
        <oneOrMore>
          <ref name="db.row"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.row.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.row.attlist">
      <interleave>
        <optional>
          <ref name="db.row.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.row">
      <element name="row">
        <a:documentation>A row in a table</a:documentation>
        <ref name="db.row.attlist"/>
        <oneOrMore>
          <choice>
            <ref name="db.entry"/>
            <ref name="db.entrytbl"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.entry.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.entry.morerows.attribute">
      <attribute name="morerows">
        <a:documentation>Specifies the number of additional rows which this entry occupies. Defaults to zero.</a:documentation>
        <data type="integer"/>
      </attribute>
    </define>
    <define name="db.entry.rotate.attribute">
      <attribute name="rotate">
        <a:documentation>Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.</a:documentation>
        <choice>
          <value>0</value>
          <a:documentation>Do not rotate the cell.</a:documentation>
          <value>1</value>
          <a:documentation>Rotate the cell 90 degrees counter-clockwise.</a:documentation>
        </choice>
      </attribute>
    </define>
    <define name="db.entry.scope.attribute">
      <attribute name="scope">
        <a:documentation>Specifies the scope of a header.</a:documentation>
        <choice>
          <value>row</value>
          <a:documentation>Applies to the row</a:documentation>
          <value>col</value>
          <a:documentation>Applies to the column</a:documentation>
          <value>rowgroup</value>
          <a:documentation>Applies to the row group</a:documentation>
          <value>colgroup</value>
          <a:documentation>Applies to the column group</a:documentation>
        </choice>
      </attribute>
    </define>
    <define name="db.entry.headers.attribute">
      <attribute name="headers">
        <a:documentation>Specifies the entry or entries which serve as headers for this element.</a:documentation>
        <data type="IDREFS"/>
      </attribute>
    </define>
    <define name="db.entry.attlist">
      <interleave>
        <optional>
          <ref name="db.entry.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.char.attribute"/>
        </optional>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.charoff.attribute"/>
        </optional>
        <optional>
          <ref name="db.entry.morerows.attribute"/>
        </optional>
        <optional>
          <ref name="db.column-spec.attributes"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.entry.rotate.attribute"/>
        </optional>
        <optional>
          <ref name="db.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.entry.scope.attribute"/>
        </optional>
        <optional>
          <ref name="db.entry.headers.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.entry">
      <element name="entry">
        <a:documentation>A cell in a table</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:entry">
            <s:assert test="not(.//db:table)">table must not occur among the children or descendants of entry</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:entry">
            <s:assert test="not(.//db:informaltable)">informaltable must not occur among the children or descendants of entry</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.entry.attlist"/>
        <choice>
          <zeroOrMore>
            <ref name="db.all.inlines"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="db.all.blocks"/>
          </zeroOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.entrytbl.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.entrytbl.tgroupstyle.attribute">
      <attribute name="tgroupstyle">
        <a:documentation>Additional style information for downstream processing; typically the name of a style.</a:documentation>
      </attribute>
    </define>
    <define name="db.entrytbl.cols.attribute">
      <attribute name="cols">
        <a:documentation>The number of columns in the entry table. Must be an integer greater than zero.</a:documentation>
        <data type="positiveInteger"/>
      </attribute>
    </define>
    <define name="db.entrytbl.attlist">
      <interleave>
        <optional>
          <ref name="db.entrytbl.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.char.attribute"/>
        </optional>
        <optional>
          <ref name="db.charoff.attribute"/>
        </optional>
        <optional>
          <ref name="db.column-spec.attributes"/>
        </optional>
        <optional>
          <ref name="db.entrytbl.tgroupstyle.attribute"/>
        </optional>
        <ref name="db.entrytbl.cols.attribute"/>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.align.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.entrytbl">
      <element name="entrytbl">
        <a:documentation>A subtable appearing in place of an entry in a table</a:documentation>
        <ref name="db.entrytbl.attlist"/>
        <zeroOrMore>
          <ref name="db.colspec"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="db.spanspec"/>
        </zeroOrMore>
        <optional>
          <ref name="db.cals.entrytbl.thead"/>
        </optional>
        <ref name="db.cals.entrytbl.tbody"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.entrytbl.thead.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.entrytbl.thead.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.entrytbl.thead.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.entrytbl.thead">
      <element name="thead">
        <a:documentation>A table header consisting of one or more rows</a:documentation>
        <ref name="db.cals.entrytbl.thead.attlist"/>
        <zeroOrMore>
          <ref name="db.colspec"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.entrytbl.row"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.entrytbl.tbody.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.entrytbl.tbody.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.entrytbl.tbody.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.entrytbl.tbody">
      <element name="tbody">
        <a:documentation>A wrapper for the rows of a table or informal table</a:documentation>
        <ref name="db.cals.entrytbl.tbody.attlist"/>
        <oneOrMore>
          <ref name="db.entrytbl.row"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.entrytbl.row.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.entrytbl.row.attlist">
      <interleave>
        <optional>
          <ref name="db.entrytbl.row.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.valign.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.entrytbl.row">
      <element name="row">
        <a:documentation>A row in a table</a:documentation>
        <ref name="db.entrytbl.row.attlist"/>
        <oneOrMore>
          <ref name="db.entry"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.table.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.table.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.cals.table.type.attribute">
      <optional>
        <attribute name="type">
          <a:documentation>Identifies the type of table</a:documentation>
        </attribute>
      </optional>
    </define>
    <define name="db.cals.table.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.table.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.cals.table.type.attribute"/>
        </optional>
        <optional>
          <ref name="db.cals.table.label.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.tabstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.orient.attribute"/>
        </optional>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.frame.attribute"/>
        </optional>
        <optional>
          <ref name="db.pgwide.attribute"/>
        </optional>
        <optional>
          <attribute name="shortentry">
            <a:documentation>Indicates if the short or long title should be used in a List of Tables</a:documentation>
            <choice>
              <value>0</value>
              <a:documentation>Indicates that the full title should be used.</a:documentation>
              <value>1</value>
              <a:documentation>Indicates that the short short title (titleabbrev) should be used.</a:documentation>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="tocentry">
            <a:documentation>Indicates if the table should appear in a List of Tables</a:documentation>
            <choice>
              <value>0</value>
              <a:documentation>Indicates that the table should not occur in the List of Tables.</a:documentation>
              <value>1</value>
              <a:documentation>Indicates that the table should appear in the List of Tables.</a:documentation>
            </choice>
          </attribute>
        </optional>
        <optional>
          <ref name="db.rowheader.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.table.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.cals.table">
      <element name="table">
        <a:documentation>A formal table in a document</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:table">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of table</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:table">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of table</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.cals.table.attlist"/>
        <ref name="db.cals.table.info"/>
        <interleave>
          <optional>
            <ref name="db.alt"/>
          </optional>
          <zeroOrMore>
            <ref name="db.textobject"/>
          </zeroOrMore>
        </interleave>
        <choice>
          <oneOrMore>
            <ref name="db.mediaobject"/>
          </oneOrMore>
          <oneOrMore>
            <ref name="db.tgroup"/>
          </oneOrMore>
        </choice>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.cals.informaltable.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.cals.informaltable.type.attribute">
      <optional>
        <attribute name="type">
          <a:documentation>Identifies the type of table</a:documentation>
        </attribute>
      </optional>
    </define>
    <define name="db.cals.informaltable.attlist">
      <interleave>
        <optional>
          <ref name="db.cals.informaltable.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.cals.informaltable.type.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.tabstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.orient.attribute"/>
        </optional>
        <optional>
          <ref name="db.colsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowsep.attribute"/>
        </optional>
        <optional>
          <ref name="db.frame.attribute"/>
        </optional>
        <optional>
          <ref name="db.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.rowheader.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.cals.informaltable.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.cals.informaltable">
      <element name="informaltable">
        <a:documentation>A table without a title</a:documentation>
        <ref name="db.cals.informaltable.attlist"/>
        <ref name="db.cals.informaltable.info"/>
        <interleave>
          <optional>
            <ref name="db.alt"/>
          </optional>
          <zeroOrMore>
            <ref name="db.textobject"/>
          </zeroOrMore>
        </interleave>
        <choice>
          <oneOrMore>
            <ref name="db.mediaobject"/>
          </oneOrMore>
          <oneOrMore>
            <ref name="db.tgroup"/>
          </oneOrMore>
        </choice>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <define name="db.html.coreattrs">
    <interleave>
      <optional>
        <attribute name="class">
          <a:documentation>This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="style">
          <a:documentation>This attribute specifies style information for the current element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="title">
          <a:documentation>This attribute offers advisory information about the element for which it is set.</a:documentation>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="db.html.i18n">
    <optional>
      <attribute name="lang">
        <a:documentation>This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="db.html.events">
    <interleave>
      <optional>
        <attribute name="onclick">
          <a:documentation>Occurs when the pointing device button is clicked over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="ondblclick">
          <a:documentation>Occurs when the pointing device button is double clicked over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onmousedown">
          <a:documentation>Occurs when the pointing device button is pressed over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onmouseup">
          <a:documentation>Occurs when the pointing device button is released over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onmouseover">
          <a:documentation>Occurs when the pointing device is moved onto an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onmousemove">
          <a:documentation>Occurs when the pointing device is moved while it is over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onmouseout">
          <a:documentation>Occurs when the pointing device is moved away from an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onkeypress">
          <a:documentation>Occurs when a key is pressed and released over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onkeydown">
          <a:documentation>Occurs when a key is pressed down over an element.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="onkeyup">
          <a:documentation>Occurs when a key is released over an element.</a:documentation>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="db.html.attrs">
    <interleave>
      <ref name="db.common.attributes"/>
      <ref name="db.html.coreattrs"/>
      <ref name="db.html.i18n"/>
      <ref name="db.html.events"/>
    </interleave>
  </define>
  <define name="db.html.cellhalign">
    <interleave>
      <optional>
        <attribute name="align">
          <a:documentation>Specifies the alignment of data and the justification of text in a cell.</a:documentation>
          <choice>
            <value>left</value>
            <a:documentation>Left-flush data/Left-justify text. This is the default value for table data.</a:documentation>
            <value>center</value>
            <a:documentation>Center data/Center-justify text. This is the default value for table headers.</a:documentation>
            <value>right</value>
            <a:documentation>Right-flush data/Right-justify text.</a:documentation>
            <value>justify</value>
            <a:documentation>Double-justify text.</a:documentation>
            <value>char</value>
            <a:documentation>Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.</a:documentation>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="char">
          <a:documentation>This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="charoff">
          <a:documentation>When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute.</a:documentation>
          <choice>
            <data type="integer"/>
            <a:documentation>An explicit offset.</a:documentation>
            <data type="string">
              <param name="pattern">[0-9]+%</param>
            </data>
            <a:documentation>A percentage offset.</a:documentation>
          </choice>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="db.html.cellvalign">
    <optional>
      <attribute name="valign">
        <a:documentation>Specifies the vertical position of data within a cell.</a:documentation>
        <choice>
          <value>top</value>
          <a:documentation>Cell data is flush with the top of the cell.</a:documentation>
          <value>middle</value>
          <a:documentation>Cell data is centered vertically within the cell. This is the default value.</a:documentation>
          <value>bottom</value>
          <a:documentation>Cell data is flush with the bottom of the cell.</a:documentation>
          <value>baseline</value>
          <a:documentation>All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.</a:documentation>
        </choice>
      </attribute>
    </optional>
  </define>
  <define name="db.html.table.attributes">
    <interleave>
      <optional>
        <attribute name="summary">
          <a:documentation>Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="width">
          <a:documentation>Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent.</a:documentation>
          <choice>
            <data type="integer"/>
            <a:documentation>An explicit width.</a:documentation>
            <data type="string">
              <param name="pattern">[0-9]+%</param>
            </data>
            <a:documentation>A percentage width.</a:documentation>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="border">
          <a:documentation>Specifies the width (in pixels only) of the frame around a table.</a:documentation>
          <data type="nonNegativeInteger"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="frame">
          <a:documentation>Specifies which sides of the frame surrounding a table will be visible.</a:documentation>
          <choice>
            <value>void</value>
            <a:documentation>No sides. This is the default value.</a:documentation>
            <value>above</value>
            <a:documentation>The top side only.</a:documentation>
            <value>below</value>
            <a:documentation>The bottom side only.</a:documentation>
            <value>hsides</value>
            <a:documentation>The top and bottom sides only.</a:documentation>
            <value>lhs</value>
            <a:documentation>The left-hand side only.</a:documentation>
            <value>rhs</value>
            <a:documentation>The right-hand side only.</a:documentation>
            <value>vsides</value>
            <a:documentation>The right and left sides only.</a:documentation>
            <value>box</value>
            <a:documentation>All four sides.</a:documentation>
            <value>border</value>
            <a:documentation>All four sides.</a:documentation>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="rules">
          <a:documentation>Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.</a:documentation>
          <choice>
            <value>none</value>
            <a:documentation>No rules. This is the default value.</a:documentation>
            <value>groups</value>
            <a:documentation>Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.</a:documentation>
            <value>rows</value>
            <a:documentation>Rules will appear between rows only.</a:documentation>
            <value>cols</value>
            <a:documentation>Rules will appear between columns only.</a:documentation>
            <value>all</value>
            <a:documentation>Rules will appear between all rows and columns.</a:documentation>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="cellspacing">
          <a:documentation>Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells.</a:documentation>
          <choice>
            <data type="integer"/>
            <a:documentation>An explicit spacing.</a:documentation>
            <data type="string">
              <param name="pattern">[0-9]+%</param>
            </data>
            <a:documentation>A percentage spacing.</a:documentation>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="cellpadding">
          <a:documentation>Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space.</a:documentation>
          <choice>
            <data type="integer"/>
            <a:documentation>An explicit padding.</a:documentation>
            <data type="string">
              <param name="pattern">[0-9]+%</param>
            </data>
            <a:documentation>A percentage padding.</a:documentation>
          </choice>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="db.html.tablecell.attributes">
    <interleave>
      <optional>
        <attribute name="abbr">
          <a:documentation>Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="axis">
          <a:documentation>This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="headers">
          <a:documentation>Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets.</a:documentation>
        </attribute>
      </optional>
      <optional>
        <attribute name="scope">
          <a:documentation>Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables.</a:documentation>
          <choice>
            <value>row</value>
            <a:documentation>The current cell provides header information for the rest of the row that contains it</a:documentation>
            <value>col</value>
            <a:documentation>The current cell provides header information for the rest of the column that contains it.</a:documentation>
            <value>rowgroup</value>
            <a:documentation>The header cell provides header information for the rest of the row group that contains it.</a:documentation>
            <value>colgroup</value>
            <a:documentation>The header cell provides header information for the rest of the column group that contains it.</a:documentation>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="rowspan">
          <a:documentation>Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1
). The value zero (0
) means that the cell spans all rows from the current row to the last row of the table section (thead
, tbody
, or tfoot
) in which the cell is defined.</a:documentation>
          <data type="nonNegativeInteger"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="colspan">
          <a:documentation>Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1
). The value zero (0
) means that the cell spans all columns from the current column to the last column of the column group (colgroup
) in which the cell is defined.</a:documentation>
          <data type="nonNegativeInteger"/>
        </attribute>
      </optional>
    </interleave>
  </define>
  <define name="db.html.table.info">
    <ref name="db._info.title.forbidden"/>
  </define>
  <define name="db.html.table.model">
    <optional>
      <ref name="db.html.table.info"/>
    </optional>
    <ref name="db.html.caption"/>
    <choice>
      <zeroOrMore>
        <ref name="db.html.col"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="db.html.colgroup"/>
      </zeroOrMore>
    </choice>
    <optional>
      <ref name="db.html.thead"/>
    </optional>
    <optional>
      <ref name="db.html.tfoot"/>
    </optional>
    <choice>
      <oneOrMore>
        <ref name="db.html.tbody"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="db.html.tr"/>
      </oneOrMore>
    </choice>
  </define>
  <define name="db.html.informaltable.info">
    <ref name="db._info.title.forbidden"/>
  </define>
  <define name="db.html.informaltable.model">
    <optional>
      <ref name="db.html.informaltable.info"/>
    </optional>
    <choice>
      <zeroOrMore>
        <ref name="db.html.col"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="db.html.colgroup"/>
      </zeroOrMore>
    </choice>
    <optional>
      <ref name="db.html.thead"/>
    </optional>
    <optional>
      <ref name="db.html.tfoot"/>
    </optional>
    <choice>
      <oneOrMore>
        <ref name="db.html.tbody"/>
      </oneOrMore>
      <oneOrMore>
        <ref name="db.html.tr"/>
      </oneOrMore>
    </choice>
  </define>
  <div>
    <define name="db.html.table.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.html.table.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.html.table.type.attribute">
      <optional>
        <attribute name="type">
          <a:documentation>Identifies the type of table</a:documentation>
        </attribute>
      </optional>
    </define>
    <define name="db.html.table.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.table.attributes"/>
        <optional>
          <ref name="db.html.table.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.html.table.type.attribute"/>
        </optional>
        <optional>
          <ref name="db.html.table.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.orient.attribute"/>
        </optional>
        <optional>
          <ref name="db.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.tabstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.html.table">
      <element name="table">
        <a:documentation>A formal (captioned) HTML table in a document</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:table">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of table</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:table">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of table</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.html.table.attlist"/>
        <ref name="db.html.table.model"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.informaltable.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.html.informaltable.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.html.informaltable.type.attribute">
      <optional>
        <attribute name="type">
          <a:documentation>Identifies the type of table</a:documentation>
        </attribute>
      </optional>
    </define>
    <define name="db.html.informaltable.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.table.attributes"/>
        <optional>
          <ref name="db.html.informaltable.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.html.informaltable.type.attribute"/>
        </optional>
        <optional>
          <ref name="db.html.informaltable.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.orient.attribute"/>
        </optional>
        <optional>
          <ref name="db.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.tabstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.html.informaltable">
      <element name="informaltable">
        <a:documentation>An HTML table without a title</a:documentation>
        <ref name="db.html.informaltable.attlist"/>
        <ref name="db.html.informaltable.model"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.caption.attlist">
      <ref name="db.html.attrs"/>
    </define>
    <define name="db.html.caption">
      <element name="caption">
        <a:documentation>An HTML table caption</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:note)">note must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:table)">table must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:sidebar)">sidebar must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.html.caption.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.col.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <optional>
          <attribute name="span">
            <a:documentation>This attribute, whose value must be an integer &gt; 0, specifies the number of columns spanned
 by the col
 element; the col
 element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N &gt; 1, the current col
 element shares its attributes with the next N-1 columns.</a:documentation>
            <data type="nonNegativeInteger"/>
          </attribute>
        </optional>
        <optional>
          <attribute name="width">
            <a:documentation>Specifies a default width for each column spanned by the current col
 element. It has the same meaning as the width
 attribute for the colgroup
 element and overrides it.</a:documentation>
          </attribute>
        </optional>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.col">
      <element name="col">
        <a:documentation>Specifications for a column in an HTML table</a:documentation>
        <ref name="db.html.col.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.colgroup.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <optional>
          <attribute name="span">
            <a:documentation>This attribute, which must be an integer &gt; 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup
 defines a column group containing one column. If the span attribute is set to N &gt; 0, the current colgroup
 element defines a column group containing N columns. User agents must ignore this attribute if the colgroup
 element contains one or more col
 elements.</a:documentation>
            <data type="nonNegativeInteger"/>
          </attribute>
        </optional>
        <optional>
          <attribute name="width">
            <a:documentation>This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0*
 (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0*
 will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col
 element.</a:documentation>
          </attribute>
        </optional>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.colgroup">
      <element name="colgroup">
        <a:documentation>A group of columns in an HTML table</a:documentation>
        <ref name="db.html.colgroup.attlist"/>
        <zeroOrMore>
          <ref name="db.html.col"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.thead.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.thead">
      <element name="thead">
        <a:documentation>A table header consisting of one or more rows in an HTML table</a:documentation>
        <ref name="db.html.thead.attlist"/>
        <oneOrMore>
          <ref name="db.html.tr"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.tfoot.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.tfoot">
      <element name="tfoot">
        <a:documentation>A table footer consisting of one or more rows in an HTML table</a:documentation>
        <ref name="db.html.tfoot.attlist"/>
        <oneOrMore>
          <ref name="db.html.tr"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.tbody.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.tbody">
      <element name="tbody">
        <a:documentation>A wrapper for the rows of an HTML table or informal HTML table</a:documentation>
        <ref name="db.html.tbody.attlist"/>
        <oneOrMore>
          <ref name="db.html.tr"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.tr.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.tr">
      <element name="tr">
        <a:documentation>A row in an HTML table</a:documentation>
        <ref name="db.html.tr.attlist"/>
        <oneOrMore>
          <choice>
            <ref name="db.html.th"/>
            <ref name="db.html.td"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.th.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.tablecell.attributes"/>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.th">
      <element name="th">
        <a:documentation>A table header entry in an HTML table</a:documentation>
        <ref name="db.html.th.attlist"/>
        <choice>
          <zeroOrMore>
            <ref name="db.all.inlines"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="db.all.blocks"/>
          </zeroOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.html.td.attlist">
      <interleave>
        <ref name="db.html.attrs"/>
        <ref name="db.html.tablecell.attributes"/>
        <ref name="db.html.cellhalign"/>
        <ref name="db.html.cellvalign"/>
      </interleave>
    </define>
    <define name="db.html.td">
      <element name="td">
        <a:documentation>A table entry in an HTML table</a:documentation>
        <ref name="db.html.td.attlist"/>
        <choice>
          <zeroOrMore>
            <ref name="db.all.inlines"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="db.all.blocks"/>
          </zeroOrMore>
        </choice>
      </element>
    </define>
  </div>
  <define name="db.computeroutput.inlines">
    <choice>
      <choice>
        <text/>
        <ref name="db.ubiq.inlines"/>
        <ref name="db.os.inlines"/>
        <ref name="db.technical.inlines"/>
      </choice>
      <ref name="db.markup.inlines"/>
    </choice>
  </define>
  <define name="db.userinput.inlines">
    <choice>
      <choice>
        <text/>
        <ref name="db.ubiq.inlines"/>
        <ref name="db.os.inlines"/>
        <ref name="db.technical.inlines"/>
      </choice>
      <ref name="db.markup.inlines"/>
    </choice>
  </define>
  <div>
    <define name="db.filename.class.enumeration">
      <choice>
        <value>devicefile</value>
        <a:documentation>A device</a:documentation>
        <value>directory</value>
        <a:documentation>A directory</a:documentation>
        <value>extension</value>
        <a:documentation>A filename extension</a:documentation>
        <value>headerfile</value>
        <a:documentation>A header file (as for a programming language)</a:documentation>
        <value>libraryfile</value>
        <a:documentation>A library file</a:documentation>
        <value>partition</value>
        <a:documentation>A partition (as of a hard disk)</a:documentation>
        <value>symlink</value>
        <a:documentation>A symbolic link</a:documentation>
      </choice>
    </define>
    <define name="db.filename.class.attribute">
      <attribute name="class">
        <a:documentation>Identifies the class of filename</a:documentation>
        <ref name="db.filename.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.filename.path.attribute">
      <attribute name="path">
        <a:documentation>Specifies the path of the filename</a:documentation>
      </attribute>
    </define>
    <define name="db.filename.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.filename.attlist">
      <interleave>
        <optional>
          <ref name="db.filename.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.filename.path.attribute"/>
        </optional>
        <optional>
          <ref name="db.filename.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.filename">
      <element name="filename">
        <a:documentation>The name of a file</a:documentation>
        <ref name="db.filename.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.command.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.command.attlist">
      <interleave>
        <optional>
          <ref name="db.command.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.command">
      <element name="command">
        <a:documentation>The name of an executable program or other software command</a:documentation>
        <ref name="db.command.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.computeroutput.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.computeroutput.attlist">
      <interleave>
        <optional>
          <ref name="db.computeroutput.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.computeroutput">
      <element name="computeroutput">
        <a:documentation>Data, generally text, displayed or presented by a computer</a:documentation>
        <ref name="db.computeroutput.attlist"/>
        <zeroOrMore>
          <ref name="db.computeroutput.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.userinput.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.userinput.attlist">
      <interleave>
        <optional>
          <ref name="db.userinput.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.userinput">
      <element name="userinput">
        <a:documentation>Data entered by the user</a:documentation>
        <ref name="db.userinput.attlist"/>
        <zeroOrMore>
          <ref name="db.userinput.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <define name="db.os.inlines">
    <choice>
      <ref name="db.filename"/>
      <ref name="db.command"/>
      <ref name="db.computeroutput"/>
      <ref name="db.userinput"/>
    </choice>
  </define>
  <div>
    <define name="db.programlisting.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.programlisting.width.attribute">
      <ref name="db.width.characters.attribute"/>
    </define>
    <define name="db.programlisting.attlist">
      <interleave>
        <optional>
          <ref name="db.programlisting.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
        <optional>
          <ref name="db.programlisting.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.programlisting">
      <element name="programlisting">
        <a:documentation>A literal listing of all or part of a program</a:documentation>
        <ref name="db.programlisting.attlist"/>
        <ref name="db.verbatim.contentmodel"/>
      </element>
    </define>
  </div>
  <define name="db.programming.inlines">
    <empty/>
  </define>
  <define name="db.systemitem.inlines">
    <ref name="db._text"/>
  </define>
  <div>
    <define name="db.systemitem.class.enumeration">
      <choice>
        <value>daemon</value>
        <a:documentation>A daemon or other system process (syslogd)</a:documentation>
        <value>domainname</value>
        <a:documentation>A domain name (example.com)</a:documentation>
        <value>etheraddress</value>
        <a:documentation>An ethernet address (00:05:4E:49:FD:8E)</a:documentation>
        <value>event</value>
        <a:documentation>An event of some sort (SIGHUP)</a:documentation>
        <value>eventhandler</value>
        <a:documentation>An event handler of some sort (hangup)</a:documentation>
        <value>filesystem</value>
        <a:documentation>A filesystem (ext3)</a:documentation>
        <value>fqdomainname</value>
        <a:documentation>A fully qualified domain name (my.example.com)</a:documentation>
        <value>groupname</value>
        <a:documentation>A group name (wheel)</a:documentation>
        <value>interface</value>
        <a:documentation>A network interface (eth0)</a:documentation>
        <value>ipaddress</value>
        <a:documentation>An IP address (127.0.0.1)</a:documentation>
        <value>library</value>
        <a:documentation>A library (libncurses)</a:documentation>
        <value>macro</value>
        <a:documentation>A macro</a:documentation>
        <value>netmask</value>
        <a:documentation>A netmask (255.255.255.192)</a:documentation>
        <value>newsgroup</value>
        <a:documentation>A newsgroup (comp.text.xml)</a:documentation>
        <value>osname</value>
        <a:documentation>An operating system name (Hurd)</a:documentation>
        <value>process</value>
        <a:documentation>A process (gnome-cups-icon)</a:documentation>
        <value>protocol</value>
        <a:documentation>A protocol (ftp)</a:documentation>
        <value>resource</value>
        <a:documentation>A resource</a:documentation>
        <value>securitycontext</value>
        <a:documentation>A security context (a role, permission, or security token, for example)</a:documentation>
        <value>server</value>
        <a:documentation>A server (mail.example.com)</a:documentation>
        <value>service</value>
        <a:documentation>A service (ppp)</a:documentation>
        <value>systemname</value>
        <a:documentation>A system name (hephaistos)</a:documentation>
        <value>username</value>
        <a:documentation>A user name (ndw)</a:documentation>
      </choice>
    </define>
    <define name="db.systemitem.class-enum.attribute">
      <optional>
        <attribute name="class">
          <a:documentation>Identifies the nature of the system item</a:documentation>
          <ref name="db.systemitem.class.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.systemitem.class-other.attribute">
      <attribute name="otherclass">
        <a:documentation>Identifies the nature of the non-standard system item</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.systemitem.class-other.attributes">
      <interleave>
        <attribute name="class">
          <a:documentation>Identifies the kind of systemitemgraphic identifier</a:documentation>
          <value>other</value>
          <a:documentation>Indicates that the system item is some 'other' kind.</a:documentation>
        </attribute>
        <ref name="db.systemitem.class-other.attribute"/>
      </interleave>
    </define>
    <define name="db.systemitem.class.attribute">
      <choice>
        <ref name="db.systemitem.class-enum.attribute"/>
        <ref name="db.systemitem.class-other.attributes"/>
      </choice>
    </define>
    <define name="db.systemitem.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.systemitem.attlist">
      <interleave>
        <optional>
          <ref name="db.systemitem.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.systemitem.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.systemitem">
      <element name="systemitem">
        <a:documentation>A system-related item or term</a:documentation>
        <ref name="db.systemitem.attlist"/>
        <zeroOrMore>
          <ref name="db.systemitem.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.option.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.option.attlist">
      <interleave>
        <optional>
          <ref name="db.option.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.option">
      <element name="option">
        <a:documentation>An option for a software command</a:documentation>
        <ref name="db.option.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.literal.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.literal.attlist">
      <interleave>
        <optional>
          <ref name="db.literal.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.literal">
      <element name="literal">
        <a:documentation>Inline text that is some literal value</a:documentation>
        <ref name="db.literal.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <define name="db.markup.inlines">
    <choice>
      <ref name="db.literal"/>
      <ref name="db.email"/>
    </choice>
  </define>
  <define name="db.admonition.contentmodel">
    <ref name="db._info.title.only"/>
    <oneOrMore>
      <ref name="db.all.blocks"/>
    </oneOrMore>
  </define>
  <div>
    <define name="db.note.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.note.attlist">
      <interleave>
        <optional>
          <ref name="db.note.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.note">
      <element name="note">
        <a:documentation>A message set off from the text</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:note">
            <s:assert test="not(.//db:note)">note must not occur among the children or descendants of note</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.note.attlist"/>
        <ref name="db.admonition.contentmodel"/>
      </element>
    </define>
  </div>
  <define name="db.admonition.blocks">
    <ref name="db.note"/>
  </define>
  <define name="db.endterm.attribute">
    <attribute name="endterm">
      <a:documentation>Points to the element whose content is to be used as the text of the link</a:documentation>
      <data type="IDREF"/>
    </attribute>
  </define>
  <define name="db.linkend.attribute">
    <attribute name="linkend">
      <a:documentation>Points to an internal link target by identifying the value of its xml:id attribute</a:documentation>
      <data type="IDREF"/>
    </attribute>
  </define>
  <define name="db.xlink.href.attribute">
    <attribute name="xlink:href">
      <a:documentation>Identifies a link target with a URI</a:documentation>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.simple.type.attribute">
    <attribute name="xlink:type">
      <a:documentation>Identifies the XLink link type</a:documentation>
      <value>simple</value>
      <a:documentation>An XLink simple link type</a:documentation>
    </attribute>
  </define>
  <define name="db.xlink.role.attribute">
    <attribute name="xlink:role">
      <a:documentation>Identifies the XLink role of the link</a:documentation>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.arcrole.attribute">
    <attribute name="xlink:arcrole">
      <a:documentation>Identifies the XLink arcrole of the link</a:documentation>
      <data type="anyURI"/>
    </attribute>
  </define>
  <define name="db.xlink.title.attribute">
    <attribute name="xlink:title">
      <a:documentation>Identifies the XLink title of the link</a:documentation>
    </attribute>
  </define>
  <define name="db.xlink.show.enumeration">
    <choice>
      <value>new</value>
      <a:documentation>An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.</a:documentation>
      <value>replace</value>
      <a:documentation>An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</a:documentation>
      <value>embed</value>
      <a:documentation>An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.</a:documentation>
      <value>other</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.</a:documentation>
      <value>none</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</a:documentation>
    </choice>
  </define>
  <define name="db.xlink.show.attribute">
    <attribute name="xlink:show">
      <a:documentation>Identifies the XLink show behavior of the link</a:documentation>
      <ref name="db.xlink.show.enumeration"/>
    </attribute>
  </define>
  <define name="db.xlink.actuate.enumeration">
    <choice>
      <value>onLoad</value>
      <a:documentation>An application should traverse to the ending resource immediately on loading the starting resource.</a:documentation>
      <value>onRequest</value>
      <a:documentation>An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.</a:documentation>
      <value>other</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.</a:documentation>
      <value>none</value>
      <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</a:documentation>
    </choice>
  </define>
  <define name="db.xlink.actuate.attribute">
    <attribute name="xlink:actuate">
      <a:documentation>Identifies the XLink actuate behavior of the link</a:documentation>
      <ref name="db.xlink.actuate.enumeration"/>
    </attribute>
  </define>
  <define name="db.xlink.simple.link.attributes">
    <interleave>
      <optional>
        <ref name="db.xlink.simple.type.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.href.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.role.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.arcrole.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.title.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.show.attribute"/>
      </optional>
      <optional>
        <ref name="db.xlink.actuate.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="db.xlink.attributes">
    <ref name="db.xlink.simple.link.attributes"/>
  </define>
  <define name="db.xrefstyle.attribute">
    <attribute name="xrefstyle">
      <a:documentation>Specifies a keyword or keywords identifying additional style information</a:documentation>
    </attribute>
  </define>
  <define name="db.common.linking.attributes">
    <optional>
      <choice>
        <ref name="db.linkend.attribute"/>
        <ref name="db.xlink.attributes"/>
      </choice>
    </optional>
  </define>
  <define name="db.common.req.linking.attributes">
    <choice>
      <ref name="db.linkend.attribute"/>
      <ref name="db.xlink.attributes"/>
    </choice>
  </define>
  <define name="db.common.data.attributes">
    <optional>
      <attribute name="format">
        <a:documentation>Specifies the format of the data</a:documentation>
      </attribute>
    </optional>
    <choice>
      <attribute name="fileref">
        <a:documentation>Indentifies the location of the data by URI</a:documentation>
        <data type="anyURI"/>
      </attribute>
      <attribute name="entityref">
        <a:documentation>Identifies the location of the data by external identifier (entity name)</a:documentation>
        <data type="ENTITY"/>
      </attribute>
    </choice>
  </define>
  <define name="db.verbatim.continuation.enumeration">
    <choice>
      <value>continues</value>
      <a:documentation>Line numbering continues from the immediately preceding element with the same name.</a:documentation>
      <value>restarts</value>
      <a:documentation>Line numbering restarts (begins at 1, usually).</a:documentation>
    </choice>
  </define>
  <define name="db.verbatim.continuation.attribute">
    <attribute name="continuation">
      <a:documentation>Determines whether line numbering continues from the previous element or restarts</a:documentation>
      <ref name="db.verbatim.continuation.enumeration"/>
    </attribute>
  </define>
  <define name="db.verbatim.linenumbering.enumeration">
    <choice>
      <value>numbered</value>
      <a:documentation>Lines are numbered.</a:documentation>
      <value>unnumbered</value>
      <a:documentation>Lines are not numbered.</a:documentation>
    </choice>
  </define>
  <define name="db.verbatim.linenumbering.attribute">
    <attribute name="linenumbering">
      <a:documentation>Determines whether lines are numbered</a:documentation>
      <ref name="db.verbatim.linenumbering.enumeration"/>
    </attribute>
  </define>
  <define name="db.verbatim.startinglinenumber.attribute">
    <attribute name="startinglinenumber">
      <a:documentation>Specifies the initial line number</a:documentation>
      <data type="integer"/>
    </attribute>
  </define>
  <define name="db.verbatim.language.attribute">
    <attribute name="language">
      <a:documentation>Identifies the language (i.e. programming language) of the verbatim content</a:documentation>
    </attribute>
  </define>
  <define name="db.verbatim.xml.space.attribute">
    <attribute name="xml:space">
      <a:documentation>Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not</a:documentation>
      <value>preserve</value>
      <a:documentation>Whitespace must be preserved.</a:documentation>
    </attribute>
  </define>
  <define name="db.verbatim.common.attributes">
    <interleave>
      <optional>
        <ref name="db.verbatim.continuation.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.linenumbering.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.startinglinenumber.attribute"/>
      </optional>
      <optional>
        <ref name="db.verbatim.xml.space.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="db.verbatim.attributes">
    <interleave>
      <ref name="db.verbatim.common.attributes"/>
      <optional>
        <ref name="db.verbatim.language.attribute"/>
      </optional>
    </interleave>
  </define>
  <define name="db.label.attribute">
    <attribute name="label">
      <a:documentation>Specifies an identifying string for presentation purposes</a:documentation>
    </attribute>
  </define>
  <define name="db.width.characters.attribute">
    <attribute name="width">
      <a:documentation>Specifies the width (in characters) of the element</a:documentation>
      <data type="nonNegativeInteger"/>
    </attribute>
  </define>
  <define name="db.spacing.enumeration">
    <choice>
      <value>compact</value>
      <a:documentation>The spacing should be "compact".</a:documentation>
      <value>normal</value>
      <a:documentation>The spacing should be "normal".</a:documentation>
    </choice>
  </define>
  <define name="db.spacing.attribute">
    <attribute name="spacing">
      <a:documentation>Specifies (a hint about) the spacing of the content</a:documentation>
      <ref name="db.spacing.enumeration"/>
    </attribute>
  </define>
  <define name="db.pgwide.enumeration">
    <choice>
      <value>0</value>
      <a:documentation>The element should be rendered in the current text flow (with the flow column width).</a:documentation>
      <value>1</value>
      <a:documentation>The element should be rendered across the full text page.</a:documentation>
    </choice>
  </define>
  <define name="db.pgwide.attribute">
    <attribute name="pgwide">
      <a:documentation>Indicates if the element is rendered across the column or the page</a:documentation>
      <ref name="db.pgwide.enumeration"/>
    </attribute>
  </define>
  <define name="db.floatstyle.attribute">
    <attribute name="floatstyle">
      <a:documentation>Specifies style information to be used when rendering the float</a:documentation>
    </attribute>
  </define>
  <define name="db.width.attribute">
    <attribute name="width">
      <a:documentation>Specifies the width of the element</a:documentation>
    </attribute>
  </define>
  <define name="db.depth.attribute">
    <attribute name="depth">
      <a:documentation>Specifies the depth of the element</a:documentation>
    </attribute>
  </define>
  <define name="db.contentwidth.attribute">
    <attribute name="contentwidth">
      <a:documentation>Specifies the width of the content rectangle</a:documentation>
    </attribute>
  </define>
  <define name="db.contentdepth.attribute">
    <attribute name="contentdepth">
      <a:documentation>Specifies the depth of the content rectangle</a:documentation>
    </attribute>
  </define>
  <define name="db.scalefit.enumeration">
    <choice>
      <value>0</value>
      <a:documentation>False (do not scale-to-fit; anamorphic scaling may occur)</a:documentation>
      <value>1</value>
      <a:documentation>True (scale-to-fit; anamorphic scaling is forbidden)</a:documentation>
    </choice>
  </define>
  <define name="db.scale.attribute">
    <attribute name="scale">
      <a:documentation>Specifies the scaling factor</a:documentation>
      <data type="positiveInteger"/>
    </attribute>
  </define>
  <define name="db.classid.attribute">
    <attribute name="classid">
      <a:documentation>Specifies a classid for a media object player</a:documentation>
    </attribute>
  </define>
  <define name="db.autoplay.attribute">
    <attribute name="autoplay">
      <a:documentation>Specifies the autoplay setting for a media object player</a:documentation>
    </attribute>
  </define>
  <define name="db.halign.enumeration">
    <choice>
      <value>center</value>
      <a:documentation>Centered horizontally</a:documentation>
      <value>char</value>
      <a:documentation>Aligned horizontally on the specified character</a:documentation>
      <value>justify</value>
      <a:documentation>Fully justified (left and right margins or edges)</a:documentation>
      <value>left</value>
      <a:documentation>Left aligned</a:documentation>
      <value>right</value>
      <a:documentation>Right aligned</a:documentation>
    </choice>
  </define>
  <define name="db.valign.enumeration">
    <choice>
      <value>bottom</value>
      <a:documentation>Aligned on the bottom of the region</a:documentation>
      <value>middle</value>
      <a:documentation>Centered vertically</a:documentation>
      <value>top</value>
      <a:documentation>Aligned on the top of the region</a:documentation>
    </choice>
  </define>
  <define name="db.pubwork.enumeration">
    <choice>
      <value>article</value>
      <a:documentation>An article</a:documentation>
      <value>bbs</value>
      <a:documentation>A bulletin board system</a:documentation>
      <value>book</value>
      <a:documentation>A book</a:documentation>
      <value>cdrom</value>
      <a:documentation>A CD-ROM</a:documentation>
      <value>chapter</value>
      <a:documentation>A chapter (as of a book)</a:documentation>
      <value>dvd</value>
      <a:documentation>A DVD</a:documentation>
      <value>emailmessage</value>
      <a:documentation>An email message</a:documentation>
      <value>gopher</value>
      <a:documentation>A gopher page</a:documentation>
      <value>journal</value>
      <a:documentation>A journal</a:documentation>
      <value>manuscript</value>
      <a:documentation>A manuscript</a:documentation>
      <value>newsposting</value>
      <a:documentation>A posting to a newsgroup</a:documentation>
      <value>part</value>
      <a:documentation>A part (as of a book)</a:documentation>
      <value>refentry</value>
      <a:documentation>A reference entry</a:documentation>
      <value>section</value>
      <a:documentation>A section (as of a book or article)</a:documentation>
      <value>series</value>
      <a:documentation>A series</a:documentation>
      <value>set</value>
      <a:documentation>A set (as of books)</a:documentation>
      <value>webpage</value>
      <a:documentation>A web page</a:documentation>
      <value>wiki</value>
      <a:documentation>A wiki page</a:documentation>
      <value>other</value>
      <a:documentation>Some other kind of work</a:documentation>
    </choice>
  </define>
  <define name="db.biblio.pubwork.enumeration">
    <ref name="db.pubwork.enumeration"/>
  </define>
  <define name="db.biblio.pubwork-enum.attribute">
    <optional>
      <attribute name="pubwork">
        <a:documentation>Identifies the nature of the published work</a:documentation>
        <ref name="db.biblio.pubwork.enumeration"/>
      </attribute>
    </optional>
  </define>
  <define name="db.biblio.pubwork-other.attribute">
    <attribute name="otherpubwork">
      <a:documentation>Identifies the nature of some other kind of published work</a:documentation>
      <data type="NMTOKEN"/>
    </attribute>
  </define>
  <define name="db.biblio.pubwork-other.attributes">
    <interleave>
      <attribute name="pubwork">
        <a:documentation>Identifies that this is some other kind of published work</a:documentation>
        <value>other</value>
        <a:documentation>Indicates that the published work is some 'other' kind.</a:documentation>
      </attribute>
      <ref name="db.biblio.pubwork-other.attribute"/>
    </interleave>
  </define>
  <define name="db.biblio.pubwork.attribute">
    <choice>
      <ref name="db.biblio.pubwork-enum.attribute"/>
      <ref name="db.biblio.pubwork-other.attributes"/>
    </choice>
  </define>
  <define name="db._text">
    <zeroOrMore>
      <choice>
        <text/>
        <ref name="db.ubiq.inlines"/>
        <ref name="db._phrase"/>
        <ref name="db.replaceable"/>
      </choice>
    </zeroOrMore>
  </define>
  <define name="db._title">
    <interleave>
      <optional>
        <ref name="db.title"/>
      </optional>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
      <optional>
        <ref name="db.subtitle"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.req">
    <interleave>
      <ref name="db.title"/>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
      <optional>
        <ref name="db.subtitle"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.only">
    <interleave>
      <optional>
        <ref name="db.title"/>
      </optional>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
    </interleave>
  </define>
  <define name="db._title.onlyreq">
    <interleave>
      <ref name="db.title"/>
      <optional>
        <ref name="db.titleabbrev"/>
      </optional>
    </interleave>
  </define>
  <define name="db._info">
    <choice>
      <group>
        <ref name="db._title"/>
        <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.link.inlines"/>
    </choice>
  </define>
  <define name="db.domain.inlines">
    <choice>
      <ref name="db.technical.inlines"/>
      <ref name="db.os.inlines"/>
      <ref name="db.programming.inlines"/>
      <ref name="db.markup.inlines"/>
    </choice>
  </define>
  <define name="db.graphic.inlines">
    <ref name="db.inlinemediaobject"/>
  </define>
  <define name="db.extension.inlines">
    <notAllowed/>
  </define>
  <define name="db.all.blocks">
    <choice>
      <choice>
        <ref name="db.nopara.blocks"/>
        <ref name="db.para.blocks"/>
        <ref name="db.extension.blocks"/>
      </choice>
      <ref name="sl.speakernotes"/>
    </choice>
  </define>
  <define name="db.extension.blocks">
    <notAllowed/>
  </define>
  <div>
    <define name="db.title.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.title.attlist">
      <interleave>
        <optional>
          <ref name="db.title.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.title">
      <element name="title">
        <a:documentation>The text of the title of a section of a document or of a formal block-level element</a:documentation>
        <ref name="db.title.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleabbrev.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleabbrev.attlist">
      <interleave>
        <optional>
          <ref name="db.titleabbrev.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.titleabbrev">
      <element name="titleabbrev">
        <a:documentation>The abbreviation of a title</a:documentation>
        <ref name="db.titleabbrev.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subtitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subtitle.attlist">
      <interleave>
        <optional>
          <ref name="db.subtitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subtitle">
      <element name="subtitle">
        <a:documentation>The subtitle of a document</a:documentation>
        <ref name="db.subtitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.info.attlist">
      <interleave>
        <optional>
          <ref name="db.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block</a:documentation>
        <ref name="db.info.attlist"/>
        <interleave>
          <ref name="db._title"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titlereq.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titlereq.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titlereq.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titlereq.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block with a required title</a:documentation>
        <ref name="db.titlereq.info.attlist"/>
        <interleave>
          <ref name="db._title.req"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleonly.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleonly.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleonly.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleonly.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block with only a title</a:documentation>
        <ref name="db.titleonly.info.attlist"/>
        <interleave>
          <ref name="db._title.only"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleonlyreq.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleonlyreq.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleonlyreq.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleonlyreq.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block with only a required title</a:documentation>
        <ref name="db.titleonlyreq.info.attlist"/>
        <interleave>
          <ref name="db._title.onlyreq"/>
          <zeroOrMore>
            <ref name="db.info.elements"/>
          </zeroOrMore>
        </interleave>
      </element>
    </define>
  </div>
  <div>
    <define name="db.titleforbidden.info.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.titleforbidden.info.attlist">
      <interleave>
        <optional>
          <ref name="db.titleforbidden.info.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.titleforbidden.info">
      <element name="info">
        <a:documentation>A wrapper for information about a component or other block without a title</a:documentation>
        <ref name="db.titleforbidden.info.attlist"/>
        <zeroOrMore>
          <ref name="db.info.elements"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subjectset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subjectset.scheme.attribute">
      <attribute name="scheme">
        <a:documentation>Identifies the controlled vocabulary used by this set's terms</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.subjectset.attlist">
      <interleave>
        <optional>
          <ref name="db.subjectset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.subjectset.scheme.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.subjectset">
      <element name="subjectset">
        <a:documentation>A set of terms describing the subject matter of a document</a:documentation>
        <ref name="db.subjectset.attlist"/>
        <oneOrMore>
          <ref name="db.subject"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subject.weight.attribute">
      <attribute name="weight">
        <a:documentation>Specifies a ranking for this subject relative to other subjects in the same set</a:documentation>
      </attribute>
    </define>
    <define name="db.subject.attlist">
      <interleave>
        <optional>
          <ref name="db.subject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.subject.weight.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.subject">
      <element name="subject">
        <a:documentation>One of a group of terms describing the subject matter of a document</a:documentation>
        <ref name="db.subject.attlist"/>
        <oneOrMore>
          <ref name="db.subjectterm"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subjectterm.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subjectterm.attlist">
      <interleave>
        <optional>
          <ref name="db.subjectterm.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subjectterm">
      <element name="subjectterm">
        <a:documentation>A term in a group of terms describing the subject matter of a document</a:documentation>
        <ref name="db.subjectterm.attlist"/>
        <text/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.keywordset.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.keywordset.attlist">
      <interleave>
        <optional>
          <ref name="db.keywordset.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.keywordset">
      <element name="keywordset">
        <a:documentation>A set of keywords describing the content of a document</a:documentation>
        <ref name="db.keywordset.attlist"/>
        <oneOrMore>
          <ref name="db.keyword"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.keyword.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.keyword.attlist">
      <interleave>
        <optional>
          <ref name="db.keyword.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.keyword">
      <element name="keyword">
        <a:documentation>One of a set of keywords describing the content of a document</a:documentation>
        <ref name="db.keyword.attlist"/>
        <text/>
      </element>
    </define>
  </div>
  <define name="db.table.choice">
    <choice>
      <notAllowed/>
      <ref name="db.cals.table"/>
      <ref name="db.html.table"/>
    </choice>
  </define>
  <define name="db.informaltable.choice">
    <choice>
      <notAllowed/>
      <ref name="db.cals.informaltable"/>
      <ref name="db.html.informaltable"/>
    </choice>
  </define>
  <define name="db.table">
    <ref name="db.table.choice"/>
  </define>
  <define name="db.informaltable">
    <ref name="db.informaltable.choice"/>
  </define>
  <div>
    <define name="db.sidebar.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.sidebar.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.sidebar.attlist">
      <interleave>
        <optional>
          <ref name="db.sidebar.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.sidebar.floatstyle.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.sidebar.info">
      <ref name="db._info"/>
    </define>
    <define name="db.sidebar">
      <element name="sidebar">
        <a:documentation>A portion of a document that is isolated from the main narrative flow</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:sidebar">
            <s:assert test="not(.//db:sidebar)">sidebar must not occur among the children or descendants of sidebar</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.sidebar.attlist"/>
        <ref name="db.sidebar.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.abstract.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.abstract.attlist">
      <interleave>
        <optional>
          <ref name="db.abstract.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.abstract.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.abstract">
      <element name="abstract">
        <a:documentation>A summary</a:documentation>
        <ref name="db.abstract.attlist"/>
        <ref name="db.abstract.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.personblurb.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.personblurb.attlist">
      <interleave>
        <optional>
          <ref name="db.personblurb.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.personblurb.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.personblurb">
      <element name="personblurb">
        <a:documentation>A short description or note about a person</a:documentation>
        <ref name="db.personblurb.attlist"/>
        <ref name="db.personblurb.info"/>
        <oneOrMore>
          <ref name="db.para.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.blockquote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.blockquote.attlist">
      <interleave>
        <optional>
          <ref name="db.blockquote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.blockquote.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.blockquote">
      <element name="blockquote">
        <a:documentation>A quotation set off from the main text</a:documentation>
        <ref name="db.blockquote.attlist"/>
        <ref name="db.blockquote.info"/>
        <optional>
          <ref name="db.attribution"/>
        </optional>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.attribution.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.attribution.attlist">
      <interleave>
        <optional>
          <ref name="db.attribution.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
  </div>
  <div>
    <define name="db.epigraph.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.epigraph.attlist">
      <interleave>
        <optional>
          <ref name="db.epigraph.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.epigraph.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.epigraph">
      <element name="epigraph">
        <a:documentation>A short inscription at the beginning of a document or component</a:documentation>
        <ref name="db.epigraph.attlist"/>
        <ref name="db.epigraph.info"/>
        <optional>
          <ref name="db.attribution"/>
        </optional>
        <oneOrMore>
          <choice>
            <ref name="db.para.blocks"/>
            <ref name="db.literallayout"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.footnote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.footnote.label.attribute">
      <attribute name="label">
        <a:documentation>Identifies the desired footnote mark</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.footnote.attlist">
      <interleave>
        <optional>
          <ref name="db.footnote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.footnote.label.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.footnote">
      <element name="footnote">
        <a:documentation>A footnote</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:note)">note must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:footnote)">footnote must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:table)">table must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:sidebar)">sidebar must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:footnote">
            <s:assert test="not(.//db:epigraph)">epigraph must not occur among the children or descendants of footnote</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.footnote.attlist"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.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>
  </div>
  <div>
    <define name="db.itemizedlist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.itemizedlist.mark.attribute">
      <attribute name="mark">
        <a:documentation>Identifies the type of mark to be used on items in this list</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.itemizedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.itemizedlist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.spacing.attribute"/>
        </optional>
        <optional>
          <ref name="db.itemizedlist.mark.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.itemizedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.itemizedlist">
      <element name="itemizedlist">
        <a:documentation>A list in which each entry is marked with a bullet or other dingbat</a:documentation>
        <ref name="db.itemizedlist.attlist"/>
        <ref name="db.itemizedlist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.listitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.orderedlist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.orderedlist.continuation.enumeration">
      <choice>
        <value>continues</value>
        <a:documentation>Specifies that numbering should begin where the preceding list left off</a:documentation>
        <value>restarts</value>
        <a:documentation>Specifies that numbering should begin again at 1</a:documentation>
      </choice>
    </define>
    <define name="db.orderedlist.continuation.attribute">
      <attribute name="continuation">
        <a:documentation>Indicates how list numbering should begin relative to the immediately preceding list</a:documentation>
        <ref name="db.orderedlist.continuation.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.startingnumber.attribute">
      <attribute name="startingnumber">
        <a:documentation>Specifies the initial line number</a:documentation>
        <data type="integer"/>
      </attribute>
    </define>
    <define name="db.orderedlist.inheritnum.enumeration">
      <choice>
        <value>ignore</value>
        <a:documentation>Specifies that numbering should ignore list nesting</a:documentation>
        <value>inherit</value>
        <a:documentation>Specifies that numbering should inherit from outer-level lists</a:documentation>
      </choice>
    </define>
    <define name="db.orderedlist.inheritnum.attribute">
      <attribute name="inheritnum">
        <a:documentation>Indicates whether or not item numbering should be influenced by list nesting</a:documentation>
        <ref name="db.orderedlist.inheritnum.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.numeration.enumeration">
      <choice>
        <value>arabic</value>
        <a:documentation>Specifies Arabic numeration (1, 2, 3, …)</a:documentation>
        <value>upperalpha</value>
        <a:documentation>Specifies upper-case alphabetic numeration (A, B, C, …)</a:documentation>
        <value>loweralpha</value>
        <a:documentation>Specifies lower-case alphabetic numeration (a, b, c, …)</a:documentation>
        <value>upperroman</value>
        <a:documentation>Specifies upper-case Roman numeration (I, II, III, …)</a:documentation>
        <value>lowerroman</value>
        <a:documentation>Specifies lower-case Roman numeration (i, ii, iii …)</a:documentation>
      </choice>
    </define>
    <define name="db.orderedlist.numeration.attribute">
      <attribute name="numeration">
        <a:documentation>Indicates the desired numeration</a:documentation>
        <ref name="db.orderedlist.numeration.enumeration"/>
      </attribute>
    </define>
    <define name="db.orderedlist.attlist">
      <interleave>
        <optional>
          <ref name="db.orderedlist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.spacing.attribute"/>
        </optional>
        <optional>
          <choice>
            <ref name="db.orderedlist.continuation.attribute"/>
            <ref name="db.orderedlist.startingnumber.attribute"/>
          </choice>
        </optional>
        <optional>
          <ref name="db.orderedlist.inheritnum.attribute"/>
        </optional>
        <optional>
          <ref name="db.orderedlist.numeration.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.orderedlist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.orderedlist">
      <element name="orderedlist">
        <a:documentation>A list in which each entry is marked with a sequentially incremented label</a:documentation>
        <ref name="db.orderedlist.attlist"/>
        <ref name="db.orderedlist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.listitem"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.listitem.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.listitem.override.attribute">
      <attribute name="override">
        <a:documentation>Specifies the keyword for the type of mark that should be used on this
 item, instead of the mark that would be used by default</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.listitem.attlist">
      <interleave>
        <optional>
          <ref name="db.listitem.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.listitem.override.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.listitem.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.listitem">
      <element name="listitem">
        <a:documentation>A wrapper for the elements of a list item</a:documentation>
        <ref name="db.listitem.attlist"/>
        <ref name="db.listitem.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.variablelist.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.variablelist.termlength.attribute">
      <attribute name="termlength">
        <a:documentation>Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list</a:documentation>
      </attribute>
    </define>
    <define name="db.variablelist.attlist">
      <interleave>
        <optional>
          <ref name="db.variablelist.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.spacing.attribute"/>
        </optional>
        <optional>
          <ref name="db.variablelist.termlength.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.variablelist.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.variablelist">
      <element name="variablelist">
        <a:documentation>A list in which each entry is composed of a set of one or more terms and an associated description</a:documentation>
        <ref name="db.variablelist.attlist"/>
        <ref name="db.variablelist.info"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
        <oneOrMore>
          <ref name="db.varlistentry"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.varlistentry.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.varlistentry.attlist">
      <interleave>
        <optional>
          <ref name="db.varlistentry.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.varlistentry">
      <element name="varlistentry">
        <a:documentation>A wrapper for a set of terms and the associated description in a variable list</a:documentation>
        <ref name="db.varlistentry.attlist"/>
        <oneOrMore>
          <ref name="db.term"/>
        </oneOrMore>
        <ref name="db.listitem"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.term.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.term.attlist">
      <interleave>
        <optional>
          <ref name="db.term.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.term">
      <element name="term">
        <a:documentation>The word or phrase being defined or described in a variable list</a:documentation>
        <ref name="db.term.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.example.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.example.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.example.width.attribute">
      <ref name="db.width.characters.attribute"/>
    </define>
    <define name="db.example.pgwide.attribute">
      <ref name="db.pgwide.attribute"/>
    </define>
    <define name="db.example.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.example.type.attribute">
      <optional>
        <attribute name="type">
          <a:documentation>Identifies the type of example</a:documentation>
        </attribute>
      </optional>
    </define>
    <define name="db.example.attlist">
      <interleave>
        <optional>
          <ref name="db.example.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.example.type.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.example.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.example.floatstyle.attribute"/>
        </optional>
        <optional>
          <choice>
            <ref name="db.example.width.attribute"/>
            <ref name="db.example.pgwide.attribute"/>
          </choice>
        </optional>
      </interleave>
    </define>
    <define name="db.example.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.example">
      <element name="example">
        <a:documentation>A formal example, with a title</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:example">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:example">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:example">
            <s:assert test="not(.//db:table)">table must not occur among the children or descendants of example</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.example.attlist"/>
        <ref name="db.example.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <define name="db.verbatim.inlines">
    <choice>
      <ref name="db.all.inlines"/>
      <ref name="db.lineannotation"/>
    </choice>
  </define>
  <define name="db.verbatim.contentmodel">
    <ref name="db._info.title.forbidden"/>
    <choice>
      <ref name="db.textobject"/>
      <zeroOrMore>
        <ref name="db.verbatim.inlines"/>
      </zeroOrMore>
    </choice>
  </define>
  <div>
    <define name="db.literallayout.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.literallayout.class.enumeration">
      <choice>
        <value>monospaced</value>
        <a:documentation>The literal layout should be formatted with a monospaced font</a:documentation>
        <value>normal</value>
        <a:documentation>The literal layout should be formatted with the current font</a:documentation>
      </choice>
    </define>
    <define name="db.literallayout.class.attribute">
      <attribute name="class">
        <a:documentation>Specifies the class of literal layout</a:documentation>
        <ref name="db.literallayout.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.literallayout.attlist">
      <interleave>
        <optional>
          <ref name="db.literallayout.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.verbatim.attributes"/>
        <optional>
          <ref name="db.literallayout.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.literallayout">
      <element name="literallayout">
        <a:documentation>A block of text in which line breaks and white space are to be reproduced faithfully</a:documentation>
        <ref name="db.literallayout.attlist"/>
        <ref name="db.verbatim.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.figure.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.figure.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.figure.pgwide.attribute">
      <ref name="db.pgwide.attribute"/>
    </define>
    <define name="db.figure.floatstyle.attribute">
      <ref name="db.floatstyle.attribute"/>
    </define>
    <define name="db.figure.type.attribute">
      <optional>
        <attribute name="type">
          <a:documentation>Identifies the type of figure</a:documentation>
        </attribute>
      </optional>
    </define>
    <define name="db.figure.attlist">
      <interleave>
        <optional>
          <ref name="db.figure.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.figure.type.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.figure.label.attribute"/>
        </optional>
        <optional>
          <ref name="db.figure.pgwide.attribute"/>
        </optional>
        <optional>
          <ref name="db.figure.floatstyle.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.figure.info">
      <ref name="db._info.title.onlyreq"/>
    </define>
    <define name="db.figure">
      <element name="figure">
        <a:documentation>A formal figure, generally an illustration, with a title</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:figure">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:figure">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:figure">
            <s:assert test="not(.//db:table)">table must not occur among the children or descendants of figure</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.figure.attlist"/>
        <ref name="db.figure.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <define name="db.mediaobject.content">
    <choice>
      <ref name="db.videoobject"/>
      <ref name="db.audioobject"/>
      <ref name="db.imageobject"/>
      <ref name="db.textobject"/>
    </choice>
  </define>
  <div>
    <define name="db.mediaobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.mediaobject.attlist">
      <interleave>
        <optional>
          <ref name="db.mediaobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.mediaobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.mediaobject">
      <element name="mediaobject">
        <a:documentation>A displayed media object (video, audio, image, etc.)</a:documentation>
        <ref name="db.mediaobject.attlist"/>
        <ref name="db.mediaobject.info"/>
        <optional>
          <ref name="db.alt"/>
        </optional>
        <oneOrMore>
          <ref name="db.mediaobject.content"/>
        </oneOrMore>
        <optional>
          <ref name="db.caption"/>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.inlinemediaobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.inlinemediaobject.attlist">
      <interleave>
        <optional>
          <ref name="db.inlinemediaobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.inlinemediaobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.inlinemediaobject">
      <element name="inlinemediaobject">
        <a:documentation>An inline media object (video, audio, image, and so on)</a:documentation>
        <ref name="db.inlinemediaobject.attlist"/>
        <ref name="db.inlinemediaobject.info"/>
        <optional>
          <ref name="db.alt"/>
        </optional>
        <oneOrMore>
          <ref name="db.mediaobject.content"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.videoobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.videoobject.attlist">
      <interleave>
        <optional>
          <ref name="db.videoobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.videoobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.videoobject">
      <element name="videoobject">
        <a:documentation>A wrapper for video data and its associated meta-information</a:documentation>
        <ref name="db.videoobject.attlist"/>
        <ref name="db.videoobject.info"/>
        <oneOrMore>
          <ref name="db.videodata"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.audioobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.audioobject.attlist">
      <interleave>
        <optional>
          <ref name="db.audioobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.audioobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.audioobject">
      <element name="audioobject">
        <a:documentation>A wrapper for audio data and its associated meta-information</a:documentation>
        <ref name="db.audioobject.attlist"/>
        <ref name="db.audioobject.info"/>
        <oneOrMore>
          <ref name="db.audiodata"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <define name="db.imageobject.content">
    <oneOrMore>
      <ref name="db.imagedata"/>
    </oneOrMore>
  </define>
  <div>
    <define name="db.imageobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.imageobject.attlist">
      <interleave>
        <optional>
          <ref name="db.imageobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.imageobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.imageobject">
      <element name="imageobject">
        <a:documentation>A wrapper for image data and its associated meta-information</a:documentation>
        <ref name="db.imageobject.attlist"/>
        <ref name="db.imageobject.info"/>
        <ref name="db.imageobject.content"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.textobject.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.textobject.attlist">
      <interleave>
        <optional>
          <ref name="db.textobject.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.textobject.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.textobject">
      <element name="textobject">
        <a:documentation>A wrapper for a text description of an object and its associated meta-information</a:documentation>
        <ref name="db.textobject.attlist"/>
        <ref name="db.textobject.info"/>
        <choice>
          <ref name="db.phrase"/>
          <ref name="db.textdata"/>
          <oneOrMore>
            <ref name="db.all.blocks"/>
          </oneOrMore>
        </choice>
      </element>
    </define>
  </div>
  <div>
    <define name="db.videodata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.videodata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.videodata.align.attribute">
      <attribute name="align">
        <a:documentation>Specifies the (horizontal) alignment of the video data</a:documentation>
        <ref name="db.videodata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.autoplay.attribute">
      <ref name="db.autoplay.attribute"/>
    </define>
    <define name="db.videodata.classid.attribute">
      <ref name="db.classid.attribute"/>
    </define>
    <define name="db.videodata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.videodata.valign.attribute">
      <attribute name="valign">
        <a:documentation>Specifies the vertical alignment of the video data</a:documentation>
        <ref name="db.videodata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.width.attribute">
      <ref name="db.width.attribute"/>
    </define>
    <define name="db.videodata.depth.attribute">
      <ref name="db.depth.attribute"/>
    </define>
    <define name="db.videodata.contentwidth.attribute">
      <ref name="db.contentwidth.attribute"/>
    </define>
    <define name="db.videodata.contentdepth.attribute">
      <ref name="db.contentdepth.attribute"/>
    </define>
    <define name="db.videodata.scalefit.enumeration">
      <ref name="db.scalefit.enumeration"/>
    </define>
    <define name="db.videodata.scalefit.attribute">
      <attribute name="scalefit">
        <a:documentation>Determines if anamorphic scaling is forbidden</a:documentation>
        <ref name="db.videodata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.videodata.scale.attribute">
      <ref name="db.scale.attribute"/>
    </define>
    <define name="db.videodata.attlist">
      <interleave>
        <optional>
          <ref name="db.videodata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.videodata.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.width.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.contentwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.scalefit.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.scale.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.depth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.contentdepth.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.autoplay.attribute"/>
        </optional>
        <optional>
          <ref name="db.videodata.classid.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.videodata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.videodata">
      <element name="videodata">
        <a:documentation>Pointer to external video data</a:documentation>
        <ref name="db.videodata.attlist"/>
        <ref name="db.videodata.info"/>
        <zeroOrMore>
          <ref name="db.multimediaparam"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.audiodata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.audiodata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.audiodata.align.attribute">
      <attribute name="align">
        <a:documentation>Specifies the (horizontal) alignment of the video data</a:documentation>
        <ref name="db.audiodata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.audiodata.autoplay.attribute">
      <ref name="db.autoplay.attribute"/>
    </define>
    <define name="db.audiodata.classid.attribute">
      <ref name="db.classid.attribute"/>
    </define>
    <define name="db.audiodata.contentwidth.attribute">
      <ref name="db.contentwidth.attribute"/>
    </define>
    <define name="db.audiodata.contentdepth.attribute">
      <ref name="db.contentdepth.attribute"/>
    </define>
    <define name="db.audiodata.depth.attribute">
      <ref name="db.depth.attribute"/>
    </define>
    <define name="db.audiodata.scale.attribute">
      <ref name="db.scale.attribute"/>
    </define>
    <define name="db.audiodata.scalefit.enumeration">
      <ref name="db.scalefit.enumeration"/>
    </define>
    <define name="db.audiodata.scalefit.attribute">
      <attribute name="scalefit">
        <a:documentation>Determines if anamorphic scaling is forbidden</a:documentation>
        <ref name="db.audiodata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.audiodata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.audiodata.valign.attribute">
      <attribute name="valign">
        <a:documentation>Specifies the vertical alignment of the video data</a:documentation>
        <ref name="db.audiodata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.audiodata.width.attribute">
      <ref name="db.width.attribute"/>
    </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"/>
        <optional>
          <ref name="db.audiodata.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.autoplay.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.classid.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.contentdepth.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.contentwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.depth.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.scale.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.scalefit.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.audiodata.width.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.audiodata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.audiodata">
      <element name="audiodata">
        <a:documentation>Pointer to external audio data</a:documentation>
        <ref name="db.audiodata.attlist"/>
        <ref name="db.audiodata.info"/>
        <zeroOrMore>
          <ref name="db.multimediaparam"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.imagedata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.imagedata.align.enumeration">
      <ref name="db.halign.enumeration"/>
    </define>
    <define name="db.imagedata.align.attribute">
      <attribute name="align">
        <a:documentation>Specifies the (horizontal) alignment of the image data</a:documentation>
        <ref name="db.imagedata.align.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.valign.enumeration">
      <ref name="db.valign.enumeration"/>
    </define>
    <define name="db.imagedata.valign.attribute">
      <attribute name="valign">
        <a:documentation>Specifies the vertical alignment of the image data</a:documentation>
        <ref name="db.imagedata.valign.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.width.attribute">
      <ref name="db.width.attribute"/>
    </define>
    <define name="db.imagedata.depth.attribute">
      <ref name="db.depth.attribute"/>
    </define>
    <define name="db.imagedata.contentwidth.attribute">
      <ref name="db.contentwidth.attribute"/>
    </define>
    <define name="db.imagedata.contentdepth.attribute">
      <ref name="db.contentdepth.attribute"/>
    </define>
    <define name="db.imagedata.scalefit.enumeration">
      <ref name="db.scalefit.enumeration"/>
    </define>
    <define name="db.imagedata.scalefit.attribute">
      <attribute name="scalefit">
        <a:documentation>Determines if anamorphic scaling is forbidden</a:documentation>
        <ref name="db.imagedata.scalefit.enumeration"/>
      </attribute>
    </define>
    <define name="db.imagedata.scale.attribute">
      <ref name="db.scale.attribute"/>
    </define>
    <define name="db.imagedata.attlist">
      <interleave>
        <optional>
          <ref name="db.imagedata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.imagedata.align.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.valign.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.width.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.contentwidth.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.scalefit.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.scale.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.depth.attribute"/>
        </optional>
        <optional>
          <ref name="db.imagedata.contentdepth.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.imagedata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.imagedata">
      <element name="imagedata">
        <a:documentation>Pointer to external image data</a:documentation>
        <ref name="db.imagedata.attlist"/>
        <ref name="db.imagedata.info"/>
        <zeroOrMore>
          <ref name="db.multimediaparam"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.textdata.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.textdata.encoding.attribute">
      <attribute name="encoding">
        <a:documentation>Identifies the encoding of the text in the external file</a:documentation>
      </attribute>
    </define>
    <define name="db.textdata.attlist">
      <interleave>
        <optional>
          <ref name="db.textdata.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.data.attributes"/>
        <optional>
          <ref name="db.textdata.encoding.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.textdata.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.textdata">
      <element name="textdata">
        <a:documentation>Pointer to external text data</a:documentation>
        <ref name="db.textdata.attlist"/>
        <ref name="db.textdata.info"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.multimediaparam.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.multimediaparam.name.attribute">
      <attribute name="name">
        <a:documentation>Specifies the name of the parameter</a:documentation>
      </attribute>
    </define>
    <define name="db.multimediaparam.value.attribute">
      <attribute name="value">
        <a:documentation>Specifies the value of the parameter</a:documentation>
      </attribute>
    </define>
    <define name="db.multimediaparam.valuetype.attribute">
      <attribute name="valuetype">
        <a:documentation>Specifies the type of the value of the parameter</a:documentation>
      </attribute>
    </define>
    <define name="db.multimediaparam.attlist">
      <interleave>
        <optional>
          <ref name="db.multimediaparam.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.multimediaparam.name.attribute"/>
        <ref name="db.multimediaparam.value.attribute"/>
        <optional>
          <ref name="db.multimediaparam.valuetype.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.multimediaparam">
      <element name="multimediaparam">
        <a:documentation>Application specific parameters for a media player</a:documentation>
        <ref name="db.multimediaparam.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.caption.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.caption.attlist">
      <interleave>
        <optional>
          <ref name="db.caption.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.caption.info">
      <ref name="db._info.title.forbidden"/>
    </define>
    <define name="db.caption">
      <element name="caption">
        <a:documentation>A caption</a:documentation>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:note)">note must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:example)">example must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:figure)">figure must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:table)">table must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <s:pattern>
          <s:title>Element exclusion</s:title>
          <s:rule context="db:caption">
            <s:assert test="not(.//db:sidebar)">sidebar must not occur among the children or descendants of caption</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.caption.attlist"/>
        <ref name="db.caption.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.affiliation.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.affiliation.attlist">
      <interleave>
        <optional>
          <ref name="db.affiliation.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
  </div>
  <div>
    <define name="db.orgname.class.enumeration">
      <choice>
        <value>consortium</value>
        <a:documentation>A consortium</a:documentation>
        <value>corporation</value>
        <a:documentation>A corporation</a:documentation>
        <value>informal</value>
        <a:documentation>An informal organization</a:documentation>
        <value>nonprofit</value>
        <a:documentation>A non-profit organization</a:documentation>
      </choice>
    </define>
    <define name="db.orgname.class-enum.attribute">
      <attribute name="class">
        <a:documentation>Specifies the nature of the organization</a:documentation>
        <ref name="db.orgname.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.orgname.class-other.attributes">
      <attribute name="class">
        <a:documentation>Specifies the nature of the organization</a:documentation>
        <value>other</value>
        <a:documentation>Indicates a non-standard organization class</a:documentation>
      </attribute>
      <attribute name="otherclass">
        <a:documentation>Identifies the non-standard nature of the organization</a:documentation>
      </attribute>
    </define>
    <define name="db.orgname.class.attribute">
      <choice>
        <ref name="db.orgname.class-enum.attribute"/>
        <ref name="db.orgname.class-other.attributes"/>
      </choice>
    </define>
    <define name="db.orgname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.orgname.attlist">
      <interleave>
        <optional>
          <ref name="db.orgname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.orgname.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.orgname">
      <element name="orgname">
        <a:documentation>The name of an organization</a:documentation>
        <ref name="db.orgname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.personname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.personname.attlist">
      <interleave>
        <optional>
          <ref name="db.personname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.personname">
      <element name="personname">
        <a:documentation>The personal name of an individual</a:documentation>
        <ref name="db.personname.attlist"/>
        <choice>
          <ref name="db._text"/>
          <oneOrMore>
            <choice>
              <ref name="db.honorific"/>
              <ref name="db.firstname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
            </choice>
          </oneOrMore>
          <oneOrMore>
            <choice>
              <ref name="db.honorific"/>
              <ref name="db.givenname"/>
              <ref name="db.surname"/>
              <ref name="db.lineage"/>
              <ref name="db.othername"/>
            </choice>
          </oneOrMore>
        </choice>
      </element>
    </define>
  </div>
  <define name="db.credit.contentmodel">
    <choice>
      <ref name="db.person.author.contentmodel"/>
      <ref name="db.org.author.contentmodel"/>
    </choice>
  </define>
  <div>
    <define name="db.author.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.author.attlist">
      <interleave>
        <optional>
          <ref name="db.author.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.author">
      <element name="author">
        <a:documentation>The name of an individual author</a:documentation>
        <ref name="db.author.attlist"/>
        <ref name="db.credit.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.authorgroup.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.authorgroup.attlist">
      <interleave>
        <optional>
          <ref name="db.authorgroup.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.authorgroup">
      <element name="authorgroup">
        <a:documentation>Wrapper for author information when a document has multiple authors or collaborators</a:documentation>
        <ref name="db.authorgroup.attlist"/>
        <oneOrMore>
          <choice>
            <ref name="db.author"/>
            <ref name="db.editor"/>
            <ref name="db.othercredit"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.authorinitials.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.authorinitials.attlist">
      <interleave>
        <optional>
          <ref name="db.authorinitials.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.authorinitials">
      <element name="authorinitials">
        <a:documentation>The initials or other short identifier for an author</a:documentation>
        <ref name="db.authorinitials.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.copyright.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.copyright.attlist">
      <interleave>
        <optional>
          <ref name="db.copyright.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.copyright">
      <element name="copyright">
        <a:documentation>Copyright information about a document</a:documentation>
        <ref name="db.copyright.attlist"/>
        <oneOrMore>
          <ref name="db.year"/>
        </oneOrMore>
        <zeroOrMore>
          <ref name="db.holder"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.year.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.year.attlist">
      <interleave>
        <optional>
          <ref name="db.year.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.year">
      <element name="year">
        <a:documentation>The year of publication of a document</a:documentation>
        <ref name="db.year.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.holder.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.holder.attlist">
      <interleave>
        <optional>
          <ref name="db.holder.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.holder">
      <element name="holder">
        <a:documentation>The name of the individual or organization that holds a copyright</a:documentation>
        <ref name="db.holder.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <define name="db.date.contentmodel">
    <choice>
      <data type="date"/>
      <data type="dateTime"/>
      <data type="gYearMonth"/>
      <data type="gYear"/>
      <text/>
    </choice>
  </define>
  <div>
    <define name="db.date.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.date.attlist">
      <interleave>
        <optional>
          <ref name="db.date.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.date">
      <element name="date">
        <a:documentation>The date of publication or revision of a document</a:documentation>
        <ref name="db.date.attlist"/>
        <ref name="db.date.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.edition.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.edition.attlist">
      <interleave>
        <optional>
          <ref name="db.edition.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.edition">
      <element name="edition">
        <a:documentation>The name or number of an edition of a document</a:documentation>
        <ref name="db.edition.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.editor.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.editor.attlist">
      <interleave>
        <optional>
          <ref name="db.editor.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.editor">
      <element name="editor">
        <a:documentation>The name of the editor of a document</a:documentation>
        <ref name="db.editor.attlist"/>
        <ref name="db.credit.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.legalnotice.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.legalnotice.attlist">
      <interleave>
        <optional>
          <ref name="db.legalnotice.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.legalnotice.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.legalnotice">
      <element name="legalnotice">
        <a:documentation>A statement of legal obligations or requirements</a:documentation>
        <ref name="db.legalnotice.attlist"/>
        <ref name="db.legalnotice.info"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.othercredit.class.enumeration">
      <choice>
        <value>copyeditor</value>
        <a:documentation>A copy editor</a:documentation>
        <value>graphicdesigner</value>
        <a:documentation>A graphic designer</a:documentation>
        <value>productioneditor</value>
        <a:documentation>A production editor</a:documentation>
        <value>technicaleditor</value>
        <a:documentation>A technical editor</a:documentation>
        <value>translator</value>
        <a:documentation>A translator</a:documentation>
        <value>indexer</value>
        <a:documentation>An indexer</a:documentation>
        <value>proofreader</value>
        <a:documentation>A proof-reader</a:documentation>
        <value>coverdesigner</value>
        <a:documentation>A cover designer</a:documentation>
        <value>interiordesigner</value>
        <a:documentation>An interior designer</a:documentation>
        <value>illustrator</value>
        <a:documentation>An illustrator</a:documentation>
        <value>reviewer</value>
        <a:documentation>A reviewer</a:documentation>
        <value>typesetter</value>
        <a:documentation>A typesetter</a:documentation>
        <value>conversion</value>
        <a:documentation>A converter (a persons responsible for conversion, not an application)</a:documentation>
      </choice>
    </define>
    <define name="db.othercredit.class-enum.attribute">
      <optional>
        <attribute name="class">
          <a:documentation>Identifies the nature of the contributor</a:documentation>
          <ref name="db.othercredit.class.enumeration"/>
        </attribute>
      </optional>
    </define>
    <define name="db.othercredit.class-other.attribute">
      <attribute name="otherclass">
        <a:documentation>Identifies the nature of the non-standard contribution</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.othercredit.class-other.attributes">
      <interleave>
        <attribute name="class">
          <a:documentation>Identifies the nature of the contributor</a:documentation>
          <value>other</value>
          <a:documentation>Identifies a non-standard contribution</a:documentation>
        </attribute>
        <ref name="db.othercredit.class-other.attribute"/>
      </interleave>
    </define>
    <define name="db.othercredit.class.attribute">
      <choice>
        <ref name="db.othercredit.class-enum.attribute"/>
        <ref name="db.othercredit.class-other.attributes"/>
      </choice>
    </define>
    <define name="db.othercredit.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.othercredit.attlist">
      <interleave>
        <optional>
          <ref name="db.othercredit.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <ref name="db.othercredit.class.attribute"/>
      </interleave>
    </define>
    <define name="db.othercredit">
      <element name="othercredit">
        <a:documentation>A person or entity, other than an author or editor, credited in a document</a:documentation>
        <ref name="db.othercredit.attlist"/>
        <ref name="db.credit.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.honorific.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.honorific.attlist">
      <interleave>
        <optional>
          <ref name="db.honorific.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.honorific">
      <element name="honorific">
        <a:documentation>The title of a person</a:documentation>
        <ref name="db.honorific.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.firstname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.firstname.attlist">
      <interleave>
        <optional>
          <ref name="db.firstname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.firstname">
      <element name="firstname">
        <a:documentation>A given name of a person</a:documentation>
        <ref name="db.firstname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.givenname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.givenname.attlist">
      <interleave>
        <optional>
          <ref name="db.givenname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.givenname">
      <element name="givenname">
        <a:documentation>The given name of a person</a:documentation>
        <ref name="db.givenname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.surname.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.surname.attlist">
      <interleave>
        <optional>
          <ref name="db.surname.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.surname">
      <element name="surname">
        <a:documentation>An inherited or family name; in western cultures the last name</a:documentation>
        <ref name="db.surname.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.lineage.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.lineage.attlist">
      <interleave>
        <optional>
          <ref name="db.lineage.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.lineage">
      <element name="lineage">
        <a:documentation>The portion of a person's name indicating a relationship to ancestors</a:documentation>
        <ref name="db.lineage.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.othername.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.othername.attlist">
      <interleave>
        <optional>
          <ref name="db.othername.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.othername">
      <element name="othername">
        <a:documentation>A component of a person's name that is not a first name, surname, or lineage</a:documentation>
        <ref name="db.othername.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.pubdate.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.pubdate.attlist">
      <interleave>
        <optional>
          <ref name="db.pubdate.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.pubdate">
      <element name="pubdate">
        <a:documentation>The date of publication of a document</a:documentation>
        <ref name="db.pubdate.attlist"/>
        <ref name="db.date.contentmodel"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.publishername.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.publishername.attlist">
      <interleave>
        <optional>
          <ref name="db.publishername.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.publishername">
      <element name="publishername">
        <a:documentation>The name of the publisher of a document</a:documentation>
        <ref name="db.publishername.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.releaseinfo.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.releaseinfo.attlist">
      <interleave>
        <optional>
          <ref name="db.releaseinfo.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.releaseinfo">
      <element name="releaseinfo">
        <a:documentation>Information about a particular release of a document</a:documentation>
        <ref name="db.releaseinfo.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.revhistory.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revhistory.attlist">
      <interleave>
        <optional>
          <ref name="db.revhistory.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revhistory.info">
      <ref name="db._info.title.only"/>
    </define>
    <define name="db.revhistory">
      <element name="revhistory">
        <a:documentation>A history of the revisions to a document</a:documentation>
        <ref name="db.revhistory.attlist"/>
        <ref name="db.revhistory.info"/>
        <oneOrMore>
          <ref name="db.revision"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.revision.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revision.attlist">
      <interleave>
        <optional>
          <ref name="db.revision.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revision">
      <element name="revision">
        <a:documentation>An entry describing a single revision in the history of the revisions to a document</a:documentation>
        <ref name="db.revision.attlist"/>
        <optional>
          <ref name="db.revnumber"/>
        </optional>
        <ref name="db.date"/>
        <zeroOrMore>
          <choice>
            <ref name="db.authorinitials"/>
            <ref name="db.author"/>
          </choice>
        </zeroOrMore>
        <optional>
          <choice>
            <ref name="db.revremark"/>
            <ref name="db.revdescription"/>
          </choice>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.revnumber.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revnumber.attlist">
      <interleave>
        <optional>
          <ref name="db.revnumber.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revnumber">
      <element name="revnumber">
        <a:documentation>A document revision number</a:documentation>
        <ref name="db.revnumber.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.revremark.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revremark.attlist">
      <interleave>
        <optional>
          <ref name="db.revremark.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revremark">
      <element name="revremark">
        <a:documentation>A description of a revision to a document</a:documentation>
        <ref name="db.revremark.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.revdescription.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.revdescription.attlist">
      <interleave>
        <optional>
          <ref name="db.revdescription.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.revdescription">
      <element name="revdescription">
        <a:documentation>A extended description of a revision to a document</a:documentation>
        <ref name="db.revdescription.attlist"/>
        <zeroOrMore>
          <ref name="db.all.blocks"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.volumenum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.volumenum.attlist">
      <interleave>
        <optional>
          <ref name="db.volumenum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.volumenum">
      <element name="volumenum">
        <a:documentation>The volume number of a document in a set (as of books in a set or articles in a journal)</a:documentation>
        <ref name="db.volumenum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.issuenum.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.issuenum.attlist">
      <interleave>
        <optional>
          <ref name="db.issuenum.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.issuenum">
      <element name="issuenum">
        <a:documentation>The number of an issue of a journal</a:documentation>
        <ref name="db.issuenum.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.email.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.email.attlist">
      <interleave>
        <optional>
          <ref name="db.email.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.email">
      <element name="email">
        <a:documentation>An email address</a:documentation>
        <ref name="db.email.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.lineannotation.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.lineannotation.attlist">
      <interleave>
        <optional>
          <ref name="db.lineannotation.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.lineannotation">
      <element name="lineannotation">
        <a:documentation>A comment on a line in a verbatim listing</a:documentation>
        <ref name="db.lineannotation.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <define name="db.replaceable.inlines">
    <ref name="db._text"/>
  </define>
  <div>
    <define name="db.replaceable.class.enumeration">
      <choice>
        <value>command</value>
        <a:documentation>A command</a:documentation>
        <value>function</value>
        <a:documentation>A function</a:documentation>
        <value>option</value>
        <a:documentation>An option</a:documentation>
        <value>parameter</value>
        <a:documentation>A parameter</a:documentation>
      </choice>
    </define>
    <define name="db.replaceable.class.attribute">
      <attribute name="class">
        <a:documentation>Identifies the nature of the replaceable text</a:documentation>
        <ref name="db.replaceable.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.replaceable.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.replaceable.attlist">
      <interleave>
        <optional>
          <ref name="db.replaceable.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.replaceable.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.replaceable">
      <element name="replaceable">
        <a:documentation>Content that may or must be replaced by the user</a:documentation>
        <ref name="db.replaceable.attlist"/>
        <zeroOrMore>
          <ref name="db.replaceable.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.abbrev.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.abbrev.attlist">
      <interleave>
        <optional>
          <ref name="db.abbrev.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
  </div>
  <div>
    <define name="db.acronym.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.acronym.attlist">
      <interleave>
        <optional>
          <ref name="db.acronym.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
  </div>
  <div>
    <define name="db.citetitle.pubwork.enumeration">
      <ref name="db.pubwork.enumeration"/>
    </define>
    <define name="db.citetitle.pubwork-enum.attribute">
      <attribute name="pubwork">
        <a:documentation>Identifies the nature of the publication being cited</a:documentation>
        <ref name="db.citetitle.pubwork.enumeration"/>
      </attribute>
    </define>
    <define name="db.citetitle.pubwork-other.attribute">
      <attribute name="otherpubwork">
        <a:documentation>Identifies the nature of some other kind of publication being cited</a:documentation>
        <data type="NMTOKEN"/>
      </attribute>
    </define>
    <define name="db.citetitle.pubwork-other.attributes">
      <interleave>
        <attribute name="pubwork">
          <a:documentation>Identifies that this is some other kind of publication being cited</a:documentation>
          <value>other</value>
          <a:documentation>Indicates that the published work is some 'other' kind.</a:documentation>
        </attribute>
        <ref name="db.citetitle.pubwork-other.attribute"/>
      </interleave>
    </define>
    <define name="db.citetitle.pubwork.attribute">
      <choice>
        <ref name="db.citetitle.pubwork-enum.attribute"/>
        <ref name="db.citetitle.pubwork-other.attributes"/>
      </choice>
    </define>
    <define name="db.citetitle.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.citetitle.attlist">
      <interleave>
        <optional>
          <ref name="db.citetitle.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.citetitle.pubwork.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.citetitle">
      <element name="citetitle">
        <a:documentation>The title of a cited work</a:documentation>
        <ref name="db.citetitle.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.emphasis.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.emphasis.attlist">
      <interleave>
        <optional>
          <ref name="db.emphasis.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.emphasis">
      <element name="emphasis">
        <a:documentation>Emphasized text</a:documentation>
        <ref name="db.emphasis.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.phrase.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.phrase.attlist">
      <interleave>
        <optional>
          <ref name="db.phrase.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.phrase">
      <element name="phrase">
        <a:documentation>A span of text</a:documentation>
        <ref name="db.phrase.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db._phrase">
      <element name="phrase">
        <a:documentation>A limited span of text</a:documentation>
        <ref name="db.phrase.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.quote.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.quote.attlist">
      <interleave>
        <optional>
          <ref name="db.quote.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.quote">
      <element name="quote">
        <a:documentation>An inline quotation</a:documentation>
        <ref name="db.quote.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.subscript.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.subscript.attlist">
      <interleave>
        <optional>
          <ref name="db.subscript.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.subscript">
      <element name="subscript">
        <a:documentation>A subscript (as in H₂O, the molecular formula for water)</a:documentation>
        <ref name="db.subscript.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.superscript.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.superscript.attlist">
      <interleave>
        <optional>
          <ref name="db.superscript.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
      </interleave>
    </define>
    <define name="db.superscript">
      <element name="superscript">
        <a:documentation>A superscript (as in x², the mathematical notation for x multiplied by itself)</a:documentation>
        <ref name="db.superscript.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.trademark.class.enumeration">
      <choice>
        <value>copyright</value>
        <a:documentation>A copyright</a:documentation>
        <value>registered</value>
        <a:documentation>A registered copyright</a:documentation>
        <value>service</value>
        <a:documentation>A service</a:documentation>
        <value>trade</value>
        <a:documentation>A trademark</a:documentation>
      </choice>
    </define>
    <define name="db.trademark.class.attribute">
      <attribute name="class">
        <a:documentation>Identifies the class of trade mark</a:documentation>
        <ref name="db.trademark.class.enumeration"/>
      </attribute>
    </define>
    <define name="db.trademark.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.trademark.attlist">
      <interleave>
        <optional>
          <ref name="db.trademark.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.linking.attributes"/>
        <optional>
          <ref name="db.trademark.class.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.trademark">
      <element name="trademark">
        <a:documentation>A trademark</a:documentation>
        <ref name="db.trademark.attlist"/>
        <ref name="db._text"/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.footnoteref.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.footnoteref.label.attribute">
      <ref name="db.label.attribute"/>
    </define>
    <define name="db.footnoteref.attlist">
      <interleave>
        <optional>
          <ref name="db.footnoteref.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.linkend.attribute"/>
        <optional>
          <ref name="db.footnoteref.label.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.footnoteref">
      <element name="footnoteref">
        <a:documentation>A cross reference to a footnote (a footnote mark)</a:documentation>
        <s:pattern>
          <s:title>Footnote reference type constraint</s:title>
          <s:rule context="db:footnoteref">
            <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on footnoteref must point to a footnote.</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="db.footnoteref.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.xref.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.xref.xrefstyle.attribute">
      <ref name="db.xrefstyle.attribute"/>
    </define>
    <define name="db.xref.endterm.attribute">
      <ref name="db.endterm.attribute"/>
    </define>
    <define name="db.xref.attlist">
      <interleave>
        <optional>
          <ref name="db.xref.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.req.linking.attributes"/>
        <optional>
          <ref name="db.xref.xrefstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.xref.endterm.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.xref">
      <element name="xref">
        <a:documentation>A cross reference to another part of the document</a:documentation>
        <ref name="db.xref.attlist"/>
        <empty/>
      </element>
    </define>
  </div>
  <div>
    <define name="db.link.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.link.xrefstyle.attribute">
      <ref name="db.xrefstyle.attribute"/>
    </define>
    <define name="db.link.endterm.attribute">
      <ref name="db.endterm.attribute"/>
    </define>
    <define name="db.link.attlist">
      <interleave>
        <optional>
          <ref name="db.link.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
        <ref name="db.common.req.linking.attributes"/>
        <optional>
          <ref name="db.link.xrefstyle.attribute"/>
        </optional>
        <optional>
          <ref name="db.link.endterm.attribute"/>
        </optional>
      </interleave>
    </define>
    <define name="db.link">
      <element name="link">
        <a:documentation>A hypertext link</a:documentation>
        <ref name="db.link.attlist"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.alt.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="db.alt.attlist">
      <interleave>
        <optional>
          <ref name="db.alt.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="db.alt">
      <element name="alt">
        <a:documentation>A text-only annotation, often used for accessibility</a:documentation>
        <ref name="db.alt.attlist"/>
        <zeroOrMore>
          <choice>
            <text/>
            <ref name="db.inlinemediaobject"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <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="revisionflag">
        <choice>
          <value>changed</value>
          <value>added</value>
          <value>deleted</value>
          <value>off</value>
        </choice>
      </attribute>
    </optional>
  </define>
  <define name="db.info.elements">
    <choice>
      <choice>
        <ref name="db.abstract"/>
        <ref name="db.author"/>
        <ref name="db.authorgroup"/>
        <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.othercredit"/>
        <ref name="db.pubdate"/>
        <ref name="db.publishername"/>
        <ref name="db.releaseinfo"/>
        <ref name="db.revhistory"/>
        <ref name="db.subjectset"/>
        <ref name="db.volumenum"/>
      </choice>
      <choice>
        <ref name="db.bibliomisc"/>
        <ref name="db.bibliomset"/>
      </choice>
      <ref name="sl._any.html"/>
    </choice>
  </define>
  <define name="db.bibliographic.elements">
    <choice>
      <ref name="db.info.elements"/>
      <ref name="db.abbrev"/>
      <ref name="db.affiliation"/>
      <ref name="db.citetitle"/>
      <ref name="db.orgname"/>
      <ref name="db.personblurb"/>
      <ref name="db.personname"/>
      <ref name="db.subtitle"/>
      <ref name="db.title"/>
      <ref name="db.titleabbrev"/>
    </choice>
  </define>
  <define name="db.list.blocks">
    <choice>
      <ref name="db.itemizedlist"/>
      <ref name="db.orderedlist"/>
      <ref name="db.variablelist"/>
    </choice>
  </define>
  <define name="db.verbatim.blocks">
    <choice>
      <ref name="db.literallayout"/>
      <ref name="db.programlisting"/>
    </choice>
  </define>
  <define name="db.para.blocks">
    <ref name="db.para"/>
  </define>
  <define name="db.publishing.blocks">
    <choice>
      <ref name="db.blockquote"/>
      <ref name="db.sidebar"/>
      <ref name="db.epigraph"/>
    </choice>
  </define>
  <define name="db.graphic.blocks">
    <ref name="db.mediaobject"/>
  </define>
  <define name="db.informal.blocks">
    <ref name="db.informaltable"/>
  </define>
  <define name="db.formal.blocks">
    <choice>
      <ref name="db.example"/>
      <ref name="db.figure"/>
      <ref name="db.table"/>
    </choice>
  </define>
  <define name="db.technical.blocks">
    <empty/>
  </define>
  <define name="db.synopsis.blocks">
    <empty/>
  </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.revhistory"/>
      </choice>
      <ref name="db.synopsis.blocks"/>
      <ref name="db.admonition.blocks"/>
    </choice>
  </define>
  <define name="db.ubiq.inlines">
    <choice>
      <ref name="db.inlinemediaobject"/>
      <ref name="db.superscript"/>
      <ref name="db.subscript"/>
    </choice>
  </define>
  <define name="db.publishing.inlines">
    <choice>
      <ref name="db.abbrev"/>
      <ref name="db.acronym"/>
      <ref name="db.emphasis"/>
      <ref name="db.footnote"/>
      <ref name="db.footnoteref"/>
      <ref name="db.phrase"/>
      <ref name="db.quote"/>
    </choice>
  </define>
  <define name="db.product.inlines">
    <ref name="db.trademark"/>
  </define>
  <define name="db.bibliography.inlines">
    <choice>
      <ref name="db.citetitle"/>
      <ref name="db.author"/>
      <ref name="db.personname"/>
      <ref name="db.orgname"/>
      <ref name="db.editor"/>
    </choice>
  </define>
  <define name="db.technical.inlines">
    <choice>
      <ref name="db.replaceable"/>
      <choice>
        <ref name="db.systemitem"/>
        <ref name="db.option"/>
      </choice>
    </choice>
  </define>
  <define name="db.link.inlines">
    <choice>
      <ref name="db.xref"/>
      <ref name="db.link"/>
    </choice>
  </define>
  <define name="db.person.author.contentmodel">
    <ref name="db.personname"/>
    <zeroOrMore>
      <choice>
        <ref name="db.personblurb"/>
        <ref name="db.affiliation"/>
        <ref name="db.email"/>
      </choice>
    </zeroOrMore>
  </define>
  <define name="db.org.author.contentmodel">
    <ref name="db.orgname"/>
    <zeroOrMore>
      <choice>
        <ref name="db.affiliation"/>
        <ref name="db.email"/>
      </choice>
    </zeroOrMore>
  </define>
  <div>
    <define name="db.abbrev">
      <element name="abbrev">
        <a:documentation>An abbreviation, especially one followed by a period</a:documentation>
        <ref name="db.abbrev.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.trademark"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.acronym">
      <element name="acronym">
        <a:documentation>An often pronounceable word made from the initial (or selected) letters of a name or phrase</a:documentation>
        <ref name="db.acronym.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.trademark"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.attribution">
      <element name="attribution">
        <a:documentation>The source of a block quote or epigraph</a:documentation>
        <ref name="db.attribution.attlist"/>
        <zeroOrMore>
          <choice>
            <ref name="db._text"/>
            <ref name="db.personname"/>
            <ref name="db.citetitle"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="db.affiliation">
      <element name="affiliation">
        <a:documentation>The institutional affiliation of an individual</a:documentation>
        <ref name="db.affiliation.attlist"/>
        <optional>
          <ref name="db.orgname"/>
        </optional>
      </element>
    </define>
  </div>
  <div>
    <define name="db.para">
      <element name="para">
        <a:documentation>A paragraph</a:documentation>
        <ref name="db.para.attlist"/>
        <ref name="db.para.info"/>
        <zeroOrMore>
          <ref name="db.all.inlines"/>
        </zeroOrMore>
      </element>
    </define>
  </div>
  <start>
    <ref name="sl.slides"/>
  </start>
  <div>
    <define name="sl.slides.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="sl.slides.attlist">
      <interleave>
        <optional>
          <ref name="sl.slides.role.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="sl.slides.info">
      <ref name="db._info.title.req"/>
    </define>
    <define name="sl.slides">
      <element name="slides">
        <a:documentation>A set of slides (or foils)</a:documentation>
        <s:pattern>
          <s:title>Root must have version</s:title>
          <s:rule context="/db:slides">
            <s:assert test="@version">If this element is the root element, it must have a version attribute.</s:assert>
          </s:rule>
        </s:pattern>
        <ref name="sl.slides.attlist"/>
        <ref name="sl.slides.info"/>
        <zeroOrMore>
          <choice>
            <ref name="db.all.blocks"/>
            <ref name="sl.speakernotes"/>
          </choice>
        </zeroOrMore>
        <oneOrMore>
          <choice>
            <ref name="sl.foil"/>
            <ref name="sl.foilgroup"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="sl.foilgroup.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="sl.foilgroup.attlist">
      <interleave>
        <optional>
          <ref name="sl.foilgroup.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.status.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="sl.foilgroup.info">
      <ref name="db._info.title.req"/>
    </define>
    <define name="sl.foilgroup">
      <element name="foilgroup">
        <a:documentation>A group of slides (or foils)</a:documentation>
        <ref name="sl.foilgroup.attlist"/>
        <ref name="sl.foilgroup.info"/>
        <zeroOrMore>
          <choice>
            <ref name="db.all.blocks"/>
            <ref name="db.navigation.components"/>
            <ref name="sl.speakernotes"/>
          </choice>
        </zeroOrMore>
        <oneOrMore>
          <ref name="sl.foil"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="sl.foil.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="sl.foil.attlist">
      <interleave>
        <optional>
          <ref name="sl.foil.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.status.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="sl.foil.info">
      <ref name="db._info.title.req"/>
    </define>
    <define name="sl.foil">
      <element name="foil">
        <a:documentation>A slide (or foil)</a:documentation>
        <ref name="sl.foil.attlist"/>
        <ref name="sl.foil.info"/>
        <oneOrMore>
          <choice>
            <ref name="db.all.blocks"/>
            <ref name="db.navigation.components"/>
            <ref name="sl.speakernotes"/>
          </choice>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="sl.speakernotes.role.attribute">
      <attribute name="role"/>
    </define>
    <define name="sl.speakernotes.attlist">
      <interleave>
        <optional>
          <ref name="sl.speakernotes.role.attribute"/>
        </optional>
        <optional>
          <ref name="db.status.attribute"/>
        </optional>
        <ref name="db.common.attributes"/>
      </interleave>
    </define>
    <define name="sl.speakernotes">
      <element name="speakernotes">
        <a:documentation>Speaker notes</a:documentation>
        <ref name="sl.speakernotes.attlist"/>
        <oneOrMore>
          <ref name="db.all.blocks"/>
        </oneOrMore>
      </element>
    </define>
  </div>
  <div>
    <define name="sl._any.attribute">
      <attribute>
        <a:documentation>Any attribute, including any attribute in any namespace.</a:documentation>
        <anyName/>
      </attribute>
    </define>
    <define name="sl._any.html">
      <element>
        <a:documentation>Any element from the HTML namespace</a:documentation>
        <nsName ns="http://www.w3.org/1999/xhtml"/>
        <zeroOrMore>
          <choice>
            <ref name="sl._any.attribute"/>
            <text/>
            <ref name="sl._any.html"/>
          </choice>
        </zeroOrMore>
      </element>
    </define>
  </div>
</grammar>
