Click here to Skip to main content
Click here to Skip to main content
Articles » Languages » C# » Applications » Downloads
 
Add your own
alternative version
Go to top

XsdTidy beautifies the Xsd.exe output *with full DocBook .NET Wrapper*

, 1 Mar 2004
Refactors the Xsd.exe classes. Shipped with a full .NET wrapper of DocBook.
xsdtidy_demo.zip
Release
NDocBook.Cons.exe
XsdTidy.dll
xsdtidy_src.zip
XsdTidy
Collections
XsdTidy.csproj.user
NDocBook
NDocBook.Xsd.csproj.user
Xsd
calstbl.xsx
dbcent.xsx
dbhier.xsx
dbnotn.xsx
dbpool.xsx
docbook.xsx
README
NDocBook.Cons
App.ico
NDocBook.Cons.csproj.user
NDocBook.Test
App.ico
NDocBook.Test.csproj.user
<?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>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Jonathan de Halleux
Engineer
United States United States
Jonathan de Halleux is Civil Engineer in Applied Mathematics. He finished his PhD in 2004 in the rainy country of Belgium. After 2 years in the Common Language Runtime (i.e. .net), he is now working at Microsoft Research on Pex (http://research.microsoft.com/pex).

| Advertise | Privacy | Mobile
Web02 | 2.8.140916.1 | Last Updated 2 Mar 2004
Article Copyright 2004 by Jonathan de Halleux
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid