<!DOCTYPE xsd:schema SYSTEM
  "http://www.w3.org/2000/10/XMLSchema.dtd" [

<!ENTITY % p 'xsd:'>
<!ENTITY % s ':xsd'>
<!ENTITY % schemaAttrs "
	xmlns:db	CDATA	#IMPLIED
	xmlns:xml	CDATA	#IMPLIED
	xmlns:tbl	CDATA	#IMPLIED
">
]>

<xsd:schema xmlns:xsd='http://www.w3.org/2000/10/XMLSchema'
  targetNamespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
  xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
  xmlns:xml='http://www.w3.org/XML/1998/namespace'
  elementFormDefault='qualified'>

<!-- ...................................................................... -->
<!-- DocBook XML Schema V4.1.2.3........................................... -->
<!-- ...................................................................... -->
<!-- Copyright 2000, Norman Walsh, Sun Microsystems.  Schema
     derived from DocBook DTD Copyright 1992-2000 HaL Computer....  -->
<!-- ...................................................................... -->
<!-- Entities for module inclusions ....................................... -->

<!--ENTITY % dbhier.redecl.module		"IGNORE"-->
<!--ENTITY % dbhier.redecl2.module	"IGNORE"-->

<!-- ...................................................................... -->
<!-- Entities for element classes ......................................... -->

<!--ENTITY % local.appendix.class ""-->
<xsd:group name='appendix.class'>
  <xsd:choice>
    <xsd:element ref='db:appendix'/>
    <!-- %local.appendix.class; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.article.class ""-->
<xsd:group name='article.class'>
  <xsd:choice>
    <xsd:element ref='db:article'/>
    <!-- %local.article.class; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.book.class ""-->
<xsd:group name='book.class'>
  <xsd:choice>
    <xsd:element ref='db:book'/>
    <!-- %local.book.class; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.chapter.class ""-->
<xsd:group name='chapter.class'>
  <xsd:choice>
    <xsd:element ref='db:chapter'/>
    <!-- %local.chapter.class; -->
  </xsd:choice>
</xsd:group>

<!--ENTITY % local.index.class ""-->
<xsd:group name='index.class'>
  <xsd:choice>
    <xsd:element ref='db:index'/>
    <xsd:element ref='db:setindex'/>
    <!-- %local.index.class; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.refentry.class ""-->
<xsd:group name='refentry.class'>
  <xsd:choice>
    <xsd:element ref='db:refentry'/>
    <!-- %local.refentry.class; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.nav.class ""-->
<xsd:group name='nav.class'>
  <xsd:choice>
    <xsd:element ref='db:toc'/>
    <xsd:element ref='db:lot'/>
    <xsd:element ref='db:index'/>
    <xsd:element ref='db:glossary'/>
    <xsd:element ref='db:bibliography'/>
    <!-- %local.nav.class; -->
  </xsd:choice>
</xsd:group>


<!-- Redeclaration placeholder ............................................ -->

<!-- For redeclaring entities that are declared after this point while
     retaining their references to the entities that are declared before
     this point -->

<!-- Defining rdbhier here makes some buggy XML parsers happy. -->
<!--ENTITY % rdbhier ""-->
<!--%rdbhier;-->

<!-- ...................................................................... -->
<!-- Entities for element mixtures ........................................ -->

<!-- The DocBook TC may produce an official forms module for DocBook. -->
<!-- This PE provides the hook by which it can be inserted into the DTD. -->
<!--ENTITY % forms.hook ""-->

<!--ENTITY % local.divcomponent.mix ""-->
<xsd:group name='divcomponent.mix'>
  <xsd:choice>
    <xsd:group ref='db:list.class'/>
    <xsd:group ref='db:admon.class'/>
    <xsd:group ref='db:linespecific.class'/>
    <xsd:group ref='db:synop.class'/>
    <xsd:group ref='db:para.class'/>
    <xsd:group ref='db:informal.class'/>
    <xsd:group ref='db:formal.class'/>
    <xsd:group ref='db:compound.class'/>
    <xsd:group ref='db:genobj.class'/>
    <xsd:group ref='db:descobj.class'/>
    <xsd:group ref='db:ndxterm.class'/>
    <xsd:element ref='db:beginpage'/>
    <!-- %local.divcomponent.mix; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.refcomponent.mix ""-->
<xsd:group name='refcomponent.mix'>
  <xsd:choice>
    <xsd:group ref='db:list.class'/>
    <xsd:group ref='db:admon.class'/>
    <xsd:group ref='db:linespecific.class'/>
    <xsd:group ref='db:synop.class'/>
    <xsd:group ref='db:para.class'/>
    <xsd:group ref='db:informal.class'/>
    <xsd:group ref='db:formal.class'/>
    <xsd:group ref='db:compound.class'/>
    <xsd:group ref='db:genobj.class'/>
    <xsd:group ref='db:descobj.class'/>
    <xsd:group ref='db:ndxterm.class'/>
    <xsd:element ref='db:beginpage'/>
    <!-- %local.refcomponent.mix; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.indexdivcomponent.mix ""-->
<xsd:group name='indexdivcomponent.mix'>
  <xsd:choice>
    <xsd:element ref='db:itemizedlist'/>
    <xsd:element ref='db:orderedlist'/>
    <xsd:element ref='db:variablelist'/>
    <xsd:element ref='db:simplelist'/>
    <xsd:group ref='db:linespecific.class'/>
    <xsd:group ref='db:synop.class'/>
    <xsd:group ref='db:para.class'/>
    <xsd:group ref='db:informal.class'/>
    <xsd:element ref='db:anchor'/>
    <xsd:element ref='db:remark'/>
    <xsd:group ref='db:link.char.class'/>
    <xsd:element ref='db:beginpage'/>
    <!-- %local.indexdivcomponent.mix; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.refname.char.mix ""-->
<xsd:group name='refname.char.mix'>
  <xsd:choice>
    <!-- #PCDATA -->
    <xsd:group ref='db:tech.char.class'/>
    <!-- %local.refname.char.mix; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.partcontent.mix ""-->
<xsd:group name='partcontent.mix'>
  <xsd:choice>
    <xsd:group ref='db:appendix.class'/>
    <xsd:group ref='db:chapter.class'/>
    <xsd:group ref='db:nav.class'/>
    <xsd:group ref='db:article.class'/>
    <xsd:element ref='db:preface'/>
    <xsd:group ref='db:refentry.class'/>
    <xsd:element ref='db:reference'/>
    <!-- %local.partcontent.mix; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.refinline.char.mix ""-->
<xsd:group name='refinline.char.mix'>
  <xsd:choice>
    <!-- #PCDATA -->
    <xsd:group ref='db:xref.char.class'/>
    <xsd:group ref='db:gen.char.class'/>
    <xsd:group ref='db:link.char.class'/>
    <xsd:group ref='db:tech.char.class'/>
    <xsd:group ref='db:base.char.class'/>
    <xsd:group ref='db:docinfo.char.class'/>
    <xsd:group ref='db:other.char.class'/>
    <xsd:group ref='db:ndxterm.class'/>
    <xsd:element ref='db:beginpage'/>
    <!-- %local.refinline.char.mix; -->
  </xsd:choice>
</xsd:group>


<!--ENTITY % local.refclass.char.mix ""-->
<xsd:group name='refclass.char.mix'>
  <xsd:choice>
    <!-- #PCDATA -->
    <xsd:element ref='db:application'/>
    <!-- %local.refclass.char.mix; -->
  </xsd:choice>
</xsd:group>


<!-- Redeclaration placeholder 2 .......................................... -->

<!-- For redeclaring entities that are declared after this point while
     retaining their references to the entities that are declared before
     this point -->

<!-- Defining rdbhier2 here makes some buggy XML parsers happy. -->
<!--ENTITY % rdbhier2 ""-->
<!--%rdbhier2;-->

<!-- ...................................................................... -->
<!-- Entities for content models .......................................... -->

<xsd:group name='div.title.content'>
  <xsd:sequence>
    <xsd:element ref='db:title'/>
    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
  </xsd:sequence>
</xsd:group>

<xsd:group name='bookcomponent.title.content'>
  <xsd:sequence>
    <xsd:element ref='db:title'/>
    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
  </xsd:sequence>
</xsd:group>

<xsd:group name='sect.title.content'>
  <xsd:sequence>
    <xsd:element ref='db:title'/>
    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
  </xsd:sequence>
</xsd:group>

<xsd:group name='refsect.title.content'>
  <xsd:sequence>
    <xsd:element ref='db:title'/>
    <xsd:element ref='db:subtitle' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:titleabbrev' minOccurs='0' maxOccurs='1'/>
  </xsd:sequence>
</xsd:group>

<xsd:group name='bookcomponent.content'>
  <xsd:choice>
    <xsd:sequence>
      <xsd:choice minOccurs='1' maxOccurs='unbounded'>
        <xsd:group ref='db:divcomponent.mix'/>
      </xsd:choice>
      <xsd:choice>
        <xsd:element ref='db:sect1' minOccurs='0' maxOccurs='unbounded'/>
        <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
        <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
        <xsd:element ref='db:section' minOccurs='0' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:sequence>
    <xsd:choice>
      <xsd:element ref='db:sect1' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:element ref='db:section' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
  </xsd:choice>
  <!-- "((%divcomponent.mix;)+,
         (sect1*|(%refentry.class;)*|simplesect*|section*))
        | (sect1+|(%refentry.class;)+|simplesect+|section+)" -->
</xsd:group>

<!-- ...................................................................... -->
<!-- Set and SetInfo ...................................................... -->

<xsd:attributeGroup name='set.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='set'>
  <xsd:sequence>
    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:setinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:toc' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:book.class' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:setindex' minOccurs='0' maxOccurs='1'/>
  </xsd:sequence>
  <!-- ((%div.title.content;)?, setinfo?, toc?, (%book.class;)+,
		setindex?) -->

  <!-- FPI: SGML formal public identifier -->
  <xsd:attribute name='fpi' type='xsd:string'/>

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:set.role.attrib'/>
  <!-- %local.set.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='setinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='setinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
           the set, in the order of their appearance -->
      <xsd:attribute name='contents' type='xsd:IDREFS'/>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:setinfo.role.attrib'/>
      <!-- %local.setinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Book and BookInfo .................................................... -->

<xsd:attributeGroup name='book.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='book'>
  <xsd:sequence>
    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:bookinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
      <xsd:element ref='db:dedication'/>
      <xsd:element ref='db:toc'/>
      <xsd:element ref='db:lot'/>
      <xsd:element ref='db:glossary'/>
      <xsd:element ref='db:bibliography'/>
      <xsd:element ref='db:preface'/>
      <xsd:group ref='db:chapter.class'/>
      <xsd:element ref='db:reference'/>
      <xsd:element ref='db:part'/>
      <xsd:group ref='db:article.class'/>
      <xsd:group ref='db:appendix.class'/>
      <xsd:group ref='db:index.class'/>
      <xsd:element ref='db:colophon'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- ((%div.title.content;)?, bookinfo?,
 		(dedication | toc | lot
 		| glossary | bibliography | preface
		| %chapter.class; | reference | part
		| %article.class;
 		| %appendix.class;
		| %index.class;
		| colophon)*) -->

  <!-- FPI: SGML formal public identifier -->
  <xsd:attribute name='fpi' type='xsd:string'/>

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:book.role.attrib'/>
  <!-- %local.book.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='bookinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='bookinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
           the set, in the order of their appearance -->
      <xsd:attribute name='contents' type='xsd:IDREFS'/>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:bookinfo.role.attrib'/>
      <!-- %local.bookinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Dedication, ToC, and LoT ............................................. -->

<xsd:attributeGroup name='dedication.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='dedication'>
  <xsd:sequence>
    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:legalnotice.mix' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%sect.title.content;)?, (%legalnotice.mix;)+) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:dedication.role.attrib'/>
  <!-- %local.dedication.attrib -->
</xsd:complexType>

<xsd:attributeGroup name='colophon.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='colophon'>
  <xsd:sequence>
    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:textobject.mix' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%sect.title.content;)?, (%textobject.mix;)+) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:colophon.role.attrib'/>
  <!-- %local.colophon.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='toc.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='toc'>
  <xsd:sequence>
    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:tocfront' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
      <xsd:element ref='db:tocpart'/>
      <xsd:element ref='db:tocchap'/>
    </xsd:choice>
    <xsd:element ref='db:tocback' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%bookcomponent.title.content;)?, tocfront*,
		(tocpart | tocchap)*, tocback*) -->

  <xsd:attributeGroup ref='db:pagenum.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:toc.role.attrib'/>
  <!-- %local.toc.attrib -->
</xsd:complexType>

<xsd:attributeGroup name='tocfront.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='tocfront' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:para.char.mix'/>
  </xsd:choice>
  <!-- (%para.char.mix;)* -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:linkend.attrib'/>
  <xsd:attributeGroup ref='db:pagenum.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:tocfront.role.attrib'/>
  <!-- %local.tocfront.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='tocentry.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='tocentry' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:para.char.mix'/>
  </xsd:choice>
  <!-- (%para.char.mix;)* -->

  <xsd:attributeGroup ref='db:linkend.attrib'/>
  <xsd:attributeGroup ref='db:pagenum.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:tocentry.role.attrib'/>
  <!-- %local.tocentry.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='tocpart.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='tocpart'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+, tocchap*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:tocpart.role.attrib'/>
  <!-- %local.tocpart.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='tocchap.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='tocchap'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:toclevel1' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+, toclevel1*) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:tocchap.role.attrib'/>
  <!-- %local.tocchap.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='toclevel1.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='toclevel1'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:toclevel2' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+, toclevel2*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:toclevel1.role.attrib'/>
  <!-- %local.toclevel1.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='toclevel2.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='toclevel2'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:toclevel3' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+, toclevel3*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:toclevel2.role.attrib'/>
  <!-- %local.toclevel2.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='toclevel3.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='toclevel3'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:toclevel4' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+, toclevel4*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:toclevel3.role.attrib'/>
  <!-- %local.toclevel3.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='toclevel4.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='toclevel4'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:toclevel5' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+, toclevel5*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:toclevel4.role.attrib'/>
  <!-- %local.toclevel4.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='toclevel5.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='toclevel5'>
  <xsd:sequence>
    <xsd:element ref='db:tocentry' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (tocentry+) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:toclevel5.role.attrib'/>
  <!-- %local.toclevel5.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='tocback.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='tocback' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:para.char.mix'/>
  </xsd:choice>
  <!-- (%para.char.mix;)* -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:linkend.attrib'/>
  <xsd:attributeGroup ref='db:pagenum.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:tocback.role.attrib'/>
  <!-- %local.tocback.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='lot.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='lot'>
  <xsd:sequence>
    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:lotentry' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%bookcomponent.title.content;)?, lotentry*) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:lot.role.attrib'/>
  <!-- %local.lot.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='lotentry.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='lotentry' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:para.char.mix'/>
  </xsd:choice>
  <!-- (%para.char.mix;)* -->

  <!-- SrcCredit: Information about the source of the entry,
       as for a list of illustrations -->
  <xsd:attribute name='srccredit' type='xsd:string'/>
  <xsd:attributeGroup ref='db:pagenum.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:linkend.attrib'/>
  <xsd:attributeGroup ref='db:lotentry.role.attrib'/>
  <!-- %local.lotentry.attrib; -->
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->

<xsd:attributeGroup name='appendix.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='appendix'>
  <xsd:sequence>
    <xsd:element ref='db:appendixinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (appendixinfo?,
                     (%bookcomponent.title.content;),
                     (%nav.class;)*,
                     tocchap?,
                     (%bookcomponent.content;),
                     (%nav.class;)*) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:appendix.role.attrib'/>
  <!-- %local.appendix.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='chapter.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='chapter'>
  <xsd:sequence>
    <xsd:element ref='db:chapterinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (chapterinfo?,
                    (%bookcomponent.title.content;),
                    (%nav.class;)*,
                    tocchap?,
                    (%bookcomponent.content;),
                    (%nav.class;)*) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:chapter.role.attrib'/>
  <!-- %local.chapter.attrib; -->
</xsd:complexType>

<!-- Note that Part was to have its content model reduced in V4.1.2.  This
change will not be made after all. -->

<xsd:attributeGroup name='part.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='part'>
  <xsd:sequence>
    <xsd:element ref='db:partinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.title.content'/>
    <xsd:element ref='db:partintro' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:partcontent.mix' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (partinfo?, (%bookcomponent.title.content;), partintro?,
		(%partcontent.mix;)+) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:part.role.attrib'/>
  <!-- %local.part.attrib; -->
</xsd:complexType>

<!--ELEMENT PartIntro (defined below)-->

<xsd:attributeGroup name='preface.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='preface'>
  <xsd:sequence>
    <xsd:element ref='db:prefaceinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (prefaceinfo?,
                    (%bookcomponent.title.content;),
                    (%nav.class;)*,
                    tocchap?,
                    (%bookcomponent.content;),
                    (%nav.class;)*) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:preface.role.attrib'/>
  <!-- %local.preface.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='reference.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='reference'>
  <xsd:sequence>
    <xsd:element ref='db:referenceinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.title.content'/>
    <xsd:element ref='db:partintro' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (referenceinfo?,
                     (%bookcomponent.title.content;), partintro?,
                     (%refentry.class;)+) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:reference.role.attrib'/>
  <!-- %local.reference.attrib; -->
</xsd:complexType>
<!--ELEMENT PartIntro (defined below)-->

<xsd:attributeGroup name='partintro.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='partintro'>
  <xsd:sequence>
    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:bookcomponent.content'/>
  </xsd:sequence>
  <!-- ((%div.title.content;)?, (%bookcomponent.content;)) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <!-- %local.partintro.attrib; -->
  <xsd:attributeGroup ref='db:partintro.role.attrib'/>
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Other Info elements .................................................. -->

<xsd:attributeGroup name='appendixinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='appendixinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:appendixinfo.role.attrib'/>
      <!-- %local.appendixinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='bibliographyinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='bibliographyinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:bibliographyinfo.role.attrib'/>
      <!-- %local.bibliographyinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='chapterinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='chapterinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:chapterinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='glossaryinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='glossaryinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:glossaryinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='indexinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='indexinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:indexinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='setindexinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='setindexinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:setindexinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='partinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='partinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:partinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='prefaceinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='prefaceinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:prefaceinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='refentryinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refentryinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:refentryinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='refsect1info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsect1info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:refsect1info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='refsect2info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsect2info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:refsect2info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='refsect3info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsect3info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:refsect3info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='refsynopsisdivinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsynopsisdivinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:refsynopsisdivinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='referenceinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='referenceinfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:referenceinfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='sect1info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect1info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:sect1info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='sect2info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect2info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:sect2info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='sect3info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect3info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:sect3info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='sect4info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect4info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:sect4info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:attributeGroup name='sect5info.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect5info'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:sect5info.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Section (parallel to Sect*) ......................................... -->

<xsd:attributeGroup name='section.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='section'>
  <xsd:sequence>
    <xsd:element ref='db:sectioninfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:choice>
          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:section' minOccurs='0' maxOccurs='unbounded'/>
        </xsd:choice>
      </xsd:sequence>
      <xsd:choice>
        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:section' minOccurs='1' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:choice>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (sectioninfo?,
			(%sect.title.content;),
			(%nav.class;)*,
			(((%divcomponent.mix;)+,
 			  ((%refentry.class;)*|section*))
			 | (%refentry.class;)+|section+),
			(%nav.class;)*) -->

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:section.role.attrib'/>
  <!-- %local.section.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='sectioninfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sectioninfo'>
  <xsd:complexContent>
    <xsd:extension base='db:infoContentModel'>
      <xsd:attributeGroup ref='db:common.attrib'/>
      <xsd:attributeGroup ref='db:sectioninfo.role.attrib'/>
      <!-- %local.chapterinfo.attrib; -->
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->

<xsd:attributeGroup name='sect1.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect1'>
  <xsd:sequence>
    <xsd:element ref='db:sect1info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:choice>
          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:sect2' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
        </xsd:choice>
      </xsd:sequence>
      <xsd:choice>
        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:sect2' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:choice>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (sect1info?, (%sect.title.content;), (%nav.class;)*,
		(((%divcomponent.mix;)+,
		((%refentry.class;)* | sect2* | simplesect*))
		| (%refentry.class;)+ | sect2+ | simplesect+), (%nav.class;)*)
   -->

  <!-- Renderas: Indicates the format in which the heading should
       appear -->
  <xsd:attribute name='renderas'>
    <xsd:simpleType>
      <xsd:restriction base='xsd:string'>
        <xsd:enumeration value='sect2'/>
        <xsd:enumeration value='sect3'/>
        <xsd:enumeration value='sect4'/>
        <xsd:enumeration value='sect5'/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:sect1.role.attrib'/>
  <!-- %local.sect1.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='sect2.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect2'>
  <xsd:sequence>
    <xsd:element ref='db:sect2info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:choice>
          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:sect3' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
        </xsd:choice>
      </xsd:sequence>
      <xsd:choice>
        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:sect3' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:choice>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (sect2info?, (%sect.title.content;), (%nav.class;)*,
		(((%divcomponent.mix;)+,
		((%refentry.class;)* | sect3* | simplesect*))
		| (%refentry.class;)+ | sect3+ | simplesect+), (%nav.class;)*)
   -->

  <!-- Renderas: Indicates the format in which the heading should
       appear -->
  <xsd:attribute name='renderas'>
    <xsd:simpleType>
      <xsd:restriction base='xsd:string'>
        <xsd:enumeration value='sect1'/>
        <xsd:enumeration value='sect3'/>
        <xsd:enumeration value='sect4'/>
        <xsd:enumeration value='sect5'/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:sect2.role.attrib'/>
  <!-- %local.sect2.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='sect3.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect3'>
  <xsd:sequence>
    <xsd:element ref='db:sect3info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:choice>
          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:sect4' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
        </xsd:choice>
      </xsd:sequence>
      <xsd:choice>
        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:sect4' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:choice>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (sect3info?, (%sect.title.content;), (%nav.class;)*,
		(((%divcomponent.mix;)+,
		((%refentry.class;)* | sect4* | simplesect*))
		| (%refentry.class;)+ | sect4+ | simplesect+), (%nav.class;)*) -->

  <!-- Renderas: Indicates the format in which the heading should
       appear -->
  <xsd:attribute name='renderas'>
    <xsd:simpleType>
      <xsd:restriction base='xsd:string'>
        <xsd:enumeration value='sect1'/>
        <xsd:enumeration value='sect2'/>
        <xsd:enumeration value='sect4'/>
        <xsd:enumeration value='sect5'/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:sect3.role.attrib'/>
  <!-- %local.sect3.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='sect4.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect4'>
  <xsd:sequence>
    <xsd:element ref='db:sect4info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:choice>
          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:sect5' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
        </xsd:choice>
      </xsd:sequence>
      <xsd:choice>
        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:sect5' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:choice>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (sect4info?, (%sect.title.content;), (%nav.class;)*,
		(((%divcomponent.mix;)+,
		((%refentry.class;)* | sect5* | simplesect*))
		| (%refentry.class;)+ | sect5+ | simplesect+), (%nav.class;)*) -->

  <!-- Renderas: Indicates the format in which the heading should
       appear -->
  <xsd:attribute name='renderas'>
    <xsd:simpleType>
      <xsd:restriction base='xsd:string'>
        <xsd:enumeration value='sect1'/>
        <xsd:enumeration value='sect2'/>
        <xsd:enumeration value='sect3'/>
        <xsd:enumeration value='sect5'/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:sect4.role.attrib'/>
  <!-- %local.sect4.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='sect5.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='sect5'>
  <xsd:sequence>
    <xsd:element ref='db:sect5info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:choice>
          <xsd:group ref='db:refentry.class' minOccurs='0' maxOccurs='unbounded'/>
          <xsd:element ref='db:simplesect' minOccurs='0' maxOccurs='unbounded'/>
        </xsd:choice>
      </xsd:sequence>
      <xsd:choice>
        <xsd:group ref='db:refentry.class' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:simplesect' minOccurs='1' maxOccurs='unbounded'/>
      </xsd:choice>
    </xsd:choice>
    <xsd:group ref='db:nav.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (sect5info?, (%sect.title.content;), (%nav.class;)*,
		(((%divcomponent.mix;)+, ((%refentry.class;)* | simplesect*))
		| (%refentry.class;)+ | simplesect+), (%nav.class;)*) -->

  <!-- Renderas: Indicates the format in which the heading should
       appear -->
  <xsd:attribute name='renderas'>
    <xsd:simpleType>
      <xsd:restriction base='xsd:string'>
        <xsd:enumeration value='sect1'/>
        <xsd:enumeration value='sect2'/>
        <xsd:enumeration value='sect3'/>
        <xsd:enumeration value='sect4'/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>

  <xsd:attributeGroup ref='db:label.attrib'/>
  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:sect5.role.attrib'/>
  <!-- %local.sect5.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='simplesect.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='simplesect'>
  <xsd:sequence>
    <xsd:group ref='db:sect.title.content'/>
    <xsd:group ref='db:divcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%sect.title.content;), (%divcomponent.mix;)+) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:simplesect.role.attrib'/>
  <!-- %local.simplesect.attrib; -->
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Bibliography ......................................................... -->

<xsd:attributeGroup name='bibliography.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='bibliography'>
  <xsd:sequence>
    <xsd:element ref='db:bibliographyinfo' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:element ref='db:bibliodiv' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:choice minOccurs='1' maxOccurs='unbounded'>
        <xsd:element ref='db:biblioentry'/>
        <xsd:element ref='db:bibliomixed'/>
      </xsd:choice>
    </xsd:choice>
  </xsd:sequence>
  <!-- (bibliographyinfo?,
                        (%bookcomponent.title.content;)?,
                        (%component.mix;)*,
                        (bibliodiv+ | (biblioentry|bibliomixed)+)) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:bibliography.role.attrib'/>
  <!-- %local.bibliography.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='bibliodiv.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='bibliodiv'>
  <xsd:sequence>
    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice minOccurs='1' maxOccurs='unbounded'>
      <xsd:element ref='db:biblioentry'/>
      <xsd:element ref='db:bibliomixed'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- ((%sect.title.content;)?, (%component.mix;)*,
		(biblioentry|bibliomixed)+) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:bibliodiv.role.attrib'/>
  <!-- %local.bibliodiv.attrib; -->
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Glossary ............................................................. -->

<xsd:attributeGroup name='glossary.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='glossary'>
  <xsd:sequence>
    <xsd:element ref='db:glossaryinfo' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:element ref='db:glossdiv' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:element ref='db:glossentry' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
    <xsd:element ref='db:bibliography' minOccurs='0' maxOccurs='1'/>
  </xsd:sequence>
  <!-- (glossaryinfo?,
                    (%bookcomponent.title.content;)?,
                    (%component.mix;)*,
                    (glossdiv+ | glossentry+), bibliography?) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:glossary.role.attrib'/>
  <!-- %local.glossary.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='glossdiv.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='glossdiv'>
  <xsd:sequence>
    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:element ref='db:glossentry' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%sect.title.content;), (%component.mix;)*,
		glossentry+) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:glossdiv.role.attrib'/>
  <!-- %local.glossdiv.attrib; -->
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Index and SetIndex ................................................... -->

<xsd:attributeGroup name='indexes.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='index'>
  <xsd:sequence>
    <xsd:element ref='db:indexinfo' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:element ref='db:indexdiv' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:element ref='db:indexentry' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- (indexinfo?,
                 (%bookcomponent.title.content;)?,
                 (%component.mix;)*,
                 (indexdiv* | indexentry*)) -->
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:indexes.role.attrib'/>
  <!-- %local.indexes.attrib; -->
</xsd:complexType>

<xsd:complexType name='setindex'>
  <xsd:sequence>
    <xsd:element ref='db:setindexinfo' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:group ref='db:bookcomponent.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:choice>
      <xsd:element ref='db:indexdiv' minOccurs='1' maxOccurs='unbounded'/>
      <xsd:element ref='db:indexentry' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- (setindexinfo?,
                    (%bookcomponent.title.content;)?,
                    (%component.mix;)*, (indexdiv* | indexentry*)) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:indexes.role.attrib'/>
  <!-- %local.indexes.attrib; -->
</xsd:complexType>

<!-- SegmentedList in this content is useful for marking up permuted
     indices. -->

<xsd:attributeGroup name='indexdiv.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='indexdiv'>
  <xsd:sequence>
    <xsd:group ref='db:sect.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:sequence>
      <xsd:group ref='db:indexdivcomponent.mix' minOccurs='0' maxOccurs='unbounded'/>
      <xsd:element ref='db:indexentry' minOccurs='0' maxOccurs='unbounded'/>
      <xsd:element ref='db:segmentedlist'/>
    </xsd:sequence>
  </xsd:sequence>
  <!-- ((%sect.title.content;)?, ((%indexdivcomponent.mix;)*,
		(indexentry+ | segmentedlist))) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:indexdiv.role.attrib'/>
  <!-- %local.indexdiv.attrib; -->
</xsd:complexType>

<!-- Index entries appear in the index, not the text. -->

<xsd:attributeGroup name='indexentry.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='indexentry'>
  <xsd:sequence>
    <xsd:element ref='db:primaryie'/>
    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
      <xsd:element ref='db:seeie'/>
      <xsd:element ref='db:seealsoie'/>
    </xsd:choice>
    <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
      <xsd:element ref='db:secondaryie'/>
      <xsd:choice minOccurs='0' maxOccurs='unbounded'>
        <xsd:element ref='db:seeie'/>
        <xsd:element ref='db:seealsoie'/>
        <xsd:element ref='db:tertiaryie'/>
      </xsd:choice>
    </xsd:sequence>
  </xsd:sequence>
  <!-- (primaryie, (seeie|seealsoie)*,
		(secondaryie, (seeie|seealsoie|tertiaryie)*)*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:indexentry.role.attrib'/>
  <!-- %local.indexentry.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='primsecterie.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='primaryie' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:ndxterm.char.mix'/>
  </xsd:choice>
  <!-- (%ndxterm.char.mix;)* -->

  <!-- to IndexTerms that these entries represent -->
  <!-- FIXME: constrain -->

  <xsd:attributeGroup ref='db:linkends.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:primsecterie.role.attrib'/>
  <!-- %local.primsecterie.attrib; -->
</xsd:complexType>

<xsd:complexType name='secondaryie' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:ndxterm.char.mix'/>
  </xsd:choice>
  <!-- (%ndxterm.char.mix;)* -->

  <!-- to IndexTerms that these entries represent -->
  <!-- FIXME: constrain -->

  <xsd:attributeGroup ref='db:linkends.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:primsecterie.role.attrib'/>
  <!-- %local.primsecterie.attrib; -->
</xsd:complexType>

<xsd:complexType name='tertiaryie' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:ndxterm.char.mix'/>
  </xsd:choice>
  <!-- (%ndxterm.char.mix;)* -->

  <!-- to IndexTerms that these entries represent -->
  <!-- FIXME: constrain -->

  <xsd:attributeGroup ref='db:linkends.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:primsecterie.role.attrib'/>
  <!-- %local.primsecterie.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='seeie.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='seeie' mixed='true'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:ndxterm.char.mix'/>
  </xsd:choice>
  <!-- (%ndxterm.char.mix;)* -->

  <!-- to IndexEntry to look up -->
  <!-- FIXME: constrain -->

  <xsd:attributeGroup ref='db:linkend.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:seeie.role.attrib'/>
  <!-- %local.seeie.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='seealsoie.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='seealsoie'>
  <xsd:choice minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:ndxterm.char.mix'/>
  </xsd:choice>
  <!-- (%ndxterm.char.mix;)* -->

  <!-- to related IndexEntries -->
  <!-- FIXME: constrain -->

  <xsd:attributeGroup ref='db:linkends.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:seealsoie.role.attrib'/>
  <!-- %local.seealsoie.attrib; -->
</xsd:complexType>

<!-- ...................................................................... -->
<!-- RefEntry ............................................................. -->

<xsd:attributeGroup name='refentry.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refentry'>
  <xsd:sequence>
    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:element ref='db:refentryinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:refmeta' minOccurs='0' maxOccurs='1'/>
    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
      <xsd:element ref='db:remark'/>
      <xsd:group ref='db:link.char.class'/>
    </xsd:choice>
    <xsd:element ref='db:refnamediv'/>
    <xsd:element ref='db:refsynopsisdiv' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:refsect1' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%ndxterm.class;)*,
                    refentryinfo?, refmeta?, (remark|%link.char.class;)*,
                    refnamediv, refsynopsisdiv?, refsect1+) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refentry.role.attrib'/>
  <!-- %local.refentry.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refmeta.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refmeta'>
  <xsd:sequence>
    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:element ref='db:refentrytitle'/>
    <xsd:element ref='db:manvolnum' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:refmiscinfo' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- ((%ndxterm.class;)*,
                   refentrytitle, manvolnum?, refmiscinfo*,
                   (%ndxterm.class;)*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refmeta.role.attrib'/>
  <!-- %local.refmeta.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refmiscinfo.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refmiscinfo' mixed='true'>
  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:docinfo.char.mix'/>
  </xsd:sequence>
  <!-- (%docinfo.char.mix;)* -->

  <!-- Class: Freely assignable parameter; no default -->
  <xsd:attribute name='class' type='xsd:string'/>

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refmiscinfo.role.attrib'/>
  <!-- %local.refmiscinfo.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refnamediv.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refnamediv'>
  <xsd:sequence>
    <xsd:element ref='db:refdescriptor' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:refname' minOccurs='1' maxOccurs='unbounded'/>
    <xsd:element ref='db:refpurpose'/>
    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
      <xsd:element ref='db:remark'/>
      <xsd:group ref='db:link.char.class'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- (refdescriptor?, refname+, refpurpose, refclass*,
		(remark|%link.char.class;)*) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refnamediv.role.attrib'/>
  <!-- %local.refnamediv.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refdescriptor.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refdescriptor' mixed='true'>
  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:refname.char.mix'/>
  </xsd:sequence>
  <!-- (%refname.char.mix;)* -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refdescriptor.role.attrib'/>
  <!-- %local.refdescriptor.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refname.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refname' mixed='true'>
  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:refname.char.mix'/>
  </xsd:sequence>
  <!-- (%refname.char.mix;)* -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refname.role.attrib'/>
  <!-- %local.refname.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refpurpose.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refpurpose' mixed='true'>
  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:refinline.char.mix'/>
  </xsd:sequence>
  <!-- (%refinline.char.mix;)* -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refpurpose.role.attrib'/>
  <!-- %local.refpurpose.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refclass.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refclass' mixed='true'>
  <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
    <xsd:group ref='db:refclass.char.mix'/>
  </xsd:sequence>
  <!-- (%refclass.char.mix;)* -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refclass.role.attrib'/>
  <!-- %local.refclass.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refsynopsisdiv.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsynopsisdiv'>
  <xsd:sequence>
    <xsd:element ref='db:refsynopsisdivinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:refsect.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:refsect2' minOccurs='0' maxOccurs='unbounded'/>
      </xsd:sequence>
      <xsd:element ref='db:refsect2' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- (refsynopsisdivinfo?, (%refsect.title.content;)?,
		(((%refcomponent.mix;)+, refsect2*) | (refsect2+))) -->

  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refsynopsisdiv.role.attrib'/>
  <!-- %local.refsynopsisdiv.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refsect1.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsect1'>
  <xsd:sequence>
    <xsd:element ref='db:refsect1info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:refsect.title.content'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:refsect2' minOccurs='0' maxOccurs='unbounded'/>
      </xsd:sequence>
      <xsd:element ref='db:refsect2' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- (refsect1info?, (%refsect.title.content;),
		(((%refcomponent.mix;)+, refsect2*) | refsect2+)) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refsect1.role.attrib'/>
  <!-- %local.refsect1.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refsect2.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsect2'>
  <xsd:sequence>
    <xsd:element ref='db:refsect2info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:refsect.title.content'/>
    <xsd:choice>
      <xsd:sequence>
        <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
        <xsd:element ref='db:refsect3' minOccurs='0' maxOccurs='unbounded'/>
      </xsd:sequence>
      <xsd:element ref='db:refsect3' minOccurs='1' maxOccurs='unbounded'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- (refsect2info?, (%refsect.title.content;),
	(((%refcomponent.mix;)+, refsect3*) | refsect3+)) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refsect2.role.attrib'/>
  <!-- %local.refsect2.attrib; -->
</xsd:complexType>

<xsd:attributeGroup name='refsect3.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='refsect3'>
  <xsd:sequence>
    <xsd:element ref='db:refsect3info' minOccurs='0' maxOccurs='1'/>
    <xsd:group ref='db:refsect.title.content'/>
    <xsd:group ref='db:refcomponent.mix' minOccurs='1' maxOccurs='unbounded'/>
  </xsd:sequence>
  <!-- (refsect3info?, (%refsect.title.content;),
	(%refcomponent.mix;)+) -->

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:refsect3.role.attrib'/>
  <!-- %local.refsect3.attrib; -->
</xsd:complexType>

<!-- ...................................................................... -->
<!-- Article .............................................................. -->

<!-- An Article is a chapter-level, stand-alone document that is often,
     but need not be, collected into a Book. -->

<xsd:attributeGroup name='article.role.attrib'>
  <xsd:attributeGroup ref='db:role.attrib'/>
</xsd:attributeGroup>

<xsd:complexType name='article'>
  <xsd:sequence>
    <xsd:group ref='db:div.title.content' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:articleinfo' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:tocchap' minOccurs='0' maxOccurs='1'/>
    <xsd:element ref='db:lot' minOccurs='0' maxOccurs='unbounded'/>
    <xsd:group ref='db:bookcomponent.content'/>
    <xsd:choice minOccurs='0' maxOccurs='unbounded'>
      <xsd:group ref='db:nav.class'/>
      <xsd:group ref='db:appendix.class'/>
      <xsd:element ref='db:ackno'/>
    </xsd:choice>
  </xsd:sequence>
  <!-- ((%div.title.content;)?, articleinfo?, tocchap?, lot*,
			(%bookcomponent.content;),
			((%nav.class;) | (%appendix.class;) | ackno)*) -->

  <!-- Class: Indicates the type of a particular article;
       all articles have the same structure and general purpose.
       No default. -->
  <xsd:attribute name='class'>
    <xsd:simpleType>
      <xsd:restriction base='xsd:string'>
        <xsd:enumeration value='journalarticle'/>
        <xsd:enumeration value='productsheet'/>
        <xsd:enumeration value='whitepaper'/>
        <xsd:enumeration value='techreport'/>
        <xsd:enumeration value='specification'/>
        <xsd:enumeration value='faq'/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>

  <!-- ParentBook: ID of the enclosing Book -->
  <xsd:attribute name='parentbook' type='xsd:IDREF'/>

  <xsd:attributeGroup ref='db:status.attrib'/>
  <xsd:attributeGroup ref='db:common.attrib'/>
  <xsd:attributeGroup ref='db:article.role.attrib'/>
  <!-- %local.article.attrib; -->
</xsd:complexType>

<xsd:element name='appendix' type='db:appendix'/>
<xsd:element name='appendixinfo' type='db:appendixinfo'/>
<xsd:element name='article' type='db:article'/>
<xsd:element name='bibliodiv' type='db:bibliodiv'/>
<xsd:element name='bibliography' type='db:bibliography'/>
<xsd:element name='bibliographyinfo' type='db:bibliographyinfo'/>
<xsd:element name='book' type='db:book'/>
<xsd:element name='bookinfo' type='db:bookinfo'/>
<xsd:element name='chapter' type='db:chapter'/>
<xsd:element name='chapterinfo' type='db:chapterinfo'/>
<xsd:element name='colophon' type='db:colophon'/>
<xsd:element name='dedication' type='db:dedication'/>
<xsd:element name='glossary' type='db:glossary'/>
<xsd:element name='glossaryinfo' type='db:glossaryinfo'/>
<xsd:element name='glossdiv' type='db:glossdiv'/>
<xsd:element name='index' type='db:index'/>
<xsd:element name='indexdiv' type='db:indexdiv'/>
<xsd:element name='indexentry' type='db:indexentry'/>
<xsd:element name='indexinfo' type='db:indexinfo'/>
<xsd:element name='lot' type='db:lot'/>
<xsd:element name='lotentry' type='db:lotentry'/>
<xsd:element name='part' type='db:part'/>
<xsd:element name='partinfo' type='db:partinfo'/>
<xsd:element name='partintro' type='db:partintro'/>
<xsd:element name='preface' type='db:preface'/>
<xsd:element name='prefaceinfo' type='db:prefaceinfo'/>
<xsd:element name='primaryie' type='db:primaryie'/>
<xsd:element name='refclass' type='db:refclass'/>
<xsd:element name='refdescriptor' type='db:refdescriptor'/>
<xsd:element name='refentry' type='db:refentry'/>
<xsd:element name='refentryinfo' type='db:refentryinfo'/>
<xsd:element name='reference' type='db:reference'/>
<xsd:element name='referenceinfo' type='db:referenceinfo'/>
<xsd:element name='refmeta' type='db:refmeta'/>
<xsd:element name='refmiscinfo' type='db:refmiscinfo'/>
<xsd:element name='refname' type='db:refname'/>
<xsd:element name='refnamediv' type='db:refnamediv'/>
<xsd:element name='refpurpose' type='db:refpurpose'/>
<xsd:element name='refsect1' type='db:refsect1'/>
<xsd:element name='refsect1info' type='db:refsect1info'/>
<xsd:element name='refsect2' type='db:refsect2'/>
<xsd:element name='refsect2info' type='db:refsect2info'/>
<xsd:element name='refsect3' type='db:refsect3'/>
<xsd:element name='refsect3info' type='db:refsect3info'/>
<xsd:element name='refsynopsisdiv' type='db:refsynopsisdiv'/>
<xsd:element name='refsynopsisdivinfo' type='db:refsynopsisdivinfo'/>
<xsd:element name='secondaryie' type='db:secondaryie'/>
<xsd:element name='sect1' type='db:sect1'/>
<xsd:element name='sect1info' type='db:sect1info'/>
<xsd:element name='sect2' type='db:sect2'/>
<xsd:element name='sect2info' type='db:sect2info'/>
<xsd:element name='sect3' type='db:sect3'/>
<xsd:element name='sect3info' type='db:sect3info'/>
<xsd:element name='sect4' type='db:sect4'/>
<xsd:element name='sect4info' type='db:sect4info'/>
<xsd:element name='sect5' type='db:sect5'/>
<xsd:element name='sect5info' type='db:sect5info'/>
<xsd:element name='section' type='db:section'/>
<xsd:element name='sectioninfo' type='db:sectioninfo'/>
<xsd:element name='seealsoie' type='db:seealsoie'/>
<xsd:element name='seeie' type='db:seeie'/>
<xsd:element name='set' type='db:set'/>
<xsd:element name='setindex' type='db:setindex'/>
<xsd:element name='setindexinfo' type='db:setindexinfo'/>
<xsd:element name='setinfo' type='db:setinfo'/>
<xsd:element name='simplesect' type='db:simplesect'/>
<xsd:element name='tertiaryie' type='db:tertiaryie'/>
<xsd:element name='toc' type='db:toc'/>
<xsd:element name='tocback' type='db:tocback'/>
<xsd:element name='tocchap' type='db:tocchap'/>
<xsd:element name='tocentry' type='db:tocentry'/>
<xsd:element name='tocfront' type='db:tocfront'/>
<xsd:element name='toclevel1' type='db:toclevel1'/>
<xsd:element name='toclevel2' type='db:toclevel2'/>
<xsd:element name='toclevel3' type='db:toclevel3'/>
<xsd:element name='toclevel4' type='db:toclevel4'/>
<xsd:element name='toclevel5' type='db:toclevel5'/>
<xsd:element name='tocpart' type='db:tocpart'/>

</xsd:schema>

