<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
  <xs:include schemaLocation="calstbl.xsd"/>
  <xs:simpleType name="yesorno.attvals">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <xs:group name="ndxterm.class">
    <xs:sequence>
      <xs:element ref="indexterm"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="list.class">
    <xs:choice>
      <xs:element ref="calloutlist"/>
      <xs:element ref="glosslist"/>
      <xs:element ref="itemizedlist"/>
      <xs:element ref="orderedlist"/>
      <xs:element ref="segmentedlist"/>
      <xs:element ref="simplelist"/>
      <xs:element ref="variablelist"/>
    </xs:choice>
  </xs:group>
  <xs:group name="admon.class">
    <xs:choice>
      <xs:element ref="caution"/>
      <xs:element ref="important"/>
      <xs:element ref="note"/>
      <xs:element ref="tip"/>
      <xs:element ref="warning"/>
    </xs:choice>
  </xs:group>
  <xs:group name="linespecific.class">
    <xs:choice>
      <xs:element ref="literallayout"/>
      <xs:element ref="programlisting"/>
      <xs:element ref="programlistingco"/>
      <xs:element ref="screen"/>
      <xs:element ref="screenco"/>
      <xs:element ref="screenshot"/>
    </xs:choice>
  </xs:group>
  <xs:group name="method.synop.class">
    <xs:choice>
      <xs:element ref="constructorsynopsis"/>
      <xs:element ref="destructorsynopsis"/>
      <xs:element ref="methodsynopsis"/>
    </xs:choice>
  </xs:group>
  <xs:group name="synop.class">
    <xs:choice>
      <xs:element ref="synopsis"/>
      <xs:element ref="cmdsynopsis"/>
      <xs:element ref="funcsynopsis"/>
      <xs:element ref="classsynopsis"/>
      <xs:element ref="fieldsynopsis"/>
      <xs:group ref="method.synop.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="para.class">
    <xs:choice>
      <xs:element ref="formalpara"/>
      <xs:element ref="para"/>
      <xs:element ref="simpara"/>
    </xs:choice>
  </xs:group>
  <xs:group name="informal.class">
    <xs:choice>
      <xs:element ref="address"/>
      <xs:element ref="blockquote"/>
      <xs:element ref="graphic"/>
      <xs:element ref="graphicco"/>
      <xs:element ref="mediaobject"/>
      <xs:element ref="mediaobjectco"/>
      <xs:element ref="informalequation"/>
      <xs:element ref="informalexample"/>
      <xs:element ref="informalfigure"/>
      <xs:element ref="informaltable"/>
    </xs:choice>
  </xs:group>
  <xs:group name="formal.class">
    <xs:choice>
      <xs:element ref="equation"/>
      <xs:element ref="example"/>
      <xs:element ref="figure"/>
      <xs:element ref="table"/>
    </xs:choice>
  </xs:group>
  <xs:group name="compound.class">
    <xs:choice>
      <xs:element ref="msgset"/>
      <xs:element ref="procedure"/>
      <xs:element ref="sidebar"/>
      <xs:element ref="qandaset"/>
    </xs:choice>
  </xs:group>
  <xs:group name="genobj.class">
    <xs:choice>
      <xs:element ref="anchor"/>
      <xs:element ref="bridgehead"/>
      <xs:element ref="remark"/>
      <xs:element ref="highlights"/>
    </xs:choice>
  </xs:group>
  <xs:group name="descobj.class">
    <xs:choice>
      <xs:element ref="abstract"/>
      <xs:element ref="authorblurb"/>
      <xs:element ref="epigraph"/>
    </xs:choice>
  </xs:group>
  <xs:group name="xref.char.class">
    <xs:choice>
      <xs:element ref="footnoteref"/>
      <xs:element ref="xref"/>
    </xs:choice>
  </xs:group>
  <xs:group name="gen.char.class">
    <xs:choice>
      <xs:element ref="abbrev"/>
      <xs:element ref="acronym"/>
      <xs:element ref="citation"/>
      <xs:element ref="citerefentry"/>
      <xs:element ref="citetitle"/>
      <xs:element ref="emphasis"/>
      <xs:element ref="firstterm"/>
      <xs:element ref="foreignphrase"/>
      <xs:element ref="glossterm"/>
      <xs:element ref="footnote"/>
      <xs:element ref="phrase"/>
      <xs:element ref="quote"/>
      <xs:element ref="trademark"/>
      <xs:element ref="wordasword"/>
      <xs:element ref="personname"/>
    </xs:choice>
  </xs:group>
  <xs:group name="link.char.class">
    <xs:choice>
      <xs:element ref="link"/>
      <xs:element ref="olink"/>
      <xs:element ref="ulink"/>
    </xs:choice>
  </xs:group>
  <xs:group name="tech.char.class">
    <xs:choice>
      <xs:element ref="action"/>
      <xs:element ref="application"/>
      <xs:element ref="classname"/>
      <xs:element ref="methodname"/>
      <xs:element ref="interfacename"/>
      <xs:element ref="exceptionname"/>
      <xs:element ref="ooclass"/>
      <xs:element ref="oointerface"/>
      <xs:element ref="ooexception"/>
      <xs:element ref="command"/>
      <xs:element ref="computeroutput"/>
      <xs:element ref="database"/>
      <xs:element ref="email"/>
      <xs:element ref="envar"/>
      <xs:element ref="errorcode"/>
      <xs:element ref="errorname"/>
      <xs:element ref="errortype"/>
      <xs:element ref="errortext"/>
      <xs:element ref="filename"/>
      <xs:element ref="function"/>
      <xs:element ref="guibutton"/>
      <xs:element ref="guiicon"/>
      <xs:element ref="guilabel"/>
      <xs:element ref="guimenu"/>
      <xs:element ref="guimenuitem"/>
      <xs:element ref="guisubmenu"/>
      <xs:element ref="hardware"/>
      <xs:element ref="interface"/>
      <xs:element ref="keycap"/>
      <xs:element ref="keycode"/>
      <xs:element ref="keycombo"/>
      <xs:element ref="keysym"/>
      <xs:element ref="literal"/>
      <xs:element ref="constant"/>
      <xs:element ref="markup"/>
      <xs:element ref="medialabel"/>
      <xs:element ref="menuchoice"/>
      <xs:element ref="mousebutton"/>
      <xs:element ref="option"/>
      <xs:element ref="optional"/>
      <xs:element ref="parameter"/>
      <xs:element ref="prompt"/>
      <xs:element ref="property"/>
      <xs:element ref="replaceable"/>
      <xs:element ref="returnvalue"/>
      <xs:element ref="sgmltag"/>
      <xs:element ref="structfield"/>
      <xs:element ref="structname"/>
      <xs:element ref="symbol"/>
      <xs:element ref="systemitem"/>
      <xs:element ref="token"/>
      <xs:element ref="type"/>
      <xs:element ref="userinput"/>
      <xs:element ref="varname"/>
    </xs:choice>
  </xs:group>
  <xs:group name="base.char.class">
    <xs:sequence>
      <xs:element ref="anchor"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="docinfo.char.class">
    <xs:choice>
      <xs:element ref="author"/>
      <xs:element ref="authorinitials"/>
      <xs:element ref="corpauthor"/>
      <xs:element ref="modespec"/>
      <xs:element ref="othercredit"/>
      <xs:element ref="productname"/>
      <xs:element ref="productnumber"/>
      <xs:element ref="revhistory"/>
    </xs:choice>
  </xs:group>
  <xs:group name="other.char.class">
    <xs:choice>
      <xs:element ref="remark"/>
      <xs:element ref="subscript"/>
      <xs:element ref="superscript"/>
    </xs:choice>
  </xs:group>
  <xs:group name="inlineobj.char.class">
    <xs:choice>
      <xs:element ref="inlinegraphic"/>
      <xs:element ref="inlinemediaobject"/>
      <xs:element ref="inlineequation"/>
    </xs:choice>
  </xs:group>
  <xs:group name="formalobject.title.content">
    <xs:sequence>
      <xs:element ref="title"/>
      <xs:element minOccurs="0" ref="titleabbrev"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="component.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
      <xs:group ref="compound.class"/>
      <xs:group ref="genobj.class"/>
      <xs:group ref="descobj.class"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="sidebar.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
      <xs:element ref="procedure"/>
      <xs:group ref="genobj.class"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="qandaset.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
      <xs:element ref="procedure"/>
      <xs:group ref="genobj.class"/>
      <xs:group ref="ndxterm.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="revdescription.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
      <xs:element ref="procedure"/>
      <xs:group ref="genobj.class"/>
      <xs:group ref="ndxterm.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="footnote.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="example.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="highlights.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="ndxterm.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="para.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="admon.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
      <xs:element ref="procedure"/>
      <xs:element ref="sidebar"/>
      <xs:element ref="anchor"/>
      <xs:element ref="bridgehead"/>
      <xs:element ref="remark"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="figure.mix">
    <xs:choice>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="tabentry.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="para.class"/>
      <xs:element ref="graphic"/>
      <xs:element ref="mediaobject"/>
    </xs:choice>
  </xs:group>
  <xs:group name="glossdef.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="formal.class"/>
      <xs:element ref="remark"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="legalnotice.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="para.class"/>
      <xs:element ref="blockquote"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="textobject.mix">
    <xs:choice>
      <xs:group ref="list.class"/>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="para.class"/>
      <xs:element ref="blockquote"/>
    </xs:choice>
  </xs:group>
  <xs:group name="mediaobject.mix">
    <xs:choice>
      <xs:element ref="videoobject"/>
      <xs:element ref="audioobject"/>
      <xs:element ref="imageobject"/>
      <xs:element ref="textobject"/>
    </xs:choice>
  </xs:group>
  <xs:group name="listpreamble.mix">
    <xs:choice>
      <xs:group ref="admon.class"/>
      <xs:group ref="linespecific.class"/>
      <xs:group ref="synop.class"/>
      <xs:group ref="para.class"/>
      <xs:group ref="informal.class"/>
      <xs:group ref="genobj.class"/>
      <xs:group ref="descobj.class"/>
      <xs:group ref="ndxterm.class"/>
      <xs:element ref="beginpage"/>
    </xs:choice>
  </xs:group>
  <xs:group name="para.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:group ref="xref.char.class"/>
        <xs:group ref="gen.char.class"/>
        <xs:group ref="link.char.class"/>
        <xs:group ref="tech.char.class"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="docinfo.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:group ref="inlineobj.char.class"/>
        <xs:group ref="synop.class"/>
        <xs:group ref="ndxterm.class"/>
        <xs:element ref="beginpage"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="title.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:group ref="xref.char.class"/>
        <xs:group ref="gen.char.class"/>
        <xs:group ref="link.char.class"/>
        <xs:group ref="tech.char.class"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="docinfo.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:group ref="inlineobj.char.class"/>
        <xs:group ref="ndxterm.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="ndxterm.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:group ref="xref.char.class"/>
        <xs:group ref="gen.char.class"/>
        <xs:group ref="link.char.class"/>
        <xs:group ref="tech.char.class"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="docinfo.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="cptr.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:group ref="link.char.class"/>
        <xs:group ref="tech.char.class"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:group ref="ndxterm.class"/>
        <xs:element ref="beginpage"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="smallcptr.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="replaceable"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:group ref="ndxterm.class"/>
        <xs:element ref="beginpage"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="word.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:element ref="acronym"/>
        <xs:element ref="emphasis"/>
        <xs:element ref="trademark"/>
        <xs:group ref="link.char.class"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:group ref="ndxterm.class"/>
        <xs:element ref="beginpage"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:group name="docinfo.char.mix">
    <xs:sequence>
      <xs:choice minOccurs="0">
        <xs:group ref="link.char.class"/>
        <xs:element ref="emphasis"/>
        <xs:element ref="trademark"/>
        <xs:element ref="replaceable"/>
        <xs:group ref="other.char.class"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:group ref="ndxterm.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:attributeGroup name="arch.attrib">
    <xs:attribute name="arch"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="condition.attrib">
    <xs:attribute name="condition"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="conformance.attrib">
    <xs:attribute name="conformance" type="xs:NMTOKENS"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="os.attrib">
    <xs:attribute name="os"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revision.attrib">
    <xs:attribute name="revision"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="security.attrib">
    <xs:attribute name="security"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="userlevel.attrib">
    <xs:attribute name="userlevel"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="vendor.attrib">
    <xs:attribute name="vendor"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="effectivity.attrib">
    <xs:attributeGroup ref="arch.attrib"/>
    <xs:attributeGroup ref="condition.attrib"/>
    <xs:attributeGroup ref="conformance.attrib"/>
    <xs:attributeGroup ref="os.attrib"/>
    <xs:attributeGroup ref="revision.attrib"/>
    <xs:attributeGroup ref="security.attrib"/>
    <xs:attributeGroup ref="userlevel.attrib"/>
    <xs:attributeGroup ref="vendor.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="id.attrib">
    <xs:attribute name="id" type="xs:ID"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="idreq.attrib">
    <xs:attribute name="id" use="required" type="xs:ID"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="lang.attrib">
    <xs:attribute name="lang"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="remap.attrib">
    <xs:attribute name="remap"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="role.attrib">
    <xs:attribute name="role"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="xreflabel.attrib">
    <xs:attribute name="xreflabel"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revisionflag.attrib">
    <xs:attribute name="revisionflag">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="changed"/>
          <xs:enumeration value="added"/>
          <xs:enumeration value="deleted"/>
          <xs:enumeration value="off"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="common.attrib">
    <xs:attributeGroup ref="id.attrib"/>
    <xs:attributeGroup ref="lang.attrib"/>
    <xs:attributeGroup ref="remap.attrib"/>
    <xs:attributeGroup ref="xreflabel.attrib"/>
    <xs:attributeGroup ref="revisionflag.attrib"/>
    <xs:attributeGroup ref="effectivity.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="idreq.common.attrib">
    <xs:attributeGroup ref="idreq.attrib"/>
    <xs:attributeGroup ref="lang.attrib"/>
    <xs:attributeGroup ref="remap.attrib"/>
    <xs:attributeGroup ref="xreflabel.attrib"/>
    <xs:attributeGroup ref="revisionflag.attrib"/>
    <xs:attributeGroup ref="effectivity.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="graphics.attrib">
    <xs:attribute name="entityref" type="xs:ENTITY"/>
    <xs:attribute name="fileref"/>
    <xs:attribute name="format" type="notation.class"/>
    <xs:attribute name="srccredit"/>
    <xs:attribute name="width"/>
    <xs:attribute name="contentwidth"/>
    <xs:attribute name="depth"/>
    <xs:attribute name="contentdepth"/>
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="center"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="valign">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="scale"/>
    <xs:attribute name="scalefit" type="yesorno.attvals"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keyaction.attrib">
    <xs:attribute name="action">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="click"/>
          <xs:enumeration value="double-click"/>
          <xs:enumeration value="press"/>
          <xs:enumeration value="seq"/>
          <xs:enumeration value="simul"/>
          <xs:enumeration value="other"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otheraction"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="label.attrib">
    <xs:attribute name="label"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="linespecific.attrib">
    <xs:attribute name="format" default="linespecific">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="linespecific"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="linenumbering">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="numbered"/>
          <xs:enumeration value="unnumbered"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="linkend.attrib">
    <xs:attribute name="linkend" type="xs:IDREF"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="linkendreq.attrib">
    <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="linkends.attrib">
    <xs:attribute name="linkends" type="xs:IDREFS"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="mark.attrib">
    <xs:attribute name="mark"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="moreinfo.attrib">
    <xs:attribute name="moreinfo" default="none">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="refentry"/>
          <xs:enumeration value="none"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="pagenum.attrib">
    <xs:attribute name="pagenum"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="status.attrib">
    <xs:attribute name="status"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="width.attrib">
    <xs:attribute name="width"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="title.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="title">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
      <xs:attributeGroup ref="title.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="title.attlist">
    <xs:attributeGroup ref="pagenum.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="title.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="titleabbrev.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="titleabbrev">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
      <xs:attributeGroup ref="titleabbrev.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="titleabbrev.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="titleabbrev.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="subtitle.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="subtitle">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
      <xs:attributeGroup ref="subtitle.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="subtitle.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="subtitle.role.attrib"/>
  </xs:attributeGroup>
  <xs:group name="person.ident.mix">
    <xs:choice>
      <xs:element ref="honorific"/>
      <xs:element ref="firstname"/>
      <xs:element ref="surname"/>
      <xs:element ref="lineage"/>
      <xs:element ref="othername"/>
      <xs:element ref="affiliation"/>
      <xs:element ref="authorblurb"/>
      <xs:element ref="contrib"/>
    </xs:choice>
  </xs:group>
  <xs:group name="bibliocomponent.mix">
    <xs:choice>
      <xs:element ref="abbrev"/>
      <xs:element ref="abstract"/>
      <xs:element ref="address"/>
      <xs:element ref="artpagenums"/>
      <xs:element ref="author"/>
      <xs:element ref="authorgroup"/>
      <xs:element ref="authorinitials"/>
      <xs:element ref="bibliomisc"/>
      <xs:element ref="biblioset"/>
      <xs:element ref="collab"/>
      <xs:element ref="confgroup"/>
      <xs:element ref="contractnum"/>
      <xs:element ref="contractsponsor"/>
      <xs:element ref="copyright"/>
      <xs:element ref="corpauthor"/>
      <xs:element ref="corpname"/>
      <xs:element ref="date"/>
      <xs:element ref="edition"/>
      <xs:element ref="editor"/>
      <xs:element ref="invpartnumber"/>
      <xs:element ref="isbn"/>
      <xs:element ref="issn"/>
      <xs:element ref="issuenum"/>
      <xs:element ref="orgname"/>
      <xs:element ref="biblioid"/>
      <xs:element ref="citebiblioid"/>
      <xs:element ref="bibliosource"/>
      <xs:element ref="bibliorelation"/>
      <xs:element ref="bibliocoverage"/>
      <xs:element ref="othercredit"/>
      <xs:element ref="pagenums"/>
      <xs:element ref="printhistory"/>
      <xs:element ref="productname"/>
      <xs:element ref="productnumber"/>
      <xs:element ref="pubdate"/>
      <xs:element ref="publisher"/>
      <xs:element ref="publishername"/>
      <xs:element ref="pubsnumber"/>
      <xs:element ref="releaseinfo"/>
      <xs:element ref="revhistory"/>
      <xs:element ref="seriesvolnums"/>
      <xs:element ref="subtitle"/>
      <xs:element ref="title"/>
      <xs:element ref="titleabbrev"/>
      <xs:element ref="volumenum"/>
      <xs:element ref="citetitle"/>
      <xs:element ref="personname"/>
      <xs:group ref="person.ident.mix"/>
      <xs:group ref="ndxterm.class"/>
    </xs:choice>
  </xs:group>
  <xs:group name="info.class">
    <xs:choice>
      <xs:element ref="graphic"/>
      <xs:element ref="mediaobject"/>
      <xs:element ref="legalnotice"/>
      <xs:element ref="modespec"/>
      <xs:element ref="subjectset"/>
      <xs:element ref="keywordset"/>
      <xs:element ref="itermset"/>
      <xs:group ref="bibliocomponent.mix"/>
    </xs:choice>
  </xs:group>
  <xs:attributeGroup name="biblioentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="biblioentry">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="articleinfo"/>
        <xs:group ref="bibliocomponent.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="biblioentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="biblioentry.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="biblioentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliomixed.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bibliomixed">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="bibliocomponent.mix"/>
        <xs:element ref="bibliomset"/>
      </xs:choice>
      <xs:attributeGroup ref="bibliomixed.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bibliomixed.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bibliomixed.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="articleinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="articleinfo">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="info.class"/>
      <xs:attributeGroup ref="articleinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="articleinfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="articleinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="biblioset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="biblioset">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="bibliocomponent.mix"/>
      <xs:attributeGroup ref="biblioset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="biblioset.attlist">
    <xs:attribute name="relation"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="biblioset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliomset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bibliomset">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="bibliocomponent.mix"/>
        <xs:element ref="bibliomset"/>
      </xs:choice>
      <xs:attributeGroup ref="bibliomset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bibliomset.attlist">
    <xs:attribute name="relation"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bibliomset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliomisc.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bibliomisc">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="bibliomisc.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bibliomisc.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bibliomisc.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="subjectset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="subjectset">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="subject"/>
      </xs:sequence>
      <xs:attributeGroup ref="subjectset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="subjectset.attlist">
    <xs:attribute name="scheme" type="xs:NMTOKEN"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="subjectset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="subject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="subject">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="subjectterm"/>
      </xs:sequence>
      <xs:attributeGroup ref="subject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="subject.attlist">
    <xs:attribute name="weight"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="subject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="subjectterm.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="subjectterm">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="subjectterm.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="subjectterm.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="subjectterm.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keywordset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="keywordset">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="keyword"/>
      </xs:sequence>
      <xs:attributeGroup ref="keywordset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="keywordset.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="keywordset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keyword.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="keyword">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="keyword.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="keyword.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="keyword.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="itermset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="itermset">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="indexterm"/>
      </xs:sequence>
      <xs:attributeGroup ref="itermset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="itermset.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="itermset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="blockinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="blockinfo">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="info.class"/>
      <xs:attributeGroup ref="blockinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="blockinfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="blockinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgset">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="msgentry"/>
          <xs:element maxOccurs="unbounded" ref="simplemsgentry"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="msgset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgset.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgentry">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="msg"/>
        <xs:element minOccurs="0" ref="msginfo"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="msgexplan"/>
      </xs:sequence>
      <xs:attributeGroup ref="msgentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgentry.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="simplemsgentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="simplemsgentry">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="msgtext"/>
        <xs:element maxOccurs="unbounded" ref="msgexplan"/>
      </xs:sequence>
      <xs:attributeGroup ref="simplemsgentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="simplemsgentry.attlist">
    <xs:attribute name="audience"/>
    <xs:attribute name="level"/>
    <xs:attribute name="origin"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="simplemsgentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msg.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msg">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element ref="msgmain"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="msgsub"/>
          <xs:element ref="msgrel"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="msg.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msg.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msg.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgmain.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgmain">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element ref="msgtext"/>
      </xs:sequence>
      <xs:attributeGroup ref="msgmain.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgmain.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgmain.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgsub.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgsub">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element ref="msgtext"/>
      </xs:sequence>
      <xs:attributeGroup ref="msgsub.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgsub.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgsub.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgrel.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgrel">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element ref="msgtext"/>
      </xs:sequence>
      <xs:attributeGroup ref="msgrel.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgrel.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgrel.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msginfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msginfo">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="msglevel"/>
        <xs:element ref="msgorig"/>
        <xs:element ref="msgaud"/>
      </xs:choice>
      <xs:attributeGroup ref="msginfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msginfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msginfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msglevel.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msglevel">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="msglevel.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msglevel.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msglevel.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgorig.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgorig">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="msgorig.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgorig.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgorig.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgaud.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgaud">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="msgaud.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgaud.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgaud.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgexplan.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgexplan">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="component.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="msgexplan.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgexplan.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgexplan.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="qandaset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="qandaset">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="qandadiv"/>
          <xs:element maxOccurs="unbounded" ref="qandaentry"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="qandaset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="qandaset.attlist">
    <xs:attribute name="defaultlabel">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="qanda"/>
          <xs:enumeration value="number"/>
          <xs:enumeration value="none"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="qandaset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="qandadiv.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="qandadiv">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="qandadiv"/>
          <xs:element maxOccurs="unbounded" ref="qandaentry"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="qandadiv.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="qandadiv.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="qandadiv.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="qandaentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="qandaentry">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:element minOccurs="0" ref="revhistory"/>
        <xs:element ref="question"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/>
      </xs:sequence>
      <xs:attributeGroup ref="qandaentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="qandaentry.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="qandaentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="question.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="question">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="label"/>
        <xs:group maxOccurs="unbounded" ref="qandaset.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="question.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="question.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="question.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="answer.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="answer">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="label"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="qandaentry"/>
      </xs:sequence>
      <xs:attributeGroup ref="answer.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="answer.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="answer.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="label.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="label">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
      <xs:attributeGroup ref="label.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="label.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="label.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="procedure.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="procedure">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
        <xs:element maxOccurs="unbounded" ref="step"/>
      </xs:sequence>
      <xs:attributeGroup ref="procedure.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="procedure.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="procedure.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="step.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="step">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:choice>
          <xs:sequence>
            <xs:group maxOccurs="unbounded" ref="component.mix"/>
            <xs:sequence minOccurs="0">
              <xs:element ref="substeps"/>
              <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
            </xs:sequence>
          </xs:sequence>
          <xs:sequence>
            <xs:element ref="substeps"/>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
          </xs:sequence>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="step.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="step.attlist">
    <xs:attribute name="performance" default="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="optional"/>
          <xs:enumeration value="required"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="step.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="substeps.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="substeps">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="step"/>
      </xs:sequence>
      <xs:attributeGroup ref="substeps.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="substeps.attlist">
    <xs:attribute name="performance" default="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="optional"/>
          <xs:enumeration value="required"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="substeps.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="sidebarinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="sidebarinfo">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="info.class"/>
      <xs:attributeGroup ref="sidebarinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="sidebarinfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="sidebarinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="sidebar.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="sidebar">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="sidebarinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group maxOccurs="unbounded" ref="sidebar.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="sidebar.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="sidebar.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="sidebar.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="abstract.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="abstract">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="para.class"/>
      </xs:sequence>
      <xs:attributeGroup ref="abstract.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="abstract.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="abstract.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="authorblurb.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="authorblurb">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="para.class"/>
      </xs:sequence>
      <xs:attributeGroup ref="authorblurb.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="authorblurb.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="authorblurb.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="personblurb.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="personblurb">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="para.class"/>
      </xs:sequence>
      <xs:attributeGroup ref="personblurb.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="personblurb.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="personblurb.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="blockquote.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="blockquote">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element minOccurs="0" ref="attribution"/>
        <xs:group maxOccurs="unbounded" ref="component.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="blockquote.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="blockquote.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="blockquote.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="attribution.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="attribution">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="attribution.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attribution.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="attribution.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bridgehead.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bridgehead">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
      <xs:attributeGroup ref="bridgehead.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bridgehead.attlist">
    <xs:attribute name="renderas">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="other"/>
          <xs:enumeration value="sect1"/>
          <xs:enumeration value="sect2"/>
          <xs:enumeration value="sect3"/>
          <xs:enumeration value="sect4"/>
          <xs:enumeration value="sect5"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bridgehead.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="remark.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="remark">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="remark.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="remark.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="remark.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="epigraph.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="epigraph">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="attribution"/>
        <xs:choice maxOccurs="unbounded">
          <xs:group ref="para.class"/>
          <xs:element ref="literallayout"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="epigraph.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="epigraph.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="epigraph.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="footnote.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="footnote">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="footnote.mix"/>
      <xs:attributeGroup ref="footnote.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="footnote.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="footnote.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="highlights.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="highlights">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="highlights.mix"/>
      <xs:attributeGroup ref="highlights.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="highlights.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="highlights.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="formalpara.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="formalpara">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="title"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
        <xs:element ref="para"/>
      </xs:sequence>
      <xs:attributeGroup ref="formalpara.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="formalpara.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="formalpara.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="para.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="para">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="para.char.mix"/>
        <xs:group ref="para.mix"/>
      </xs:choice>
      <xs:attributeGroup ref="para.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="para.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="para.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="simpara.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="simpara">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="simpara.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="simpara.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="simpara.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="admon.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="caution">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="caution.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="caution.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="admon.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="important">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="important.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="important.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="admon.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="note">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="note.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="note.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="admon.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="tip">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="tip.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="tip.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="admon.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="warning">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="admon.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="warning.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="warning.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="admon.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="glosslist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="glosslist">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="glossentry"/>
      </xs:sequence>
      <xs:attributeGroup ref="glosslist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="glosslist.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="glosslist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="glossentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="glossentry">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="glossterm"/>
        <xs:element minOccurs="0" ref="acronym"/>
        <xs:element minOccurs="0" ref="abbrev"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
        <xs:element minOccurs="0" ref="revhistory"/>
        <xs:choice>
          <xs:element ref="glosssee"/>
          <xs:element maxOccurs="unbounded" ref="glossdef"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="glossentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="glossentry.attlist">
    <xs:attribute name="sortas"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="glossentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="glossdef.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="glossdef">
    <xs:complexType>
      <xs:sequence>
        <xs:group maxOccurs="unbounded" ref="glossdef.mix"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="glossseealso"/>
      </xs:sequence>
      <xs:attributeGroup ref="glossdef.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="glossdef.attlist">
    <xs:attribute name="subject"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="glossdef.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="glosssee.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="glosssee">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="glosssee.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="glosssee.attlist">
    <xs:attribute name="otherterm" type="xs:IDREF"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="glosssee.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="glossseealso.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="glossseealso">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="glossseealso.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="glossseealso.attlist">
    <xs:attribute name="otherterm" type="xs:IDREF"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="glossseealso.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="itemizedlist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="itemizedlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
        <xs:element maxOccurs="unbounded" ref="listitem"/>
      </xs:sequence>
      <xs:attributeGroup ref="itemizedlist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="itemizedlist.attlist">
    <xs:attribute name="spacing">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="compact"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="mark.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="itemizedlist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="orderedlist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="orderedlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
        <xs:element maxOccurs="unbounded" ref="listitem"/>
      </xs:sequence>
      <xs:attributeGroup ref="orderedlist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="orderedlist.attlist">
    <xs:attribute name="numeration">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="arabic"/>
          <xs:enumeration value="upperalpha"/>
          <xs:enumeration value="loweralpha"/>
          <xs:enumeration value="upperroman"/>
          <xs:enumeration value="lowerroman"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="inheritnum" default="ignore">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="inherit"/>
          <xs:enumeration value="ignore"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="continuation" default="restarts">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="continues"/>
          <xs:enumeration value="restarts"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="spacing">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="compact"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="orderedlist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="listitem.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="listitem">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="component.mix"/>
      <xs:attributeGroup ref="listitem.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="listitem.attlist">
    <xs:attribute name="override"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="listitem.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="segmentedlist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="segmentedlist">
    <xs:complexType>
      <xs:sequence>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:element maxOccurs="unbounded" ref="segtitle"/>
        <xs:element maxOccurs="unbounded" ref="seglistitem"/>
      </xs:sequence>
      <xs:attributeGroup ref="segmentedlist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="segmentedlist.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="segmentedlist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="segtitle.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="segtitle">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
      <xs:attributeGroup ref="segtitle.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="segtitle.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="segtitle.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="seglistitem.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="seglistitem">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="seg"/>
      </xs:sequence>
      <xs:attributeGroup ref="seglistitem.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="seglistitem.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="seglistitem.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="seg.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="seg">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="seg.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="seg.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="seg.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="simplelist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="simplelist">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="member"/>
      </xs:sequence>
      <xs:attributeGroup ref="simplelist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="simplelist.attlist">
    <xs:attribute name="columns"/>
    <xs:attribute name="type" default="vert">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="inline"/>
          <xs:enumeration value="vert"/>
          <xs:enumeration value="horiz"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="simplelist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="member.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="member">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="member.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="member.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="member.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="variablelist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="variablelist">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
        <xs:element maxOccurs="unbounded" ref="varlistentry"/>
      </xs:sequence>
      <xs:attributeGroup ref="variablelist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="variablelist.attlist">
    <xs:attribute name="termlength"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="variablelist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="varlistentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="varlistentry">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="term"/>
        <xs:element ref="listitem"/>
      </xs:sequence>
      <xs:attributeGroup ref="varlistentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="varlistentry.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="varlistentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="term.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="term">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="term.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="term.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="term.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="calloutlist.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="calloutlist">
    <xs:complexType>
      <xs:sequence>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:element maxOccurs="unbounded" ref="callout"/>
      </xs:sequence>
      <xs:attributeGroup ref="calloutlist.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="calloutlist.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="calloutlist.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="callout.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="callout">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="component.mix"/>
      <xs:attributeGroup ref="callout.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="callout.attlist">
    <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="callout.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="example.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="example">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group ref="formalobject.title.content"/>
        <xs:group maxOccurs="unbounded" ref="example.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="example.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="example.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="width.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="example.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="informalexample.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="informalexample">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group maxOccurs="unbounded" ref="example.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="informalexample.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="informalexample.attlist">
    <xs:attributeGroup ref="width.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="informalexample.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="programlistingco.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="programlistingco">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="areaspec"/>
        <xs:element ref="programlisting"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
      </xs:sequence>
      <xs:attributeGroup ref="programlistingco.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="programlistingco.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="programlistingco.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="areaspec.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="areaspec">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="area"/>
        <xs:element ref="areaset"/>
      </xs:choice>
      <xs:attributeGroup ref="areaspec.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="areaspec.attlist">
    <xs:attribute name="units">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="calspair"/>
          <xs:enumeration value="linecolumn"/>
          <xs:enumeration value="linerange"/>
          <xs:enumeration value="linecolumnpair"/>
          <xs:enumeration value="other"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="areaspec.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="area.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="area">
    <xs:complexType>
      <xs:attributeGroup ref="area.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="area.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="linkends.attrib"/>
    <xs:attribute name="units">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="calspair"/>
          <xs:enumeration value="linecolumn"/>
          <xs:enumeration value="linerange"/>
          <xs:enumeration value="linecolumnpair"/>
          <xs:enumeration value="other"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
    <xs:attribute name="coords" use="required"/>
    <xs:attributeGroup ref="idreq.common.attrib"/>
    <xs:attributeGroup ref="area.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="areaset.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="areaset">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="area"/>
      </xs:sequence>
      <xs:attributeGroup ref="areaset.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="areaset.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attribute name="units">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="calspair"/>
          <xs:enumeration value="linecolumn"/>
          <xs:enumeration value="linerange"/>
          <xs:enumeration value="linecolumnpair"/>
          <xs:enumeration value="other"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
    <xs:attribute name="coords" use="required"/>
    <xs:attributeGroup ref="idreq.common.attrib"/>
    <xs:attributeGroup ref="areaset.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="programlisting.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="programlisting">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="para.char.mix"/>
        <xs:element ref="co"/>
        <xs:element ref="coref"/>
        <xs:element ref="lineannotation"/>
        <xs:element ref="textobject"/>
      </xs:choice>
      <xs:attributeGroup ref="programlisting.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="programlisting.attlist">
    <xs:attributeGroup ref="width.attrib"/>
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="programlisting.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="literallayout.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="literallayout">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="para.char.mix"/>
        <xs:element ref="co"/>
        <xs:element ref="coref"/>
        <xs:element ref="textobject"/>
        <xs:element ref="lineannotation"/>
      </xs:choice>
      <xs:attributeGroup ref="literallayout.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="literallayout.attlist">
    <xs:attributeGroup ref="width.attrib"/>
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attribute name="class" default="normal">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="monospaced"/>
          <xs:enumeration value="normal"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="literallayout.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="screenco.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="screenco">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="areaspec"/>
        <xs:element ref="screen"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
      </xs:sequence>
      <xs:attributeGroup ref="screenco.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="screenco.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="screenco.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="screen.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="screen">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="para.char.mix"/>
        <xs:element ref="co"/>
        <xs:element ref="coref"/>
        <xs:element ref="textobject"/>
        <xs:element ref="lineannotation"/>
      </xs:choice>
      <xs:attributeGroup ref="screen.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="screen.attlist">
    <xs:attributeGroup ref="width.attrib"/>
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="screen.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="screenshot.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="screenshot">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="screeninfo"/>
        <xs:choice>
          <xs:element ref="graphic"/>
          <xs:element ref="graphicco"/>
          <xs:element ref="mediaobject"/>
          <xs:element ref="mediaobjectco"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="screenshot.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="screenshot.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="screenshot.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="screeninfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="screeninfo">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="screeninfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="screeninfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="screeninfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="figure.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="figure">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group ref="formalobject.title.content"/>
        <xs:choice maxOccurs="unbounded">
          <xs:group ref="figure.mix"/>
          <xs:group ref="link.char.class"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="figure.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="figure.attlist">
    <xs:attribute name="float" default="0" type="yesorno.attvals"/>
    <xs:attribute name="pgwide" type="yesorno.attvals"/>
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="figure.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="informalfigure.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="informalfigure">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:choice maxOccurs="unbounded">
          <xs:group ref="figure.mix"/>
          <xs:group ref="link.char.class"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="informalfigure.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="informalfigure.attlist">
    <xs:attribute name="float" default="0" type="yesorno.attvals"/>
    <xs:attribute name="pgwide" type="yesorno.attvals"/>
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="informalfigure.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="graphicco.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="graphicco">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="areaspec"/>
        <xs:element ref="graphic"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
      </xs:sequence>
      <xs:attributeGroup ref="graphicco.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="graphicco.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="graphicco.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="graphic.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="graphic">
    <xs:complexType>
      <xs:attributeGroup ref="graphic.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="graphic.attlist">
    <xs:attributeGroup ref="graphics.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="graphic.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="inlinegraphic.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="inlinegraphic">
    <xs:complexType>
      <xs:attributeGroup ref="inlinegraphic.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="inlinegraphic.attlist">
    <xs:attributeGroup ref="graphics.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="inlinegraphic.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="mediaobject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="mediaobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:group maxOccurs="unbounded" ref="mediaobject.mix"/>
        <xs:element minOccurs="0" ref="caption"/>
      </xs:sequence>
      <xs:attributeGroup ref="mediaobject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="mediaobject.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="mediaobject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="inlinemediaobject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="inlinemediaobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:group maxOccurs="unbounded" ref="mediaobject.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="inlinemediaobject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="inlinemediaobject.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="inlinemediaobject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="videoobject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="videoobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:element ref="videodata"/>
      </xs:sequence>
      <xs:attributeGroup ref="videoobject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="videoobject.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="videoobject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="audioobject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="audioobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:element ref="audiodata"/>
      </xs:sequence>
      <xs:attributeGroup ref="audioobject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="audioobject.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="audioobject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="imageobject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="imageobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:element ref="imagedata"/>
      </xs:sequence>
      <xs:attributeGroup ref="imageobject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="imageobject.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="imageobject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="textobject.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="textobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:choice>
          <xs:element ref="phrase"/>
          <xs:element ref="textdata"/>
          <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="textobject.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="textobject.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="textobject.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="objectinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="objectinfo">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="info.class"/>
      <xs:attributeGroup ref="objectinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="objectinfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="objectinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="objectdata.attrib">
    <xs:attribute name="entityref" type="xs:ENTITY"/>
    <xs:attribute name="fileref"/>
    <xs:attribute name="format" type="notation.class"/>
    <xs:attribute name="srccredit"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="videodata.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="videodata">
    <xs:complexType>
      <xs:attributeGroup ref="videodata.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="videodata.attlist">
    <xs:attribute name="width"/>
    <xs:attribute name="contentwidth"/>
    <xs:attribute name="depth"/>
    <xs:attribute name="contentdepth"/>
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="center"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="valign">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="scale"/>
    <xs:attribute name="scalefit" type="yesorno.attvals"/>
    <xs:attributeGroup ref="objectdata.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="videodata.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="audiodata.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="audiodata">
    <xs:complexType>
      <xs:attributeGroup ref="audiodata.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="audiodata.attlist">
    <xs:attributeGroup ref="objectdata.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="audiodata.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="imagedata.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="imagedata">
    <xs:complexType>
      <xs:attributeGroup ref="imagedata.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="imagedata.attlist">
    <xs:attribute name="width"/>
    <xs:attribute name="contentwidth"/>
    <xs:attribute name="depth"/>
    <xs:attribute name="contentdepth"/>
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="center"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="valign">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="scale"/>
    <xs:attribute name="scalefit" type="yesorno.attvals"/>
    <xs:attributeGroup ref="objectdata.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="imagedata.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="textdata.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="textdata">
    <xs:complexType>
      <xs:attributeGroup ref="textdata.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="textdata.attlist">
    <xs:attribute name="encoding"/>
    <xs:attributeGroup ref="objectdata.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="textdata.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="caption.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="caption">
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="textobject.mix"/>
      <xs:attributeGroup ref="caption.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="caption.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="caption.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="mediaobjectco.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="mediaobjectco">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="objectinfo"/>
        <xs:element ref="imageobjectco"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="imageobjectco"/>
          <xs:element ref="textobject"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="mediaobjectco.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="mediaobjectco.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="mediaobjectco.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="imageobjectco.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="imageobjectco">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="areaspec"/>
        <xs:element ref="imageobject"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
      </xs:sequence>
      <xs:attributeGroup ref="imageobjectco.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="imageobjectco.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="imageobjectco.role.attrib"/>
  </xs:attributeGroup>
  <xs:group name="equation.content">
    <xs:sequence>
      <xs:element minOccurs="0" ref="alt"/>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="graphic"/>
        <xs:element maxOccurs="unbounded" ref="mediaobject"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="inlineequation.content">
    <xs:sequence>
      <xs:element minOccurs="0" ref="alt"/>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="graphic"/>
        <xs:element maxOccurs="unbounded" ref="inlinemediaobject"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:attributeGroup name="equation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="equation">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group minOccurs="0" ref="formalobject.title.content"/>
        <xs:choice>
          <xs:element ref="informalequation"/>
          <xs:group ref="equation.content"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="equation.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="equation.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="equation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="informalequation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="informalequation">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:group ref="equation.content"/>
      </xs:sequence>
      <xs:attributeGroup ref="informalequation.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="informalequation.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="informalequation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="inlineequation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="inlineequation">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="inlineequation.content">
          <xs:attributeGroup ref="inlineequation.attlist"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="inlineequation.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="inlineequation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="alt.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="alt">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="alt.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="alt.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="alt.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="tables.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bodyatt">
    <xs:attributeGroup ref="label.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="secur">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="tables.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="common.table.attribs">
    <xs:attributeGroup ref="bodyatt"/>
    <xs:attributeGroup ref="secur"/>
  </xs:attributeGroup>
  <xs:complexType name="tbl.table.mdl">
    <xs:sequence>
      <xs:element minOccurs="0" ref="blockinfo"/>
      <xs:group ref="formalobject.title.content"/>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
      <xs:choice>
        <xs:element maxOccurs="unbounded" ref="graphic"/>
        <xs:element maxOccurs="unbounded" ref="mediaobject"/>
        <xs:element maxOccurs="unbounded" ref="tgroup"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:group name="tbl.entry.mdl">
    <xs:choice>
      <xs:group ref="para.char.mix"/>
      <xs:group ref="tabentry.mix"/>
    </xs:choice>
  </xs:group>
  <xs:element name="informaltable">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="graphic"/>
          <xs:element maxOccurs="unbounded" ref="mediaobject"/>
          <xs:element maxOccurs="unbounded" ref="tgroup"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="informaltable.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="informaltable.attlist">
    <xs:attribute name="frame">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="top"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="topbot"/>
          <xs:enumeration value="all"/>
          <xs:enumeration value="sides"/>
          <xs:enumeration value="none"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="colsep" type="yesorno.attvals"/>
    <xs:attribute name="rowsep" type="yesorno.attvals"/>
    <xs:attributeGroup ref="common.table.attribs"/>
    <xs:attributeGroup ref="tbl.table.att"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="synopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="synopsis">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="para.char.mix"/>
        <xs:element ref="graphic"/>
        <xs:element ref="mediaobject"/>
        <xs:element ref="co"/>
        <xs:element ref="coref"/>
        <xs:element ref="textobject"/>
        <xs:element ref="lineannotation"/>
      </xs:choice>
      <xs:attributeGroup ref="synopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="synopsis.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="synopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="cmdsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="cmdsynopsis">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="command"/>
          <xs:element ref="arg"/>
          <xs:element ref="group"/>
          <xs:element ref="sbr"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="synopfragment"/>
      </xs:sequence>
      <xs:attributeGroup ref="cmdsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="cmdsynopsis.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attribute name="sepchar" default=" "/>
    <xs:attribute name="cmdlength"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="cmdsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="arg.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="arg">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="arg"/>
        <xs:element ref="group"/>
        <xs:element ref="option"/>
        <xs:element ref="synopfragmentref"/>
        <xs:element ref="replaceable"/>
        <xs:element ref="sbr"/>
      </xs:choice>
      <xs:attributeGroup ref="arg.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="arg.attlist">
    <xs:attribute name="choice" default="opt">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="opt"/>
          <xs:enumeration value="req"/>
          <xs:enumeration value="plain"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rep" default="norepeat">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="norepeat"/>
          <xs:enumeration value="repeat"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="arg.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="group.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="group">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="arg"/>
        <xs:element ref="group"/>
        <xs:element ref="option"/>
        <xs:element ref="synopfragmentref"/>
        <xs:element ref="replaceable"/>
        <xs:element ref="sbr"/>
      </xs:choice>
      <xs:attributeGroup ref="group.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="group.attlist">
    <xs:attribute name="choice" default="opt">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="opt"/>
          <xs:enumeration value="req"/>
          <xs:enumeration value="plain"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rep" default="norepeat">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="norepeat"/>
          <xs:enumeration value="repeat"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="group.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="sbr.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="sbr">
    <xs:complexType>
      <xs:attributeGroup ref="sbr.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="sbr.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="sbr.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="synopfragmentref.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="synopfragmentref">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="synopfragmentref.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="synopfragmentref.attlist">
    <xs:attributeGroup ref="linkendreq.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="synopfragmentref.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="synopfragment.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="synopfragment">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="arg"/>
        <xs:element ref="group"/>
      </xs:choice>
      <xs:attributeGroup ref="synopfragment.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="synopfragment.attlist">
    <xs:attributeGroup ref="idreq.common.attrib"/>
    <xs:attributeGroup ref="synopfragment.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="funcsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="funcsynopsis">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="funcsynopsisinfo"/>
        <xs:element ref="funcprototype"/>
      </xs:choice>
      <xs:attributeGroup ref="funcsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="funcsynopsis.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="funcsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="funcsynopsisinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="funcsynopsisinfo">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="cptr.char.mix"/>
        <xs:element ref="textobject"/>
        <xs:element ref="lineannotation"/>
      </xs:choice>
      <xs:attributeGroup ref="funcsynopsisinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="funcsynopsisinfo.attlist">
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="funcsynopsisinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="funcprototype.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="funcprototype">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="funcdef"/>
        <xs:choice>
          <xs:element ref="void"/>
          <xs:element ref="varargs"/>
          <xs:element maxOccurs="unbounded" ref="paramdef"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="funcprototype.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="funcprototype.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="funcprototype.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="funcdef.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="funcdef">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="type"/>
        <xs:element ref="replaceable"/>
        <xs:element ref="function"/>
      </xs:choice>
      <xs:attributeGroup ref="funcdef.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="funcdef.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="funcdef.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="void.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="void">
    <xs:complexType>
      <xs:attributeGroup ref="void.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="void.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="void.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="varargs.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="varargs">
    <xs:complexType>
      <xs:attributeGroup ref="varargs.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="varargs.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="varargs.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="paramdef.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="paramdef">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="type"/>
        <xs:element ref="replaceable"/>
        <xs:element ref="parameter"/>
        <xs:element ref="funcparams"/>
      </xs:choice>
      <xs:attributeGroup ref="paramdef.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="paramdef.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="paramdef.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="funcparams.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="funcparams">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="funcparams.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="funcparams.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="funcparams.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="classsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="classsynopsis">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="ooclass"/>
          <xs:element ref="oointerface"/>
          <xs:element ref="ooexception"/>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="classsynopsisinfo"/>
          <xs:element ref="fieldsynopsis"/>
          <xs:group ref="method.synop.class"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="classsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="classsynopsis.attlist">
    <xs:attribute name="language"/>
    <xs:attribute name="class" default="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="class"/>
          <xs:enumeration value="interface"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="classsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="classsynopsisinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="classsynopsisinfo">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="cptr.char.mix"/>
        <xs:element ref="textobject"/>
        <xs:element ref="lineannotation"/>
      </xs:choice>
      <xs:attributeGroup ref="classsynopsisinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="classsynopsisinfo.attlist">
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="classsynopsisinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ooclass.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="ooclass">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element ref="classname"/>
      </xs:sequence>
      <xs:attributeGroup ref="ooclass.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="ooclass.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="ooclass.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="oointerface.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="oointerface">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element ref="interfacename"/>
      </xs:sequence>
      <xs:attributeGroup ref="oointerface.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="oointerface.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="oointerface.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ooexception.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="ooexception">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element ref="exceptionname"/>
      </xs:sequence>
      <xs:attributeGroup ref="ooexception.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="ooexception.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="ooexception.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="modifier.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="modifier">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="modifier.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="modifier.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="modifier.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="interfacename.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="interfacename">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="interfacename.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="interfacename.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="interfacename.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="exceptionname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="exceptionname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="exceptionname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="exceptionname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="exceptionname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="fieldsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="fieldsynopsis">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element minOccurs="0" ref="type"/>
        <xs:element ref="varname"/>
        <xs:element minOccurs="0" ref="initializer"/>
      </xs:sequence>
      <xs:attributeGroup ref="fieldsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="fieldsynopsis.attlist">
    <xs:attribute name="language"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="fieldsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="initializer.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="initializer">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="initializer.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="initializer.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="initializer.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="constructorsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="constructorsynopsis">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element minOccurs="0" ref="methodname"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="methodparam"/>
          <xs:element ref="void"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
      </xs:sequence>
      <xs:attributeGroup ref="constructorsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="constructorsynopsis.attlist">
    <xs:attribute name="language"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="constructorsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="destructorsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="destructorsynopsis">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element minOccurs="0" ref="methodname"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="methodparam"/>
          <xs:element ref="void"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
      </xs:sequence>
      <xs:attributeGroup ref="destructorsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="destructorsynopsis.attlist">
    <xs:attribute name="language"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="destructorsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="methodsynopsis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="methodsynopsis">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:choice minOccurs="0">
          <xs:element ref="type"/>
          <xs:element ref="void"/>
        </xs:choice>
        <xs:element ref="methodname"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="methodparam"/>
          <xs:element ref="void"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
      </xs:sequence>
      <xs:attributeGroup ref="methodsynopsis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="methodsynopsis.attlist">
    <xs:attribute name="language"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="methodsynopsis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="methodname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="methodname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="methodname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="methodname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="methodname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="methodparam.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="methodparam">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
        <xs:element minOccurs="0" ref="type"/>
        <xs:choice>
          <xs:sequence>
            <xs:element ref="parameter"/>
            <xs:element minOccurs="0" ref="initializer"/>
          </xs:sequence>
          <xs:element ref="funcparams"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
      </xs:sequence>
      <xs:attributeGroup ref="methodparam.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="methodparam.attlist">
    <xs:attribute name="choice" default="req">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="opt"/>
          <xs:enumeration value="req"/>
          <xs:enumeration value="plain"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rep" default="norepeat">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="norepeat"/>
          <xs:enumeration value="repeat"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="methodparam.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ackno.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="ackno">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="ackno.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="ackno.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="ackno.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="address.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="address">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="personname"/>
        <xs:group ref="person.ident.mix"/>
        <xs:element ref="street"/>
        <xs:element ref="pob"/>
        <xs:element ref="postcode"/>
        <xs:element ref="city"/>
        <xs:element ref="state"/>
        <xs:element ref="country"/>
        <xs:element ref="phone"/>
        <xs:element ref="fax"/>
        <xs:element ref="email"/>
        <xs:element ref="otheraddr"/>
      </xs:choice>
      <xs:attributeGroup ref="address.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="address.attlist">
    <xs:attributeGroup ref="linespecific.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="address.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="street.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="street">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="street.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="street.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="street.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="pob.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="pob">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="pob.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="pob.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="pob.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="postcode.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="postcode">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="postcode.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="postcode.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="postcode.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="city.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="city">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="city.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="city.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="city.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="state.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="state">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="state.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="state.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="state.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="country.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="country">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="country.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="country.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="country.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="phone.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="phone">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="phone.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="phone.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="phone.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="fax.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="fax">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="fax.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="fax.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="fax.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="otheraddr.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="otheraddr">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="otheraddr.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="otheraddr.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="otheraddr.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="affiliation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="affiliation">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="shortaffil"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="jobtitle"/>
        <xs:element minOccurs="0" ref="orgname"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="orgdiv"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
      </xs:sequence>
      <xs:attributeGroup ref="affiliation.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="affiliation.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="affiliation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="shortaffil.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="shortaffil">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="shortaffil.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="shortaffil.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="shortaffil.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="jobtitle.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="jobtitle">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="jobtitle.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="jobtitle.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="jobtitle.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="orgdiv.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="orgdiv">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="orgdiv.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="orgdiv.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="orgdiv.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="artpagenums.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="artpagenums">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="artpagenums.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="artpagenums.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="artpagenums.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="personname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="personname">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="honorific"/>
        <xs:element ref="firstname"/>
        <xs:element ref="surname"/>
        <xs:element ref="lineage"/>
        <xs:element ref="othername"/>
      </xs:choice>
      <xs:attributeGroup ref="personname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="personname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="personname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="author.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="author">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element ref="personname"/>
          <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="personblurb"/>
          <xs:element ref="email"/>
          <xs:element ref="address"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="author.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="author.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="author.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="authorgroup.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="authorgroup">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="author"/>
        <xs:element ref="editor"/>
        <xs:element ref="collab"/>
        <xs:element ref="corpauthor"/>
        <xs:element ref="othercredit"/>
      </xs:choice>
      <xs:attributeGroup ref="authorgroup.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="authorgroup.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="authorgroup.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="collab.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="collab">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="collabname"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="affiliation"/>
      </xs:sequence>
      <xs:attributeGroup ref="collab.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="collab.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="collab.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="collabname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="collabname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="collabname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="collabname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="collabname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="authorinitials.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="authorinitials">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="authorinitials.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="authorinitials.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="authorinitials.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="confgroup.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="confgroup">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="confdates"/>
        <xs:element ref="conftitle"/>
        <xs:element ref="confnum"/>
        <xs:element ref="address"/>
        <xs:element ref="confsponsor"/>
      </xs:choice>
      <xs:attributeGroup ref="confgroup.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="confgroup.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="confgroup.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="confdates.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="confdates">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="confdates.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="confdates.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="confdates.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="conftitle.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="conftitle">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="conftitle.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="conftitle.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="conftitle.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="confnum.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="confnum">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="confnum.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="confnum.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="confnum.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="confsponsor.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="confsponsor">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="confsponsor.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="confsponsor.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="confsponsor.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="contractnum.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="contractnum">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="contractnum.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="contractnum.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="contractnum.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="contractsponsor.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="contractsponsor">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="contractsponsor.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="contractsponsor.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="contractsponsor.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="copyright.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="copyright">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="year"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder"/>
      </xs:sequence>
      <xs:attributeGroup ref="copyright.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="copyright.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="copyright.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="year.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="year">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="year.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="year.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="year.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="holder.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="holder">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="holder.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="holder.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="holder.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="corpauthor.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="corpauthor">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="corpauthor.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="corpauthor.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="corpauthor.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="corpname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="corpname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="corpname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="corpname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="corpname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="date.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="date">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="date.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="date.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="date.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="edition.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="edition">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="edition.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="edition.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="edition.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="editor.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="editor">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element ref="personname"/>
          <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="personblurb"/>
          <xs:element ref="email"/>
          <xs:element ref="address"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="editor.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="editor.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="editor.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="isbn.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="isbn">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="isbn.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="isbn.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="isbn.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="issn.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="issn">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="issn.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="issn.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="issn.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="biblio.class.attrib">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="uri"/>
          <xs:enumeration value="doi"/>
          <xs:enumeration value="isbn"/>
          <xs:enumeration value="issn"/>
          <xs:enumeration value="libraryofcongress"/>
          <xs:enumeration value="pubnumber"/>
          <xs:enumeration value="other"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otherclass"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="biblioid.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="biblioid">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="biblioid.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="biblioid.attlist">
    <xs:attributeGroup ref="biblio.class.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="biblioid.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="citebiblioid.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="citebiblioid">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="citebiblioid.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="citebiblioid.attlist">
    <xs:attributeGroup ref="biblio.class.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="citebiblioid.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliosource.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bibliosource">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="bibliosource.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bibliosource.attlist">
    <xs:attributeGroup ref="biblio.class.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bibliosource.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliorelation.type.attrib">
    <xs:attribute name="type">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="isversionof"/>
          <xs:enumeration value="hasversion"/>
          <xs:enumeration value="isreplacedby"/>
          <xs:enumeration value="replaces"/>
          <xs:enumeration value="isrequiredby"/>
          <xs:enumeration value="requires"/>
          <xs:enumeration value="ispartof"/>
          <xs:enumeration value="haspart"/>
          <xs:enumeration value="isreferencedby"/>
          <xs:enumeration value="references"/>
          <xs:enumeration value="isformatof"/>
          <xs:enumeration value="hasformat"/>
          <xs:enumeration value="othertype"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="othertype"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliorelation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bibliorelation">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="bibliorelation.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bibliorelation.attlist">
    <xs:attributeGroup ref="biblio.class.attrib"/>
    <xs:attributeGroup ref="bibliorelation.type.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bibliorelation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="bibliocoverage.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="bibliocoverage">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="bibliocoverage.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="bibliocoverage.attlist">
    <xs:attribute name="spatial">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="dcmipoint"/>
          <xs:enumeration value="iso3166"/>
          <xs:enumeration value="dcmibox"/>
          <xs:enumeration value="tgn"/>
          <xs:enumeration value="otherspatial"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otherspatial"/>
    <xs:attribute name="temporal">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="dcmiperiod"/>
          <xs:enumeration value="w3c-dtf"/>
          <xs:enumeration value="othertemporal"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="othertemporal"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="bibliocoverage.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="invpartnumber.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="invpartnumber">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="invpartnumber.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="invpartnumber.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="invpartnumber.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="issuenum.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="issuenum">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="issuenum.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="issuenum.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="issuenum.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="legalnotice.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="legalnotice">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="blockinfo"/>
        <xs:element minOccurs="0" ref="title"/>
        <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
      </xs:sequence>
      <xs:attributeGroup ref="legalnotice.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="legalnotice.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="legalnotice.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="modespec.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="modespec">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="modespec.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="modespec.attlist">
    <xs:attribute name="application" type="notation.class"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="modespec.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="orgname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="orgname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="orgname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="orgname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="corporation"/>
          <xs:enumeration value="nonprofit"/>
          <xs:enumeration value="consortium"/>
          <xs:enumeration value="informal"/>
          <xs:enumeration value="other"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="otherclass"/>
    <xs:attributeGroup ref="orgname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="othercredit.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="othercredit">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element ref="personname"/>
          <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="personblurb"/>
          <xs:element ref="email"/>
          <xs:element ref="address"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="othercredit.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="othercredit.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="othercredit.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="pagenums.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="pagenums">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="pagenums.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="pagenums.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="pagenums.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="contrib.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="contrib">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="contrib.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="contrib.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="contrib.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="firstname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="firstname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="firstname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="firstname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="firstname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="honorific.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="honorific">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="honorific.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="honorific.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="honorific.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="lineage.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="lineage">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="lineage.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="lineage.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="lineage.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="othername.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="othername">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="othername.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="othername.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="othername.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="surname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="surname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="surname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="surname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="surname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="printhistory.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="printhistory">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="para.class"/>
      <xs:attributeGroup ref="printhistory.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="printhistory.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="printhistory.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="productname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="productname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="productname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="productname.attlist">
    <xs:attribute name="class" default="trade">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="service"/>
          <xs:enumeration value="trade"/>
          <xs:enumeration value="registered"/>
          <xs:enumeration value="copyright"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="productname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="productnumber.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="productnumber">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="productnumber.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="productnumber.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="productnumber.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="pubdate.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="pubdate">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="pubdate.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="pubdate.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="pubdate.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="publisher.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="publisher">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="publishername"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
      </xs:sequence>
      <xs:attributeGroup ref="publisher.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="publisher.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="publisher.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="publishername.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="publishername">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="publishername.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="publishername.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="publishername.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="pubsnumber.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="pubsnumber">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="pubsnumber.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="pubsnumber.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="pubsnumber.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="releaseinfo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="releaseinfo">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="releaseinfo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="releaseinfo.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="releaseinfo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revhistory.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="revhistory">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="revision"/>
      </xs:sequence>
      <xs:attributeGroup ref="revhistory.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="revhistory.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="revhistory.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revision.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="revision">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="revnumber"/>
        <xs:element ref="date"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="authorinitials"/>
        <xs:choice minOccurs="0">
          <xs:element ref="revremark"/>
          <xs:element ref="revdescription"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="revision.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="revision.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="revision.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revnumber.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="revnumber">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="revnumber.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="revnumber.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="revnumber.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revremark.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="revremark">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="revremark.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="revremark.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="revremark.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="revdescription.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="revdescription">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="revdescription.mix"/>
      <xs:attributeGroup ref="revdescription.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="revdescription.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="revdescription.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="seriesvolnums.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="seriesvolnums">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="seriesvolnums.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="seriesvolnums.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="seriesvolnums.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="volumenum.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="volumenum">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="volumenum.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="volumenum.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="volumenum.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="accel.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="accel">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="accel.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="accel.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="accel.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="action.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="action">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="action.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="action.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="action.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="application.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="application">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="application.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="application.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="hardware"/>
          <xs:enumeration value="software"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="application.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="classname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="classname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="classname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="classname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="classname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="co.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="co">
    <xs:complexType>
      <xs:attributeGroup ref="co.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="co.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="linkends.attrib"/>
    <xs:attributeGroup ref="idreq.common.attrib"/>
    <xs:attributeGroup ref="co.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="coref.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="coref">
    <xs:complexType>
      <xs:attributeGroup ref="coref.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="coref.attlist">
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="linkendreq.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="coref.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="command.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="command">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="command.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="command.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="command.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="computeroutput.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="computeroutput">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="cptr.char.mix"/>
        <xs:element ref="co"/>
      </xs:choice>
      <xs:attributeGroup ref="computeroutput.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="computeroutput.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="computeroutput.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="database.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="database">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="database.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="database.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="name"/>
          <xs:enumeration value="table"/>
          <xs:enumeration value="field"/>
          <xs:enumeration value="key1"/>
          <xs:enumeration value="key2"/>
          <xs:enumeration value="record"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="database.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="email.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="email">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
      <xs:attributeGroup ref="email.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="email.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="email.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="envar.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="envar">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="envar.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="envar.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="envar.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="errorcode.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="errorcode">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="errorcode.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="errorcode.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="errorcode.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="errorname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="errorname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="errorname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="errorname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="errorname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="errortext.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="errortext">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="errortext.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="errortext.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="errortext.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="errortype.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="errortype">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="errortype.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="errortype.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="errortype.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="filename.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="filename">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="filename.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="filename.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="headerfile"/>
          <xs:enumeration value="partition"/>
          <xs:enumeration value="devicefile"/>
          <xs:enumeration value="libraryfile"/>
          <xs:enumeration value="directory"/>
          <xs:enumeration value="extension"/>
          <xs:enumeration value="symlink"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="path"/>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="filename.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="function.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="function">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="function.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="function.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="function.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="guibutton.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="guibutton">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="guibutton.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="guibutton.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="guibutton.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="guiicon.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="guiicon">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="guiicon.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="guiicon.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="guiicon.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="guilabel.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="guilabel">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="guilabel.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="guilabel.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="guilabel.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="guimenu.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="guimenu">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="guimenu.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="guimenu.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="guimenu.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="guimenuitem.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="guimenuitem">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="guimenuitem.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="guimenuitem.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="guimenuitem.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="guisubmenu.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="guisubmenu">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="guisubmenu.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="guisubmenu.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="guisubmenu.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="hardware.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="hardware">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="hardware.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="hardware.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="hardware.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="interface.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="interface">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="accel"/>
      </xs:choice>
      <xs:attributeGroup ref="interface.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="interface.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="interface.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keycap.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="keycap">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="keycap.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="keycap.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="keycap.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keycode.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="keycode">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="keycode.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="keycode.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="keycode.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keycombo.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="keycombo">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="keycap"/>
        <xs:element ref="keycombo"/>
        <xs:element ref="keysym"/>
        <xs:element ref="mousebutton"/>
      </xs:choice>
      <xs:attributeGroup ref="keycombo.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="keycombo.attlist">
    <xs:attributeGroup ref="keyaction.attrib"/>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="keycombo.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="keysysm.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="keysym">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="keysym.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="keysym.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="keysysm.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="lineannotation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="lineannotation">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="lineannotation.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="lineannotation.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="lineannotation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="literal.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="literal">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="literal.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="literal.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="literal.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="constant.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="constant">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="constant.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="constant.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="limit"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="constant.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="varname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="varname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="varname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="varname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="varname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="markup.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="markup">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="markup.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="markup.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="markup.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="medialabel.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="medialabel">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="medialabel.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="medialabel.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="cartridge"/>
          <xs:enumeration value="cdrom"/>
          <xs:enumeration value="disk"/>
          <xs:enumeration value="tape"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="medialabel.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="menuchoice.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="menuchoice">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="shortcut"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="guibutton"/>
          <xs:element ref="guiicon"/>
          <xs:element ref="guilabel"/>
          <xs:element ref="guimenu"/>
          <xs:element ref="guimenuitem"/>
          <xs:element ref="guisubmenu"/>
          <xs:element ref="interface"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="menuchoice.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="menuchoice.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="menuchoice.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="shortcut.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="shortcut">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="keycap"/>
        <xs:element ref="keycombo"/>
        <xs:element ref="keysym"/>
        <xs:element ref="mousebutton"/>
      </xs:choice>
      <xs:attributeGroup ref="shortcut.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="shortcut.attlist">
    <xs:attributeGroup ref="keyaction.attrib"/>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="shortcut.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="mousebutton.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="mousebutton">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="mousebutton.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="mousebutton.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="mousebutton.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="msgtext.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="msgtext">
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="component.mix"/>
      <xs:attributeGroup ref="msgtext.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="msgtext.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="msgtext.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="option.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="option">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="option.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="option.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="option.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="optional.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="optional">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="optional.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="optional.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="optional.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="parameter.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="parameter">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="parameter.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="parameter.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="command"/>
          <xs:enumeration value="function"/>
          <xs:enumeration value="option"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="parameter.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="prompt.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="prompt">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="smallcptr.char.mix"/>
        <xs:element ref="co"/>
      </xs:choice>
      <xs:attributeGroup ref="prompt.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="prompt.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="prompt.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="property.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="property">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
      <xs:attributeGroup ref="property.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="property.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="property.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="replaceable.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="replaceable">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="link.char.class"/>
        <xs:element ref="optional"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:element ref="co"/>
      </xs:choice>
      <xs:attributeGroup ref="replaceable.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="replaceable.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="command"/>
          <xs:enumeration value="function"/>
          <xs:enumeration value="option"/>
          <xs:enumeration value="parameter"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="replaceable.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="returnvalue.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="returnvalue">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="returnvalue.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="returnvalue.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="returnvalue.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="sgmltag.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="sgmltag">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="sgmltag.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="sgmltag.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="attribute"/>
          <xs:enumeration value="attvalue"/>
          <xs:enumeration value="element"/>
          <xs:enumeration value="endtag"/>
          <xs:enumeration value="emptytag"/>
          <xs:enumeration value="genentity"/>
          <xs:enumeration value="numcharref"/>
          <xs:enumeration value="paramentity"/>
          <xs:enumeration value="pi"/>
          <xs:enumeration value="xmlpi"/>
          <xs:enumeration value="starttag"/>
          <xs:enumeration value="sgmlcomment"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="sgmltag.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="structfield.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="structfield">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="structfield.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="structfield.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="structfield.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="structname.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="structname">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="structname.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="structname.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="structname.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="symbol.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="symbol">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="symbol.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="symbol.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="limit"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="symbol.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="systemitem.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="systemitem">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="cptr.char.mix"/>
        <xs:element ref="acronym"/>
        <xs:element ref="co"/>
      </xs:choice>
      <xs:attributeGroup ref="systemitem.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="systemitem.attlist">
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="constant"/>
          <xs:enumeration value="event"/>
          <xs:enumeration value="eventhandler"/>
          <xs:enumeration value="domainname"/>
          <xs:enumeration value="fqdomainname"/>
          <xs:enumeration value="ipaddress"/>
          <xs:enumeration value="netmask"/>
          <xs:enumeration value="etheraddress"/>
          <xs:enumeration value="groupname"/>
          <xs:enumeration value="library"/>
          <xs:enumeration value="macro"/>
          <xs:enumeration value="osname"/>
          <xs:enumeration value="filesystem"/>
          <xs:enumeration value="resource"/>
          <xs:enumeration value="systemname"/>
          <xs:enumeration value="username"/>
          <xs:enumeration value="newsgroup"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="systemitem.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="token.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="token">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="token.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="token.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="token.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="type.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="type">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
      <xs:attributeGroup ref="type.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="type.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="type.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="userinput.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="userinput">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="cptr.char.mix"/>
        <xs:element ref="co"/>
      </xs:choice>
      <xs:attributeGroup ref="userinput.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="userinput.attlist">
    <xs:attributeGroup ref="moreinfo.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="userinput.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="abbrev.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="abbrev">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
      <xs:attributeGroup ref="abbrev.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="abbrev.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="abbrev.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="acronym.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="acronym">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
      <xs:attributeGroup ref="acronym.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="acronym.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="acronym.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="citation.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="citation">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="citation.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="citation.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="citation.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="citerefentry.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="citerefentry">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="refentrytitle"/>
        <xs:element minOccurs="0" ref="manvolnum"/>
      </xs:sequence>
      <xs:attributeGroup ref="citerefentry.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="citerefentry.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="citerefentry.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="refentrytitle.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="refentrytitle">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="refentrytitle.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="refentrytitle.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="refentrytitle.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="namvolnum.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="manvolnum">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
      <xs:attributeGroup ref="manvolnum.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="manvolnum.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="namvolnum.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="citetitle.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="citetitle">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="citetitle.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="citetitle.attlist">
    <xs:attribute name="pubwork">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="article"/>
          <xs:enumeration value="book"/>
          <xs:enumeration value="chapter"/>
          <xs:enumeration value="part"/>
          <xs:enumeration value="refentry"/>
          <xs:enumeration value="section"/>
          <xs:enumeration value="journal"/>
          <xs:enumeration value="series"/>
          <xs:enumeration value="set"/>
          <xs:enumeration value="manuscript"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="citetitle.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="emphasis.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="emphasis">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="emphasis.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="emphasis.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="emphasis.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="firstterm.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="firstterm">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
      <xs:attributeGroup ref="firstterm.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="firstterm.attlist">
    <xs:attributeGroup ref="linkend.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="firstterm.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="foreignphrase.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="foreignphrase">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="foreignphrase.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="foreignphrase.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="foreignphrase.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="glossterm.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="glossterm">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="glossterm.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="glossterm.attlist">
    <xs:attributeGroup ref="linkend.attrib"/>
    <xs:attribute name="baseform"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="glossterm.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="phrase.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="phrase">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="phrase.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="phrase.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="phrase.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="quote.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="quote">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="quote.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="quote.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="quote.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ssscript.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="subscript">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="link.char.class"/>
        <xs:element ref="emphasis"/>
        <xs:element ref="replaceable"/>
        <xs:element ref="symbol"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="other.char.class"/>
      </xs:choice>
      <xs:attributeGroup ref="subscript.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="subscript.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="ssscript.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="superscript">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="link.char.class"/>
        <xs:element ref="emphasis"/>
        <xs:element ref="replaceable"/>
        <xs:element ref="symbol"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="other.char.class"/>
      </xs:choice>
      <xs:attributeGroup ref="superscript.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="superscript.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="ssscript.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="trademark.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="trademark">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="link.char.class"/>
        <xs:group ref="tech.char.class"/>
        <xs:group ref="base.char.class"/>
        <xs:group ref="other.char.class"/>
        <xs:element ref="inlinegraphic"/>
        <xs:element ref="inlinemediaobject"/>
        <xs:element ref="emphasis"/>
      </xs:choice>
      <xs:attributeGroup ref="trademark.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="trademark.attlist">
    <xs:attribute name="class" default="trade">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="service"/>
          <xs:enumeration value="trade"/>
          <xs:enumeration value="registered"/>
          <xs:enumeration value="copyright"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="trademark.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="wordasword.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="wordasword">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
      <xs:attributeGroup ref="wordasword.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="wordasword.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="wordasword.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="link.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="link">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="link.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="link.attlist">
    <xs:attribute name="endterm" type="xs:IDREF"/>
    <xs:attributeGroup ref="linkendreq.attrib"/>
    <xs:attribute name="type"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="link.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="olink.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="olink">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="olink.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="olink.attlist">
    <xs:attribute name="targetdocent" type="xs:ENTITY"/>
    <xs:attribute name="linkmode" type="xs:IDREF"/>
    <xs:attribute name="localinfo"/>
    <xs:attribute name="type"/>
    <xs:attribute name="targetdoc"/>
    <xs:attribute name="targetptr"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="olink.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ulink.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="ulink">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
      <xs:attributeGroup ref="ulink.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="ulink.attlist">
    <xs:attribute name="url" use="required"/>
    <xs:attribute name="type"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="ulink.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="footnoteref.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="footnoteref">
    <xs:complexType>
      <xs:attributeGroup ref="footnoteref.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="footnoteref.attlist">
    <xs:attributeGroup ref="linkendreq.attrib"/>
    <xs:attributeGroup ref="label.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="footnoteref.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="xref.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="xref">
    <xs:complexType>
      <xs:attributeGroup ref="xref.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="xref.attlist">
    <xs:attribute name="endterm" type="xs:IDREF"/>
    <xs:attributeGroup ref="linkendreq.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="xref.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="anchor.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="anchor">
    <xs:complexType>
      <xs:attributeGroup ref="anchor.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="anchor.attlist">
    <xs:attributeGroup ref="idreq.attrib"/>
    <xs:attributeGroup ref="pagenum.attrib"/>
    <xs:attributeGroup ref="remap.attrib"/>
    <xs:attributeGroup ref="xreflabel.attrib"/>
    <xs:attributeGroup ref="revisionflag.attrib"/>
    <xs:attributeGroup ref="effectivity.attrib"/>
    <xs:attributeGroup ref="anchor.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="beginpage.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="beginpage">
    <xs:complexType>
      <xs:attributeGroup ref="beginpage.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="beginpage.attlist">
    <xs:attributeGroup ref="pagenum.attrib"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="beginpage.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="indexterm.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="indexterm">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="primary"/>
        <xs:choice minOccurs="0">
          <xs:sequence>
            <xs:element ref="secondary"/>
            <xs:choice minOccurs="0">
              <xs:sequence>
                <xs:element ref="tertiary"/>
                <xs:choice minOccurs="0">
                  <xs:element ref="see"/>
                  <xs:element maxOccurs="unbounded" ref="seealso"/>
                </xs:choice>
              </xs:sequence>
              <xs:element ref="see"/>
              <xs:element maxOccurs="unbounded" ref="seealso"/>
            </xs:choice>
          </xs:sequence>
          <xs:element ref="see"/>
          <xs:element maxOccurs="unbounded" ref="seealso"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="indexterm.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="indexterm.attlist">
    <xs:attributeGroup ref="pagenum.attrib"/>
    <xs:attribute name="scope">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="all"/>
          <xs:enumeration value="global"/>
          <xs:enumeration value="local"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="significance" default="normal">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="preferred"/>
          <xs:enumeration value="normal"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="singular"/>
          <xs:enumeration value="startofrange"/>
          <xs:enumeration value="endofrange"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="startref" type="xs:IDREF"/>
    <xs:attribute name="zone" type="xs:IDREFS"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="indexterm.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="primsecter.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="primary">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
      <xs:attributeGroup ref="primary.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="primary.attlist">
    <xs:attribute name="sortas"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="primsecter.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="secondary">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
      <xs:attributeGroup ref="secondary.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="secondary.attlist">
    <xs:attribute name="sortas"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="primsecter.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="tertiary">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
      <xs:attributeGroup ref="tertiary.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="tertiary.attlist">
    <xs:attribute name="sortas"/>
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="primsecter.role.attrib"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="seeseealso.role.attrib">
    <xs:attributeGroup ref="role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="see">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
      <xs:attributeGroup ref="see.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="see.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="seeseealso.role.attrib"/>
  </xs:attributeGroup>
  <xs:element name="seealso">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
      <xs:attributeGroup ref="seealso.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="seealso.attlist">
    <xs:attributeGroup ref="common.attrib"/>
    <xs:attributeGroup ref="seeseealso.role.attrib"/>
  </xs:attributeGroup>
</xs:schema>

