--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
+
+<module moduleVersion="1.2"
+ relaxCoreVersion="1.0"
+ xmlns="http://www.xml.gr.jp/xmlns/relaxCore">
+
+ <interface/>
+
+<!-- ...................................................................... -->
+<!-- DocBook RELAX Schema V4.1.2.1......................................... -->
+<!-- ...................................................................... -->
+<!-- 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 ""-->
+<hedgeRule label='appendix.class'>
+ <choice>
+ <ref label='appendix'/>
+ <!-- %local.appendix.class; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.article.class ""-->
+<hedgeRule label='article.class'>
+ <choice>
+ <ref label='article'/>
+ <!-- %local.article.class; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.book.class ""-->
+<hedgeRule label='book.class'>
+ <choice>
+ <ref label='book'/>
+ <!-- %local.book.class; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.chapter.class ""-->
+<hedgeRule label='chapter.class'>
+ <choice>
+ <ref label='chapter'/>
+ <!-- %local.chapter.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.index.class ""-->
+<hedgeRule label='index.class'>
+ <choice>
+ <ref label='index'/>
+ <ref label='setindex'/>
+ <!-- %local.index.class; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.refentry.class ""-->
+<hedgeRule label='refentry.class'>
+ <choice>
+ <ref label='refentry'/>
+ <!-- %local.refentry.class; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.nav.class ""-->
+<hedgeRule label='nav.class'>
+ <choice>
+ <ref label='toc'/>
+ <ref label='lot'/>
+ <ref label='index'/>
+ <ref label='glossary'/>
+ <ref label='bibliography'/>
+ <!-- %local.nav.class; -->
+ </choice>
+</hedgeRule>
+
+
+<!-- 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 ""-->
+<hedgeRule label='divcomponent.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <hedgeRef label='compound.class'/>
+ <hedgeRef label='genobj.class'/>
+ <hedgeRef label='descobj.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.divcomponent.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.refcomponent.mix ""-->
+<hedgeRule label='refcomponent.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <hedgeRef label='compound.class'/>
+ <hedgeRef label='genobj.class'/>
+ <hedgeRef label='descobj.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.refcomponent.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.indexdivcomponent.mix ""-->
+<hedgeRule label='indexdivcomponent.mix'>
+ <choice>
+ <ref label='itemizedlist'/>
+ <ref label='orderedlist'/>
+ <ref label='variablelist'/>
+ <ref label='simplelist'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <ref label='anchor'/>
+ <ref label='remark'/>
+ <hedgeRef label='link.char.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.indexdivcomponent.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.refname.char.mix ""-->
+<hedgeRule label='refname.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='tech.char.class'/>
+ <!-- %local.refname.char.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.partcontent.mix ""-->
+<hedgeRule label='partcontent.mix'>
+ <choice>
+ <hedgeRef label='appendix.class'/>
+ <hedgeRef label='chapter.class'/>
+ <hedgeRef label='nav.class'/>
+ <hedgeRef label='article.class'/>
+ <ref label='preface'/>
+ <hedgeRef label='refentry.class'/>
+ <ref label='reference'/>
+ <!-- %local.partcontent.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.refinline.char.mix ""-->
+<hedgeRule label='refinline.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='xref.char.class'/>
+ <hedgeRef label='gen.char.class'/>
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='tech.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='docinfo.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.refinline.char.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!--ENTITY % local.refclass.char.mix ""-->
+<hedgeRule label='refclass.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <ref label='application'/>
+ <!-- %local.refclass.char.mix; -->
+ </choice>
+</hedgeRule>
+
+
+<!-- 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 .......................................... -->
+
+<hedgeRule label='div.title.content'>
+ <sequence>
+ <ref label='title'/>
+ <ref label='subtitle' occurs='?'/>
+ <ref label='titleabbrev' occurs='?'/>
+ </sequence>
+</hedgeRule>
+
+<hedgeRule label='bookcomponent.title.content'>
+ <sequence>
+ <ref label='title'/>
+ <ref label='subtitle' occurs='?'/>
+ <ref label='titleabbrev' occurs='?'/>
+ </sequence>
+</hedgeRule>
+
+<hedgeRule label='sect.title.content'>
+ <sequence>
+ <ref label='title'/>
+ <ref label='subtitle' occurs='?'/>
+ <ref label='titleabbrev' occurs='?'/>
+ </sequence>
+</hedgeRule>
+
+<hedgeRule label='refsect.title.content'>
+ <sequence>
+ <ref label='title'/>
+ <ref label='subtitle' occurs='?'/>
+ <ref label='titleabbrev' occurs='?'/>
+ </sequence>
+</hedgeRule>
+
+<hedgeRule label='bookcomponent.content'>
+ <choice>
+ <sequence>
+ <choice occurs='+'>
+ <hedgeRef label='divcomponent.mix'/>
+ </choice>
+ <choice>
+ <ref label='sect1' occurs='*'/>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='simplesect' occurs='*'/>
+ <ref label='section' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <ref label='sect1' occurs='+'/>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='simplesect' occurs='+'/>
+ <ref label='section' occurs='+'/>
+ </choice>
+ </choice>
+ <!-- "((%divcomponent.mix;)+,
+ (sect1*|(%refentry.class;)*|simplesect*|section*))
+ | (sect1+|(%refentry.class;)+|simplesect+|section+)" -->
+</hedgeRule>
+
+<!-- ...................................................................... -->
+<!-- Set and SetInfo ...................................................... -->
+
+<attPool role='set.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='set'>
+ <sequence>
+ <hedgeRef label='div.title.content' occurs='?'/>
+ <ref label='setinfo' occurs='?'/>
+ <ref label='toc' occurs='?'/>
+ <hedgeRef label='book.class' occurs='+'/>
+ <ref label='setindex' occurs='?'/>
+ </sequence>
+ <!-- ((%div.title.content;)?, setinfo?, toc?, (%book.class;)+,
+ setindex?) -->
+</elementRule>
+
+<tag name='set'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='set.role.attrib'/>
+ <!-- %local.set.attrib; -->
+
+ <!-- FPI: SGML formal public identifier -->
+ <attribute name='fpi' type='string'/>
+</tag>
+
+<attPool role='setinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='setinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='setinfo'>
+ <ref role='common.attrib'/>
+ <ref role='setinfo.role.attrib'/>
+ <!-- %local.setinfo.attrib; -->
+
+ <!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance -->
+ <attribute name='contents' type='IDREFS'/>
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Book and BookInfo .................................................... -->
+
+<attPool role='book.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='book'>
+ <sequence>
+ <hedgeRef label='div.title.content' occurs='?'/>
+ <ref label='bookinfo' occurs='?'/>
+ <choice occurs='*'>
+ <ref label='dedication'/>
+ <ref label='toc'/>
+ <ref label='lot'/>
+ <ref label='glossary'/>
+ <ref label='bibliography'/>
+ <ref label='preface'/>
+ <hedgeRef label='chapter.class'/>
+ <ref label='reference'/>
+ <ref label='part'/>
+ <hedgeRef label='article.class'/>
+ <hedgeRef label='appendix.class'/>
+ <hedgeRef label='index.class'/>
+ <ref label='colophon'/>
+ </choice>
+ </sequence>
+ <!-- ((%div.title.content;)?, bookinfo?,
+ (dedication | toc | lot
+ | glossary | bibliography | preface
+ | %chapter.class; | reference | part
+ | %article.class;
+ | %appendix.class;
+ | %index.class;
+ | colophon)*) -->
+</elementRule>
+
+<tag name='book'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='book.role.attrib'/>
+ <!-- %local.book.attrib; -->
+
+ <!-- FPI: SGML formal public identifier -->
+ <attribute name='fpi' type='string'/>
+</tag>
+
+<attPool role='bookinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bookinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='bookinfo'>
+ <ref role='common.attrib'/>
+ <ref role='bookinfo.role.attrib'/>
+ <!-- %local.bookinfo.attrib; -->
+ <!-- Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance -->
+ <attribute name='contents' type='IDREFS'/>
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Dedication, ToC, and LoT ............................................. -->
+
+<attPool role='dedication.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='dedication'>
+ <sequence>
+ <hedgeRef label='sect.title.content' occurs='?'/>
+ <hedgeRef label='legalnotice.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%sect.title.content;)?, (%legalnotice.mix;)+) -->
+</elementRule>
+
+<tag name='dedication'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='dedication.role.attrib'/>
+ <!-- %local.dedication.attrib; -->
+</tag>
+
+<attPool role='colophon.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='colophon'>
+ <sequence>
+ <hedgeRef label='sect.title.content' occurs='?'/>
+ <hedgeRef label='textobject.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%sect.title.content;)?, (%textobject.mix;)+) -->
+</elementRule>
+
+<tag name='colophon'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='colophon.role.attrib'/>
+ <!-- %local.colophon.attrib; -->
+</tag>
+
+<attPool role='toc.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='toc'>
+ <sequence>
+ <hedgeRef label='bookcomponent.title.content' occurs='?'/>
+ <ref label='tocfront' occurs='*'/>
+ <choice occurs='*'>
+ <ref label='tocpart'/>
+ <ref label='tocchap'/>
+ </choice>
+ <ref label='tocback' occurs='*'/>
+ </sequence>
+ <!-- ((%bookcomponent.title.content;)?, tocfront*,
+ (tocpart | tocchap)*, tocback*) -->
+</elementRule>
+
+<tag name='toc'>
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='toc.role.attrib'/>
+ <!-- %local.toc.attrib; -->
+</tag>
+
+<attPool role='tocfront.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='tocfront'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='tocfront'>
+ <ref role='label.attrib'/>
+ <ref role='linkend.attrib'/>
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='tocfront.role.attrib'/>
+ <!-- %local.tocfront.attrib; -->
+</tag>
+
+<attPool role='tocentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='tocentry'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='tocentry'>
+ <ref role='linkend.attrib'/>
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='tocentry.role.attrib'/>
+ <!-- %local.tocentry.attrib; -->
+</tag>
+
+<attPool role='tocpart.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='tocpart'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ <ref label='tocchap' occurs='*'/>
+ </sequence>
+ <!-- (tocentry+, tocchap*) -->
+</elementRule>
+
+<tag name='tocpart'>
+ <ref role='common.attrib'/>
+ <ref role='tocpart.role.attrib'/>
+ <!-- %local.tocpart.attrib; -->
+</tag>
+
+<attPool role='tocchap.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='tocchap'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ <ref label='toclevel1' occurs='*'/>
+ </sequence>
+ <!-- (tocentry+, toclevel1*) -->
+</elementRule>
+
+<tag name='tocchap'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='tocchap.role.attrib'/>
+ <!-- %local.tocchap.attrib; -->
+</tag>
+
+<attPool role='toclevel1.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='toclevel1'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ <ref label='toclevel2' occurs='*'/>
+ </sequence>
+ <!-- (tocentry+, toclevel2*) -->
+</elementRule>
+
+<tag name='toclevel1'>
+ <ref role='common.attrib'/>
+ <ref role='toclevel1.role.attrib'/>
+ <!-- %local.toclevel1.attrib; -->
+</tag>
+
+<attPool role='toclevel2.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='toclevel2'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ <ref label='toclevel3' occurs='*'/>
+ </sequence>
+ <!-- (tocentry+, toclevel3*) -->
+</elementRule>
+
+<tag name='toclevel2'>
+ <ref role='common.attrib'/>
+ <ref role='toclevel2.role.attrib'/>
+ <!-- %local.toclevel2.attrib; -->
+</tag>
+
+<attPool role='toclevel3.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='toclevel3'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ <ref label='toclevel4' occurs='*'/>
+ </sequence>
+ <!-- (tocentry+, toclevel4*) -->
+</elementRule>
+
+<tag name='toclevel3'>
+ <ref role='common.attrib'/>
+ <ref role='toclevel3.role.attrib'/>
+ <!-- %local.toclevel3.attrib; -->
+</tag>
+
+<attPool role='toclevel4.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='toclevel4'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ <ref label='toclevel5' occurs='*'/>
+ </sequence>
+ <!-- (tocentry+, toclevel5*) -->
+</elementRule>
+
+<tag name='toclevel4'>
+ <ref role='common.attrib'/>
+ <ref role='toclevel4.role.attrib'/>
+ <!-- %local.toclevel4.attrib; -->
+</tag>
+
+<attPool role='toclevel5.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='toclevel5'>
+ <sequence>
+ <ref label='tocentry' occurs='+'/>
+ </sequence>
+ <!-- (tocentry+) -->
+</elementRule>
+
+<tag name='toclevel5'>
+ <ref role='common.attrib'/>
+ <ref role='toclevel5.role.attrib'/>
+ <!-- %local.toclevel5.attrib; -->
+</tag>
+
+<attPool role='tocback.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='tocback'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='tocback'>
+ <ref role='label.attrib'/>
+ <ref role='linkend.attrib'/>
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='tocback.role.attrib'/>
+ <!-- %local.tocback.attrib; -->
+</tag>
+
+<attPool role='lot.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='lot'>
+ <sequence>
+ <hedgeRef label='bookcomponent.title.content' occurs='?'/>
+ <ref label='lotentry' occurs='*'/>
+ </sequence>
+ <!-- ((%bookcomponent.title.content;)?, lotentry*) -->
+</elementRule>
+
+<tag name='lot'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='lot.role.attrib'/>
+ <!-- %local.lot.attrib; -->
+</tag>
+
+<attPool role='lotentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='lotentry'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='lotentry'>
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='linkend.attrib'/>
+ <ref role='lotentry.role.attrib'/>
+ <!-- %local.lotentry.attrib; -->
+
+ <!-- SrcCredit: Information about the source of the entry,
+ as for a list of illustrations -->
+ <attribute name='srccredit' type='string'/>
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+
+<attPool role='appendix.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='appendix'>
+ <sequence>
+ <ref label='appendixinfo' occurs='?'/>
+ <hedgeRef label='bookcomponent.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <ref label='tocchap' occurs='?'/>
+ <hedgeRef label='bookcomponent.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (appendixinfo?,
+ (%bookcomponent.title.content;),
+ (%nav.class;)*,
+ tocchap?,
+ (%bookcomponent.content;),
+ (%nav.class;)*) -->
+</elementRule>
+
+<tag name='appendix'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='appendix.role.attrib'/>
+ <!-- %local.appendix.attrib; -->
+</tag>
+
+<attPool role='chapter.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='chapter'>
+ <sequence>
+ <ref label='chapterinfo' occurs='?'/>
+ <hedgeRef label='bookcomponent.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <ref label='tocchap' occurs='?'/>
+ <hedgeRef label='bookcomponent.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (chapterinfo?,
+ (%bookcomponent.title.content;),
+ (%nav.class;)*,
+ tocchap?,
+ (%bookcomponent.content;),
+ (%nav.class;)*) -->
+</elementRule>
+
+<tag name='chapter'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='chapter.role.attrib'/>
+ <!-- %local.chapter.attrib; -->
+</tag>
+
+<!-- Note that Part was to have its content model reduced in V4.1.2. This
+change will not be made after all. -->
+
+<attPool role='part.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='part'>
+ <sequence>
+ <ref label='partinfo' occurs='?'/>
+ <hedgeRef label='bookcomponent.title.content'/>
+ <ref label='partintro' occurs='?'/>
+ <hedgeRef label='partcontent.mix' occurs='+'/>
+ </sequence>
+ <!-- (partinfo?, (%bookcomponent.title.content;), partintro?,
+ (%partcontent.mix;)+) -->
+</elementRule>
+
+<tag name='part'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='part.role.attrib'/>
+ <!-- %local.part.attrib; -->
+</tag>
+
+<!--ELEMENT PartIntro (defined below)-->
+
+<attPool role='preface.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='preface'>
+ <sequence>
+ <ref label='prefaceinfo' occurs='?'/>
+ <hedgeRef label='bookcomponent.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <ref label='tocchap' occurs='?'/>
+ <hedgeRef label='bookcomponent.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (prefaceinfo?,
+ (%bookcomponent.title.content;),
+ (%nav.class;)*,
+ tocchap?,
+ (%bookcomponent.content;),
+ (%nav.class;)*) -->
+</elementRule>
+
+<tag name='preface'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='preface.role.attrib'/>
+ <!-- %local.preface.attrib; -->
+</tag>
+
+<attPool role='reference.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='reference'>
+ <sequence>
+ <ref label='referenceinfo' occurs='?'/>
+ <hedgeRef label='bookcomponent.title.content'/>
+ <ref label='partintro' occurs='?'/>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ </sequence>
+ <!-- (referenceinfo?,
+ (%bookcomponent.title.content;), partintro?,
+ (%refentry.class;)+) -->
+</elementRule>
+
+<tag name='reference'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='reference.role.attrib'/>
+ <!-- %local.reference.attrib; -->
+</tag>
+<!--ELEMENT PartIntro (defined below)-->
+
+<attPool role='partintro.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='partintro'>
+ <sequence>
+ <hedgeRef label='div.title.content' occurs='?'/>
+ <hedgeRef label='bookcomponent.content'/>
+ </sequence>
+ <!-- ((%div.title.content;)?, (%bookcomponent.content;)) -->
+</elementRule>
+
+<tag name='partintro'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <!-- %local.partintro.attrib; -->
+ <ref role='partintro.role.attrib'/>
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Other Info elements .................................................. -->
+
+<attPool role='appendixinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='appendixinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='appendixinfo'>
+ <ref role='common.attrib'/>
+ <ref role='appendixinfo.role.attrib'/>
+ <!-- %local.appendixinfo.attrib; -->
+</tag>
+
+<attPool role='bibliographyinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bibliographyinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='bibliographyinfo'>
+ <ref role='common.attrib'/>
+ <ref role='bibliographyinfo.role.attrib'/>
+ <!-- %local.bibliographyinfo.attrib; -->
+</tag>
+
+<attPool role='chapterinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='chapterinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='chapterinfo'>
+ <ref role='common.attrib'/>
+ <ref role='chapterinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='glossaryinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossaryinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='glossaryinfo'>
+ <ref role='common.attrib'/>
+ <ref role='glossaryinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='indexinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='indexinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='indexinfo'>
+ <ref role='common.attrib'/>
+ <ref role='indexinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='setindexinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='setindexinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='setindexinfo'>
+ <ref role='common.attrib'/>
+ <ref role='setindexinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='partinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='partinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='partinfo'>
+ <ref role='common.attrib'/>
+ <ref role='partinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='prefaceinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='prefaceinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='prefaceinfo'>
+ <ref role='common.attrib'/>
+ <ref role='prefaceinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='refentryinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refentryinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='refentryinfo'>
+ <ref role='common.attrib'/>
+ <ref role='refentryinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='refsect1info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsect1info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='refsect1info'>
+ <ref role='common.attrib'/>
+ <ref role='refsect1info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='refsect2info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsect2info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='refsect2info'>
+ <ref role='common.attrib'/>
+ <ref role='refsect2info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='refsect3info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsect3info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='refsect3info'>
+ <ref role='common.attrib'/>
+ <ref role='refsect3info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='refsynopsisdivinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsynopsisdivinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='refsynopsisdivinfo'>
+ <ref role='common.attrib'/>
+ <ref role='refsynopsisdivinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='referenceinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='referenceinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='referenceinfo'>
+ <ref role='common.attrib'/>
+ <ref role='referenceinfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='sect1info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect1info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='sect1info'>
+ <ref role='common.attrib'/>
+ <ref role='sect1info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='sect2info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect2info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='sect2info'>
+ <ref role='common.attrib'/>
+ <ref role='sect2info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='sect3info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect3info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='sect3info'>
+ <ref role='common.attrib'/>
+ <ref role='sect3info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='sect4info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect4info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='sect4info'>
+ <ref role='common.attrib'/>
+ <ref role='sect4info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<attPool role='sect5info.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect5info'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='sect5info'>
+ <ref role='common.attrib'/>
+ <ref role='sect5info.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Section (parallel to Sect*) ......................................... -->
+
+<attPool role='section.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='section'>
+ <sequence>
+ <ref label='sectioninfo' occurs='?'/>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='section' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='section' occurs='+'/>
+ </choice>
+ </choice>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (sectioninfo?,
+ (%sect.title.content;),
+ (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)*|section*))
+ | (%refentry.class;)+|section+),
+ (%nav.class;)*) -->
+</elementRule>
+
+<tag name='section'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='section.role.attrib'/>
+ <!-- %local.section.attrib; -->
+</tag>
+
+<attPool role='sectioninfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sectioninfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='sectioninfo'>
+ <ref role='common.attrib'/>
+ <ref role='sectioninfo.role.attrib'/>
+ <!-- %local.chapterinfo.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+
+<attPool role='sect1.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect1'>
+ <sequence>
+ <ref label='sect1info' occurs='?'/>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='sect2' occurs='*'/>
+ <ref label='simplesect' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='sect2' occurs='+'/>
+ <ref label='simplesect' occurs='+'/>
+ </choice>
+ </choice>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (sect1info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect2* | simplesect*))
+ | (%refentry.class;)+ | sect2+ | simplesect+), (%nav.class;)*)
+ -->
+</elementRule>
+
+<tag name='sect1'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='sect1.role.attrib'/>
+ <!-- %local.sect1.attrib; -->
+
+ <!-- Renderas: Indicates the format in which the heading should
+ appear -->
+ <attribute name='renderas' type='NMTOKEN'>
+ <enumeration value='sect2'/>
+ <enumeration value='sect3'/>
+ <enumeration value='sect4'/>
+ <enumeration value='sect5'/>
+ </attribute>
+</tag>
+
+<attPool role='sect2.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect2'>
+ <sequence>
+ <ref label='sect2info' occurs='?'/>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='sect3' occurs='*'/>
+ <ref label='simplesect' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='sect3' occurs='+'/>
+ <ref label='simplesect' occurs='+'/>
+ </choice>
+ </choice>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (sect2info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect3* | simplesect*))
+ | (%refentry.class;)+ | sect3+ | simplesect+), (%nav.class;)*)
+ -->
+</elementRule>
+
+<tag name='sect2'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='sect2.role.attrib'/>
+ <!-- %local.sect2.attrib; -->
+
+ <!-- Renderas: Indicates the format in which the heading should
+ appear -->
+ <attribute name='renderas' type='NMTOKEN'>
+ <enumeration value='sect1'/>
+ <enumeration value='sect3'/>
+ <enumeration value='sect4'/>
+ <enumeration value='sect5'/>
+ </attribute>
+</tag>
+
+<attPool role='sect3.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect3'>
+ <sequence>
+ <ref label='sect3info' occurs='?'/>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='sect4' occurs='*'/>
+ <ref label='simplesect' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='sect4' occurs='+'/>
+ <ref label='simplesect' occurs='+'/>
+ </choice>
+ </choice>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (sect3info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect4* | simplesect*))
+ | (%refentry.class;)+ | sect4+ | simplesect+), (%nav.class;)*) -->
+</elementRule>
+
+<tag name='sect3'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='sect3.role.attrib'/>
+ <!-- %local.sect3.attrib; -->
+
+ <!-- Renderas: Indicates the format in which the heading should
+ appear -->
+ <attribute name='renderas' type='NMTOKEN'>
+ <enumeration value='sect1'/>
+ <enumeration value='sect2'/>
+ <enumeration value='sect4'/>
+ <enumeration value='sect5'/>
+ </attribute>
+</tag>
+
+<attPool role='sect4.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect4'>
+ <sequence>
+ <ref label='sect4info' occurs='?'/>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='sect5' occurs='*'/>
+ <ref label='simplesect' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='sect5' occurs='+'/>
+ <ref label='simplesect' occurs='+'/>
+ </choice>
+ </choice>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (sect4info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+,
+ ((%refentry.class;)* | sect5* | simplesect*))
+ | (%refentry.class;)+ | sect5+ | simplesect+), (%nav.class;)*) -->
+</elementRule>
+
+<tag name='sect4'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='sect4.role.attrib'/>
+ <!-- %local.sect4.attrib; -->
+
+ <!-- Renderas: Indicates the format in which the heading should
+ appear -->
+ <attribute name='renderas' type='NMTOKEN'>
+ <enumeration value='sect1'/>
+ <enumeration value='sect2'/>
+ <enumeration value='sect3'/>
+ <enumeration value='sect5'/>
+ </attribute>
+</tag>
+
+<attPool role='sect5.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sect5'>
+ <sequence>
+ <ref label='sect5info' occurs='?'/>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='nav.class' occurs='*'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='*'/>
+ <ref label='simplesect' occurs='*'/>
+ </choice>
+ </sequence>
+ <choice>
+ <hedgeRef label='refentry.class' occurs='+'/>
+ <ref label='simplesect' occurs='+'/>
+ </choice>
+ </choice>
+ <hedgeRef label='nav.class' occurs='*'/>
+ </sequence>
+ <!-- (sect5info?, (%sect.title.content;), (%nav.class;)*,
+ (((%divcomponent.mix;)+, ((%refentry.class;)* | simplesect*))
+ | (%refentry.class;)+ | simplesect+), (%nav.class;)*) -->
+</elementRule>
+
+<tag name='sect5'>
+ <ref role='label.attrib'/>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='sect5.role.attrib'/>
+ <!-- %local.sect5.attrib; -->
+
+ <!-- Renderas: Indicates the format in which the heading should
+ appear -->
+ <attribute name='renderas' type='NMTOKEN'>
+ <enumeration value='sect1'/>
+ <enumeration value='sect2'/>
+ <enumeration value='sect3'/>
+ <enumeration value='sect4'/>
+ </attribute>
+</tag>
+
+<attPool role='simplesect.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='simplesect'>
+ <sequence>
+ <hedgeRef label='sect.title.content'/>
+ <hedgeRef label='divcomponent.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%sect.title.content;), (%divcomponent.mix;)+) -->
+</elementRule>
+
+<tag name='simplesect'>
+ <ref role='common.attrib'/>
+ <ref role='simplesect.role.attrib'/>
+ <!-- %local.simplesect.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Bibliography ......................................................... -->
+
+<attPool role='bibliography.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bibliography'>
+ <sequence>
+ <ref label='bibliographyinfo' occurs='*'/>
+ <hedgeRef label='bookcomponent.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <choice>
+ <ref label='bibliodiv' occurs='+'/>
+ <choice occurs='+'>
+ <ref label='biblioentry'/>
+ <ref label='bibliomixed'/>
+ </choice>
+ </choice>
+ </sequence>
+ <!-- (bibliographyinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (bibliodiv+ | (biblioentry|bibliomixed)+)) -->
+</elementRule>
+
+<tag name='bibliography'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='bibliography.role.attrib'/>
+ <!-- %local.bibliography.attrib; -->
+</tag>
+
+<attPool role='bibliodiv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bibliodiv'>
+ <sequence>
+ <hedgeRef label='sect.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <choice occurs='+'>
+ <ref label='biblioentry'/>
+ <ref label='bibliomixed'/>
+ </choice>
+ </sequence>
+ <!-- ((%sect.title.content;)?, (%component.mix;)*,
+ (biblioentry|bibliomixed)+) -->
+</elementRule>
+
+<tag name='bibliodiv'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='bibliodiv.role.attrib'/>
+ <!-- %local.bibliodiv.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Glossary ............................................................. -->
+
+<attPool role='glossary.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossary'>
+ <sequence>
+ <ref label='glossaryinfo' occurs='*'/>
+ <hedgeRef label='bookcomponent.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <choice>
+ <ref label='glossdiv' occurs='+'/>
+ <ref label='glossentry' occurs='+'/>
+ </choice>
+ <ref label='bibliography' occurs='?'/>
+ </sequence>
+ <!-- (glossaryinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (glossdiv+ | glossentry+), bibliography?) -->
+</elementRule>
+
+<tag name='glossary'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='glossary.role.attrib'/>
+ <!-- %local.glossary.attrib; -->
+</tag>
+
+<attPool role='glossdiv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossdiv'>
+ <sequence>
+ <hedgeRef label='sect.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <ref label='glossentry' occurs='+'/>
+ </sequence>
+ <!-- ((%sect.title.content;), (%component.mix;)*,
+ glossentry+) -->
+</elementRule>
+
+<tag name='glossdiv'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='glossdiv.role.attrib'/>
+ <!-- %local.glossdiv.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Index and SetIndex ................................................... -->
+
+<attPool role='indexes.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='index'>
+ <sequence>
+ <ref label='indexinfo' occurs='*'/>
+ <hedgeRef label='bookcomponent.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <choice>
+ <ref label='indexdiv' occurs='+'/>
+ <ref label='indexentry' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (indexinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*,
+ (indexdiv* | indexentry*)) -->
+</elementRule>
+
+<tag name='index'>
+ <ref role='common.attrib'/>
+ <ref role='indexes.role.attrib'/>
+ <!-- %local.indexes.attrib; -->
+</tag>
+
+<elementRule role='setindex'>
+ <sequence>
+ <ref label='setindexinfo' occurs='*'/>
+ <hedgeRef label='bookcomponent.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <choice>
+ <ref label='indexdiv' occurs='+'/>
+ <ref label='indexentry' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (setindexinfo?,
+ (%bookcomponent.title.content;)?,
+ (%component.mix;)*, (indexdiv* | indexentry*)) -->
+</elementRule>
+
+<tag name='setindex'>
+ <ref role='common.attrib'/>
+ <ref role='indexes.role.attrib'/>
+ <!-- %local.indexes.attrib; -->
+</tag>
+
+<!-- SegmentedList in this content is useful for marking up permuted
+ indices. -->
+
+<attPool role='indexdiv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='indexdiv'>
+ <sequence>
+ <hedgeRef label='sect.title.content' occurs='?'/>
+ <sequence>
+ <hedgeRef label='indexdivcomponent.mix' occurs='*'/>
+ <ref label='indexentry' occurs='*'/>
+ <ref label='segmentedlist'/>
+ </sequence>
+ </sequence>
+ <!-- ((%sect.title.content;)?, ((%indexdivcomponent.mix;)*,
+ (indexentry+ | segmentedlist))) -->
+</elementRule>
+
+<tag name='indexdiv'>
+ <ref role='common.attrib'/>
+ <ref role='indexdiv.role.attrib'/>
+ <!-- %local.indexdiv.attrib; -->
+</tag>
+
+<!-- Index entries appear in the index, not the text. -->
+
+<attPool role='indexentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='indexentry'>
+ <sequence>
+ <ref label='primaryie'/>
+ <choice occurs='*'>
+ <ref label='seeie'/>
+ <ref label='seealsoie'/>
+ </choice>
+ <sequence occurs='*'>
+ <ref label='secondaryie'/>
+ <choice occurs='*'>
+ <ref label='seeie'/>
+ <ref label='seealsoie'/>
+ <ref label='tertiaryie'/>
+ </choice>
+ </sequence>
+ </sequence>
+ <!-- (primaryie, (seeie|seealsoie)*,
+ (secondaryie, (seeie|seealsoie|tertiaryie)*)*) -->
+</elementRule>
+
+<tag name='indexentry'>
+ <ref role='common.attrib'/>
+ <ref role='indexentry.role.attrib'/>
+ <!-- %local.indexentry.attrib; -->
+</tag>
+
+<attPool role='primsecterie.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='primaryie'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='primaryie'>
+ <!-- to IndexTerms that these entries represent -->
+ <!-- FIXME: constrain -->
+ <ref role='linkends.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='primsecterie.role.attrib'/>
+ <!-- %local.primsecterie.attrib; -->
+</tag>
+
+<elementRule role='secondaryie'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='secondaryie'>
+ <!-- to IndexTerms that these entries represent -->
+ <!-- FIXME: constrain -->
+ <ref role='linkends.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='primsecterie.role.attrib'/>
+ <!-- %local.primsecterie.attrib; -->
+</tag>
+
+<elementRule role='tertiaryie'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='tertiaryie'>
+ <!-- to IndexTerms that these entries represent -->
+ <!-- FIXME: constrain -->
+ <ref role='linkends.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='primsecterie.role.attrib'/>
+ <!-- %local.primsecterie.attrib; -->
+</tag>
+
+<attPool role='seeie.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='seeie'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='seeie'>
+ <!-- to IndexEntry to look up -->
+ <!-- FIXME: constrain -->
+
+ <ref role='linkend.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='seeie.role.attrib'/>
+ <!-- %local.seeie.attrib; -->
+</tag>
+
+<attPool role='seealsoie.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='seealsoie'>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='seealsoie'>
+ <!-- to related IndexEntries -->
+ <!-- FIXME: constrain -->
+
+ <ref role='linkends.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='seealsoie.role.attrib'/>
+ <!-- %local.seealsoie.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- RefEntry ............................................................. -->
+
+<attPool role='refentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refentry'>
+ <sequence>
+ <hedgeRef label='ndxterm.class' occurs='*'/>
+ <ref label='refentryinfo' occurs='?'/>
+ <ref label='refmeta' occurs='?'/>
+ <choice occurs='*'>
+ <ref label='remark'/>
+ <hedgeRef label='link.char.class'/>
+ </choice>
+ <ref label='refnamediv'/>
+ <ref label='refsynopsisdiv' occurs='?'/>
+ <ref label='refsect1' occurs='+'/>
+ </sequence>
+ <!-- ((%ndxterm.class;)*,
+ refentryinfo?, refmeta?, (remark|%link.char.class;)*,
+ refnamediv, refsynopsisdiv?, refsect1+) -->
+</elementRule>
+
+<tag name='refentry'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='refentry.role.attrib'/>
+ <!-- %local.refentry.attrib; -->
+</tag>
+
+<attPool role='refmeta.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refmeta'>
+ <sequence>
+ <hedgeRef label='ndxterm.class' occurs='*'/>
+ <ref label='refentrytitle'/>
+ <ref label='manvolnum' occurs='?'/>
+ <ref label='refmiscinfo' occurs='*'/>
+ <hedgeRef label='ndxterm.class' occurs='*'/>
+ </sequence>
+ <!-- ((%ndxterm.class;)*,
+ refentrytitle, manvolnum?, refmiscinfo*,
+ (%ndxterm.class;)*) -->
+</elementRule>
+
+<tag name='refmeta'>
+ <ref role='common.attrib'/>
+ <ref role='refmeta.role.attrib'/>
+ <!-- %local.refmeta.attrib; -->
+</tag>
+
+<attPool role='refmiscinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refmiscinfo'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='refmiscinfo'>
+ <ref role='common.attrib'/>
+ <ref role='refmiscinfo.role.attrib'/>
+ <!-- %local.refmiscinfo.attrib; -->
+
+ <!-- Class: Freely assignable parameter; no default -->
+ <attribute name='class' type='string'/>
+</tag>
+
+<attPool role='refnamediv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refnamediv'>
+ <sequence>
+ <ref label='refdescriptor' occurs='?'/>
+ <ref label='refname' occurs='+'/>
+ <ref label='refpurpose'/>
+ <choice occurs='*'>
+ <ref label='remark'/>
+ <hedgeRef label='link.char.class'/>
+ </choice>
+ </sequence>
+ <!-- (refdescriptor?, refname+, refpurpose, refclass*,
+ (remark|%link.char.class;)*) -->
+</elementRule>
+
+<tag name='refnamediv'>
+ <ref role='common.attrib'/>
+ <ref role='refnamediv.role.attrib'/>
+ <!-- %local.refnamediv.attrib; -->
+</tag>
+
+<attPool role='refdescriptor.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refdescriptor'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='refname.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%refname.char.mix;)* -->
+</elementRule>
+
+<tag name='refdescriptor'>
+ <ref role='common.attrib'/>
+ <ref role='refdescriptor.role.attrib'/>
+ <!-- %local.refdescriptor.attrib; -->
+</tag>
+
+<attPool role='refname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='refname.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%refname.char.mix;)* -->
+</elementRule>
+
+<tag name='refname'>
+ <ref role='common.attrib'/>
+ <ref role='refname.role.attrib'/>
+ <!-- %local.refname.attrib; -->
+</tag>
+
+<attPool role='refpurpose.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refpurpose'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='refinline.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%refinline.char.mix;)* -->
+</elementRule>
+
+<tag name='refpurpose'>
+ <ref role='common.attrib'/>
+ <ref role='refpurpose.role.attrib'/>
+ <!-- %local.refpurpose.attrib; -->
+</tag>
+
+<attPool role='refclass.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refclass'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='refclass.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%refclass.char.mix;)* -->
+</elementRule>
+
+<tag name='refclass'>
+ <ref role='common.attrib'/>
+ <ref role='refclass.role.attrib'/>
+ <!-- %local.refclass.attrib; -->
+</tag>
+
+<attPool role='refsynopsisdiv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsynopsisdiv'>
+ <sequence>
+ <ref label='refsynopsisdivinfo' occurs='?'/>
+ <hedgeRef label='refsect.title.content' occurs='?'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='refcomponent.mix' occurs='+'/>
+ <ref label='refsect2' occurs='*'/>
+ </sequence>
+ <ref label='refsect2' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (refsynopsisdivinfo?, (%refsect.title.content;)?,
+ (((%refcomponent.mix;)+, refsect2*) | (refsect2+))) -->
+</elementRule>
+
+<tag name='refsynopsisdiv'>
+ <ref role='common.attrib'/>
+ <ref role='refsynopsisdiv.role.attrib'/>
+ <!-- %local.refsynopsisdiv.attrib; -->
+</tag>
+
+<attPool role='refsect1.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsect1'>
+ <sequence>
+ <ref label='refsect1info' occurs='?'/>
+ <hedgeRef label='refsect.title.content'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='refcomponent.mix' occurs='+'/>
+ <ref label='refsect2' occurs='*'/>
+ </sequence>
+ <ref label='refsect2' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (refsect1info?, (%refsect.title.content;),
+ (((%refcomponent.mix;)+, refsect2*) | refsect2+)) -->
+</elementRule>
+
+<tag name='refsect1'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='refsect1.role.attrib'/>
+ <!-- %local.refsect1.attrib; -->
+</tag>
+
+<attPool role='refsect2.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsect2'>
+ <sequence>
+ <ref label='refsect2info' occurs='?'/>
+ <hedgeRef label='refsect.title.content'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='refcomponent.mix' occurs='+'/>
+ <ref label='refsect3' occurs='*'/>
+ </sequence>
+ <ref label='refsect3' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (refsect2info?, (%refsect.title.content;),
+ (((%refcomponent.mix;)+, refsect3*) | refsect3+)) -->
+</elementRule>
+
+<tag name='refsect2'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='refsect2.role.attrib'/>
+ <!-- %local.refsect2.attrib; -->
+</tag>
+
+<attPool role='refsect3.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refsect3'>
+ <sequence>
+ <ref label='refsect3info' occurs='?'/>
+ <hedgeRef label='refsect.title.content'/>
+ <hedgeRef label='refcomponent.mix' occurs='+'/>
+ </sequence>
+ <!-- (refsect3info?, (%refsect.title.content;),
+ (%refcomponent.mix;)+) -->
+</elementRule>
+
+<tag name='refsect3'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='refsect3.role.attrib'/>
+ <!-- %local.refsect3.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Article .............................................................. -->
+
+<!-- An Article is a chapter-level, stand-alone document that is often,
+ but need not be, collected into a Book. -->
+
+<attPool role='article.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='article'>
+ <sequence>
+ <hedgeRef label='div.title.content' occurs='?'/>
+ <ref label='articleinfo' occurs='?'/>
+ <ref label='tocchap' occurs='?'/>
+ <ref label='lot' occurs='*'/>
+ <hedgeRef label='bookcomponent.content'/>
+ <choice occurs='*'>
+ <hedgeRef label='nav.class'/>
+ <hedgeRef label='appendix.class'/>
+ <ref label='ackno'/>
+ </choice>
+ </sequence>
+ <!-- ((%div.title.content;)?, articleinfo?, tocchap?, lot*,
+ (%bookcomponent.content;),
+ ((%nav.class;) | (%appendix.class;) | ackno)*) -->
+</elementRule>
+
+<tag name='article'>
+ <ref role='status.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='article.role.attrib'/>
+ <!-- %local.article.attrib; -->
+
+ <!-- Class: Indicates the type of a particular article;
+ all articles have the same structure and general purpose.
+ No default. -->
+ <attribute name='class' type='NMTOKEN'>
+ <enumeration value='journalarticle'/>
+ <enumeration value='productsheet'/>
+ <enumeration value='whitepaper'/>
+ <enumeration value='techreport'/>
+ <enumeration value='specification'/>
+ <enumeration value='faq'/>
+ </attribute>
+
+ <!-- ParentBook: ID of the enclosing Book -->
+ <attribute name='parentbook' type='IDREF'/>
+</tag>
+
+</module>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
+
+<module moduleVersion="1.2"
+ relaxCoreVersion="1.0"
+ xmlns="http://www.xml.gr.jp/xmlns/relaxCore">
+
+ <interface/>
+
+<!-- ...................................................................... -->
+<!-- DocBook RELAX Schema V4.1.2.1......................................... -->
+<!-- ...................................................................... -->
+<!-- Copyright 2000, Norman Walsh, Sun Microsystems. Schema
+ derived from DocBook DTD Copyright 1992-2000 HaL Computer.... -->
+
+<!-- ...................................................................... -->
+<!-- General-purpose semantics entities ................................... -->
+
+<!-- yesorno.attvals ... -->
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+
+<!--ENTITY % dbpool.redecl.module "IGNORE"-->
+
+<!-- ...................................................................... -->
+<!-- Entities for element classes and mixtures ............................ -->
+
+<!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+
+<!--ENTITY % local.ndxterm.class ""-->
+<hedgeRule label='ndxterm.class'>
+ <choice>
+ <ref label='indexterm'/>
+ <!-- %local.ndxterm.class; -->
+ </choice>
+</hedgeRule>
+
+<!-- Object-level classes ................................................. -->
+
+<!--ENTITY % local.list.class ""-->
+<hedgeRule label='list.class'>
+ <choice>
+ <ref label='calloutlist'/>
+ <ref label='glosslist'/>
+ <ref label='itemizedlist'/>
+ <ref label='orderedlist'/>
+ <ref label='segmentedlist'/>
+ <ref label='simplelist'/>
+ <ref label='variablelist'/>
+ <!-- %local.list.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.admon.class ""-->
+<hedgeRule label='admon.class'>
+ <choice>
+ <ref label='caution'/>
+ <ref label='important'/>
+ <ref label='note'/>
+ <ref label='tip'/>
+ <ref label='warning'/>
+ <!-- %local.admon.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.linespecific.class ""-->
+<hedgeRule label='linespecific.class'>
+ <choice>
+ <ref label='literallayout'/>
+ <ref label='programlisting'/>
+ <ref label='programlistingco'/>
+ <ref label='screen'/>
+ <ref label='screenco'/>
+ <ref label='screenshot'/>
+ <!-- %local.linespecific.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.method.synop.class ""-->
+<hedgeRule label='method.synop.class'>
+ <choice>
+ <ref label='constructorsynopsis'/>
+ <ref label='destructorsynopsis'/>
+ <ref label='methodsynopsis'/>
+ <!-- %local.method.synop.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.synop.class ""-->
+<hedgeRule label='synop.class'>
+ <choice>
+ <ref label='synopsis'/>
+ <ref label='cmdsynopsis'/>
+ <ref label='funcsynopsis'/>
+ <ref label='classsynopsis'/>
+ <ref label='fieldsynopsis'/>
+ <!-- %method.synop.class; -->
+ <!-- %local.synop.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.para.class ""-->
+<hedgeRule label='para.class'>
+ <choice>
+ <ref label='formalpara'/>
+ <ref label='para'/>
+ <ref label='simpara'/>
+ <!-- %local.para.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.informal.class ""-->
+<hedgeRule label='informal.class'>
+ <choice>
+ <ref label='address'/>
+ <ref label='blockquote'/>
+ <ref label='graphic'/>
+ <ref label='graphicco'/>
+ <ref label='mediaobject'/>
+ <ref label='mediaobjectco'/>
+ <ref label='informalequation'/>
+ <ref label='informalexample'/>
+ <ref label='informalfigure'/>
+ <ref label='informaltable'/>
+ <!-- %local.informal.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.formal.class ""-->
+<hedgeRule label='formal.class'>
+ <choice>
+ <ref label='equation'/>
+ <ref label='example'/>
+ <ref label='figure'/>
+ <ref label='table'/>
+ <!-- %local.formal.class; -->
+ </choice>
+</hedgeRule>
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!--ENTITY % ebnf.block.hook ""-->
+
+<!--ENTITY % local.compound.class ""-->
+<hedgeRule label='compound.class'>
+ <choice>
+ <ref label='msgset'/>
+ <ref label='procedure'/>
+ <ref label='sidebar'/>
+ <ref label='qandaset'/>
+ <!-- %ebnf.block.hook; -->
+ <!-- %local.compound.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.genobj.class ""-->
+<hedgeRule label='genobj.class'>
+ <choice>
+ <ref label='anchor'/>
+ <ref label='bridgehead'/>
+ <ref label='remark'/>
+ <ref label='highlights'/>
+ <!-- %local.genobj.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.descobj.class ""-->
+<hedgeRule label='descobj.class'>
+ <choice>
+ <ref label='abstract'/>
+ <ref label='authorblurb'/>
+ <ref label='epigraph'/>
+ <!-- %local.descobj.class; -->
+ </choice>
+</hedgeRule>
+
+<!-- Character-level classes .............................................. -->
+
+<!--ENTITY % local.xref.char.class ""-->
+<hedgeRule label='xref.char.class'>
+ <choice>
+ <ref label='footnoteref'/>
+ <ref label='xref'/>
+ <!-- %local.xref.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.gen.char.class ""-->
+<hedgeRule label='gen.char.class'>
+ <choice>
+ <ref label='abbrev'/>
+ <ref label='acronym'/>
+ <ref label='citation'/>
+ <ref label='citerefentry'/>
+ <ref label='citetitle'/>
+ <ref label='emphasis'/>
+ <ref label='firstterm'/>
+ <ref label='foreignphrase'/>
+ <ref label='glossterm'/>
+ <ref label='footnote'/>
+ <ref label='phrase'/>
+ <ref label='quote'/>
+ <ref label='trademark'/>
+ <ref label='wordasword'/>
+ <!-- %local.gen.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.link.char.class ""-->
+<hedgeRule label='link.char.class'>
+ <choice>
+ <ref label='link'/>
+ <ref label='olink'/>
+ <ref label='ulink'/>
+ <!-- %local.link.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!--ENTITY % ebnf.inline.hook ""-->
+
+<!--ENTITY % local.tech.char.class ""-->
+<hedgeRule label='tech.char.class'>
+ <choice>
+ <ref label='action'/>
+ <ref label='application'/>
+ <ref label='classname'/>
+ <ref label='methodname'/>
+ <ref label='interfacename'/>
+ <ref label='exceptionname'/>
+ <ref label='ooclass'/>
+ <ref label='oointerface'/>
+ <ref label='ooexception'/>
+ <ref label='command'/>
+ <ref label='computeroutput'/>
+ <ref label='database'/>
+ <ref label='email'/>
+ <ref label='envar'/>
+ <ref label='errorcode'/>
+ <ref label='errorname'/>
+ <ref label='errortype'/>
+ <ref label='filename'/>
+ <ref label='function'/>
+ <ref label='guibutton'/>
+ <ref label='guiicon'/>
+ <ref label='guilabel'/>
+ <ref label='guimenu'/>
+ <ref label='guimenuitem'/>
+ <ref label='guisubmenu'/>
+ <ref label='hardware'/>
+ <ref label='interface'/>
+ <ref label='keycap'/>
+ <ref label='keycode'/>
+ <ref label='keycombo'/>
+ <ref label='keysym'/>
+ <ref label='literal'/>
+ <ref label='constant'/>
+ <ref label='markup'/>
+ <ref label='medialabel'/>
+ <ref label='menuchoice'/>
+ <ref label='mousebutton'/>
+ <ref label='option'/>
+ <ref label='optional'/>
+ <ref label='parameter'/>
+ <ref label='prompt'/>
+ <ref label='property'/>
+ <ref label='replaceable'/>
+ <ref label='returnvalue'/>
+ <ref label='sgmltag'/>
+ <ref label='structfield'/>
+ <ref label='structname'/>
+ <ref label='symbol'/>
+ <ref label='systemitem'/>
+ <ref label='token'/>
+ <ref label='type'/>
+ <ref label='userinput'/>
+ <ref label='varname'/>
+ <!-- %ebnf.inline.hook; -->
+ <!-- %local.tech.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.base.char.class ""-->
+<hedgeRule label='base.char.class'>
+ <choice>
+ <ref label='anchor'/>
+ <!-- %local.base.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.docinfo.char.class ""-->
+<hedgeRule label='docinfo.char.class'>
+ <choice>
+ <ref label='author'/>
+ <ref label='authorinitials'/>
+ <ref label='corpauthor'/>
+ <ref label='modespec'/>
+ <ref label='othercredit'/>
+ <ref label='productname'/>
+ <ref label='productnumber'/>
+ <ref label='revhistory'/>
+ <!-- %local.docinfo.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.other.char.class ""-->
+<hedgeRule label='other.char.class'>
+ <choice>
+ <ref label='remark'/>
+ <ref label='subscript'/>
+ <ref label='superscript'/>
+ <!-- %local.other.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.inlineobj.char.class ""-->
+<hedgeRule label='inlineobj.char.class'>
+ <choice>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <ref label='inlineequation'/>
+ <!-- %local.inlineobj.char.class; -->
+ </choice>
+</hedgeRule>
+
+<!-- Redeclaration placeholder ............................................ -->
+
+<!-- For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point -->
+
+<!--[%dbpool.redecl.module;[-->
+<!-- Defining rdbpool here makes some buggy XML parsers happy. -->
+<!--ENTITY % rdbpool ""-->
+<!--%rdbpool;-->
+<!--end of dbpool.redecl.module-->
+<!--] ]>-->
+
+<!-- Object-level mixtures ................................................ -->
+
+<!--
+ list admn line synp para infm form cmpd gen desc
+Component mixture X X X X X X X X X X
+Sidebar mixture X X X X X X X a X
+Footnote mixture X X X X X
+Example mixture X X X X X
+Highlights mixture X X X
+Paragraph mixture X X X X
+Admonition mixture X X X X X X b c
+Figure mixture X X X
+Table entry mixture X X X X d
+Glossary def mixture X X X X X e
+Legal notice mixture X X X X f
+
+a. Just Procedure; not Sidebar itself or MsgSet.
+b. No MsgSet.
+c. No Highlights.
+d. Just Graphic; no other informal objects.
+e. No Anchor, BridgeHead, or Highlights.
+f. Just BlockQuote; no other informal objects.
+-->
+
+<!--ENTITY % local.component.mix ""-->
+<hedgeRule label='component.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <hedgeRef label='compound.class'/>
+ <hedgeRef label='genobj.class'/>
+ <hedgeRef label='descobj.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.component.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.sidebar.mix ""-->
+<hedgeRule label='sidebar.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <ref label='procedure'/>
+ <hedgeRef label='genobj.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.sidebar.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.qandaset.mix ""-->
+<hedgeRule label='qandaset.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <ref label='procedure'/>
+ <hedgeRef label='genobj.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <!-- %local.qandaset.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.revdescription.mix ""-->
+<hedgeRule label='revdescription.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <ref label='procedure'/>
+ <hedgeRef label='genobj.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <!-- %local.revdescription.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.footnote.mix ""-->
+<hedgeRule label='footnote.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <!-- %local.footnote.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.example.mix ""-->
+<hedgeRule label='example.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.example.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.highlights.mix ""-->
+<hedgeRule label='highlights.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <!-- %local.highlights.mix; -->
+ </choice>
+</hedgeRule>
+
+<!-- %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used -->
+<!--ENTITY % local.para.mix ""-->
+<hedgeRule label='para.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <!-- %local.para.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.admon.mix ""-->
+<hedgeRule label='admon.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <ref label='procedure'/>
+ <ref label='sidebar'/>
+ <ref label='anchor'/>
+ <ref label='bridgehead'/>
+ <ref label='remark'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.admon.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.figure.mix ""-->
+<hedgeRule label='figure.mix'>
+ <choice>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.figure.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.tabentry.mix ""-->
+<hedgeRule label='tabentry.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='para.class'/>
+ <ref label='graphic'/>
+ <ref label='mediaobject'/>
+ <!-- %local.tabentry.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.glossdef.mix ""-->
+<hedgeRule label='glossdef.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='para.class'/>
+ <hedgeRef label='informal.class'/>
+ <hedgeRef label='formal.class'/>
+ <ref label='remark'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.glossdef.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.legalnotice.mix ""-->
+<hedgeRule label='legalnotice.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='para.class'/>
+ <ref label='blockquote'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.legalnotice.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.textobject.mix ""-->
+<hedgeRule label='textobject.mix'>
+ <choice>
+ <hedgeRef label='list.class'/>
+ <hedgeRef label='admon.class'/>
+ <hedgeRef label='linespecific.class'/>
+ <hedgeRef label='para.class'/>
+ <ref label='blockquote'/>
+ <!-- %local.textobject.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.mediaobject.mix ""-->
+<hedgeRule label='mediaobject.mix'>
+ <choice>
+ <ref label='videoobject'/>
+ <ref label='audioobject'/>
+ <ref label='imageobject'/>
+ <!-- %local.mediaobject.mix; -->
+ </choice>
+</hedgeRule>
+
+<!-- Character-level mixtures ............................................. -->
+
+<!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+para.char.mix X X X X X X X X X
+title.char.mix X X X X X X X X X
+ndxterm.char.mix X X X X X X X X a
+cptr.char.mix X X X X X a
+smallcptr.char.mix X b a
+word.char.mix X c X X X a
+docinfo.char.mix X d X b X a
+
+a. Just InlineGraphic; no InlineEquation.
+b. Just Replaceable; no other computer terms.
+c. Just Emphasis and Trademark; no other word elements.
+d. Just Acronym, Emphasis, and Trademark; no other word elements.
+-->
+
+<!-- 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 % forminlines.hook ""-->
+
+<!--ENTITY % local.para.char.mix ""-->
+<hedgeRule label='para.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='xref.char.class'/>
+ <hedgeRef label='gen.char.class'/>
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='tech.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='docinfo.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <hedgeRef label='inlineobj.char.class'/>
+ <hedgeRef label='synop.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.para.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.title.char.mix ""-->
+<hedgeRule label='title.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='xref.char.class'/>
+ <hedgeRef label='gen.char.class'/>
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='tech.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='docinfo.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <hedgeRef label='inlineobj.char.class'/>
+ <hedgeRef label='ndxterm.class'/>
+ <!-- %local.title.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.ndxterm.char.mix ""-->
+<hedgeRule label='ndxterm.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='xref.char.class'/>
+ <hedgeRef label='gen.char.class'/>
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='tech.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='docinfo.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <!-- %local.ndxterm.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.cptr.char.mix ""-->
+<hedgeRule label='cptr.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='tech.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.cptr.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.smallcptr.char.mix ""-->
+<hedgeRule label='smallcptr.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <ref label='replaceable'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.smallcptr.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.word.char.mix ""-->
+<hedgeRule label='word.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <ref label='acronym'/>
+ <ref label='emphasis'/>
+ <ref label='trademark'/>
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <hedgeRef label='ndxterm.class'/>
+ <ref label='beginpage'/>
+ <!-- %local.word.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % local.docinfo.char.mix ""-->
+<hedgeRule label='docinfo.char.mix'>
+ <choice>
+ <!-- #PCDATA -->
+ <hedgeRef label='link.char.class'/>
+ <ref label='emphasis'/>
+ <ref label='trademark'/>
+ <ref label='replaceable'/>
+ <hedgeRef label='other.char.class'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <hedgeRef label='ndxterm.class'/>
+ <!-- %local.docinfo.char.mix; -->
+ </choice>
+</hedgeRule>
+
+<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)-->
+<!--ENTITY % person.ident.mix (see Bibliographic section, below)-->
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+<hedgeRule label='formalobject.title.content'>
+ <sequence>
+ <ref label='title'/>
+ <ref label='titleabbrev' occurs='?'/>
+ </sequence>
+</hedgeRule>
+
+<!-- ...................................................................... -->
+<!-- Entities for attributes and attribute components ..................... -->
+
+<!-- Effectivity attributes ............................................... -->
+
+<!-- Arch: Computer or chip architecture to which element applies; no
+ default -->
+<attPool role='arch.attrib'>
+ <attribute name='arch' type='string'/>
+</attPool>
+
+<!-- Condition: General-purpose effectivity attribute -->
+
+<attPool role='condition.attrib'>
+ <attribute name='condition' type='string'/>
+</attPool>
+
+<!-- Conformance: Standards conformance characteristics -->
+
+<attPool role='conformance.attrib'>
+ <attribute name='conformance' type='NMTOKEN'/>
+</attPool>
+
+<!-- OS: Operating system to which element applies; no default -->
+
+<attPool role='os.attrib'>
+ <attribute name='os' type='string'/>
+</attPool>
+
+<!-- Revision: Editorial revision to which element belongs; no default -->
+
+<attPool role='revision.attrib'>
+ <attribute name='revision' type='string'/>
+</attPool>
+
+<!-- Security: Security classification; no default -->
+
+<attPool role='security.attrib'>
+ <attribute name='security' type='string'/>
+</attPool>
+
+<!-- UserLevel: Level of user experience to which element applies; no
+ default -->
+
+<attPool role='userlevel.attrib'>
+ <attribute name='userlevel' type='string'/>
+</attPool>
+
+<!-- Vendor: Computer vendor to which element applies; no default -->
+
+<attPool role='vendor.attrib'>
+ <attribute name='vendor' type='string'/>
+</attPool>
+
+<!--ENTITY % local.effectivity.attrib ""-->
+<attPool role='effectivity.attrib'>
+ <ref role='arch.attrib'/>
+ <ref role='condition.attrib'/>
+ <ref role='conformance.attrib'/>
+ <ref role='os.attrib'/>
+ <ref role='revision.attrib'/>
+ <ref role='security.attrib'/>
+ <ref role='userlevel.attrib'/>
+ <ref role='vendor.attrib'/>
+ <!-- %local.effectivity.attrib; -->
+</attPool>
+
+<!-- Common attributes .................................................... -->
+
+<!-- Id: Unique identifier of element; no default -->
+
+<attPool role='id.attrib'>
+ <attribute name='id' type='ID'/>
+</attPool>
+
+<!-- Id: Unique identifier of element; a value must be supplied; no
+ default -->
+
+<attPool role='idreq.attrib'>
+ <attribute name='id' type='ID' required='true'/>
+</attPool>
+
+<!-- Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default -->
+
+<attPool role='lang.attrib'>
+ <attribute name='lang' type='string'/>
+</attPool>
+
+<!-- Remap: Previous role of element before conversion; no default -->
+
+<attPool role='remap.attrib'>
+ <attribute name='remap' type='string'/>
+</attPool>
+
+<!-- Role: New role of element in local environment; no default -->
+
+<attPool role='role.attrib'>
+ <attribute name='role' type='string'/>
+</attPool>
+
+<!-- XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element -->
+
+<attPool role='xreflabel.attrib'>
+ <attribute name='xreflabel' type='string'/>
+</attPool>
+
+<!-- RevisionFlag: Revision status of element; default is that element
+ wasn't revised -->
+
+<attPool role='revisionflag.attrib'>
+ <attribute name='revisionflag' type='NMTOKEN'>
+ <enumeration value='changed'/>
+ <enumeration value='added'/>
+ <enumeration value='deleted'/>
+ <enumeration value='off'/>
+ </attribute>
+</attPool>
+
+<!--ENTITY % local.common.attrib ""-->
+
+<!-- Role is included explicitly on each element -->
+
+<attPool role='common.attrib'>
+ <ref role='id.attrib'/>
+ <ref role='lang.attrib'/>
+ <ref role='remap.attrib'/>
+ <ref role='xreflabel.attrib'/>
+ <ref role='revisionflag.attrib'/>
+ <ref role='effectivity.attrib'/>
+ <!-- %local.common.attrib; -->
+</attPool>
+
+<!-- Role is included explicitly on each element -->
+
+<attPool role='idreq.common.attrib'>
+ <ref role='idreq.attrib'/>
+ <ref role='lang.attrib'/>
+ <ref role='remap.attrib'/>
+ <ref role='xreflabel.attrib'/>
+ <ref role='revisionflag.attrib'/>
+ <ref role='effectivity.attrib'/>
+ <!-- %local.common.attrib; -->
+</attPool>
+
+<!-- Semi-common attributes and other attribute entities .................. -->
+
+<!--ENTITY % local.graphics.attrib ""-->
+
+<!-- EntityRef: Name of an external entity containing the content
+ of the graphic -->
+<!-- FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic -->
+<!-- Format: Notation of the element content, if any -->
+<!-- SrcCredit: Information about the source of the Graphic -->
+<!-- Width: Same as CALS reprowid (desired width) -->
+<!-- Depth: Same as CALS reprodep (desired depth) -->
+<!-- Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific -->
+<!-- Scale: Conflation of CALS hscale and vscale -->
+<!-- Scalefit: Same as CALS scalefit -->
+
+<attPool role='graphics.attrib'>
+ <!-- FIXME: -->
+ <!-- entityref ENTITY #IMPLIED -->
+ <attribute name='fileref' type='string'/>
+ <attribute name='format' type='NMTOKEN'>
+ <enumeration value='BMP'/>
+ <enumeration value='CGM-CHAR'/>
+ <enumeration value='CGM-BINARY'/>
+ <enumeration value='CGM-CLEAR'/>
+ <enumeration value='DITROFF'/>
+ <enumeration value='DVI'/>
+ <enumeration value='EPS'/>
+ <enumeration value='EQN'/>
+ <enumeration value='FAX'/>
+ <enumeration value='GIF'/>
+ <enumeration value='GIF87a'/>
+ <enumeration value='GIF89a'/>
+ <enumeration value='JPG'/>
+ <enumeration value='JPEG'/>
+ <enumeration value='IGES'/>
+ <enumeration value='PCX'/>
+ <enumeration value='PIC'/>
+ <enumeration value='PNG'/>
+ <enumeration value='PS'/>
+ <enumeration value='SGML'/>
+ <enumeration value='TBL'/>
+ <enumeration value='TEX'/>
+ <enumeration value='TIFF'/>
+ <enumeration value='WMF'/>
+ <enumeration value='WPG'/>
+ <enumeration value='linespecific'/>
+ </attribute>
+ <attribute name='srccredit' type='string'/>
+ <attribute name='width' type='string'/>
+ <attribute name='depth' type='string'/>
+ <attribute name='align' type='NMTOKEN'>
+ <enumeration value='left'/>
+ <enumeration value='right'/>
+ <enumeration value='center'/>
+ </attribute>
+ <attribute name='scale' type='string'/>
+ <attribute name='scalefit' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <!-- %local.graphics.attrib;-->
+</attPool>
+
+<!--ENTITY % local.keyaction.attrib ""-->
+
+<!-- Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value -->
+<!-- OtherAction: User-defined key combination type -->
+
+<attPool role='keyaction.attrib'>
+ <attribute name='action' type='string'>
+ <enumeration value='click'/>
+ <enumeration value='double-click'/>
+ <enumeration value='press'/>
+ <enumeration value='seq'/>
+ <enumeration value='simul'/>
+ <enumeration value='other'/>
+ </attribute>
+ <attribute name='otheraction' type='string'/>
+ <!-- %local.keyaction.attrib; -->
+</attPool>
+
+<!-- Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter -->
+
+<attPool role='label.attrib'>
+ <attribute name='label' type='string'/>
+</attPool>
+
+<!-- Format: whether element is assumed to contain significant white
+ space -->
+
+<attPool role='linespecific.attrib'>
+ <attribute name='format' type='NMTOKEN'>
+ <enumeration value='linespecific'/>
+ </attribute>
+
+ <attribute name='linenumbering' type='string'>
+ <enumeration value='numbered'/>
+ <enumeration value='unnumbered'/>
+ </attribute>
+</attPool>
+
+<!-- Linkend: link to related information; no default -->
+
+<attPool role='linkend.attrib'>
+ <attribute name='linkend' type='IDREF'/>
+</attPool>
+
+<!-- Linkend: required link to related information -->
+
+<attPool role='linkendreq.attrib'>
+ <attribute name='linkend' type='IDREF' required='true'/>
+</attPool>
+
+<!-- Linkends: link to one or more sets of related information; no
+ default -->
+
+<attPool role='linkends.attrib'>
+ <attribute name='linkends' type='IDREFS'/>
+</attPool>
+
+<!--ENTITY % local.mark.attrib ""-->
+<attPool role='mark.attrib'>
+ <attribute name='mark' type='string'/>
+ <!-- %local.mark.attrib; -->
+</attPool>
+
+<!-- MoreInfo: whether element's content has an associated RefEntry -->
+
+<attPool role='moreinfo.attrib'>
+ <attribute name='moreinfo' type='string'>
+ <enumeration value='refentry'/>
+ <enumeration value='none'/>
+ </attribute>
+</attPool>
+
+<!-- Pagenum: number of page on which element appears; no default -->
+
+<attPool role='pagenum.attrib'>
+ <attribute name='pagenum' type='string'/>
+</attPool>
+
+<!--ENTITY % local.status.attrib ""-->
+
+<!-- Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution" -->
+
+<attPool role='status.attrib'>
+ <attribute name='status' type='string'/>
+ <!-- %local.status.attrib; -->
+</attPool>
+
+<!-- Width: width of the longest line in the element to which it
+ pertains, in number of characters -->
+
+<attPool role='width.attrib'>
+ <attribute name='width' type='string'/>
+</attPool>
+
+<!-- ...................................................................... -->
+<!-- Title elements ....................................................... -->
+
+<attPool role='title.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='title'>
+ <!-- (%title.char.mix;)* -->
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='title.char.mix'/>
+ </choice>
+ </mixed>
+</elementRule>
+
+<tag name='title'>
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='title.role.attrib'/>
+ <!-- %local.title.attrib; -->
+</tag>
+
+<attPool role='titleabbrev.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='titleabbrev'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='title.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%title.char.mix;)* -->
+</elementRule>
+
+<tag name='titleabbrev'>
+ <ref role='common.attrib'/>
+ <ref role='titleabbrev.role.attrib'/>
+ <!-- %local.titleabbrev.attrib; -->
+</tag>
+
+<attPool role='subtitle.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='subtitle'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='title.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%title.char.mix;)* -->
+</elementRule>
+
+<tag name='subtitle'>
+ <ref role='common.attrib'/>
+ <ref role='subtitle.role.attrib'/>
+ <!-- %local.subtitle.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Bibliographic entities and elements .................................. -->
+
+<!-- The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below. -->
+
+<hedgeRule label='person.ident.mix'>
+ <choice>
+ <ref label='honorific'/>
+ <ref label='firstname'/>
+ <ref label='surname'/>
+ <ref label='lineage'/>
+ <ref label='othername'/>
+ <ref label='affiliation'/>
+ <ref label='authorblurb'/>
+ <ref label='contrib'/>
+ <!-- %local.person.ident.mix; -->
+ </choice>
+</hedgeRule>
+
+<hedgeRule label='bibliocomponent.mix'>
+ <choice>
+ <ref label='abbrev'/>
+ <ref label='abstract'/>
+ <ref label='address'/>
+ <ref label='artpagenums'/>
+ <ref label='author'/>
+ <ref label='authorgroup'/>
+ <ref label='authorinitials'/>
+ <ref label='bibliomisc'/>
+ <ref label='biblioset'/>
+ <ref label='collab'/>
+ <ref label='confgroup'/>
+ <ref label='contractnum'/>
+ <ref label='contractsponsor'/>
+ <ref label='copyright'/>
+ <ref label='corpauthor'/>
+ <ref label='corpname'/>
+ <ref label='date'/>
+ <ref label='edition'/>
+ <ref label='editor'/>
+ <ref label='invpartnumber'/>
+ <ref label='isbn'/>
+ <ref label='issn'/>
+ <ref label='issuenum'/>
+ <ref label='orgname'/>
+ <ref label='othercredit'/>
+ <ref label='pagenums'/>
+ <ref label='printhistory'/>
+ <ref label='productname'/>
+ <ref label='productnumber'/>
+ <ref label='pubdate'/>
+ <ref label='publisher'/>
+ <ref label='publishername'/>
+ <ref label='pubsnumber'/>
+ <ref label='releaseinfo'/>
+ <ref label='revhistory'/>
+ <ref label='seriesvolnums'/>
+ <ref label='subtitle'/>
+ <ref label='title'/>
+ <ref label='titleabbrev'/>
+ <ref label='volumenum'/>
+ <ref label='citetitle'/>
+ <hedgeRef label='person.ident.mix'/>
+ <hedgeRef label='ndxterm.class'/>
+ <!-- %local.bibliocomponent.mix -->
+ </choice>
+</hedgeRule>
+
+<attPool role='biblioentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='biblioentry'>
+ <choice occurs='+'>
+ <ref label='articleinfo'/>
+ <hedgeRef label='bibliocomponent.mix'/>
+ </choice>
+ <!-- ((articleinfo | (%bibliocomponent.mix;))+) -->
+</elementRule>
+
+<tag name='biblioentry'>
+ <ref role='common.attrib'/>
+ <ref role='biblioentry.role.attrib'/>
+ <!-- %local.biblioentry.attrib; -->
+</tag>
+
+<attPool role='bibliomixed.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bibliomixed'>
+ <mixed>
+ <choice occurs="*">
+ <hedgeRef label='bibliocomponent.mix'/>
+ <ref label='bibliomset'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA | %bibliocomponent.mix; | bibliomset)* -->
+</elementRule>
+
+<tag name='bibliomixed'>
+ <ref role='common.attrib'/>
+ <ref role='bibliomixed.role.attrib'/>
+ <!-- %local.bibliomixed.attrib; -->
+</tag>
+
+<attPool role='articleinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<hedgeRule label='infoContentModel'>
+ <choice occurs='+'>
+ <ref label='graphic'/>
+ <ref label='mediaobject'/>
+ <ref label='legalnotice'/>
+ <ref label='modespec'/>
+ <ref label='subjectset'/>
+ <ref label='keywordset'/>
+ <ref label='itermset'/>
+ <hedgeRef label='bibliocomponent.mix'/>
+ </choice>
+ <!-- ((graphic | mediaobject | legalnotice | modespec
+ | subjectset | keywordset | itermset | %bibliocomponent.mix;)+) -->
+</hedgeRule>
+
+<elementRule role='articleinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='articleinfo'>
+ <ref role='common.attrib'/>
+ <ref role='articleinfo.role.attrib'/>
+ <!-- %local.articleinfo.attrib; -->
+</tag>
+
+<attPool role='biblioset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='biblioset'>
+ <choice occurs='+'>
+ <hedgeRef label='bibliocomponent.mix'/>
+ </choice>
+ <!-- ((%bibliocomponent.mix;)+) -->
+</elementRule>
+
+<tag name='biblioset'>
+ <ref role='common.attrib'/>
+ <ref role='biblioset.role.attrib'/>
+ <!-- %local.biblioset.attrib; -->
+
+ <!-- Relation: Relationship of elements contained within BiblioSet -->
+ <attribute name='relation' type='string'/>
+</tag>
+
+<attPool role='bibliomset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bibliomset'>
+ <mixed>
+ <choice occurs="*">
+ <hedgeRef label='bibliocomponent.mix'/>
+ <ref label='bibliomset'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA | %bibliocomponent.mix; | bibliomset)* -->
+</elementRule>
+
+<tag name='bibliomset'>
+ <ref role='bibliomset.role.attrib'/>
+ <ref role='common.attrib'/>
+ <!-- %local.bibliomset.attrib; -->
+
+ <!-- Relation: Relationship of elements contained within BiblioMSet -->
+ <attribute name='relation' type='string'/>
+</tag>
+
+<attPool role='bibliomisc.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bibliomisc'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='bibliomisc'>
+ <ref role='common.attrib'/>
+ <ref role='bibliomisc.role.attrib'/>
+ <!-- %local.bibliomisc.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Subject, Keyword, and ITermSet elements .............................. -->
+
+<attPool role='subjectset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='subjectset'>
+ <sequence occurs='+'>
+ <ref label='subject'/>
+ </sequence>
+ <!-- (subject+) -->
+</elementRule>
+
+<tag name='subjectset'>
+ <ref role='common.attrib'/>
+ <ref role='subjectset.role.attrib'/>
+ <!-- %local.subjectset.attrib; -->
+
+ <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+ <attribute name='scheme' type='NMTOKEN'/>
+</tag>
+
+<attPool role='subject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='subject'>
+ <sequence occurs='+'>
+ <ref label='subjectterm'/>
+ </sequence>
+ <!-- (subjectterm+) -->
+</elementRule>
+
+<tag name='subject'>
+ <ref role='common.attrib'/>
+ <ref role='subject.role.attrib'/>
+ <!-- %local.subject.attrib; -->
+
+ <!-- Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified -->
+ <attribute name='weight' type='string'/>
+</tag>
+
+<attPool role='subjectterm.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='subjectterm'>
+ <!-- (#PCDATA) -->
+ <mixed>
+ <empty/>
+ </mixed>
+</elementRule>
+
+<tag name='subjectterm'>
+ <ref role='common.attrib'/>
+ <ref role='subjectterm.role.attrib'/>
+ <!-- %local.subjectterm.attrib; -->
+</tag>
+
+<attPool role='keywordset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='keywordset'>
+ <sequence occurs='+'>
+ <ref label='keyword'/>
+ </sequence>
+ <!-- (keyword+) -->
+</elementRule>
+
+<tag name='keywordset'>
+ <ref role='common.attrib'/>
+ <ref role='keywordset.role.attrib'/>
+ <!-- %local.keywordset.attrib; -->
+</tag>
+
+<attPool role='keyword.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='keyword'>
+ <!-- (#PCDATA) -->
+ <mixed>
+ <empty/>
+ </mixed>
+</elementRule>
+
+<tag name='keyword'>
+ <ref role='common.attrib'/>
+ <ref role='keyword.role.attrib'/>
+ <!-- %local.keyword.attrib; -->
+</tag>
+
+<attPool role='itermset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='itermset'>
+ <sequence occurs='+'>
+ <ref label='indexterm'/>
+ </sequence>
+ <!-- (indexterm+) -->
+</elementRule>
+
+<tag name='itermset'>
+ <ref role='common.attrib'/>
+ <ref role='itermset.role.attrib'/>
+ <!-- %local.itermset.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Compound (section-ish) elements ...................................... -->
+
+<!-- Message set ...................... -->
+
+<attPool role='msgset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgset'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <choice>
+ <ref label='msgentry' occurs='+'/>
+ <ref label='simplemsgentry' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?, (msgentry+|simplemsgentry+)) -->
+</elementRule>
+
+<tag name='msgset'>
+ <ref role='common.attrib'/>
+ <ref role='msgset.role.attrib'/>
+ <!-- %local.msgset.attrib; -->
+</tag>
+
+<attPool role='msgentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgentry'>
+ <sequence>
+ <ref label='msg' occurs='+'/>
+ <ref label='msginfo' occurs='?'/>
+ <ref label='msgexplan' occurs='*'/>
+ </sequence>
+ <!-- (msg+, msginfo?, msgexplan*) -->
+</elementRule>
+
+<tag name='msgentry'>
+ <ref role='common.attrib'/>
+ <ref role='msgentry.role.attrib'/>
+ <!-- %local.msgentry.attrib; -->
+</tag>
+
+<attPool role='simplemsgentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='simplemsgentry'>
+ <sequence>
+ <ref label='msgtext'/>
+ <ref label='msgexplan'/>
+ </sequence>
+ <!-- (msgtext, msgexplan) -->
+</elementRule>
+
+<tag name='simplemsgentry'>
+ <ref role='common.attrib'/>
+ <ref role='simplemsgentry.role.attrib'/>
+ <!-- %local.simplemsgentry.attrib; -->
+ <attribute name='audience' type='string'/>
+ <attribute name='level' type='string'/>
+ <attribute name='origin' type='string'/>
+</tag>
+
+<attPool role='msg.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msg'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <ref label='msgmain'/>
+ <choice occurs='*'>
+ <ref label='msgsub'/>
+ <ref label='msgrel'/>
+ </choice>
+ </sequence>
+ <!-- (title?, msgmain, (msgsub | msgrel)*) -->
+</elementRule>
+
+<tag name='msg'>
+ <ref role='common.attrib'/>
+ <ref role='msg.role.attrib'/>
+ <!-- %local.msg.attrib; -->
+</tag>
+
+<attPool role='msgmain.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgmain'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <ref label='msgtext'/>
+ </sequence>
+ <!-- (title?, msgtext) -->
+</elementRule>
+
+<tag name='msgmain'>
+ <ref role='common.attrib'/>
+ <ref role='msgmain.role.attrib'/>
+ <!-- %local.msgmain.attrib; -->
+</tag>
+
+<attPool role='msgsub.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgsub'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <ref label='msgtext'/>
+ </sequence>
+ <!-- (title?, msgtext) -->
+</elementRule>
+
+<tag name='msgsub'>
+ <ref role='common.attrib'/>
+ <ref role='msgsub.role.attrib'/>
+ <!-- %local.msgsub.attrib; -->
+</tag>
+
+<attPool role='msgrel.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgrel'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <ref label='msgtext'/>
+ </sequence>
+ <!-- (title?, msgtext) -->
+</elementRule>
+
+<tag name='msgrel'>
+ <ref role='common.attrib'/>
+ <ref role='msgrel.role.attrib'/>
+ <!-- %local.msgrel.attrib; -->
+</tag>
+
+<!-- MsgText (defined in the Inlines section, below)-->
+
+<attPool role='msginfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msginfo'>
+ <choice occurs='*'>
+ <ref label='msglevel'/>
+ <ref label='msgorig'/>
+ <ref label='msgaud'/>
+ </choice>
+ <!-- ((msglevel | msgorig | msgaud)*) -->
+</elementRule>
+
+<tag name='msginfo'>
+ <ref role='common.attrib'/>
+ <ref role='msginfo.role.attrib'/>
+ <!-- %local.msginfo.attrib; -->
+</tag>
+
+<attPool role='msglevel.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msglevel'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='msglevel'>
+ <ref role='common.attrib'/>
+ <ref role='msglevel.role.attrib'/>
+ <!-- %local.msglevel.attrib; -->
+</tag>
+
+<attPool role='msgorig.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgorig'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='msgorig'>
+ <ref role='common.attrib'/>
+ <ref role='msgorig.role.attrib'/>
+ <!-- %local.msgorig.attrib; -->
+</tag>
+
+<attPool role='msgaud.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgaud'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='msgaud'>
+ <ref role='common.attrib'/>
+ <ref role='msgaud.role.attrib'/>
+ <!-- %local.msgaud.attrib; -->
+</tag>
+
+<attPool role='msgexplan.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgexplan'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <choice occurs='*'>
+ <hedgeRef label='component.mix'/>
+ </choice>
+ </sequence>
+ <!-- (title?, (%component.mix;)+) -->
+</elementRule>
+
+<tag name='msgexplan'>
+ <ref role='common.attrib'/>
+ <ref role='msgexplan.role.attrib'/>
+ <!-- %local.msgexplan.attrib; -->
+</tag>
+
+<!-- QandASet ........................ -->
+
+<attPool role='qandset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='qandaset'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <hedgeRef label='qandaset.mix' occurs='*'/>
+ <choice>
+ <ref label='qandadiv' occurs='+'/>
+ <ref label='qandaentry' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?,
+ (%qandaset.mix;)*,
+ (qandadiv+|qandaentry+)) -->
+</elementRule>
+
+<tag name='qandaset'>
+ <ref role='common.attrib'/>
+ <ref role='qandset.role.attrib'/>
+ <!-- %local.qandset.attrib; -->
+
+ <attribute name='defaultlabel' type='string'>
+ <enumeration value='qanda'/>
+ <enumeration value='number'/>
+ <enumeration value='none'/>
+ </attribute>
+</tag>
+
+<attPool role='qandadiv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='qandadiv'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <hedgeRef label='qandaset.mix' occurs='*'/>
+ <choice>
+ <ref label='qandadiv' occurs='+'/>
+ <ref label='qandaentry' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?,
+ (%qandaset.mix;)*,
+ (qandadiv+|qandaentry+)) -->
+</elementRule>
+
+<tag name='qandadiv'>
+ <ref role='common.attrib'/>
+ <ref role='qandadiv.role.attrib'/>
+ <!-- %local.qandadiv.attrib; -->
+</tag>
+
+<attPool role='qandaentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='qandaentry'>
+ <sequence>
+ <ref label='revhistory' occurs='?'/>
+ <ref label='question'/>
+ <ref label='answer' occurs='*'/>
+ </sequence>
+ <!-- (revhistory?, question, answer*) -->
+</elementRule>
+
+<tag name='qandaentry'>
+ <ref role='common.attrib'/>
+ <ref role='qandaentry.role.attrib'/>
+ <!-- %local.qandaentry.attrib; -->
+</tag>
+
+<attPool role='question.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='question'>
+ <sequence>
+ <ref label='label' occurs='?'/>
+ <hedgeRef label='qandaset.mix' occurs='+'/>
+ </sequence>
+ <!-- (label?, (%qandaset.mix;)+) -->
+</elementRule>
+
+<tag name='question'>
+ <ref role='common.attrib'/>
+ <ref role='question.role.attrib'/>
+ <!-- %local.question.attrib; -->
+</tag>
+
+<attPool role='answer.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='answer'>
+ <sequence>
+ <ref label='label' occurs='?'/>
+ <hedgeRef label='qandaset.mix' occurs='*'/>
+ <ref label='qandaentry' occurs='*'/>
+ </sequence>
+ <!-- (label?, (%qandaset.mix;)*, qandaentry*) -->
+</elementRule>
+
+<tag name='answer'>
+ <ref role='common.attrib'/>
+ <ref role='answer.role.attrib'/>
+ <!-- %local.answer.attrib; -->
+</tag>
+
+<attPool role='label.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='label'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='word.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%word.char.mix;)* -->
+</elementRule>
+
+<tag name='label'>
+ <ref role='common.attrib'/>
+ <ref role='label.role.attrib'/>
+ <!-- %local.label.attrib; -->
+</tag>
+
+<!-- Procedure ........................ -->
+
+<attPool role='procedure.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='procedure'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ <ref label='step' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?,
+ (%component.mix;)*, step+) -->
+</elementRule>
+
+<tag name='procedure'>
+ <ref role='common.attrib'/>
+ <ref role='procedure.role.attrib'/>
+ <!-- %local.procedure.attrib; -->
+</tag>
+
+<attPool role='step.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='step'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <choice>
+ <sequence>
+ <hedgeRef label='component.mix' occurs='+'/>
+ <sequence occurs='?'>
+ <ref label='substeps'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ </sequence>
+ </sequence>
+ <sequence>
+ <ref label='substeps'/>
+ <hedgeRef label='component.mix' occurs='*'/>
+ </sequence>
+ </choice>
+ </sequence>
+ <!-- (title?, (((%component.mix;)+, (substeps,
+ (%component.mix;)*)?) | (substeps, (%component.mix;)*))) -->
+</elementRule>
+
+<tag name='step'>
+ <ref role='common.attrib'/>
+ <ref role='step.role.attrib'/>
+ <!-- %local.step.attrib; -->
+
+ <!-- Performance: Whether the Step must be performed -->
+ <!-- not #REQUIRED! -->
+ <attribute name='performance' type='string'>
+ <enumeration value='optional'/>
+ <enumeration value='required'/>
+ </attribute>
+</tag>
+
+<attPool role='substeps.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='substeps'>
+ <sequence>
+ <ref label='step' occurs='+'/>
+ </sequence>
+ <!-- (step+) -->
+</elementRule>
+
+<tag name='substeps'>
+ <ref role='common.attrib'/>
+ <ref role='substeps.role.attrib'/>
+ <!-- %local.substeps.attrib; -->
+
+ <!-- Performance: whether entire set of substeps must be performed -->
+ <!-- not #REQUIRED! -->
+ <attribute name='performance' type='string'>
+ <enumeration value='optional'/>
+ <enumeration value='required'/>
+ </attribute>
+</tag>
+
+<!-- Sidebar .......................... -->
+
+<attPool role='sidebarinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sidebarinfo'>
+ <mixed>
+ <empty/>
+ </mixed>
+</elementRule>
+
+<tag name='sidebarinfo'>
+ <ref role='common.attrib'/>
+ <ref role='sidebarinfo.role.attrib'/>
+ <!-- %local.articleinfo.attrib; -->
+</tag>
+
+<attPool role='sidebar.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sidebar'>
+ <sequence>
+ <ref label='sidebarinfo' occurs='?'/>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <hedgeRef label='sidebar.mix' occurs='+'/>
+ </sequence>
+ <!-- (sidebarinfo?,
+ (%formalobject.title.content;)?,
+ (%sidebar.mix;)+) -->
+</elementRule>
+
+<tag name='sidebar'>
+ <ref role='common.attrib'/>
+ <ref role='sidebar.role.attrib'/>
+ <!-- %local.sidebar.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Paragraph-related elements ........................................... -->
+
+<attPool role='abstract.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='abstract'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <hedgeRef label='para.class' occurs='+'/>
+ </sequence>
+ <!-- (title?, (%para.class;)+) -->
+</elementRule>
+
+<tag name='abstract'>
+ <ref role='common.attrib'/>
+ <ref role='abstract.role.attrib'/>
+ <!-- %local.abstract.attrib; -->
+</tag>
+
+<attPool role='authorblurb.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='authorblurb'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <hedgeRef label='para.class' occurs='+'/>
+ </sequence>
+ <!-- (title?, (%para.class;)+) -->
+</elementRule>
+
+<tag name='authorblurb'>
+ <ref role='common.attrib'/>
+ <ref role='authorblurb.role.attrib'/>
+ <!-- %local.authorblurb.attrib; -->
+</tag>
+
+<attPool role='blockquote.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='blockquote'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <ref label='attribution' occurs='?'/>
+ <hedgeRef label='component.mix' occurs='+'/>
+ </sequence>
+ <!-- (title?, attribution?, (%component.mix;)+) -->
+</elementRule>
+
+<tag name='blockquote'>
+ <ref role='common.attrib'/>
+ <ref role='blockquote.role.attrib'/>
+ <!-- %local.blockquote.attrib; -->
+</tag>
+
+<attPool role='attribution.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='attribution'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='attribution'>
+ <ref role='common.attrib'/>
+ <ref role='attribution.role.attrib'/>
+ <!-- %local.attribution.attrib; -->
+</tag>
+
+<attPool role='bridgehead.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='bridgehead'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='title.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%title.char.mix;)* -->
+</elementRule>
+
+<tag name='bridgehead'>
+ <ref role='common.attrib'/>
+ <ref role='bridgehead.role.attrib'/>
+ <!-- %local.bridgehead.attrib; -->
+
+ <!-- Renderas: Indicates the format in which the BridgeHead
+ should appear -->
+ <attribute name='renderas' type='string'>
+ <enumeration value='other'/>
+ <enumeration value='sect1'/>
+ <enumeration value='sect2'/>
+ <enumeration value='sect3'/>
+ <enumeration value='sect4'/>
+ <enumeration value='sect5'/>
+ </attribute>
+</tag>
+
+<attPool role='remark.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='remark'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='remark'>
+ <ref role='common.attrib'/>
+ <ref role='remark.role.attrib'/>
+ <!-- %local.remark.attrib; -->
+</tag>
+
+<attPool role='epigraph.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='epigraph'>
+ <sequence>
+ <ref label='attribution' occurs='?'/>
+ <hedgeRef label='para.class' occurs='+'/>
+ </sequence>
+ <!-- (attribution?, (%para.class;)+) -->
+</elementRule>
+
+<tag name='epigraph'>
+ <ref role='common.attrib'/>
+ <ref role='epigraph.role.attrib'/>
+ <!-- %local.epigraph.attrib; -->
+</tag>
+<!-- Attribution (defined above)-->
+
+<attPool role='footnote.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='footnote'>
+ <sequence>
+ <hedgeRef label='footnote.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%footnote.mix;)+) -->
+</elementRule>
+
+<tag name='footnote'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='footnote.role.attrib'/>
+ <!-- %local.footnote.attrib; -->
+</tag>
+
+<attPool role='highlights.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='highlights'>
+ <sequence>
+ <hedgeRef label='highlights.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%highlights.mix;)+) -->
+</elementRule>
+
+<tag name='highlights'>
+ <ref role='common.attrib'/>
+ <ref role='highlights.role.attrib'/>
+ <!-- %local.highlights.attrib; -->
+</tag>
+
+<attPool role='formalpara.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='formalpara'>
+ <sequence>
+ <ref label='title'/>
+ <hedgeRef label='ndxterm.class' occurs='*'/>
+ <ref label='para'/>
+ </sequence>
+ <!-- (title, (%ndxterm.class;)*, para) -->
+</elementRule>
+
+<tag name='formalpara'>
+ <ref role='common.attrib'/>
+ <ref role='formalpara.role.attrib'/>
+ <!-- %local.formalpara.attrib; -->
+</tag>
+
+<attPool role='para.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='para'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ <hedgeRef label='para.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix; | %para.mix;)* -->
+</elementRule>
+
+<tag name='para'>
+ <ref role='common.attrib'/>
+ <ref role='para.role.attrib'/>
+ <!-- %local.para.attrib; -->
+</tag>
+
+<attPool role='simpara.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='simpara'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='simpara'>
+ <ref role='common.attrib'/>
+ <ref role='simpara.role.attrib'/>
+ <!-- %local.simpara.attrib; -->
+</tag>
+
+<attPool role='admon.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<hedgeRule label='admonitionType'>
+ <sequence>
+ <ref label='title'/>
+ <hedgeRef label='admon.mix' occurs='+'/>
+ </sequence>
+ <!-- (title?, (%admon.mix;)+) -->
+</hedgeRule>
+
+<elementRule role='important'>
+ <sequence>
+ <hedgeRef label='admonitionType'/>
+ </sequence>
+</elementRule>
+
+<tag name='important'>
+ <ref role='common.attrib'/>
+ <ref role='admon.role.attrib'/>
+ <!-- %local.admon.attrib; -->
+</tag>
+
+<elementRule role='warning'>
+ <sequence>
+ <hedgeRef label='admonitionType'/>
+ </sequence>
+</elementRule>
+
+<tag name='warning'>
+ <ref role='common.attrib'/>
+ <ref role='admon.role.attrib'/>
+ <!-- %local.admon.attrib; -->
+</tag>
+
+<elementRule role='caution'>
+ <sequence>
+ <hedgeRef label='admonitionType'/>
+ </sequence>
+</elementRule>
+
+<tag name='caution'>
+ <ref role='common.attrib'/>
+ <ref role='admon.role.attrib'/>
+ <!-- %local.admon.attrib; -->
+</tag>
+
+<elementRule role='note'>
+ <sequence>
+ <hedgeRef label='admonitionType'/>
+ </sequence>
+</elementRule>
+
+<tag name='note'>
+ <ref role='common.attrib'/>
+ <ref role='admon.role.attrib'/>
+ <!-- %local.admon.attrib; -->
+</tag>
+
+<elementRule role='tip'>
+ <sequence>
+ <hedgeRef label='admonitionType'/>
+ </sequence>
+</elementRule>
+
+<tag name='tip'>
+ <ref role='common.attrib'/>
+ <ref role='admon.role.attrib'/>
+ <!-- %local.admon.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Lists ................................................................ -->
+
+<!-- GlossList ........................ -->
+
+<attPool role='glosslist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glosslist'>
+ <sequence>
+ <ref label='glossentry' occurs='+'/>
+ </sequence>
+ <!-- (glossentry+) -->
+</elementRule>
+
+<tag name='glosslist'>
+ <ref role='common.attrib'/>
+ <ref role='glosslist.role.attrib'/>
+ <!-- %local.glosslist.attrib; -->
+</tag>
+
+<attPool role='glossentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossentry'>
+ <sequence>
+ <ref label='glossterm'/>
+ <ref label='acronym' occurs='?'/>
+ <ref label='abbrev' occurs='?'/>
+ <hedgeRef label='ndxterm.class' occurs='*'/>
+ <ref label='revhistory' occurs='?'/>
+ <choice>
+ <ref label='glosssee'/>
+ <ref label='glossdef' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (glossterm, acronym?, abbrev?,
+ (%ndxterm.class;)*,
+ revhistory?, (glosssee|glossdef+)) -->
+</elementRule>
+
+<tag name='glossentry'>
+ <ref role='common.attrib'/>
+ <ref role='glossentry.role.attrib'/>
+ <!-- %local.glossentry.attrib; -->
+
+ <!-- SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content -->
+ <attribute name='sortas' type='string'/>
+</tag>
+
+<!-- GlossTerm (defined in the Inlines section, below)-->
+<attPool role='glossdef.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossdef'>
+ <sequence>
+ <hedgeRef label='glossdef.mix' occurs='+'/>
+ <ref label='glossseealso' occurs='+'/>
+ </sequence>
+ <!-- ((%glossdef.mix;)+, glossseealso*) -->
+</elementRule>
+
+<tag name='glossdef'>
+ <ref role='common.attrib'/>
+ <ref role='glossdef.role.attrib'/>
+ <!-- %local.glossdef.attrib; -->
+
+ <!-- Subject: List of subjects; keywords for the definition -->
+ <attribute name='subject' type='string'/>
+</tag>
+
+<attPool role='glosssee.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glosssee'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='glosssee'>
+ <ref role='common.attrib'/>
+ <ref role='glosssee.role.attrib'/>
+ <!-- %local.glosssee.attrib; -->
+
+ <!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee -->
+ <!-- FIXME: restrict to glossentry -->
+ <attribute name='otherterm' type='IDREF'/>
+</tag>
+
+<attPool role='glossseealso.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossseealso'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='glossseealso'>
+ <ref role='common.attrib'/>
+ <ref role='glossseealso.role.attrib'/>
+ <!-- %local.glossseealso.attrib; -->
+
+ <!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso -->
+ <!-- FIXME: restrict to glossentry -->
+ <attribute name='otherterm' type='IDREF'/>
+</tag>
+
+<!-- ItemizedList and OrderedList ..... -->
+
+<attPool role='itemizedlist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='itemizedlist'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <ref label='listitem' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?, listitem+) -->
+</elementRule>
+
+<tag name='itemizedlist'>
+ <!-- Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific -->
+ <ref role='mark.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='itemizedlist.role.attrib'/>
+ <!-- %local.itemizedlist.attrib; -->
+
+ <!-- Spacing: Whether the vertical space in the list should be
+ compressed -->
+ <attribute name='spacing' type='string'>
+ <enumeration value='normal'/>
+ <enumeration value='compact'/>
+ </attribute>
+</tag>
+
+<attPool role='orderedlist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='orderedlist'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <ref label='listitem' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?, listitem+) -->
+</elementRule>
+
+<tag name='orderedlist'>
+ <ref role='common.attrib'/>
+ <ref role='orderedlist.role.attrib'/>
+ <!-- %local.orderedlist.attrib; -->
+
+ <!-- Numeration: Style of ListItem numbered; default is expected
+ to be Arabic -->
+ <attribute name='numeration' type='NMTOKEN'>
+ <enumeration value='arabic'/>
+ <enumeration value='upperalpha'/>
+ <enumeration value='loweralpha'/>
+ <enumeration value='upperroman'/>
+ <enumeration value='lowerroman'/>
+ </attribute>
+
+ <!-- InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b) -->
+ <attribute name='inheritnum' type='string'>
+ <enumeration value='inherit'/>
+ <enumeration value='ignore'/>
+ </attribute>
+
+ <!-- Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues) -->
+ <attribute name='continuation' type='string'>
+ <enumeration value='continues'/>
+ <enumeration value='restarts'/>
+ </attribute>
+
+ <!-- Spacing: Whether the vertical space in the list should be
+ compressed -->
+ <attribute name='spacing' type='string'>
+ <enumeration value='normal'/>
+ <enumeration value='compact'/>
+ </attribute>
+</tag>
+
+<attPool role='listitem.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='listitem'>
+ <sequence>
+ <hedgeRef label='component.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%component.mix;)+) -->
+</elementRule>
+
+<tag name='listitem'>
+ <ref role='common.attrib'/>
+ <ref role='listitem.role.attrib'/>
+ <!-- %local.listitem.attrib; -->
+
+ <!-- Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList -->
+ <attribute name='override' type='string'/>
+</tag>
+
+<!-- SegmentedList .................... -->
+<attPool role='segmentedlist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='segmentedlist'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <ref label='segtitle'/>
+ <ref label='segtitle' occurs='*'/>
+ <ref label='seglistitem' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?,
+ segtitle, segtitle+,
+ seglistitem+) -->
+</elementRule>
+
+<tag name='segmentedlist'>
+ <ref role='common.attrib'/>
+ <ref role='segmentedlist.role.attrib'/>
+ <!-- %local.segmentedlist.attrib; -->
+</tag>
+
+<attPool role='segtitle.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='segtitle'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='title.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%title.char.mix;)* -->
+</elementRule>
+
+<tag name='segtitle'>
+ <ref role='common.attrib'/>
+ <ref role='segtitle.role.attrib'/>
+ <!-- %local.segtitle.attrib; -->
+</tag>
+
+<attPool role='seglistitem.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='seglistitem'>
+ <sequence>
+ <ref label='seg'/>
+ <ref label='seg' occurs='*'/>
+ </sequence>
+ <!-- (seg, seg+) -->
+</elementRule>
+
+<tag name='seglistitem'>
+ <ref role='common.attrib'/>
+ <ref role='seglistitem.role.attrib'/>
+ <!-- %local.seglistitem.attrib; -->
+</tag>
+
+<attPool role='seg.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='seg'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='seg'>
+ <ref role='common.attrib'/>
+ <ref role='seg.role.attrib'/>
+ <!-- %local.seg.attrib; -->
+</tag>
+
+<!-- SimpleList ....................... -->
+
+<attPool role='simplelist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='simplelist'>
+ <sequence>
+ <ref label='member' occurs='+'/>
+ </sequence>
+ <!-- (member+) -->
+</elementRule>
+
+<tag name='simplelist'>
+ <ref role='common.attrib'/>
+ <ref role='simplelist.role.attrib'/>
+ <!-- %local.simplelist.attrib; -->
+
+ <!-- Columns: The number of columns the array should contain -->
+ <attribute name='columns' type='integer'/>
+
+ <!-- Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results. -->
+ <attribute name='type' type='string'>
+ <enumeration value='inline'/>
+ <enumeration value='vert'/>
+ <enumeration value='horiz'/>
+ </attribute>
+</tag>
+
+<attPool role='member.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='member'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='member'>
+ <ref role='common.attrib'/>
+ <ref role='member.role.attrib'/>
+ <!-- %local.member.attrib; -->
+</tag>
+
+<!-- VariableList ..................... -->
+
+<attPool role='variablelist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='variablelist'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <ref label='varlistentry' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?, varlistentry+) -->
+</elementRule>
+
+<tag name='variablelist'>
+ <ref role='common.attrib'/>
+ <ref role='variablelist.role.attrib'/>
+ <!-- %local.variablelist.attrib; -->
+
+ <!-- TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem. -->
+ <attribute name='termlength' type='string'/>
+</tag>
+
+<attPool role='varlistentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='varlistentry'>
+ <sequence>
+ <ref label='term' occurs='+'/>
+ <ref label='listitem'/>
+ </sequence>
+ <!-- (term+, listitem) -->
+</elementRule>
+
+<tag name='varlistentry'>
+ <ref role='common.attrib'/>
+ <ref role='varlistentry.role.attrib'/>
+ <!-- %local.varlistentry.attrib; -->
+</tag>
+
+<attPool role='term.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='term'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='term'>
+ <ref role='common.attrib'/>
+ <ref role='term.role.attrib'/>
+ <!-- %local.term.attrib; -->
+</tag>
+
+<!-- ListItem (defined above)-->
+
+<!-- CalloutList ...................... -->
+
+<attPool role='calloutlist.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='calloutlist'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <ref label='callout' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?, callout+) -->
+</elementRule>
+
+<tag name='calloutlist'>
+ <ref role='common.attrib'/>
+ <ref role='calloutlist.role.attrib'/>
+ <!-- %local.calloutlist.attrib; -->
+</tag>
+
+<attPool role='callout.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='callout'>
+ <sequence>
+ <hedgeRef label='component.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%component.mix;)+) -->
+</elementRule>
+
+<tag name='callout'>
+ <ref role='common.attrib'/>
+ <ref role='callout.role.attrib'/>
+ <!-- %local.callout.attrib; -->
+
+ <!-- AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout -->
+ <attribute name='arearefs' type='IDREFS'/>
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Objects .............................................................. -->
+
+<!-- Examples etc. .................... -->
+
+<attPool role='example.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='example'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <hedgeRef label='example.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%formalobject.title.content;), (%example.mix;)+) -->
+</elementRule>
+
+<tag name='example'>
+ <ref role='label.attrib'/>
+ <ref role='width.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='example.role.attrib'/>
+ <!-- %local.example.attrib; -->
+</tag>
+
+<attPool role='informalexample.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='informalexample'>
+ <sequence>
+ <hedgeRef label='example.mix' occurs='+'/>
+ </sequence>
+ <!-- ((%example.mix;)+) -->
+</elementRule>
+
+<tag name='informalexample'>
+ <ref role='width.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='informalexample.role.attrib'/>
+ <!-- %local.informalexample.attrib; -->
+</tag>
+
+<attPool role='programlistingco.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='programlistingco'>
+ <sequence>
+ <ref label='areaspec'/>
+ <ref label='programlisting'/>
+ <ref label='calloutlist' occurs='*'/>
+ </sequence>
+ <!-- (areaspec, programlisting, calloutlist*) -->
+</elementRule>
+
+<tag name='programlistingco'>
+ <ref role='common.attrib'/>
+ <ref role='programlistingco.role.attrib'/>
+ <!-- %local.programlistingco.attrib; -->
+</tag>
+<!-- CalloutList (defined above in Lists)-->
+
+<attPool role='areaspec.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='areaspec'>
+ <choice occurs='+'>
+ <ref label='area'/>
+ <ref label='areaset'/>
+ </choice>
+ <!-- ((area|areaset)+) -->
+</elementRule>
+
+<tag name='areaspec'>
+ <ref role='common.attrib'/>
+ <ref role='areaspec.role.attrib'/>
+ <!-- %local.areaspec.attrib; -->
+
+ <!-- Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn) -->
+ <attribute name='units' type='string'>
+ <enumeration value='calspair'/>
+ <enumeration value='linecolumn'/>
+ <enumeration value='linerange'/>
+ <enumeration value='linecolumnpair'/>
+ <enumeration value='other'/>
+ </attribute>
+
+ <!-- OtherUnits: User-defined units -->
+ <attribute name='otherunits' type='NMTOKEN'/>
+</tag>
+
+<attPool role='area.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='area'>
+ <empty/>
+</elementRule>
+
+<tag name='area'>
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <ref role='label.attrib'/>
+
+ <ref role='linkends.attrib'/>
+ <ref role='idreq.common.attrib'/>
+ <ref role='area.role.attrib'/>
+ <!-- %local.area.attrib; -->
+
+ <!-- Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec -->
+ <attribute name='units' type='string'>
+ <enumeration value='calspair'/>
+ <enumeration value='linecolumn'/>
+ <enumeration value='linerange'/>
+ <enumeration value='linecolumnpair'/>
+ <enumeration value='other'/>
+ </attribute>
+
+ <!-- OtherUnits: User-defined units -->
+ <attribute name='otherunits' type='NMTOKEN'/>
+
+ <attribute name='coords' type='string' required='true'/>
+</tag>
+
+<attPool role='areaset.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='areaset'>
+ <sequence>
+ <ref label='area' occurs='+'/>
+ </sequence>
+ <!-- (area+) -->
+</elementRule>
+
+<tag name='areaset'>
+ <!-- bug number/symbol override or initialization -->
+ <ref role='label.attrib'/>
+ <ref role='idreq.common.attrib'/>
+ <ref role='areaset.role.attrib'/>
+ <!-- %local.areaset.attrib; -->
+
+ <!-- Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec -->
+ <attribute name='units' type='string'>
+ <enumeration value='calspair'/>
+ <enumeration value='linecolumn'/>
+ <enumeration value='linerange'/>
+ <enumeration value='linecolumnpair'/>
+ <enumeration value='other'/>
+ </attribute>
+
+ <!-- OtherUnits: User-defined units -->
+ <attribute name='otherunits' type='NMTOKEN'/>
+
+ <attribute name='coords' type='string' required='true'/>
+</tag>
+
+<attPool role='programlisting.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='programlisting'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ <ref label='co'/>
+ <ref label='lineannotation'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix; | co | lineannotation)* -->
+</elementRule>
+
+<tag name='programlisting'>
+ <ref role='width.attrib'/>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='programlisting.role.attrib'/>
+ <!-- %local.programlisting.attrib; -->
+</tag>
+
+<attPool role='literallayout.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='literallayout'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ <ref label='co'/>
+ <ref label='lineannotation'/>
+ </choice>
+ </mixed>
+</elementRule>
+
+<tag name='literallayout'>
+ <ref role='width.attrib'/>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='literallayout.role.attrib'/>
+ <!-- %local.literallayout.attrib; -->
+
+ <!-- (%para.char.mix; | lineannotation | co)* -->
+ <attribute name='class' type='string'>
+ <enumeration value='monospaced'/>
+ <enumeration value='normal'/>
+ </attribute>
+</tag>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+
+<attPool role='screenco.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='screenco'>
+ <sequence>
+ <ref label='areaspec'/>
+ <ref label='screen'/>
+ <ref label='calloutlist' occurs='*'/>
+ </sequence>
+ <!-- (areaspec, screen, calloutlist*) -->
+</elementRule>
+
+<tag name='screenco'>
+ <ref role='common.attrib'/>
+ <ref role='screenco.role.attrib'/>
+ <!-- %local.screenco.attrib; -->
+</tag>
+
+<!-- AreaSpec (defined above)-->
+<!-- CalloutList (defined above in Lists)-->
+
+<attPool role='screen.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='screen'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ <ref label='co'/>
+ <ref label='lineannotation'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix; | co | lineannotation)* -->
+</elementRule>
+
+<tag name='screen'>
+ <ref role='width.attrib'/>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='screen.role.attrib'/>
+ <!-- %local.screen.attrib; -->
+</tag>
+
+<attPool role='screenshot.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='screenshot'>
+ <sequence>
+ <ref label='screeninfo' occurs='?'/>
+ <choice>
+ <ref label='graphic'/>
+ <ref label='graphicco'/>
+ <ref label='mediaobject'/>
+ <ref label='mediaobjectco'/>
+ </choice>
+ </sequence>
+ <!-- (screeninfo?,
+ (graphic|graphicco
+ |mediaobject|mediaobjectco)) -->
+</elementRule>
+
+<tag name='screenshot'>
+ <ref role='common.attrib'/>
+ <ref role='screenshot.role.attrib'/>
+ <!-- %local.screenshot.attrib; -->
+</tag>
+
+<attPool role='screeninfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='screeninfo'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='screeninfo'>
+ <ref role='common.attrib'/>
+ <ref role='screeninfo.role.attrib'/>
+ <!-- %local.screeninfo.attrib; -->
+</tag>
+
+<!-- Figures etc. ..................... -->
+
+<attPool role='figure.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='figure'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <choice occurs='+'>
+ <hedgeRef label='figure.mix'/>
+ <hedgeRef label='link.char.class'/>
+ </choice>
+ </sequence>
+ <!-- ((%formalobject.title.content;), (%figure.mix; |
+ %link.char.class;)+) -->
+</elementRule>
+
+<tag name='figure'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='figure.role.attrib'/>
+ <!-- %local.figure.attrib; -->
+
+ <!-- Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default) -->
+ <attribute name='float' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='pgwide' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+</tag>
+
+<attPool role='informalfigure.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='informalfigure'>
+ <choice occurs='+'>
+ <hedgeRef label='figure.mix'/>
+ <hedgeRef label='link.char.class'/>
+ </choice>
+ <!-- ((%figure.mix; | %link.char.class;)+) -->
+</elementRule>
+
+<tag name='informalfigure'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='informalfigure.role.attrib'/>
+ <!-- %local.informalfigure.attrib; -->
+
+ <!-- Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default) -->
+ <attribute name='float' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='pgwide' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+</tag>
+
+<attPool role='graphicco.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='graphicco'>
+ <sequence>
+ <ref label='areaspec'/>
+ <ref label='graphic'/>
+ <ref label='calloutlist' occurs='*'/>
+ </sequence>
+ <!-- (areaspec, graphic, calloutlist*) -->
+</elementRule>
+
+<tag name='graphicco'>
+ <ref role='common.attrib'/>
+ <ref role='graphicco.role.attrib'/>
+ <!-- %local.graphicco.attrib; -->
+</tag>
+
+<!-- AreaSpec (defined above in Examples)-->
+<!-- CalloutList (defined above in Lists)-->
+
+<!-- Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref). -->
+
+<attPool role='graphic.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='graphic'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='graphic'>
+ <ref role='graphics.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='graphic.role.attrib'/>
+ <!-- %local.graphic.attrib; -->
+</tag>
+
+<attPool role='inlinegraphic.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='inlinegraphic'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='inlinegraphic'>
+ <ref role='graphics.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='inlinegraphic.role.attrib'/>
+ <!-- %local.inlinegraphic.attrib; -->
+</tag>
+
+<attPool role='mediaobject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='mediaobject'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <hedgeRef label='mediaobject.mix'/>
+ <choice occurs='*'>
+ <hedgeRef label='mediaobject.mix'/>
+ <ref label='textobject'/>
+ </choice>
+ <ref label='caption' occurs='?'/>
+ </sequence>
+ <!-- (objectinfo?,
+ (%mediaobject.mix;),
+ (%mediaobject.mix;|textobject)*,
+ caption?) -->
+</elementRule>
+
+<tag name='mediaobject'>
+ <ref role='common.attrib'/>
+ <ref role='mediaobject.role.attrib'/>
+ <!-- %local.mediaobject.attrib; -->
+</tag>
+
+<attPool role='inlinemediaobject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='inlinemediaobject'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <hedgeRef label='mediaobject.mix'/>
+ <choice occurs='*'>
+ <hedgeRef label='mediaobject.mix'/>
+ <ref label='textobject'/>
+ </choice>
+ </sequence>
+ <!-- (objectinfo?,
+ (%mediaobject.mix;),
+ (%mediaobject.mix;|textobject)*) -->
+</elementRule>
+
+<tag name='inlinemediaobject'>
+ <ref role='common.attrib'/>
+ <ref role='inlinemediaobject.role.attrib'/>
+ <!-- %local.inlinemediaobject.attrib; -->
+</tag>
+
+<attPool role='videoobject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='videoobject'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <ref label='videodata'/>
+ </sequence>
+ <!-- (objectinfo?, videodata) -->
+</elementRule>
+
+<tag name='videoobject'>
+ <ref role='common.attrib'/>
+ <ref role='videoobject.role.attrib'/>
+ <!-- %local.videoobject.attrib; -->
+</tag>
+
+<attPool role='audioobject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='audioobject'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <ref label='audiodata'/>
+ </sequence>
+ <!-- (objectinfo?, audiodata) -->
+</elementRule>
+
+<tag name='audioobject'>
+ <ref role='common.attrib'/>
+ <ref role='audioobject.role.attrib'/>
+ <!-- %local.audioobject.attrib; -->
+</tag>
+
+<attPool role='imageobject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='imageobject'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <ref label='imagedata'/>
+ </sequence>
+ <!-- (objectinfo?, imagedata) -->
+</elementRule>
+
+<tag name='imageobject'>
+ <ref role='common.attrib'/>
+ <ref role='imageobject.role.attrib'/>
+ <!-- %local.imageobject.attrib; -->
+</tag>
+
+<attPool role='textobject.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='textobject'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <choice>
+ <ref label='phrase'/>
+ <hedgeRef label='textobject.mix' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (objectinfo?, (phrase|(%textobject.mix;)+)) -->
+</elementRule>
+
+<tag name='textobject'>
+ <ref role='common.attrib'/>
+ <ref role='textobject.role.attrib'/>
+ <!-- %local.textobject.attrib; -->
+</tag>
+
+<attPool role='objectinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='objectinfo'>
+ <sequence>
+ <hedgeRef label='infoContentModel'/>
+ </sequence>
+</elementRule>
+
+<tag name='objectinfo'>
+ <ref role='common.attrib'/>
+ <ref role='objectinfo.role.attrib'/>
+ <!-- %local.objectinfo.attrib; -->
+</tag>
+
+<attPool role='objectdata.attrib'>
+ <!-- FIXME: -->
+ <!--EntityRef: Name of an external entity containing the content
+ of the object data-->
+ <!-- entityref ENTITY #IMPLIED -->
+ <!--FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data-->
+ <attribute name='fileref' type='string'/>
+ <!--Format: Notation of the element content, if any-->
+ <attribute name='format' type='NMTOKEN'>
+ <enumeration value='BMP'/>
+ <enumeration value='CGM-CHAR'/>
+ <enumeration value='CGM-BINARY'/>
+ <enumeration value='CGM-CLEAR'/>
+ <enumeration value='DITROFF'/>
+ <enumeration value='DVI'/>
+ <enumeration value='EPS'/>
+ <enumeration value='EQN'/>
+ <enumeration value='FAX'/>
+ <enumeration value='GIF'/>
+ <enumeration value='GIF87a'/>
+ <enumeration value='GIF89a'/>
+ <enumeration value='JPG'/>
+ <enumeration value='JPEG'/>
+ <enumeration value='IGES'/>
+ <enumeration value='PCX'/>
+ <enumeration value='PIC'/>
+ <enumeration value='PNG'/>
+ <enumeration value='PS'/>
+ <enumeration value='SGML'/>
+ <enumeration value='TBL'/>
+ <enumeration value='TEX'/>
+ <enumeration value='TIFF'/>
+ <enumeration value='WMF'/>
+ <enumeration value='WPG'/>
+ <enumeration value='linespecific'/>
+ </attribute>
+ <!--SrcCredit: Information about the source of the image-->
+ <attribute name='srccredit' type='string'/>
+ <!-- %local.objectdata.attrib;-->
+</attPool>
+
+<attPool role='videodata.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='videodata'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='videodata'>
+ <ref role='common.attrib'/>
+ <ref role='objectdata.attrib'/>
+ <!-- %local.videodata.attrib; -->
+
+ <!--Width: Same as CALS reprowid (desired width)-->
+ <attribute name='width' type='string'/>
+
+ <!--Depth: Same as CALS reprodep (desired depth)-->
+ <attribute name='depth' type='string'/>
+
+ <!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific-->
+ <attribute name='align' type='NMTOKEN'>
+ <enumeration value='left'/>
+ <enumeration value='right'/>
+ <enumeration value='center'/>
+ </attribute>
+
+ <!--Scale: Conflation of CALS hscale and vscale-->
+ <attribute name='scale' type='string'/>
+
+ <!--Scalefit: Same as CALS scalefit-->
+ <attribute name='scalefit' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+</tag>
+
+<attPool role='audiodata.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='audiodata'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='audiodata'>
+ <ref role='common.attrib'/>
+ <ref role='objectdata.attrib'/>
+ <!-- %local.audiodata.attrib; -->
+ <ref role='audiodata.role.attrib'/>
+</tag>
+
+<attPool role='imagedata.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='imagedata'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='imagedata'>
+ <ref role='common.attrib'/>
+ <ref role='objectdata.attrib'/>
+ <ref role='imagedata.role.attrib'/>
+ <!-- %local.videodata.attrib; -->
+
+ <!--Width: Same as CALS reprowid (desired width)-->
+ <attribute name='width' type='string'/>
+
+ <!--Depth: Same as CALS reprodep (desired depth)-->
+ <attribute name='depth' type='string'/>
+
+ <!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific-->
+ <attribute name='align' type='NMTOKEN'>
+ <enumeration value='left'/>
+ <enumeration value='right'/>
+ <enumeration value='center'/>
+ </attribute>
+
+ <!--Scale: Conflation of CALS hscale and vscale-->
+ <attribute name='scale' type='string'/>
+
+ <!--Scalefit: Same as CALS scalefit-->
+ <attribute name='scalefit' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+</tag>
+
+<attPool role='caption.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='caption'>
+ <sequence>
+ <hedgeRef label='textobject.mix' occurs='*'/>
+ </sequence>
+</elementRule>
+
+<tag name='caption'>
+ <ref role='common.attrib'/>
+ <!-- %local.caption.attrib; -->
+ <ref role='caption.role.attrib'/>
+</tag>
+
+<attPool role='mediaobjectco.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='mediaobjectco'>
+ <sequence>
+ <ref label='objectinfo' occurs='?'/>
+ <ref label='imageobjectco'/>
+ <choice occurs='*'>
+ <ref label='imageobjectco'/>
+ <ref label='textobject'/>
+ </choice>
+ </sequence>
+ <!-- (objectinfo?, imageobjectco,
+ (imageobjectco|textobject)*) -->
+</elementRule>
+
+<tag name='mediaobjectco'>
+ <ref role='common.attrib'/>
+ <ref role='mediaobjectco.role.attrib'/>
+ <!-- %local.mediaobjectco.attrib; -->
+</tag>
+
+<attPool role='imageobjectco.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='imageobjectco'>
+ <sequence>
+ <ref label='areaspec'/>
+ <ref label='imageobject'/>
+ <ref label='calloutlist' occurs='*'/>
+ </sequence>
+ <!-- (areaspec, imageobject, calloutlist*) -->
+</elementRule>
+
+<tag name='imageobjectco'>
+ <ref role='common.attrib'/>
+ <ref role='imageobjectco.role.attrib'/>
+ <!-- %local.imageobjectco.attrib; -->
+</tag>
+
+<!-- Equations ........................ -->
+
+<!-- This PE provides a mechanism for replacing equation content, -->
+<!-- perhaps adding a new or different model (e.g., MathML) -->
+
+<hedgeRule label='equation.content'>
+ <sequence>
+ <ref label='alt' occurs='?'/>
+ <choice>
+ <ref label='graphic' occurs='+'/>
+ <ref label='mediaobject' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (alt?, (graphic+|mediaobject+)) -->
+</hedgeRule>
+
+<hedgeRule label='inlineequation.content'>
+ <sequence>
+ <ref label='alt' occurs='?'/>
+ <choice>
+ <ref label='graphic' occurs='+'/>
+ <ref label='inlinemediaobject' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (alt?, (graphic+|inlinemediaobject+)) -->
+</hedgeRule>
+
+<attPool role='equation.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='equation'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content' occurs='?'/>
+ <choice>
+ <ref label='informalequation'/>
+ <hedgeRef label='equation.content'/>
+ </choice>
+ </sequence>
+ <!-- ((%formalobject.title.content;)?, (informalequation |
+ %equation.content;)) -->
+</elementRule>
+
+<tag name='equation'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='equation.role.attrib'/>
+ <!-- %local.equation.attrib; -->
+</tag>
+
+<attPool role='informalequation.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='informalequation'>
+ <sequence>
+ <hedgeRef label='equation.content'/>
+ </sequence>
+ <!-- (%equation.content;) -->
+</elementRule>
+
+<tag name='informalequation'>
+ <ref role='common.attrib'/>
+ <ref role='informalequation.role.attrib'/>
+ <!-- %local.informalequation.attrib; -->
+</tag>
+
+<attPool role='inlineequation.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='inlineequation'>
+ <sequence>
+ <hedgeRef label='inlineequation.content'/>
+ </sequence>
+ <!-- (%inlineequation.content;) -->
+</elementRule>
+
+<tag name='inlineequation'>
+ <ref role='common.attrib'/>
+ <ref role='inlineequation.role.attrib'/>
+ <!-- %local.inlineequation.attrib; -->
+</tag>
+
+<attPool role='alt.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='alt'>
+ <!-- (#PCDATA) -->
+ <mixed>
+ <empty/>
+ </mixed>
+</elementRule>
+
+<tag name='alt'>
+ <ref role='common.attrib'/>
+ <ref role='alt.role.attrib'/>
+ <!-- %local.alt.attrib; -->
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Synopses ............................................................. -->
+
+<!-- Synopsis ......................... -->
+
+<attPool role='synopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='synopsis'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ <ref label='graphic'/>
+ <ref label='mediaobject'/>
+ <ref label='lineannotation'/>
+ <ref label='co'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix; | graphic | mediaobject | lineannotation | co)* -->
+</elementRule>
+
+<tag name='synopsis'>
+ <ref role='label.attrib'/>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='synopsis.role.attrib'/>
+ <!-- %local.synopsis.attrib; -->
+</tag>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+
+<!-- CmdSynopsis ...................... -->
+
+<attPool role='cmdsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='cmdsynopsis'>
+ <sequence>
+ <choice occurs='+'>
+ <ref label='command'/>
+ <ref label='arg'/>
+ <ref label='group'/>
+ <ref label='sbr'/>
+ </choice>
+ <ref label='synopfragment' occurs='*'/>
+ </sequence>
+ <!-- ((command | arg | group | sbr)+, synopfragment*) -->
+</elementRule>
+
+<tag name='cmdsynopsis'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='cmdsynopsis.role.attrib'/>
+ <!-- %local.cmdsynopsis.attrib; -->
+
+ <!-- Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., Δ -->
+ <attribute name='sepchar' type='string'/>
+ <attribute name='cmdlength' type='integer'/>
+</tag>
+
+<attPool role='arg.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='arg'>
+ <mixed>
+ <choice occurs='*'>
+ <ref label='arg'/>
+ <ref label='group'/>
+ <ref label='option'/>
+ <ref label='synopfragmentref'/>
+ <ref label='replaceable'/>
+ <ref label='sbr'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA
+ | arg
+ | group
+ | option
+ | synopfragmentref
+ | replaceable
+ | sbr)* -->
+</elementRule>
+
+<tag name='arg'>
+ <ref role='common.attrib'/>
+ <ref role='arg.role.attrib'/>
+ <!-- %local.arg.attrib; -->
+
+ <!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+ <attribute name='choice' type='string'>
+ <enumeration value='opt'/>
+ <enumeration value='req'/>
+ <enumeration value='plain'/>
+ </attribute>
+
+ <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+ <attribute name='rep' type='string'>
+ <enumeration value='norepeat'/>
+ <enumeration value='repeat'/>
+ </attribute>
+</tag>
+
+<attPool role='group.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='group'>
+ <choice occurs='+'>
+ <ref label='arg'/>
+ <ref label='group'/>
+ <ref label='option'/>
+ <ref label='synopfragmentref'/>
+ <ref label='replaceable'/>
+ <ref label='sbr'/>
+ </choice>
+ <!-- ((arg | group | option | synopfragmentref
+ | replaceable | sbr)+) -->
+</elementRule>
+
+<tag name='group'>
+ <ref role='common.attrib'/>
+ <ref role='group.role.attrib'/>
+ <!-- %local.group.attrib; -->
+
+ <!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+ <attribute name='choice' type='string'>
+ <enumeration value='opt'/>
+ <enumeration value='req'/>
+ <enumeration value='plain'/>
+ </attribute>
+
+ <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+ <attribute name='rep' type='string'>
+ <enumeration value='norepeat'/>
+ <enumeration value='repeat'/>
+ </attribute>
+</tag>
+
+<!-- Synopsis break -->
+<attPool role='sbr.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sbr'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='sbr'>
+ <ref role='common.attrib'/>
+ <ref role='sbr.role.attrib'/>
+ <!-- %local.sbr.attrib; -->
+</tag>
+
+<attPool role='synopfragmentref.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='synopfragmentref'>
+ <!-- (#PCDATA) -->
+ <mixed>
+ <empty/>
+ </mixed>
+</elementRule>
+
+<tag name='synopfragmentref'>
+ <!-- to SynopFragment of complex synopsis
+ material for separate referencing -->
+ <ref role='linkendreq.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='synopfragmentref.role.attrib'/>
+ <!-- %local.synopfragmentref.attrib; -->
+</tag>
+
+<attPool role='synopfragment.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='synopfragment'>
+ <choice occurs='+'>
+ <ref label='arg'/>
+ <ref label='group'/>
+ </choice>
+ <!-- ((arg | group)+) -->
+</elementRule>
+
+<tag name='synopfragment'>
+ <ref role='idreq.common.attrib'/>
+ <ref role='synopfragment.role.attrib'/>
+ <!-- %local.synopfragment.attrib; -->
+</tag>
+
+<!-- Command (defined in the Inlines section, below)-->
+<!-- Option (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+
+<!-- FuncSynopsis ..................... -->
+
+<attPool role='funcsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='funcsynopsis'>
+ <choice occurs='+'>
+ <ref label='funcsynopsisinfo'/>
+ <ref label='funcprototype'/>
+ </choice>
+ <!-- ((funcsynopsisinfo | funcprototype)+) -->
+</elementRule>
+
+<tag name='funcsynopsis'>
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='funcsynopsis.role.attrib'/>
+ <!-- %local.funcsynopsis.attrib; -->
+</tag>
+
+<attPool role='funcsynopsisinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='funcsynopsisinfo'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ <ref label='lineannotation'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix; | lineannotation)* -->
+</elementRule>
+
+<tag name='funcsynopsisinfo'>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='funcsynopsisinfo.role.attrib'/>
+ <!-- %local.funcsynopsisinfo.attrib; -->
+</tag>
+
+<attPool role='funcprototype.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='funcprototype'>
+ <sequence>
+ <ref label='funcdef'/>
+ <choice occurs='+'>
+ <ref label='void'/>
+ <ref label='varargs'/>
+ <ref label='paramdef'/>
+ </choice>
+ </sequence>
+ <!-- (funcdef, (void | varargs | paramdef+)) -->
+</elementRule>
+
+<tag name='funcprototype'>
+ <ref role='common.attrib'/>
+ <ref role='funcprototype.role.attrib'/>
+ <!-- %local.funcprototype.attrib; -->
+</tag>
+
+<attPool role='funcdef.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='funcdef'>
+ <mixed>
+ <choice occurs='*'>
+ <ref label='replaceable'/>
+ <ref label='function'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA
+ | replaceable
+ | function)* -->
+</elementRule>
+
+<tag name='funcdef'>
+ <ref role='common.attrib'/>
+ <ref role='funcdef.role.attrib'/>
+ <!-- %local.funcdef.attrib; -->
+</tag>
+
+<attPool role='void.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='void'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='void'>
+ <ref role='common.attrib'/>
+ <ref role='void.role.attrib'/>
+ <!-- %local.void.attrib; -->
+</tag>
+
+<attPool role='varargs.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='varargs'>
+ <!-- EMPTY -->
+ <empty/>
+</elementRule>
+
+<tag name='varargs'>
+ <ref role='common.attrib'/>
+ <ref role='varargs.role.attrib'/>
+ <!-- %local.varargs.attrib; -->
+</tag>
+
+<!-- Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions. -->
+
+<attPool role='paramdef.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='paramdef'>
+ <mixed>
+ <choice occurs='*'>
+ <ref label='replaceable'/>
+ <ref label='parameter'/>
+ <ref label='funcparams'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA
+ | replaceable
+ | parameter
+ | funcparams)* -->
+</elementRule>
+
+<tag name='paramdef'>
+ <ref role='common.attrib'/>
+ <ref role='paramdef.role.attrib'/>
+ <!-- %local.paramdef.attrib; -->
+</tag>
+
+<attPool role='funcparams.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='funcparams'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='funcparams'>
+ <ref role='common.attrib'/>
+ <ref role='funcparams.role.attrib'/>
+ <!-- %local.funcparams.attrib; -->
+</tag>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!-- Function (defined in the Inlines section, below)-->
+<!-- Parameter (defined in the Inlines section, below)-->
+
+<!-- ClassSynopsis ..................... -->
+
+<attPool role='classsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='classsynopsis'>
+ <sequence>
+ <choice occurs='+'>
+ <ref label='ooclass'/>
+ <ref label='oointerface'/>
+ <ref label='ooexception'/>
+ </choice>
+ <choice occurs='*'>
+ <ref label='classsynopsisinfo'/>
+ <ref label='fieldsynopsis'/>
+ <hedgeRef label='method.synop.class'/>
+ </choice>
+ </sequence>
+ <!-- ((ooclass|oointerface|ooexception)+,
+ (classsynopsisinfo
+ |fieldsynopsis|%method.synop.class;)*) -->
+</elementRule>
+
+<tag name='classsynopsis'>
+ <ref role='common.attrib'/>
+ <ref role='classsynopsis.role.attrib'/>
+ <!-- %local.classsynopsis.attrib; -->
+ <attribute name='language' type='string'/>
+ <attribute name='class' type='string'>
+ <enumeration value='class'/>
+ <enumeration value='interface'/>
+ </attribute>
+</tag>
+
+<attPool role='classsynopsisinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='classsynopsisinfo'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ <ref label='lineannotation'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix; | lineannotation)* -->
+</elementRule>
+
+<tag name='classsynopsisinfo'>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='classsynopsisinfo.role.attrib'/>
+ <!-- %local.classsynopsisinfo.attrib; -->
+</tag>
+
+<attPool role='ooclass.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='ooclass'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <ref label='classname'/>
+ </sequence>
+ <!-- (modifier*, classname) -->
+</elementRule>
+
+<tag name='ooclass'>
+ <ref role='common.attrib'/>
+ <ref role='ooclass.role.attrib'/>
+ <!-- %local.ooclass.attrib; -->
+</tag>
+
+<attPool role='oointerface.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='oointerface'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <ref label='interfacename'/>
+ </sequence>
+ <!-- (modifier*, interfacename) -->
+</elementRule>
+
+<tag name='oointerface'>
+ <ref role='common.attrib'/>
+ <ref role='oointerface.role.attrib'/>
+ <!-- %local.oointerface.attrib; -->
+</tag>
+
+<attPool role='ooexception.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='ooexception'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <ref label='exceptionname'/>
+ </sequence>
+ <!-- (modifier*, exceptionname) -->
+</elementRule>
+
+<tag name='ooexception'>
+ <ref role='common.attrib'/>
+ <ref role='ooexception.role.attrib'/>
+ <!-- %local.ooexception.attrib; -->
+</tag>
+
+<attPool role='modifier.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='modifier'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='modifier'>
+ <ref role='common.attrib'/>
+ <ref role='modifier.role.attrib'/>
+ <!-- %local.modifier.attrib; -->
+</tag>
+
+<attPool role='interfacename.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='interfacename'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='interfacename'>
+ <ref role='common.attrib'/>
+ <ref role='interfacename.role.attrib'/>
+ <!-- %local.interfacename.attrib; -->
+</tag>
+
+<attPool role='exceptionname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='exceptionname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='exceptionname'>
+ <ref role='common.attrib'/>
+ <ref role='exceptionname.role.attrib'/>
+ <!-- %local.exceptionname.attrib; -->
+</tag>
+
+<attPool role='fieldsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='fieldsynopsis'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <ref label='type' occurs='?'/>
+ <ref label='varname'/>
+ <ref label='initializer' occurs='?'/>
+ </sequence>
+ <!-- (modifier*, type?, varname, initializer?) -->
+</elementRule>
+
+<tag name='fieldsynopsis'>
+ <ref role='common.attrib'/>
+ <ref role='fieldsynopsis.role.attrib'/>
+ <!-- %local.fieldsynopsis.attrib; -->
+</tag>
+
+<attPool role='initializer.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='initializer'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='initializer'>
+ <ref role='common.attrib'/>
+ <ref role='initializer.role.attrib'/>
+ <!-- %local.initializer.attrib; -->
+</tag>
+
+<attPool role='constructorsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='constructorsynopsis'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <ref label='methodname' occurs='?'/>
+ <choice>
+ <ref label='methodparam' occurs='+'/>
+ <ref label='void'/>
+ </choice>
+ <ref label='exceptionname' occurs='*'/>
+ </sequence>
+ <!-- (modifier*,
+ methodname?,
+ (methodparam+|void),
+ exceptionname*) -->
+</elementRule>
+
+<tag name='constructorsynopsis'>
+ <ref role='common.attrib'/>
+ <ref role='constructorsynopsis.role.attrib'/>
+ <!-- %local.constructorsynopsis.attrib; -->
+</tag>
+
+<attPool role='destructorsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='destructorsynopsis'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <ref label='methodname' occurs='?'/>
+ <choice>
+ <ref label='methodparam' occurs='+'/>
+ <ref label='void'/>
+ </choice>
+ <ref label='exceptionname' occurs='*'/>
+ </sequence>
+ <!-- (modifier*,
+ methodname?,
+ (methodparam+|void),
+ exceptionname*) -->
+</elementRule>
+
+<tag name='destructorsynopsis'>
+ <ref role='common.attrib'/>
+ <ref role='destructorsynopsis.role.attrib'/>
+ <!-- %local.destructorsynopsis.attrib; -->
+</tag>
+
+<attPool role='methodsynopsis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='methodsynopsis'>
+ <sequence>
+ <ref label='modifier' occurs='*'/>
+ <choice occurs='?'>
+ <ref label='type'/>
+ <ref label='void'/>
+ </choice>
+ <ref label='methodname' occurs='?'/>
+ <choice>
+ <ref label='methodparam' occurs='+'/>
+ <ref label='void'/>
+ </choice>
+ <ref label='exceptionname' occurs='*'/>
+ <ref label='modifier' occurs='*'/>
+ </sequence>
+ <!-- (modifier*,
+ (type|void)?,
+ methodname,
+ (methodparam+|void),
+ exceptionname*,
+ modifier*) -->
+</elementRule>
+
+<tag name='methodsynopsis'>
+ <ref role='common.attrib'/>
+ <ref role='methodsynopsis.role.attrib'/>
+ <!-- %local.methodsynopsis.attrib; -->
+</tag>
+
+<attPool role='methodname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='methodname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='methodname'>
+ <ref role='common.attrib'/>
+ <ref role='methodname.role.attrib'/>
+ <!-- %local.methodname.attrib; -->
+</tag>
+
+<attPool role='methodparam.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='methodparam'>
+ <sequence>
+ <element name='modifier' occurs='*'/>
+ <element name='type' occurs='?'/>
+ <choice>
+ <sequence>
+ <element name='parameter'/>
+ <element name='initializer' occurs='?'/>
+ </sequence>
+ <element name='funcparams'/>
+ </choice>
+ <element name='modifier' occurs='*'/>
+ </sequence>
+ <!-- (modifier*,
+ type?,
+ ((parameter,initializer?)|funcparams),
+ modifier*) -->
+</elementRule>
+
+<tag name='methodparam'>
+ <ref role='common.attrib'/>
+ <ref role='methodparam.role.attrib'/>
+ <!-- %local.methodparam.attrib; -->
+
+ <!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+ <attribute name='choice' type='string'>
+ <enumeration value='opt'/>
+ <enumeration value='req'/>
+ <enumeration value='plain'/>
+ </attribute>
+
+ <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+ <attribute name='rep' type='string'>
+ <enumeration value='norepeat'/>
+ <enumeration value='repeat'/>
+ </attribute>
+</tag>
+
+<!-- ...................................................................... -->
+<!-- Document information entities and elements ........................... -->
+
+<!-- The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies. -->
+
+<!-- .................................. -->
+
+<!-- Ackno ............................ -->
+
+<attPool role='ackno.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='ackno'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='ackno'>
+ <ref role='common.attrib'/>
+ <ref role='ackno.role.attrib'/>
+ <!-- %local.ackno.attrib; -->
+</tag>
+
+<!-- Address .......................... -->
+
+<attPool role='address.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='address'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='person.ident.mix'/>
+ <ref label='street'/>
+ <ref label='pob'/>
+ <ref label='postcode'/>
+ <ref label='city'/>
+ <ref label='state'/>
+ <ref label='country'/>
+ <ref label='phone'/>
+ <ref label='fax'/>
+ <ref label='email'/>
+ <ref label='otheraddr'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA|%person.ident.mix;
+ |street|pob|postcode|city|state|country|phone
+ |fax|email|otheraddr)* -->
+</elementRule>
+
+<tag name='address'>
+ <ref role='linespecific.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='address.role.attrib'/>
+ <!-- %local.address.attrib; -->
+</tag>
+
+<attPool role='street.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='street'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='street'>
+ <ref role='common.attrib'/>
+ <ref role='street.role.attrib'/>
+ <!-- %local.street.attrib; -->
+</tag>
+
+<attPool role='pob.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='pob'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='pob'>
+ <ref role='common.attrib'/>
+ <ref role='pob.role.attrib'/>
+ <!-- %local.pob.attrib; -->
+</tag>
+
+<attPool role='postcode.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='postcode'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='postcode'>
+ <ref role='common.attrib'/>
+ <ref role='postcode.role.attrib'/>
+ <!-- %local.postcode.attrib; -->
+</tag>
+
+<attPool role='city.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='city'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='city'>
+ <ref role='common.attrib'/>
+ <ref role='city.role.attrib'/>
+ <!-- %local.city.attrib; -->
+</tag>
+
+<attPool role='state.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='state'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='state'>
+ <ref role='common.attrib'/>
+ <ref role='state.role.attrib'/>
+ <!-- %local.state.attrib; -->
+</tag>
+
+<attPool role='country.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='country'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='country'>
+ <ref role='common.attrib'/>
+ <ref role='country.role.attrib'/>
+ <!-- %local.country.attrib; -->
+</tag>
+
+<attPool role='phone.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='phone'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='phone'>
+ <ref role='common.attrib'/>
+ <ref role='phone.role.attrib'/>
+ <!-- %local.phone.attrib; -->
+</tag>
+
+<attPool role='fax.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='fax'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='fax'>
+ <ref role='common.attrib'/>
+ <ref role='fax.role.attrib'/>
+ <!-- %local.fax.attrib; -->
+</tag>
+
+<!-- Email (defined in the Inlines section, below)-->
+
+<attPool role='otheraddr.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='otheraddr'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='otheraddr'>
+ <ref role='common.attrib'/>
+ <ref role='otheraddr.role.attrib'/>
+ <!-- %local.otheraddr.attrib; -->
+</tag>
+
+<!-- Affiliation ...................... -->
+
+<attPool role='affiliation.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='affiliation'>
+ <sequence>
+ <ref label='shortaffil' occurs='?'/>
+ <ref label='jobtitle' occurs='*'/>
+ <ref label='orgname' occurs='?'/>
+ <ref label='orgdiv' occurs='*'/>
+ <ref label='address' occurs='*'/>
+ </sequence>
+ <!-- (shortaffil?, jobtitle*, orgname?, orgdiv*,
+ address*) -->
+</elementRule>
+
+<tag name='affiliation'>
+ <ref role='common.attrib'/>
+ <ref role='affiliation.role.attrib'/>
+ <!-- %local.affiliation.attrib; -->
+</tag>
+
+<attPool role='shortaffil.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='shortaffil'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='shortaffil'>
+ <ref role='common.attrib'/>
+ <ref role='shortaffil.role.attrib'/>
+ <!-- %local.shortaffil.attrib; -->
+</tag>
+
+<attPool role='jobtitle.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='jobtitle'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='jobtitle'>
+ <ref role='common.attrib'/>
+ <ref role='jobtitle.role.attrib'/>
+ <!-- %local.jobtitle.attrib; -->
+</tag>
+
+<!-- OrgName (defined elsewhere in this section)-->
+
+<attPool role='orgdiv.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='orgdiv'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='orgdiv'>
+ <ref role='common.attrib'/>
+ <ref role='orgdiv.role.attrib'/>
+ <!-- %local.orgdiv.attrib; -->
+</tag>
+
+<!-- Address (defined elsewhere in this section)-->
+
+<!-- ArtPageNums ...................... -->
+
+<attPool role='artpagenums.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='artpagenums'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='artpagenums'>
+ <ref role='common.attrib'/>
+ <ref role='artpagenums.role.attrib'/>
+ <!-- %local.artpagenums.attrib; -->
+</tag>
+
+<!-- Author ........................... -->
+
+<attPool role='author.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='author'>
+ <sequence occurs='+'>
+ <hedgeRef label='person.ident.mix'/>
+ </sequence>
+ <!-- ((%person.ident.mix;)+) -->
+</elementRule>
+
+<tag name='author'>
+ <ref role='common.attrib'/>
+ <ref role='author.role.attrib'/>
+ <!-- %local.author.attrib; -->
+</tag>
+
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+<!-- AuthorGroup ...................... -->
+
+<attPool role='authorgroup.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='authorgroup'>
+ <choice occurs='+'>
+ <ref label='author'/>
+ <ref label='editor'/>
+ <ref label='collab'/>
+ <ref label='corpauthor'/>
+ <ref label='othercredit'/>
+ </choice>
+ <!-- ((author|editor|collab|corpauthor|othercredit)+) -->
+</elementRule>
+
+<tag name='authorgroup'>
+ <ref role='common.attrib'/>
+ <ref role='authorgroup.role.attrib'/>
+ <!-- %local.authorgroup.attrib; -->
+</tag>
+
+<!-- Author (defined elsewhere in this section)-->
+<!-- Editor (defined elsewhere in this section)-->
+
+<attPool role='collab.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='collab'>
+ <sequence>
+ <ref label='collabname'/>
+ <ref label='affiliation' occurs='*'/>
+ </sequence>
+ <!-- (collabname, affiliation*) -->
+</elementRule>
+
+<tag name='collab'>
+ <ref role='common.attrib'/>
+ <ref role='collab.role.attrib'/>
+ <!-- %local.collab.attrib; -->
+</tag>
+
+<attPool role='collabname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='collabname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='collabname'>
+ <ref role='common.attrib'/>
+ <ref role='collabname.role.attrib'/>
+ <!-- %local.collabname.attrib; -->
+</tag>
+
+<!-- Affiliation (defined elsewhere in this section)-->
+
+<!-- CorpAuthor (defined elsewhere in this section)-->
+<!-- OtherCredit (defined elsewhere in this section)-->
+
+<!-- AuthorInitials ................... -->
+
+<attPool role='authorinitials.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='authorinitials'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='authorinitials'>
+ <ref role='common.attrib'/>
+ <ref role='authorinitials.role.attrib'/>
+ <!-- %local.authorinitials.attrib; -->
+</tag>
+
+<!-- ConfGroup ........................ -->
+
+<attPool role='confgroup.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='confgroup'>
+ <choice occurs='*'>
+ <ref label='confdates'/>
+ <ref label='conftitle'/>
+ <ref label='confnum'/>
+ <ref label='address'/>
+ <ref label='confsponsor'/>
+ </choice>
+ <!-- ((confdates|conftitle|confnum|address|confsponsor)*) -->
+</elementRule>
+
+<tag name='confgroup'>
+ <ref role='common.attrib'/>
+ <ref role='confgroup.role.attrib'/>
+ <!-- %local.confgroup.attrib; -->
+</tag>
+
+<attPool role='confdates.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='confdates'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='confdates'>
+ <ref role='common.attrib'/>
+ <ref role='confdates.role.attrib'/>
+ <!-- %local.confdates.attrib; -->
+</tag>
+
+<attPool role='conftitle.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='conftitle'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='conftitle'>
+ <ref role='common.attrib'/>
+ <ref role='conftitle.role.attrib'/>
+ <!-- %local.conftitle.attrib; -->
+</tag>
+
+<attPool role='confnum.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='confnum'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='confnum'>
+ <ref role='common.attrib'/>
+ <ref role='confnum.role.attrib'/>
+ <!-- %local.confnum.attrib; -->
+</tag>
+
+<!-- Address (defined elsewhere in this section)-->
+
+<attPool role='confsponsor.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='confsponsor'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='confsponsor'>
+ <ref role='common.attrib'/>
+ <ref role='confsponsor.role.attrib'/>
+ <!-- %local.confsponsor.attrib; -->
+</tag>
+
+<!-- ContractNum ...................... -->
+
+<attPool role='contractnum.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='contractnum'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='contractnum'>
+ <ref role='common.attrib'/>
+ <ref role='contractnum.role.attrib'/>
+ <!-- %local.contractnum.attrib; -->
+</tag>
+
+<!-- ContractSponsor .................. -->
+
+<attPool role='contractsponsor.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='contractsponsor'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='contractsponsor'>
+ <ref role='common.attrib'/>
+ <ref role='contractsponsor.role.attrib'/>
+ <!-- %local.contractsponsor.attrib; -->
+</tag>
+
+<!-- Copyright ........................ -->
+
+<attPool role='copyright.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='copyright'>
+ <sequence>
+ <ref label='year' occurs='+'/>
+ <ref label='holder' occurs='*'/>
+ </sequence>
+ <!-- (year+, holder*) -->
+</elementRule>
+
+<tag name='copyright'>
+ <ref role='common.attrib'/>
+ <ref role='copyright.role.attrib'/>
+ <!-- %local.copyright.attrib; -->
+</tag>
+
+<attPool role='year.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='year'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='year'>
+ <ref role='common.attrib'/>
+ <ref role='year.role.attrib'/>
+ <!-- %local.year.attrib; -->
+</tag>
+
+<attPool role='holder.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='holder'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='holder'>
+ <ref role='common.attrib'/>
+ <ref role='holder.role.attrib'/>
+ <!-- %local.holder.attrib; -->
+</tag>
+
+<!-- CorpAuthor ....................... -->
+
+<attPool role='corpauthor.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='corpauthor'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='corpauthor'>
+ <ref role='common.attrib'/>
+ <ref role='corpauthor.role.attrib'/>
+ <!-- %local.corpauthor.attrib; -->
+</tag>
+
+<!-- CorpName ......................... -->
+
+<attPool role='corpname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='corpname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='corpname'>
+ <ref role='common.attrib'/>
+ <ref role='corpname.role.attrib'/>
+ <!-- %local.corpname.attrib; -->
+</tag>
+
+<!-- Date ............................. -->
+
+<attPool role='date.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='date'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='date'>
+ <ref role='common.attrib'/>
+ <ref role='date.role.attrib'/>
+ <!-- %local.date.attrib; -->
+</tag>
+
+<!-- Edition .......................... -->
+
+<attPool role='edition.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='edition'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='edition'>
+ <ref role='common.attrib'/>
+ <ref role='edition.role.attrib'/>
+ <!-- %local.edition.attrib; -->
+</tag>
+
+<!-- Editor ........................... -->
+
+<attPool role='editor.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='editor'>
+ <sequence occurs='+'>
+ <hedgeRef label='person.ident.mix'/>
+ </sequence>
+ <!-- ((%person.ident.mix;)+) -->
+</elementRule>
+
+<tag name='editor'>
+ <ref role='common.attrib'/>
+ <ref role='editor.role.attrib'/>
+ <!-- %local.editor.attrib; -->
+</tag>
+
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+<!-- ISBN ............................. -->
+
+<attPool role='isbn.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='isbn'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='isbn'>
+ <ref role='common.attrib'/>
+ <ref role='isbn.role.attrib'/>
+ <!-- %local.isbn.attrib; -->
+</tag>
+
+<!-- ISSN ............................. -->
+
+<attPool role='issn.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='issn'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='issn'>
+ <ref role='common.attrib'/>
+ <ref role='issn.role.attrib'/>
+ <!-- %local.issn.attrib; -->
+</tag>
+
+<!-- InvPartNumber .................... -->
+
+<attPool role='invpartnumber.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='invpartnumber'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='invpartnumber'>
+ <ref role='common.attrib'/>
+ <ref role='invpartnumber.role.attrib'/>
+ <!-- %local.invpartnumber.attrib; -->
+</tag>
+
+<!-- IssueNum ......................... -->
+
+<attPool role='issuenum.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='issuenum'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='issuenum'>
+ <ref role='common.attrib'/>
+ <ref role='issuenum.role.attrib'/>
+ <!-- %local.issuenum.attrib; -->
+</tag>
+
+<!-- LegalNotice ...................... -->
+
+<attPool role='legalnotice.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='legalnotice'>
+ <sequence>
+ <ref label='title' occurs='?'/>
+ <hedgeRef label='legalnotice.mix' occurs='+'/>
+ </sequence>
+ <!-- (title?, (%legalnotice.mix;)+) -->
+</elementRule>
+
+<tag name='legalnotice'>
+ <ref role='common.attrib'/>
+ <ref role='legalnotice.role.attrib'/>
+ <!-- %local.legalnotice.attrib; -->
+</tag>
+
+<!-- ModeSpec ......................... -->
+
+<attPool role='modespec.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='modespec'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='modespec'>
+ <ref role='common.attrib'/>
+ <ref role='modespec.role.attrib'/>
+ <!-- %local.modespec.attrib; -->
+
+ <!-- Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query) -->
+ <attribute name='application' type='NMTOKEN'>
+ <enumeration value='BMP'/>
+ <enumeration value='CGM-CHAR'/>
+ <enumeration value='CGM-BINARY'/>
+ <enumeration value='CGM-CLEAR'/>
+ <enumeration value='DITROFF'/>
+ <enumeration value='DVI'/>
+ <enumeration value='EPS'/>
+ <enumeration value='EQN'/>
+ <enumeration value='FAX'/>
+ <enumeration value='GIF'/>
+ <enumeration value='GIF87a'/>
+ <enumeration value='GIF89a'/>
+ <enumeration value='JPG'/>
+ <enumeration value='JPEG'/>
+ <enumeration value='IGES'/>
+ <enumeration value='PCX'/>
+ <enumeration value='PIC'/>
+ <enumeration value='PNG'/>
+ <enumeration value='PS'/>
+ <enumeration value='SGML'/>
+ <enumeration value='TBL'/>
+ <enumeration value='TEX'/>
+ <enumeration value='TIFF'/>
+ <enumeration value='WMF'/>
+ <enumeration value='WPG'/>
+ <enumeration value='linespecific'/>
+ </attribute>
+</tag>
+
+<!-- OrgName .......................... -->
+
+<attPool role='orgname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='orgname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='orgname'>
+ <ref role='common.attrib'/>
+ <ref role='orgname.role.attrib'/>
+ <!-- %local.orgname.attrib; -->
+</tag>
+
+<!-- OtherCredit ...................... -->
+
+<attPool role='othercredit.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='othercredit'>
+ <sequence occurs='+'>
+ <hedgeRef label='person.ident.mix'/>
+ </sequence>
+ <!-- ((%person.ident.mix;)+) -->
+</elementRule>
+
+<tag name='othercredit'>
+ <ref role='common.attrib'/>
+ <ref role='othercredit.role.attrib'/>
+ <!-- %local.othercredit.attrib; -->
+</tag>
+
+ <!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+<!-- PageNums ......................... -->
+
+<attPool role='pagenums.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='pagenums'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='pagenums'>
+ <ref role='common.attrib'/>
+ <ref role='pagenums.role.attrib'/>
+ <!-- %local.pagenums.attrib; -->
+</tag>
+
+<!-- Personal identity elements ....... -->
+
+<!-- These elements are used only within Author, Editor, and
+ OtherCredit. -->
+
+<attPool role='contrib.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='contrib'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='contrib'>
+ <ref role='common.attrib'/>
+ <ref role='contrib.role.attrib'/>
+ <!-- %local.contrib.attrib; -->
+</tag>
+
+<attPool role='firstname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='firstname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='firstname'>
+ <ref role='common.attrib'/>
+ <ref role='firstname.role.attrib'/>
+ <!-- %local.firstname.attrib; -->
+</tag>
+
+<attPool role='honorific.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='honorific'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='honorific'>
+ <ref role='common.attrib'/>
+ <ref role='honorific.role.attrib'/>
+ <!-- %local.honorific.attrib; -->
+</tag>
+
+<attPool role='lineage.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='lineage'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='lineage'>
+ <ref role='common.attrib'/>
+ <ref role='lineage.role.attrib'/>
+ <!-- %local.lineage.attrib; -->
+</tag>
+
+<attPool role='othername.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='othername'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='othername'>
+ <ref role='common.attrib'/>
+ <ref role='othername.role.attrib'/>
+ <!-- %local.othername.attrib; -->
+</tag>
+
+<attPool role='surname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='surname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='surname'>
+ <ref role='common.attrib'/>
+ <ref role='surname.role.attrib'/>
+ <!-- %local.surname.attrib; -->
+</tag>
+
+<!-- PrintHistory ..................... -->
+
+<attPool role='printhistory.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='printhistory'>
+ <sequence occurs='+'>
+ <hedgeRef label='para.class'/>
+ </sequence>
+ <!-- ((%para.class;)+) -->
+</elementRule>
+
+<tag name='printhistory'>
+ <ref role='common.attrib'/>
+ <ref role='printhistory.role.attrib'/>
+ <!-- %local.printhistory.attrib; -->
+</tag>
+
+<!-- ProductName ...................... -->
+
+<attPool role='productname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='productname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='productname'>
+ <ref role='common.attrib'/>
+ <ref role='productname.role.attrib'/>
+ <!-- %local.productname.attrib; -->
+
+ <!-- Class: More precisely identifies the item the element names -->
+ <attribute name='class' type='string'>
+ <enumeration value='service'/>
+ <enumeration value='trade'/>
+ <enumeration value='registered'/>
+ <enumeration value='copyright'/>
+ </attribute>
+</tag>
+
+<!-- ProductNumber .................... -->
+
+<attPool role='productnumber.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='productnumber'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='productnumber'>
+ <ref role='common.attrib'/>
+ <ref role='productnumber.role.attrib'/>
+ <!-- %local.productnumber.attrib; -->
+</tag>
+
+<!-- PubDate .......................... -->
+
+<attPool role='pubdate.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='pubdate'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='pubdate'>
+ <ref role='common.attrib'/>
+ <ref role='pubdate.role.attrib'/>
+ <!-- %local.pubdate.attrib; -->
+</tag>
+
+<!-- Publisher ........................ -->
+
+<attPool role='publisher.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='publisher'>
+ <sequence>
+ <ref label='publishername'/>
+ <ref label='address' occurs='*'/>
+ </sequence>
+ <!-- (publishername, address*) -->
+</elementRule>
+
+<tag name='publisher'>
+ <ref role='common.attrib'/>
+ <ref role='publisher.role.attrib'/>
+ <!-- %local.publisher.attrib; -->
+</tag>
+
+<attPool role='publishername.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='publishername'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='publishername'>
+ <ref role='common.attrib'/>
+ <ref role='publishername.role.attrib'/>
+ <!-- %local.publishername.attrib; -->
+</tag>
+
+<!-- Address (defined elsewhere in this section)-->
+
+<!-- PubsNumber ....................... -->
+
+<attPool role='pubsnumber.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='pubsnumber'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='pubsnumber'>
+ <ref role='common.attrib'/>
+ <ref role='pubsnumber.role.attrib'/>
+ <!-- %local.pubsnumber.attrib; -->
+</tag>
+
+<!-- ReleaseInfo ...................... -->
+
+<attPool role='releaseinfo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='releaseinfo'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='releaseinfo'>
+ <ref role='common.attrib'/>
+ <ref role='releaseinfo.role.attrib'/>
+ <!-- %local.releaseinfo.attrib; -->
+</tag>
+
+<!-- RevHistory ....................... -->
+
+<attPool role='revhistory.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='revhistory'>
+ <sequence>
+ <ref label='revision' occurs='+'/>
+ </sequence>
+ <!-- (revision+) -->
+</elementRule>
+
+<tag name='revhistory'>
+ <ref role='common.attrib'/>
+ <ref role='revhistory.role.attrib'/>
+ <!-- %local.revhistory.attrib; -->
+</tag>
+
+<attPool role='revision.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='revision'>
+ <sequence>
+ <ref label='revnumber'/>
+ <ref label='date'/>
+ <ref label='authorinitials' occurs='*'/>
+ <choice occurs='?'>
+ <ref label='revremark'/>
+ <ref label='revdescription'/>
+ </choice>
+ </sequence>
+ <!-- (revnumber, date, authorinitials*,
+ (revremark|revdescription)?) -->
+</elementRule>
+
+<tag name='revision'>
+ <ref role='common.attrib'/>
+ <ref role='revision.role.attrib'/>
+ <!-- %local.revision.attrib; -->
+</tag>
+
+<attPool role='revnumber.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='revnumber'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='revnumber'>
+ <ref role='common.attrib'/>
+ <ref role='revnumber.role.attrib'/>
+ <!-- %local.revnumber.attrib; -->
+</tag>
+
+<!-- Date (defined elsewhere in this section)-->
+<!-- AuthorInitials (defined elsewhere in this section)-->
+
+<attPool role='revremark.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='revremark'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='revremark'>
+ <ref role='common.attrib'/>
+ <ref role='revremark.role.attrib'/>
+ <!-- %local.revremark.attrib; -->
+</tag>
+
+<attPool role='revdescription.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='revdescription'>
+ <sequence occurs='+'>
+ <hedgeRef label='revdescription.mix'/>
+ </sequence>
+ <!-- ((%revdescription.mix;)+) -->
+</elementRule>
+
+<tag name='revdescription'>
+ <ref role='common.attrib'/>
+ <ref role='revdescription.role.attrib'/>
+ <!-- %local.revdescription.attrib; -->
+</tag>
+
+<!-- SeriesVolNums .................... -->
+
+<attPool role='seriesvolnums.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='seriesvolnums'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='seriesvolnums'>
+ <ref role='common.attrib'/>
+ <ref role='seriesvolnums.role.attrib'/>
+ <!-- %local.seriesvolnums.attrib; -->
+</tag>
+
+<!-- VolumeNum ........................ -->
+
+<attPool role='volumenum.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='volumenum'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='volumenum'>
+ <ref role='common.attrib'/>
+ <ref role='volumenum.role.attrib'/>
+ <!-- %local.volumenum.attrib; -->
+</tag>
+
+<!-- .................................. -->
+
+<!-- ...................................................................... -->
+<!-- Inline, link, and ubiquitous elements ................................ -->
+
+<!-- Technical and computer terms ......................................... -->
+
+<attPool role='accel.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='accel'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='accel'>
+ <ref role='common.attrib'/>
+ <ref role='accel.role.attrib'/>
+ <!-- %local.accel.attrib; -->
+</tag>
+
+<attPool role='action.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='action'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='action'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='action.role.attrib'/>
+ <!-- %local.action.attrib; -->
+</tag>
+
+<attPool role='application.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='application'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='application'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='application.role.attrib'/>
+ <!-- %local.application.attrib; -->
+
+ <attribute name='class' type='string'>
+ <enumeration value='hardware'/>
+ <enumeration value='software'/>
+ </attribute>
+</tag>
+
+<attPool role='classname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='classname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='classname'>
+ <ref role='common.attrib'/>
+ <ref role='classname.role.attrib'/>
+ <!-- %local.classname.attrib; -->
+</tag>
+
+<!-- CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO. -->
+<attPool role='co.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='co'>
+ <empty/>
+ <!-- EMPTY -->
+</elementRule>
+
+<tag name='co'>
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <ref role='label.attrib'/>
+ <ref role='linkends.attrib'/>
+ <ref role='idreq.common.attrib'/>
+ <ref role='co.role.attrib'/>
+ <!-- %local.co.attrib; -->
+</tag>
+
+<attPool role='command.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='command'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='command'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='command.role.attrib'/>
+ <!-- %local.command.attrib; -->
+</tag>
+
+<attPool role='computeroutput.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='computeroutput'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='computeroutput'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='computeroutput.role.attrib'/>
+ <!-- %local.computeroutput.attrib; -->
+</tag>
+
+<attPool role='database.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='database'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='database'>
+ <ref role='common.attrib'/>
+ <ref role='database.role.attrib'/>
+ <!-- %local.database.attrib; -->
+ <ref role='moreinfo.attrib'/>
+ <!-- Class: Type of database the element names; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='name'/>
+ <enumeration value='table'/>
+ <enumeration value='field'/>
+ <enumeration value='key1'/>
+ <enumeration value='key2'/>
+ <enumeration value='record'/>
+ </attribute>
+</tag>
+
+<attPool role='email.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='email'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%docinfo.char.mix;)* -->
+</elementRule>
+
+<tag name='email'>
+ <ref role='common.attrib'/>
+ <ref role='email.role.attrib'/>
+ <!-- %local.email.attrib; -->
+</tag>
+
+<attPool role='envar.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='envar'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='docinfo.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='envar'>
+ <ref role='common.attrib'/>
+ <ref role='envar.role.attrib'/>
+ <!-- %local.envar.attrib; -->
+</tag>
+
+<attPool role='errorcode.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='errorcode'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='errorcode'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='errorcode.role.attrib'/>
+ <!-- %local.errorcode.attrib; -->
+</tag>
+
+<attPool role='errorname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='errorname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='errorname'>
+ <ref role='common.attrib'/>
+ <ref role='errorname.role.attrib'/>
+ <!-- %local.errorname.attrib; -->
+</tag>
+
+<attPool role='errortype.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='errortype'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='errortype'>
+ <ref role='common.attrib'/>
+ <ref role='errortype.role.attrib'/>
+ <!-- %local.errortype.attrib; -->
+</tag>
+
+<attPool role='filename.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='filename'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='filename'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='filename.role.attrib'/>
+ <!-- %local.filename.attrib; -->
+
+ <!-- Class: Type of filename the element names; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='headerfile'/>
+ <enumeration value='devicefile'/>
+ <enumeration value='libraryfile'/>
+ <enumeration value='directory'/>
+ <enumeration value='symlink'/>
+ </attribute>
+
+ <!-- Path: Search path (possibly system-specific) in which
+ file can be found -->
+ <attribute name='path' type='string'/>
+</tag>
+
+<attPool role='function.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='function'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='function'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='function.role.attrib'/>
+ <!-- %local.function.attrib; -->
+</tag>
+
+<attPool role='guibutton.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='guibutton'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='guibutton'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='guibutton.role.attrib'/>
+ <!-- %local.guibutton.attrib; -->
+</tag>
+
+<attPool role='guiicon.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='guiicon'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='guiicon'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='guiicon.role.attrib'/>
+ <!-- %local.guiicon.attrib; -->
+</tag>
+
+<attPool role='guilabel.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='guilabel'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='guilabel'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='guilabel.role.attrib'/>
+ <!-- %local.guilabel.attrib; -->
+</tag>
+
+<attPool role='guimenu.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='guimenu'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='guimenu'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='guimenu.role.attrib'/>
+ <!-- %local.guimenu.attrib; -->
+</tag>
+
+<attPool role='guimenuitem.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='guimenuitem'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='guimenuitem'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='guimenuitem.role.attrib'/>
+ <!-- %local.guimenuitem.attrib; -->
+</tag>
+
+<attPool role='guisubmenu.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='guisubmenu'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='guisubmenu'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='guisubmenu.role.attrib'/>
+ <!-- %local.guisubmenu.attrib; -->
+</tag>
+
+<attPool role='hardware.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='hardware'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='hardware'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='hardware.role.attrib'/>
+ <!-- %local.hardware.attrib; -->
+</tag>
+
+<attPool role='interface.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='interface'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='accel'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+</elementRule>
+
+<tag name='interface'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='interface.role.attrib'/>
+ <!-- %local.interface.attrib; -->
+</tag>
+
+<attPool role='keycap.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='keycap'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='keycap'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='keycap.role.attrib'/>
+ <!-- %local.keycap.attrib; -->
+</tag>
+
+<attPool role='keycode.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='keycode'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='keycode'>
+ <ref role='common.attrib'/>
+ <ref role='keycode.role.attrib'/>
+ <!-- %local.keycode.attrib; -->
+</tag>
+
+<attPool role='keycombo.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='keycombo'>
+ <choice occurs='+'>
+ <ref label='keycap'/>
+ <ref label='keycombo'/>
+ <ref label='keysym'/>
+ <ref label='mousebutton'/>
+ </choice>
+ <!-- ((keycap|keycombo|keysym|mousebutton)+) -->
+</elementRule>
+
+<tag name='keycombo'>
+ <ref role='keyaction.attrib'/>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='keycombo.role.attrib'/>
+ <!-- %local.keycombo.attrib; -->
+</tag>
+
+<attPool role='keysysm.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='keysym'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='keysym'>
+ <ref role='common.attrib'/>
+ <ref role='keysysm.role.attrib'/>
+ <!-- %local.keysym.attrib; -->
+</tag>
+
+<attPool role='lineannotation.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='lineannotation'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='lineannotation'>
+ <ref role='common.attrib'/>
+ <ref role='lineannotation.role.attrib'/>
+ <!-- %local.lineannotation.attrib; -->
+</tag>
+
+<attPool role='literal.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='literal'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='literal'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='literal.role.attrib'/>
+ <!-- %local.literal.attrib; -->
+</tag>
+
+<attPool role='constant.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='constant'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='constant'>
+ <ref role='common.attrib'/>
+ <ref role='constant.role.attrib'/>
+ <attribute name='class' type='string'>
+ <enumeration value='limit'/>
+ </attribute>
+</tag>
+
+<attPool role='varname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='varname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='varname'>
+ <ref role='common.attrib'/>
+ <ref role='varname.role.attrib'/>
+ <!-- %local.varname.attrib; -->
+</tag>
+
+<attPool role='markup.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='markup'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='markup'>
+ <ref role='common.attrib'/>
+ <ref role='markup.role.attrib'/>
+ <!-- %local.markup.attrib; -->
+</tag>
+
+<attPool role='medialabel.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='medialabel'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='medialabel'>
+ <ref role='common.attrib'/>
+ <ref role='medialabel.role.attrib'/>
+ <!-- %local.medialabel.attrib; -->
+
+ <!-- Class: Type of medium named by the element; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='cartridge'/>
+ <enumeration value='cdrom'/>
+ <enumeration value='disk'/>
+ <enumeration value='tape'/>
+ </attribute>
+</tag>
+
+<attPool role='menuchoice.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='menuchoice'>
+ <sequence>
+ <ref label='shortcut' occurs='?'/>
+ <choice occurs='+'>
+ <ref label='guibutton'/>
+ <ref label='guiicon'/>
+ <ref label='guilabel'/>
+ <ref label='guimenu'/>
+ <ref label='guimenuitem'/>
+ <ref label='guisubmenu'/>
+ <ref label='interface'/>
+ </choice>
+ </sequence>
+ <!-- (shortcut?, (guibutton|guiicon|guilabel
+ |guimenu|guimenuitem|guisubmenu|interface)+) -->
+</elementRule>
+
+<tag name='menuchoice'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='menuchoice.role.attrib'/>
+ <!-- %local.menuchoice.attrib; -->
+</tag>
+
+<!-- See also KeyCombo -->
+<attPool role='shortcut.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='shortcut'>
+ <choice occurs='+'>
+ <ref label='keycap'/>
+ <ref label='keycombo'/>
+ <ref label='keysym'/>
+ <ref label='mousebutton'/>
+ </choice>
+ <!-- ((keycap|keycombo|keysym|mousebutton)+) -->
+</elementRule>
+
+<tag name='shortcut'>
+ <ref role='keyaction.attrib'/>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='shortcut.role.attrib'/>
+ <!-- %local.shortcut.attrib; -->
+</tag>
+
+<attPool role='mousebutton.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='mousebutton'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='mousebutton'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='mousebutton.role.attrib'/>
+ <!-- %local.mousebutton.attrib; -->
+</tag>
+
+<attPool role='msgtext.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='msgtext'>
+ <choice occurs='+'>
+ <hedgeRef label='component.mix'/>
+ </choice>
+ <!-- ((%component.mix;)+) -->
+</elementRule>
+
+<tag name='msgtext'>
+ <ref role='common.attrib'/>
+ <ref role='msgtext.role.attrib'/>
+ <!-- %local.msgtext.attrib; -->
+</tag>
+
+<attPool role='option.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='option'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='option'>
+ <ref role='common.attrib'/>
+ <ref role='option.role.attrib'/>
+ <!-- %local.option.attrib; -->
+</tag>
+
+<attPool role='optional.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='optional'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='optional'>
+ <ref role='common.attrib'/>
+ <ref role='optional.role.attrib'/>
+ <!-- %local.optional.attrib; -->
+</tag>
+
+<attPool role='parameter.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='parameter'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='parameter'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='parameter.role.attrib'/>
+ <!-- %local.parameter.attrib; -->
+
+ <!-- Class: Type of the Parameter; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='command'/>
+ <enumeration value='function'/>
+ <enumeration value='option'/>
+ </attribute>
+</tag>
+
+<attPool role='prompt.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='prompt'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='prompt'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='prompt.role.attrib'/>
+ <!-- %local.prompt.attrib; -->
+</tag>
+
+<attPool role='property.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='property'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='property'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='property.role.attrib'/>
+ <!-- %local.property.attrib; -->
+</tag>
+
+<attPool role='replaceable.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='replaceable'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='link.char.class'/>
+ <ref label='optional'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA
+ | %link.char.class;
+ | optional
+ | %base.char.class;
+ | %other.char.class;
+ | inlinegraphic
+ | inlinemediaobject)* -->
+</elementRule>
+
+<tag name='replaceable'>
+ <ref role='common.attrib'/>
+ <ref role='replaceable.role.attrib'/>
+ <!-- %local.replaceable.attrib; -->
+
+ <!-- Class: Type of information the element represents; no
+ default -->
+ <attribute name='class' type='string'>
+ <enumeration value='command'/>
+ <enumeration value='function'/>
+ <enumeration value='option'/>
+ <enumeration value='parameter'/>
+ </attribute>
+</tag>
+
+<attPool role='returnvalue.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='returnvalue'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='returnvalue'>
+ <ref role='common.attrib'/>
+ <ref role='returnvalue.role.attrib'/>
+ <!-- %local.returnvalue.attrib; -->
+</tag>
+
+<attPool role='sgmltag.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='sgmltag'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='sgmltag'>
+ <ref role='common.attrib'/>
+ <ref role='sgmltag.role.attrib'/>
+ <!-- %local.sgmltag.attrib; -->
+
+ <!-- Class: Type of SGML construct the element names; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='attribute'/>
+ <enumeration value='attvalue'/>
+ <enumeration value='element'/>
+ <enumeration value='endtag'/>
+ <enumeration value='emptytag'/>
+ <enumeration value='genentity'/>
+ <enumeration value='numcharref'/>
+ <enumeration value='paramentity'/>
+ <enumeration value='pi'/>
+ <enumeration value='xmlpi'/>
+ <enumeration value='starttag'/>
+ <enumeration value='sgmlcomment'/>
+ </attribute>
+</tag>
+
+<attPool role='structfield.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='structfield'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='structfield'>
+ <ref role='common.attrib'/>
+ <ref role='structfield.role.attrib'/>
+ <!-- %local.structfield.attrib; -->
+</tag>
+
+<attPool role='structname.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='structname'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='structname'>
+ <ref role='common.attrib'/>
+ <ref role='structname.role.attrib'/>
+ <!-- %local.structname.attrib; -->
+</tag>
+
+<attPool role='symbol.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='symbol'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='symbol'>
+ <ref role='common.attrib'/>
+ <ref role='symbol.role.attrib'/>
+ <!-- %local.symbol.attrib; -->
+
+ <!-- Class: Type of symbol; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='limit'/>
+ </attribute>
+</tag>
+
+<attPool role='systemitem.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='systemitem'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ <ref label='acronym'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix; | acronym)* -->
+</elementRule>
+
+<tag name='systemitem'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='systemitem.role.attrib'/>
+ <!-- %local.systemitem.attrib; -->
+
+ <!-- Class: Type of system item the element names; no default -->
+ <attribute name='class' type='string'>
+ <enumeration value='constant'/>
+ <enumeration value='groupname'/>
+ <enumeration value='library'/>
+ <enumeration value='macro'/>
+ <enumeration value='osname'/>
+ <enumeration value='resource'/>
+ <enumeration value='systemname'/>
+ <enumeration value='username'/>
+ </attribute>
+</tag>
+
+
+<attPool role='token.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='token'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='token'>
+ <ref role='common.attrib'/>
+ <ref role='token.role.attrib'/>
+ <!-- %local.token.attrib; -->
+</tag>
+
+<attPool role='type.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='type'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='smallcptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%smallcptr.char.mix;)* -->
+</elementRule>
+
+<tag name='type'>
+ <ref role='common.attrib'/>
+ <ref role='type.role.attrib'/>
+ <!-- %local.type.attrib; -->
+</tag>
+
+<attPool role='userinput.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='userinput'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='cptr.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%cptr.char.mix;)* -->
+</elementRule>
+
+<tag name='userinput'>
+ <ref role='moreinfo.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='userinput.role.attrib'/>
+ <!-- %local.userinput.attrib; -->
+</tag>
+
+<!-- General words and phrases ............................................ -->
+
+<attPool role='abbrev.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='abbrev'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='word.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%word.char.mix;)* -->
+</elementRule>
+
+<tag name='abbrev'>
+ <ref role='common.attrib'/>
+ <ref role='abbrev.role.attrib'/>
+ <!-- %local.abbrev.attrib; -->
+</tag>
+
+<attPool role='acronym.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='acronym'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='word.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%word.char.mix;)* -->
+</elementRule>
+
+<tag name='acronym'>
+ <ref role='common.attrib'/>
+ <ref role='acronym.role.attrib'/>
+ <!-- %local.acronym.attrib; -->
+</tag>
+
+<attPool role='citation.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='citation'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='citation'>
+ <ref role='common.attrib'/>
+ <ref role='citation.role.attrib'/>
+ <!-- %local.citation.attrib; -->
+</tag>
+
+<attPool role='citerefentry.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='citerefentry'>
+ <sequence>
+ <ref label='refentrytitle'/>
+ <ref label='manvolnum' occurs='?'/>
+ </sequence>
+ <!-- (refentrytitle, manvolnum?) -->
+</elementRule>
+
+<tag name='citerefentry'>
+ <ref role='common.attrib'/>
+ <ref role='citerefentry.role.attrib'/>
+ <!-- %local.citerefentry.attrib; -->
+</tag>
+
+<attPool role='refentrytitle.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='refentrytitle'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='refentrytitle'>
+ <ref role='common.attrib'/>
+ <ref role='refentrytitle.role.attrib'/>
+ <!-- %local.refentrytitle.attrib; -->
+</tag>
+
+<attPool role='namvolnum.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='manvolnum'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='word.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%word.char.mix;)* -->
+</elementRule>
+
+<tag name='manvolnum'>
+ <ref role='common.attrib'/>
+ <ref role='namvolnum.role.attrib'/>
+ <!-- %local.manvolnum.attrib; -->
+</tag>
+
+<attPool role='citetitle.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='citetitle'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='citetitle'>
+ <ref role='common.attrib'/>
+ <ref role='citetitle.role.attrib'/>
+ <!-- %local.citetitle.attrib; -->
+
+ <!-- Pubwork: Genre of published work cited; no default -->
+ <attribute name='pubwork' type='string'>
+ <enumeration value='article'/>
+ <enumeration value='book'/>
+ <enumeration value='chapter'/>
+ <enumeration value='part'/>
+ <enumeration value='refentry'/>
+ <enumeration value='section'/>
+ <enumeration value='journal'/>
+ <enumeration value='series'/>
+ <enumeration value='set'/>
+ <enumeration value='manuscript'/>
+ </attribute>
+</tag>
+
+<attPool role='emphasis.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='emphasis'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='emphasis'>
+ <ref role='common.attrib'/>
+ <ref role='emphasis.role.attrib'/>
+ <!-- %local.emphasis.attrib; -->
+</tag>
+
+<attPool role='firstterm.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='firstterm'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='word.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%word.char.mix;)* -->
+</elementRule>
+
+<tag name='firstterm'>
+ <ref role='common.attrib'/>
+ <ref role='firstterm.role.attrib'/>
+ <!-- %local.firstterm.attrib; -->
+ <!-- to GlossEntry or other explanation -->
+ <ref role='linkend.attrib'/>
+</tag>
+
+<attPool role='foreignphrase.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='foreignphrase'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='foreignphrase'>
+ <ref role='common.attrib'/>
+ <ref role='foreignphrase.role.attrib'/>
+ <!-- %local.foreignphrase.attrib; -->
+</tag>
+
+<attPool role='glossterm.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='glossterm'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='glossterm'>
+ <ref role='common.attrib'/>
+ <ref role='glossterm.role.attrib'/>
+ <!-- %local.glossterm.attrib; -->
+
+ <!-- to GlossEntry if Glossterm used in text -->
+ <ref role='linkend.attrib'/>
+
+ <!-- BaseForm: Provides the form of GlossTerm to be used
+ for indexing -->
+ <attribute name='baseform' type='string'/>
+</tag>
+
+<attPool role='phrase.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='phrase'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='phrase'>
+ <ref role='common.attrib'/>
+ <ref role='phrase.role.attrib'/>
+ <!-- %local.phrase.attrib; -->
+</tag>
+
+<attPool role='quote.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='quote'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='quote'>
+ <ref role='common.attrib'/>
+ <ref role='quote.role.attrib'/>
+ <!-- %local.quote.attrib; -->
+</tag>
+
+<attPool role='ssscript.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<hedgeRule label='subscriptContentModel'>
+ <choice occurs='*'>
+ <hedgeRef label='link.char.class'/>
+ <ref label='emphasis'/>
+ <ref label='replaceable'/>
+ <ref label='symbol'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ </choice>
+ <!-- (#PCDATA
+ | %link.char.class;
+ | emphasis
+ | replaceable
+ | symbol
+ | inlinegraphic
+ | inlinemediaobject
+ | %base.char.class;
+ | %other.char.class;)* -->
+
+</hedgeRule>
+
+<elementRule role='subscript'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='subscriptContentModel'/>
+ </choice>
+ </mixed>
+</elementRule>
+
+<tag name='subscript'>
+ <ref role='common.attrib'/>
+ <ref role='ssscript.role.attrib'/>
+ <!-- %local.ssscript.attrib; -->
+</tag>
+
+<elementRule role='superscript'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='subscriptContentModel'/>
+ </choice>
+ </mixed>
+</elementRule>
+
+<tag name='superscript'>
+ <ref role='common.attrib'/>
+ <ref role='ssscript.role.attrib'/>
+ <!-- %local.ssscript.attrib; -->
+</tag>
+
+<attPool role='trademark.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='trademark'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='link.char.class'/>
+ <hedgeRef label='tech.char.class'/>
+ <hedgeRef label='base.char.class'/>
+ <hedgeRef label='other.char.class'/>
+ <ref label='inlinegraphic'/>
+ <ref label='inlinemediaobject'/>
+ <ref label='emphasis'/>
+ </choice>
+ </mixed>
+ <!-- (#PCDATA
+ | %link.char.class;
+ | %tech.char.class;
+ | %base.char.class;
+ | %other.char.class;
+ | inlinegraphic
+ | inlinemediaobject
+ | emphasis)* -->
+</elementRule>
+
+<tag name='trademark'>
+ <ref role='common.attrib'/>
+ <ref role='trademark.role.attrib'/>
+ <!-- %local.trademark.attrib; -->
+
+ <!-- Class: More precisely identifies the item the element names -->
+ <attribute name='class' type='string'>
+ <enumeration value='service'/>
+ <enumeration value='trade'/>
+ <enumeration value='registered'/>
+ <enumeration value='copyright'/>
+ </attribute>
+</tag>
+
+<attPool role='wordasword.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='wordasword'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='word.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%word.char.mix;)* -->
+</elementRule>
+
+<tag name='wordasword'>
+ <ref role='common.attrib'/>
+ <ref role='wordasword.role.attrib'/>
+ <!-- %local.wordasword.attrib; -->
+</tag>
+
+<!-- Links and cross-references ........................................... -->
+
+<attPool role='link.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='link'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='link'>
+ <!-- to linked-to object -->
+ <ref role='linkendreq.attrib'/>
+
+ <ref role='common.attrib'/>
+ <ref role='link.role.attrib'/>
+ <!-- %local.link.attrib; -->
+
+ <!-- Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element -->
+ <attribute name='endterm' type='IDREF'/>
+
+ <!-- Type: Freely assignable parameter -->
+ <attribute name='type' type='string'/>
+</tag>
+
+<attPool role='olink.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='olink'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='olink'>
+ <ref role='common.attrib'/>
+ <ref role='olink.role.attrib'/>
+ <!-- %local.olink.attrib; -->
+
+ <!-- TargetDocEnt: Name of an entity to be the target of the link -->
+ <!-- FIXME: -->
+ <!-- targetdocent ENTITY #IMPLIED -->
+
+ <!-- LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt -->
+ <attribute name='linkmode' type='IDREF'/>
+
+ <!-- LocalInfo: Information that may be passed to ModeSpec -->
+ <attribute name='localinfo' type='string'/>
+
+ <!-- Type: Freely assignable parameter -->
+ <attribute name='type' type='string'/>
+</tag>
+
+<attPool role='ulink.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='ulink'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%para.char.mix;)* -->
+</elementRule>
+
+<tag name='ulink'>
+ <ref role='common.attrib'/>
+ <ref role='ulink.role.attrib'/>
+ <!-- %local.ulink.attrib; -->
+
+ <!-- URL: uniform resource locator; the target of the ULink -->
+ <attribute name='url' type='string' required='true'/>
+
+ <!-- Type: Freely assignable parameter -->
+ <attribute name='type' type='string'/>
+</tag>
+
+<attPool role='footnoteref.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='footnoteref'>
+ <empty/>
+ <!-- EMPTY -->
+</elementRule>
+
+<tag name='footnoteref'>
+ <!-- to footnote content supplied elsewhere -->
+ <!-- FIXME: constrain -->
+ <ref role='linkendreq.attrib'/>
+
+ <ref role='label.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='footnoteref.role.attrib'/>
+ <!-- %local.footnoteref.attrib; -->
+</tag>
+
+<attPool role='xref.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='xref'>
+ <empty/>
+ <!-- EMPTY -->
+</elementRule>
+
+<tag name='xref'>
+ <!-- to linked-to object -->
+ <ref role='linkendreq.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='xref.role.attrib'/>
+ <!-- %local.xref.attrib; -->
+
+ <!-- Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element -->
+ <attribute name='endterm' type='IDREF'/>
+</tag>
+
+<!-- Ubiquitous elements .................................................. -->
+
+<attPool role='anchor.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='anchor'>
+ <empty/>
+ <!-- EMPTY -->
+</elementRule>
+
+<tag name='anchor'>
+ <ref role='idreq.attrib'/>
+ <ref role='pagenum.attrib'/>
+ <ref role='remap.attrib'/>
+ <ref role='xreflabel.attrib'/>
+ <ref role='revisionflag.attrib'/>
+ <ref role='effectivity.attrib'/>
+ <ref role='anchor.role.attrib'/>
+ <!-- %local.anchor.attrib; -->
+</tag>
+
+<attPool role='beginpage.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='beginpage'>
+ <empty/>
+ <!-- EMPTY -->
+</elementRule>
+
+<tag name='beginpage'>
+ <!-- PageNum: Number of page that begins at this point -->
+ <ref role='pagenum.attrib'/>
+ <ref role='common.attrib'/>
+ <ref role='beginpage.role.attrib'/>
+ <!-- %local.beginpage.attrib; -->
+</tag>
+
+<!-- IndexTerms appear in the text flow for generating or linking an
+ index. -->
+
+<attPool role='indexterm.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='indexterm'>
+ <sequence>
+ <ref label='primary' occurs='?'/>
+ <choice occurs='?'>
+ <sequence>
+ <ref label='secondary'/>
+ <choice occurs='?'>
+ <sequence>
+ <ref label='tertiary'/>
+ <choice occurs='?'>
+ <ref label='see'/>
+ <ref label='seealso' occurs='+'/>
+ </choice>
+ </sequence>
+ <ref label='see'/>
+ <ref label='seealso' occurs='+'/>
+ </choice>
+ </sequence>
+ <ref label='see'/>
+ <ref label='seealso' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- (primary?, ((secondary, ((tertiary, (see|seealso+)?)
+ | see | seealso+)?) | see | seealso+)?) -->
+</elementRule>
+
+<tag name='indexterm'>
+ <ref role='common.attrib'/>
+ <ref role='indexterm.role.attrib'/>
+ <ref role='pagenum.attrib'/>
+ <!-- %local.indexterm.attrib; -->
+
+ <!-- Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both) -->
+ <attribute name='scope' type='string'>
+ <enumeration value='all'/>
+ <enumeration value='global'/>
+ <enumeration value='local'/>
+ </attribute>
+
+ <!-- Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default) -->
+ <attribute name='significance' type='string'>
+ <enumeration value='preferred'/>
+ <enumeration value='normal'/>
+ </attribute>
+
+ <!-- Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges -->
+ <attribute name='class' type='string'>
+ <enumeration value='singular'/>
+ <enumeration value='startofrange'/>
+ <enumeration value='endofrange'/>
+ </attribute>
+
+ <!-- StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm -->
+ <!-- FIXME: constrain -->
+ <attribute name='startref' type='IDREF'/>
+
+ <!-- Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs -->
+ <!-- FIXME: constrain -->
+ <attribute name='zone' type='IDREFS'/>
+</tag>
+
+<attPool role='primsecter.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='primary'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='primary'>
+ <ref role='common.attrib'/>
+ <ref role='primsecter.role.attrib'/>
+ <!-- %local.primsecter.attrib; -->
+
+ <!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+ <attribute name='sortas' type='string'/>
+</tag>
+
+<elementRule role='secondary'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='secondary'>
+ <ref role='common.attrib'/>
+ <ref role='primsecter.role.attrib'/>
+ <!-- %local.primsecter.attrib; -->
+
+ <!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+ <attribute name='sortas' type='string'/>
+</tag>
+
+<elementRule role='tertiary'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='tertiary'>
+ <ref role='common.attrib'/>
+ <ref role='primsecter.role.attrib'/>
+ <!-- %local.primsecter.attrib; -->
+
+ <!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+ <attribute name='sortas' type='string'/>
+</tag>
+
+<attPool role='seeseealso.role.attrib'>
+ <ref role='role.attrib'/>
+</attPool>
+
+<elementRule role='see'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='see'>
+ <ref role='common.attrib'/>
+ <ref role='seeseealso.role.attrib'/>
+ <!-- %local.seeseealso.attrib; -->
+</tag>
+
+<elementRule role='seealso'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='ndxterm.char.mix'/>
+ </choice>
+ </mixed>
+ <!-- (%ndxterm.char.mix;)* -->
+</elementRule>
+
+<tag name='seealso'>
+ <ref role='common.attrib'/>
+ <ref role='seeseealso.role.attrib'/>
+ <!-- %local.seeseealso.attrib; -->
+</tag>
+
+</module>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
+
+<module moduleVersion="1.2"
+ relaxCoreVersion="1.0"
+ xmlns="http://www.xml.gr.jp/xmlns/relaxCore">
+
+ <interface/>
+
+<attPool role='table.att'/>
+<attPool role='tgroup.att'/>
+<attPool role='colspec.att'/>
+<attPool role='thead.att'/>
+<attPool role='tbody.att'/>
+<attPool role='row.att'/>
+<attPool role='entry.att'/>
+
+<!-- Tables ........................... -->
+
+<elementRule role='table'>
+ <sequence>
+ <hedgeRef label='formalobject.title.content'/>
+ <hedgeRef label='ndxterm.class' occurs='?'/>
+ <choice>
+ <ref label='graphic' occurs='+'/>
+ <ref label='mediaobject' occurs='+'/>
+ <ref label='tgroup' occurs='+'/>
+ </choice>
+ </sequence>
+ <!-- % tbl.table.mdl
+ "((%formalobject.title.content;),
+ (%ndxterm.class;)*,
+ (graphic+|tgroup+))"-->
+</elementRule>
+
+<tag name='table'>
+ <ref role='table.att'/>
+ <attribute name='frame' type='NMTOKEN'>
+ <enumeration value='top'/>
+ <enumeration value='bottom'/>
+ <enumeration value='topbot'/>
+ <enumeration value='all'/>
+ <enumeration value='sides'/>
+ <enumeration value='none'/>
+ </attribute>
+ <attribute name='colsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='rowsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+</tag>
+
+<elementRule role='informaltable'>
+ <choice>
+ <ref label='graphic' occurs='+'/>
+ <ref label='mediaobject' occurs='+'/>
+ <ref label='tgroup' occurs='+'/>
+ </choice>
+</elementRule>
+
+<tag name='informaltable'>
+ <ref role='table.att'/>
+ <attribute name='frame' type='NMTOKEN'>
+ <enumeration value='top'/>
+ <enumeration value='bottom'/>
+ <enumeration value='topbot'/>
+ <enumeration value='all'/>
+ <enumeration value='sides'/>
+ <enumeration value='none'/>
+ </attribute>
+ <attribute name='colsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='rowsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+</tag>
+
+<elementRule role='tgroup'>
+ <sequence>
+ <ref label='colspec' occurs='*'/>
+ <ref label='thead' occurs='?'/>
+ <ref label='tbody'/>
+ </sequence>
+</elementRule>
+
+<tag name='tgroup'>
+ <ref role='tgroup.att'/>
+ <attribute name='cols' type='integer' required='true'/>
+ <attribute name='colsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='rowsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='align' type='NMTOKEN'>
+ <enumeration value='left'/>
+ <enumeration value='right'/>
+ <enumeration value='center'/>
+ <enumeration value='justify'/>
+ </attribute>
+</tag>
+
+<elementRule role='colspec'>
+ <empty/>
+ <!-- EMPTY -->
+</elementRule>
+
+<tag name='colspec'>
+ <ref role='colspec.att'/>
+ <attribute name='colnum' type='integer'/>
+ <attribute name='colname' type='NMTOKEN'/>
+ <attribute name='colwidth' type='string'/>
+ <attribute name='colsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='rowsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='align' type='NMTOKEN'>
+ <enumeration value='left'/>
+ <enumeration value='right'/>
+ <enumeration value='center'/>
+ <enumeration value='justify'/>
+ <enumeration value='char'/>
+ </attribute>
+ <attribute name='char' type='string'/>
+ <attribute name='charoff' type='NMTOKEN'/>
+</tag>
+
+<elementRule role='thead'>
+ <choice>
+ <ref label='row' occurs='+'/>
+ </choice>
+</elementRule>
+
+<tag name='thead'>
+ <ref role='thead.att'/>
+ <attribute name='valign' type='NMTOKEN'>
+ <enumeration value='top'/>
+ <enumeration value='middle'/>
+ <enumeration value='bottom'/>
+ </attribute>
+</tag>
+
+<elementRule role='tbody'>
+ <choice>
+ <ref label='row' occurs='+'/>
+ </choice>
+</elementRule>
+
+<tag name='tbody'>
+ <ref role='tbody.att'/>
+ <attribute name='valign' type='NMTOKEN'>
+ <enumeration value='top'/>
+ <enumeration value='middle'/>
+ <enumeration value='bottom'/>
+ </attribute>
+</tag>
+
+<elementRule role='row'>
+ <choice>
+ <ref label='entry' occurs='+'/>
+ </choice>
+</elementRule>
+
+<tag name='row'>
+ <ref role='row.att'/>
+ <attribute name='rowsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='valign' type='NMTOKEN'>
+ <enumeration value='top'/>
+ <enumeration value='middle'/>
+ <enumeration value='bottom'/>
+ </attribute>
+</tag>
+
+<elementRule role='entry'>
+ <mixed>
+ <choice occurs='*'>
+ <hedgeRef label='para.char.mix'/>
+ <hedgeRef label='tabentry.mix'/>
+ </choice>
+ </mixed>
+</elementRule>
+
+<tag name='entry'>
+ <ref role='entry.att'/>
+ <attribute name='colname' type='NMTOKEN'/>
+ <attribute name='namest' type='NMTOKEN'/>
+ <attribute name='nameend' type='NMTOKEN'/>
+ <attribute name='morerows' type='integer'/>
+ <attribute name='colsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='rowsep' type='string'>
+ <enumeration value='0'/>
+ <enumeration value='1'/>
+ </attribute>
+ <attribute name='align' type='NMTOKEN'>
+ <enumeration value='left'/>
+ <enumeration value='right'/>
+ <enumeration value='center'/>
+ <enumeration value='justify'/>
+ <enumeration value='char'/>
+ </attribute>
+ <attribute name='char' type='string'/>
+ <attribute name='charoff' type='NMTOKEN'/>
+ <attribute name='valign' type='NMTOKEN'>
+ <enumeration value='top'/>
+ <enumeration value='middle'/>
+ <enumeration value='bottom'/>
+ </attribute>
+</tag>
+
+</module>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
+
+<module moduleVersion="1.2"
+ relaxCoreVersion="1.0"
+ targetNamespace=""
+ xmlns="http://www.xml.gr.jp/xmlns/relaxCore">
+
+ <interface>
+ <export label='set'/>
+ <export label='book'/>
+ <export label='chapter'/>
+ <export label='appendix'/>
+ <export label='article'/>
+ <export label='part'/>
+ <export label='reference'/>
+ <export label='refentry'/>
+ <export label='section'/>
+ <export label='sect1'/>
+ <export label='sect2'/>
+ <export label='sect3'/>
+ <export label='sect4'/>
+ <export label='sect5'/>
+ <export label="para"/>
+ </interface>
+
+ <include moduleLocation="dbpool.rlx"/>
+ <include moduleLocation="dbhier.rlx"/>
+ <include moduleLocation="dbtables.rlx"/>
+</module>
\ No newline at end of file
--- /dev/null
+<chapter xmlns="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
+<title>foo</title>
+<para>
+some text
+</para>
+</chapter>
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<grammar xmlns="http://www.thaiopensource.com/trex"
+ xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
+ ns="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
+
+ <define name="appendix.class.label">
+ <choice>
+ <ref name="appendix.label"/>
+ </choice>
+ </define>
+ <define name="article.class.label">
+ <choice>
+ <ref name="article.label"/>
+ </choice>
+ </define>
+ <define name="book.class.label">
+ <choice>
+ <ref name="book.label"/>
+ </choice>
+ </define>
+ <define name="chapter.class.label">
+ <choice>
+ <ref name="chapter.label"/>
+ </choice>
+ </define>
+ <define name="index.class.label">
+ <choice>
+ <ref name="index.label"/>
+ <ref name="setindex.label"/>
+ </choice>
+ </define>
+ <define name="refentry.class.label">
+ <choice>
+ <ref name="refentry.label"/>
+ </choice>
+ </define>
+ <define name="nav.class.label">
+ <choice>
+ <ref name="toc.label"/>
+ <ref name="lot.label"/>
+ <ref name="index.label"/>
+ <ref name="glossary.label"/>
+ <ref name="bibliography.label"/>
+ </choice>
+ </define>
+ <define name="divcomponent.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="compound.class.label"/>
+ <ref name="genobj.class.label"/>
+ <ref name="descobj.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="refcomponent.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="compound.class.label"/>
+ <ref name="genobj.class.label"/>
+ <ref name="descobj.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="indexdivcomponent.mix.label">
+ <choice>
+ <ref name="itemizedlist.label"/>
+ <ref name="orderedlist.label"/>
+ <ref name="variablelist.label"/>
+ <ref name="simplelist.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="anchor.label"/>
+ <ref name="remark.label"/>
+ <ref name="link.char.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="refname.char.mix.label">
+ <choice>
+ <ref name="tech.char.class.label"/>
+ </choice>
+ </define>
+ <define name="partcontent.mix.label">
+ <choice>
+ <ref name="appendix.class.label"/>
+ <ref name="chapter.class.label"/>
+ <ref name="nav.class.label"/>
+ <ref name="article.class.label"/>
+ <ref name="preface.label"/>
+ <ref name="refentry.class.label"/>
+ <ref name="reference.label"/>
+ </choice>
+ </define>
+ <define name="refinline.char.mix.label">
+ <choice>
+ <ref name="xref.char.class.label"/>
+ <ref name="gen.char.class.label"/>
+ <ref name="link.char.class.label"/>
+ <ref name="tech.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="docinfo.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="refclass.char.mix.label">
+ <choice>
+ <ref name="application.label"/>
+ </choice>
+ </define>
+ <define name="div.title.content.label">
+ <choice>
+ <group>
+ <ref name="title.label"/>
+ <optional>
+ <ref name="subtitle.label"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev.label"/>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="bookcomponent.title.content.label">
+ <choice>
+ <group>
+ <ref name="title.label"/>
+ <optional>
+ <ref name="subtitle.label"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev.label"/>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="sect.title.content.label">
+ <choice>
+ <group>
+ <ref name="title.label"/>
+ <optional>
+ <ref name="subtitle.label"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev.label"/>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="refsect.title.content.label">
+ <choice>
+ <group>
+ <ref name="title.label"/>
+ <optional>
+ <ref name="subtitle.label"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev.label"/>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="bookcomponent.content.label">
+ <choice>
+ <choice>
+ <group>
+ <oneOrMore>
+ <choice>
+ <ref name="divcomponent.mix.label"/>
+ </choice>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="sect1.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="sect1.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="section.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ </choice>
+ </define>
+ <define name="set.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="set.label">
+ <choice>
+ <element name="set">
+ <ref name="set.role"/>
+ <group>
+ <optional>
+ <ref name="div.title.content.label"/>
+ </optional>
+ <optional>
+ <ref name="setinfo.label"/>
+ </optional>
+ <optional>
+ <ref name="toc.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="book.class.label"/>
+ </oneOrMore>
+ <optional>
+ <ref name="setindex.label"/>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="set.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="set.role.attrib.role"/>
+ <optional>
+ <attribute name="fpi">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="setinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="setinfo.label">
+ <choice>
+ <element name="setinfo">
+ <ref name="setinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="setinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="setinfo.role.attrib.role"/>
+ <optional>
+ <attribute name="contents">
+ <data type="xsd:IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="book.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="book.label">
+ <choice>
+ <element name="book">
+ <ref name="book.role"/>
+ <group>
+ <optional>
+ <ref name="div.title.content.label"/>
+ </optional>
+ <optional>
+ <ref name="bookinfo.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="dedication.label"/>
+ <ref name="toc.label"/>
+ <ref name="lot.label"/>
+ <ref name="glossary.label"/>
+ <ref name="bibliography.label"/>
+ <ref name="preface.label"/>
+ <ref name="chapter.class.label"/>
+ <ref name="reference.label"/>
+ <ref name="part.label"/>
+ <ref name="article.class.label"/>
+ <ref name="appendix.class.label"/>
+ <ref name="index.class.label"/>
+ <ref name="colophon.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="book.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="book.role.attrib.role"/>
+ <optional>
+ <attribute name="fpi">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bookinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bookinfo.label">
+ <choice>
+ <element name="bookinfo">
+ <ref name="bookinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="bookinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="bookinfo.role.attrib.role"/>
+ <optional>
+ <attribute name="contents">
+ <data type="xsd:IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="dedication.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="dedication.label">
+ <choice>
+ <element name="dedication">
+ <ref name="dedication.role"/>
+ <group>
+ <optional>
+ <ref name="sect.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="legalnotice.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="dedication.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="dedication.role.attrib.role"/>
+ </define>
+ <define name="colophon.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="colophon.label">
+ <choice>
+ <element name="colophon">
+ <ref name="colophon.role"/>
+ <group>
+ <optional>
+ <ref name="sect.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="textobject.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="colophon.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="colophon.role.attrib.role"/>
+ </define>
+ <define name="toc.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="toc.label">
+ <choice>
+ <element name="toc">
+ <ref name="toc.role"/>
+ <group>
+ <optional>
+ <ref name="bookcomponent.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="tocfront.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tocpart.label"/>
+ <ref name="tocchap.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tocback.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="toc.role">
+ <empty/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="toc.role.attrib.role"/>
+ </define>
+ <define name="tocfront.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="tocfront.label">
+ <choice>
+ <element name="tocfront">
+ <ref name="tocfront.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="tocfront.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="linkend.attrib.role"/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="tocfront.role.attrib.role"/>
+ </define>
+ <define name="tocentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="tocentry.label">
+ <choice>
+ <element name="tocentry">
+ <ref name="tocentry.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="tocentry.role">
+ <empty/>
+ <ref name="linkend.attrib.role"/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="tocentry.role.attrib.role"/>
+ </define>
+ <define name="tocpart.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="tocpart.label">
+ <choice>
+ <element name="tocpart">
+ <ref name="tocpart.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="tocchap.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="tocpart.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="tocpart.role.attrib.role"/>
+ </define>
+ <define name="tocchap.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="tocchap.label">
+ <choice>
+ <element name="tocchap">
+ <ref name="tocchap.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel1.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="tocchap.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="tocchap.role.attrib.role"/>
+ </define>
+ <define name="toclevel1.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="toclevel1.label">
+ <choice>
+ <element name="toclevel1">
+ <ref name="toclevel1.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel2.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="toclevel1.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="toclevel1.role.attrib.role"/>
+ </define>
+ <define name="toclevel2.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="toclevel2.label">
+ <choice>
+ <element name="toclevel2">
+ <ref name="toclevel2.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel3.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="toclevel2.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="toclevel2.role.attrib.role"/>
+ </define>
+ <define name="toclevel3.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="toclevel3.label">
+ <choice>
+ <element name="toclevel3">
+ <ref name="toclevel3.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel4.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="toclevel3.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="toclevel3.role.attrib.role"/>
+ </define>
+ <define name="toclevel4.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="toclevel4.label">
+ <choice>
+ <element name="toclevel4">
+ <ref name="toclevel4.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel5.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="toclevel4.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="toclevel4.role.attrib.role"/>
+ </define>
+ <define name="toclevel5.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="toclevel5.label">
+ <choice>
+ <element name="toclevel5">
+ <ref name="toclevel5.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="tocentry.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="toclevel5.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="toclevel5.role.attrib.role"/>
+ </define>
+ <define name="tocback.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="tocback.label">
+ <choice>
+ <element name="tocback">
+ <ref name="tocback.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="tocback.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="linkend.attrib.role"/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="tocback.role.attrib.role"/>
+ </define>
+ <define name="lot.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="lot.label">
+ <choice>
+ <element name="lot">
+ <ref name="lot.role"/>
+ <group>
+ <optional>
+ <ref name="bookcomponent.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="lotentry.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="lot.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="lot.role.attrib.role"/>
+ </define>
+ <define name="lotentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="lotentry.label">
+ <choice>
+ <element name="lotentry">
+ <ref name="lotentry.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="lotentry.role">
+ <empty/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="linkend.attrib.role"/>
+ <ref name="lotentry.role.attrib.role"/>
+ <optional>
+ <attribute name="srccredit">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="appendix.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="appendix.label">
+ <choice>
+ <element name="appendix">
+ <ref name="appendix.role"/>
+ <group>
+ <optional>
+ <ref name="appendixinfo.label"/>
+ </optional>
+ <ref name="bookcomponent.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="tocchap.label"/>
+ </optional>
+ <ref name="bookcomponent.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="appendix.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="appendix.role.attrib.role"/>
+ </define>
+ <define name="chapter.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="chapter.label">
+ <choice>
+ <element name="chapter">
+ <ref name="chapter.role"/>
+ <group>
+ <optional>
+ <ref name="chapterinfo.label"/>
+ </optional>
+ <ref name="bookcomponent.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="tocchap.label"/>
+ </optional>
+ <ref name="bookcomponent.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="chapter.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="chapter.role.attrib.role"/>
+ </define>
+ <define name="part.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="part.label">
+ <choice>
+ <element name="part">
+ <ref name="part.role"/>
+ <group>
+ <optional>
+ <ref name="partinfo.label"/>
+ </optional>
+ <ref name="bookcomponent.title.content.label"/>
+ <optional>
+ <ref name="partintro.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="partcontent.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="part.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="part.role.attrib.role"/>
+ </define>
+ <define name="preface.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="preface.label">
+ <choice>
+ <element name="preface">
+ <ref name="preface.role"/>
+ <group>
+ <optional>
+ <ref name="prefaceinfo.label"/>
+ </optional>
+ <ref name="bookcomponent.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="tocchap.label"/>
+ </optional>
+ <ref name="bookcomponent.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="preface.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="preface.role.attrib.role"/>
+ </define>
+ <define name="reference.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="reference.label">
+ <choice>
+ <element name="reference">
+ <ref name="reference.role"/>
+ <group>
+ <optional>
+ <ref name="referenceinfo.label"/>
+ </optional>
+ <ref name="bookcomponent.title.content.label"/>
+ <optional>
+ <ref name="partintro.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="reference.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="reference.role.attrib.role"/>
+ </define>
+ <define name="partintro.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="partintro.label">
+ <choice>
+ <element name="partintro">
+ <ref name="partintro.role"/>
+ <group>
+ <optional>
+ <ref name="div.title.content.label"/>
+ </optional>
+ <ref name="bookcomponent.content.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="partintro.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="partintro.role.attrib.role"/>
+ </define>
+ <define name="appendixinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="appendixinfo.label">
+ <choice>
+ <element name="appendixinfo">
+ <ref name="appendixinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="appendixinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="appendixinfo.role.attrib.role"/>
+ </define>
+ <define name="bibliographyinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bibliographyinfo.label">
+ <choice>
+ <element name="bibliographyinfo">
+ <ref name="bibliographyinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="bibliographyinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="bibliographyinfo.role.attrib.role"/>
+ </define>
+ <define name="chapterinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="chapterinfo.label">
+ <choice>
+ <element name="chapterinfo">
+ <ref name="chapterinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="chapterinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="chapterinfo.role.attrib.role"/>
+ </define>
+ <define name="glossaryinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossaryinfo.label">
+ <choice>
+ <element name="glossaryinfo">
+ <ref name="glossaryinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="glossaryinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossaryinfo.role.attrib.role"/>
+ </define>
+ <define name="indexinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="indexinfo.label">
+ <choice>
+ <element name="indexinfo">
+ <ref name="indexinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="indexinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="indexinfo.role.attrib.role"/>
+ </define>
+ <define name="setindexinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="setindexinfo.label">
+ <choice>
+ <element name="setindexinfo">
+ <ref name="setindexinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="setindexinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="setindexinfo.role.attrib.role"/>
+ </define>
+ <define name="partinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="partinfo.label">
+ <choice>
+ <element name="partinfo">
+ <ref name="partinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="partinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="partinfo.role.attrib.role"/>
+ </define>
+ <define name="prefaceinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="prefaceinfo.label">
+ <choice>
+ <element name="prefaceinfo">
+ <ref name="prefaceinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="prefaceinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="prefaceinfo.role.attrib.role"/>
+ </define>
+ <define name="refentryinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refentryinfo.label">
+ <choice>
+ <element name="refentryinfo">
+ <ref name="refentryinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refentryinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refentryinfo.role.attrib.role"/>
+ </define>
+ <define name="refsect1info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsect1info.label">
+ <choice>
+ <element name="refsect1info">
+ <ref name="refsect1info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsect1info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsect1info.role.attrib.role"/>
+ </define>
+ <define name="refsect2info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsect2info.label">
+ <choice>
+ <element name="refsect2info">
+ <ref name="refsect2info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsect2info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsect2info.role.attrib.role"/>
+ </define>
+ <define name="refsect3info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsect3info.label">
+ <choice>
+ <element name="refsect3info">
+ <ref name="refsect3info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsect3info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsect3info.role.attrib.role"/>
+ </define>
+ <define name="refsynopsisdivinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsynopsisdivinfo.label">
+ <choice>
+ <element name="refsynopsisdivinfo">
+ <ref name="refsynopsisdivinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsynopsisdivinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsynopsisdivinfo.role.attrib.role"/>
+ </define>
+ <define name="referenceinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="referenceinfo.label">
+ <choice>
+ <element name="referenceinfo">
+ <ref name="referenceinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="referenceinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="referenceinfo.role.attrib.role"/>
+ </define>
+ <define name="sect1info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect1info.label">
+ <choice>
+ <element name="sect1info">
+ <ref name="sect1info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect1info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect1info.role.attrib.role"/>
+ </define>
+ <define name="sect2info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect2info.label">
+ <choice>
+ <element name="sect2info">
+ <ref name="sect2info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect2info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect2info.role.attrib.role"/>
+ </define>
+ <define name="sect3info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect3info.label">
+ <choice>
+ <element name="sect3info">
+ <ref name="sect3info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect3info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect3info.role.attrib.role"/>
+ </define>
+ <define name="sect4info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect4info.label">
+ <choice>
+ <element name="sect4info">
+ <ref name="sect4info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect4info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect4info.role.attrib.role"/>
+ </define>
+ <define name="sect5info.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect5info.label">
+ <choice>
+ <element name="sect5info">
+ <ref name="sect5info.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect5info.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect5info.role.attrib.role"/>
+ </define>
+ <define name="section.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="section.label">
+ <choice>
+ <element name="section">
+ <ref name="section.role"/>
+ <group>
+ <optional>
+ <ref name="sectioninfo.label"/>
+ </optional>
+ <ref name="sect.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="section.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="section.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="section.role.attrib.role"/>
+ </define>
+ <define name="sectioninfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sectioninfo.label">
+ <choice>
+ <element name="sectioninfo">
+ <ref name="sectioninfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sectioninfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sectioninfo.role.attrib.role"/>
+ </define>
+ <define name="sect1.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect1.label">
+ <choice>
+ <element name="sect1">
+ <ref name="sect1.role"/>
+ <group>
+ <optional>
+ <ref name="sect1info.label"/>
+ </optional>
+ <ref name="sect.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect2.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect2.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect1.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect1.role.attrib.role"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <string>sect2</string>
+ <string>sect3</string>
+ <string>sect4</string>
+ <string>sect5</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect2.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect2.label">
+ <choice>
+ <element name="sect2">
+ <ref name="sect2.role"/>
+ <group>
+ <optional>
+ <ref name="sect2info.label"/>
+ </optional>
+ <ref name="sect.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect3.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect3.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect2.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect2.role.attrib.role"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <string>sect1</string>
+ <string>sect3</string>
+ <string>sect4</string>
+ <string>sect5</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect3.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect3.label">
+ <choice>
+ <element name="sect3">
+ <ref name="sect3.role"/>
+ <group>
+ <optional>
+ <ref name="sect3info.label"/>
+ </optional>
+ <ref name="sect.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect4.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect4.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect3.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect3.role.attrib.role"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <string>sect1</string>
+ <string>sect2</string>
+ <string>sect4</string>
+ <string>sect5</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect4.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect4.label">
+ <choice>
+ <element name="sect4">
+ <ref name="sect4.role"/>
+ <group>
+ <optional>
+ <ref name="sect4info.label"/>
+ </optional>
+ <ref name="sect.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect5.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect5.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect4.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect4.role.attrib.role"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <string>sect1</string>
+ <string>sect2</string>
+ <string>sect3</string>
+ <string>sect5</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect5.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sect5.label">
+ <choice>
+ <element name="sect5">
+ <ref name="sect5.role"/>
+ <group>
+ <optional>
+ <ref name="sect5info.label"/>
+ </optional>
+ <ref name="sect.title.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect.label"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect.label"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sect5.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="sect5.role.attrib.role"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <string>sect1</string>
+ <string>sect2</string>
+ <string>sect3</string>
+ <string>sect4</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="simplesect.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="simplesect.label">
+ <choice>
+ <element name="simplesect">
+ <ref name="simplesect.role"/>
+ <group>
+ <ref name="sect.title.content.label"/>
+ <oneOrMore>
+ <ref name="divcomponent.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="simplesect.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="simplesect.role.attrib.role"/>
+ </define>
+ <define name="bibliography.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bibliography.label">
+ <choice>
+ <element name="bibliography">
+ <ref name="bibliography.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="bibliographyinfo.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="bibliodiv.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="biblioentry.label"/>
+ <ref name="bibliomixed.label"/>
+ </choice>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="bibliography.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="bibliography.role.attrib.role"/>
+ </define>
+ <define name="bibliodiv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bibliodiv.label">
+ <choice>
+ <element name="bibliodiv">
+ <ref name="bibliodiv.role"/>
+ <group>
+ <optional>
+ <ref name="sect.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="biblioentry.label"/>
+ <ref name="bibliomixed.label"/>
+ </choice>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="bibliodiv.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="bibliodiv.role.attrib.role"/>
+ </define>
+ <define name="glossary.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossary.label">
+ <choice>
+ <element name="glossary">
+ <ref name="glossary.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="glossaryinfo.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="glossdiv.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="glossentry.label"/>
+ </oneOrMore>
+ </choice>
+ <optional>
+ <ref name="bibliography.label"/>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="glossary.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossary.role.attrib.role"/>
+ </define>
+ <define name="glossdiv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossdiv.label">
+ <choice>
+ <element name="glossdiv">
+ <ref name="glossdiv.role"/>
+ <group>
+ <optional>
+ <ref name="sect.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="glossentry.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="glossdiv.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossdiv.role.attrib.role"/>
+ </define>
+ <define name="indexes.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="index.label">
+ <choice>
+ <element name="index">
+ <ref name="index.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="indexinfo.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="indexdiv.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="indexentry.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="index.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="indexes.role.attrib.role"/>
+ </define>
+ <define name="setindex.label">
+ <choice>
+ <element name="setindex">
+ <ref name="setindex.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="setindexinfo.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="indexdiv.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="indexentry.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="setindex.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="indexes.role.attrib.role"/>
+ </define>
+ <define name="indexdiv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="indexdiv.label">
+ <choice>
+ <element name="indexdiv">
+ <ref name="indexdiv.role"/>
+ <group>
+ <optional>
+ <ref name="sect.title.content.label"/>
+ </optional>
+ <group>
+ <zeroOrMore>
+ <ref name="indexdivcomponent.mix.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="indexentry.label"/>
+ </zeroOrMore>
+ <ref name="segmentedlist.label"/>
+ </group>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="indexdiv.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="indexdiv.role.attrib.role"/>
+ </define>
+ <define name="indexentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="indexentry.label">
+ <choice>
+ <element name="indexentry">
+ <ref name="indexentry.role"/>
+ <group>
+ <ref name="primaryie.label"/>
+ <zeroOrMore>
+ <ref name="seeie.label"/>
+ <ref name="seealsoie.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <group>
+ <ref name="secondaryie.label"/>
+ <zeroOrMore>
+ <ref name="seeie.label"/>
+ <ref name="seealsoie.label"/>
+ <ref name="tertiaryie.label"/>
+ </zeroOrMore>
+ </group>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="indexentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="indexentry.role.attrib.role"/>
+ </define>
+ <define name="primsecterie.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="primaryie.label">
+ <choice>
+ <element name="primaryie">
+ <ref name="primaryie.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="primaryie.role">
+ <empty/>
+ <ref name="linkends.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="primsecterie.role.attrib.role"/>
+ </define>
+ <define name="secondaryie.label">
+ <choice>
+ <element name="secondaryie">
+ <ref name="secondaryie.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="secondaryie.role">
+ <empty/>
+ <ref name="linkends.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="primsecterie.role.attrib.role"/>
+ </define>
+ <define name="tertiaryie.label">
+ <choice>
+ <element name="tertiaryie">
+ <ref name="tertiaryie.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="tertiaryie.role">
+ <empty/>
+ <ref name="linkends.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="primsecterie.role.attrib.role"/>
+ </define>
+ <define name="seeie.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="seeie.label">
+ <choice>
+ <element name="seeie">
+ <ref name="seeie.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="seeie.role">
+ <empty/>
+ <ref name="linkend.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="seeie.role.attrib.role"/>
+ </define>
+ <define name="seealsoie.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="seealsoie.label">
+ <choice>
+ <element name="seealsoie">
+ <ref name="seealsoie.role"/>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="seealsoie.role">
+ <empty/>
+ <ref name="linkends.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="seealsoie.role.attrib.role"/>
+ </define>
+ <define name="refentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refentry.label">
+ <choice>
+ <element name="refentry">
+ <ref name="refentry.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="ndxterm.class.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="refentryinfo.label"/>
+ </optional>
+ <optional>
+ <ref name="refmeta.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="remark.label"/>
+ <ref name="link.char.class.label"/>
+ </zeroOrMore>
+ <ref name="refnamediv.label"/>
+ <optional>
+ <ref name="refsynopsisdiv.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="refsect1.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refentry.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="refentry.role.attrib.role"/>
+ </define>
+ <define name="refmeta.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refmeta.label">
+ <choice>
+ <element name="refmeta">
+ <ref name="refmeta.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="ndxterm.class.label"/>
+ </zeroOrMore>
+ <ref name="refentrytitle.label"/>
+ <optional>
+ <ref name="manvolnum.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="refmiscinfo.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ndxterm.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refmeta.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refmeta.role.attrib.role"/>
+ </define>
+ <define name="refmiscinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refmiscinfo.label">
+ <choice>
+ <element name="refmiscinfo">
+ <ref name="refmiscinfo.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="refmiscinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refmiscinfo.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="refnamediv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refnamediv.label">
+ <choice>
+ <element name="refnamediv">
+ <ref name="refnamediv.role"/>
+ <group>
+ <optional>
+ <ref name="refdescriptor.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="refname.label"/>
+ </oneOrMore>
+ <ref name="refpurpose.label"/>
+ <zeroOrMore>
+ <ref name="remark.label"/>
+ <ref name="link.char.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refnamediv.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refnamediv.role.attrib.role"/>
+ </define>
+ <define name="refdescriptor.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refdescriptor.label">
+ <choice>
+ <element name="refdescriptor">
+ <ref name="refdescriptor.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refname.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="refdescriptor.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refdescriptor.role.attrib.role"/>
+ </define>
+ <define name="refname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refname.label">
+ <choice>
+ <element name="refname">
+ <ref name="refname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refname.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="refname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refname.role.attrib.role"/>
+ </define>
+ <define name="refpurpose.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refpurpose.label">
+ <choice>
+ <element name="refpurpose">
+ <ref name="refpurpose.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refinline.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="refpurpose.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refpurpose.role.attrib.role"/>
+ </define>
+ <define name="refclass.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refclass.label">
+ <choice>
+ <element name="refclass">
+ <ref name="refclass.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refclass.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="refclass.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refclass.role.attrib.role"/>
+ </define>
+ <define name="refsynopsisdiv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsynopsisdiv.label">
+ <choice>
+ <element name="refsynopsisdiv">
+ <ref name="refsynopsisdiv.role"/>
+ <group>
+ <optional>
+ <ref name="refsynopsisdivinfo.label"/>
+ </optional>
+ <optional>
+ <ref name="refsect.title.content.label"/>
+ </optional>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="refcomponent.mix.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="refsect2.label"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="refsect2.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsynopsisdiv.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsynopsisdiv.role.attrib.role"/>
+ </define>
+ <define name="refsect1.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsect1.label">
+ <choice>
+ <element name="refsect1">
+ <ref name="refsect1.role"/>
+ <group>
+ <optional>
+ <ref name="refsect1info.label"/>
+ </optional>
+ <ref name="refsect.title.content.label"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="refcomponent.mix.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="refsect2.label"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="refsect2.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsect1.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsect1.role.attrib.role"/>
+ </define>
+ <define name="refsect2.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsect2.label">
+ <choice>
+ <element name="refsect2">
+ <ref name="refsect2.role"/>
+ <group>
+ <optional>
+ <ref name="refsect2info.label"/>
+ </optional>
+ <ref name="refsect.title.content.label"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="refcomponent.mix.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="refsect3.label"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="refsect3.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsect2.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsect2.role.attrib.role"/>
+ </define>
+ <define name="refsect3.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refsect3.label">
+ <choice>
+ <element name="refsect3">
+ <ref name="refsect3.role"/>
+ <group>
+ <optional>
+ <ref name="refsect3info.label"/>
+ </optional>
+ <ref name="refsect.title.content.label"/>
+ <oneOrMore>
+ <ref name="refcomponent.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="refsect3.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="refsect3.role.attrib.role"/>
+ </define>
+ <define name="article.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="article.label">
+ <choice>
+ <element name="article">
+ <ref name="article.role"/>
+ <group>
+ <optional>
+ <ref name="div.title.content.label"/>
+ </optional>
+ <optional>
+ <ref name="articleinfo.label"/>
+ </optional>
+ <optional>
+ <ref name="tocchap.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="lot.label"/>
+ </zeroOrMore>
+ <ref name="bookcomponent.content.label"/>
+ <zeroOrMore>
+ <ref name="nav.class.label"/>
+ <ref name="appendix.class.label"/>
+ <ref name="ackno.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="article.role">
+ <empty/>
+ <ref name="status.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="article.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>journalarticle</string>
+ <string>productsheet</string>
+ <string>whitepaper</string>
+ <string>techreport</string>
+ <string>specification</string>
+ <string>faq</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="parentbook">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+
+</grammar>
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<grammar xmlns="http://www.thaiopensource.com/trex"
+ xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
+ ns="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
+
+ <define name="ndxterm.class.label">
+ <choice>
+ <ref name="indexterm.label"/>
+ </choice>
+ </define>
+ <define name="list.class.label">
+ <choice>
+ <ref name="calloutlist.label"/>
+ <ref name="glosslist.label"/>
+ <ref name="itemizedlist.label"/>
+ <ref name="orderedlist.label"/>
+ <ref name="segmentedlist.label"/>
+ <ref name="simplelist.label"/>
+ <ref name="variablelist.label"/>
+ </choice>
+ </define>
+ <define name="admon.class.label">
+ <choice>
+ <ref name="caution.label"/>
+ <ref name="important.label"/>
+ <ref name="note.label"/>
+ <ref name="tip.label"/>
+ <ref name="warning.label"/>
+ </choice>
+ </define>
+ <define name="linespecific.class.label">
+ <choice>
+ <ref name="literallayout.label"/>
+ <ref name="programlisting.label"/>
+ <ref name="programlistingco.label"/>
+ <ref name="screen.label"/>
+ <ref name="screenco.label"/>
+ <ref name="screenshot.label"/>
+ </choice>
+ </define>
+ <define name="method.synop.class.label">
+ <choice>
+ <ref name="constructorsynopsis.label"/>
+ <ref name="destructorsynopsis.label"/>
+ <ref name="methodsynopsis.label"/>
+ </choice>
+ </define>
+ <define name="synop.class.label">
+ <choice>
+ <ref name="synopsis.label"/>
+ <ref name="cmdsynopsis.label"/>
+ <ref name="funcsynopsis.label"/>
+ <ref name="classsynopsis.label"/>
+ <ref name="fieldsynopsis.label"/>
+ </choice>
+ </define>
+ <define name="para.class.label">
+ <choice>
+ <ref name="formalpara.label"/>
+ <ref name="para.label"/>
+ <ref name="simpara.label"/>
+ </choice>
+ </define>
+ <define name="informal.class.label">
+ <choice>
+ <ref name="address.label"/>
+ <ref name="blockquote.label"/>
+ <ref name="graphic.label"/>
+ <ref name="graphicco.label"/>
+ <ref name="mediaobject.label"/>
+ <ref name="mediaobjectco.label"/>
+ <ref name="informalequation.label"/>
+ <ref name="informalexample.label"/>
+ <ref name="informalfigure.label"/>
+ <ref name="informaltable.label"/>
+ </choice>
+ </define>
+ <define name="formal.class.label">
+ <choice>
+ <ref name="equation.label"/>
+ <ref name="example.label"/>
+ <ref name="figure.label"/>
+ <ref name="table.label"/>
+ </choice>
+ </define>
+ <define name="compound.class.label">
+ <choice>
+ <ref name="msgset.label"/>
+ <ref name="procedure.label"/>
+ <ref name="sidebar.label"/>
+ <ref name="qandaset.label"/>
+ </choice>
+ </define>
+ <define name="genobj.class.label">
+ <choice>
+ <ref name="anchor.label"/>
+ <ref name="bridgehead.label"/>
+ <ref name="remark.label"/>
+ <ref name="highlights.label"/>
+ </choice>
+ </define>
+ <define name="descobj.class.label">
+ <choice>
+ <ref name="abstract.label"/>
+ <ref name="authorblurb.label"/>
+ <ref name="epigraph.label"/>
+ </choice>
+ </define>
+ <define name="xref.char.class.label">
+ <choice>
+ <ref name="footnoteref.label"/>
+ <ref name="xref.label"/>
+ </choice>
+ </define>
+ <define name="gen.char.class.label">
+ <choice>
+ <ref name="abbrev.label"/>
+ <ref name="acronym.label"/>
+ <ref name="citation.label"/>
+ <ref name="citerefentry.label"/>
+ <ref name="citetitle.label"/>
+ <ref name="emphasis.label"/>
+ <ref name="firstterm.label"/>
+ <ref name="foreignphrase.label"/>
+ <ref name="glossterm.label"/>
+ <ref name="footnote.label"/>
+ <ref name="phrase.label"/>
+ <ref name="quote.label"/>
+ <ref name="trademark.label"/>
+ <ref name="wordasword.label"/>
+ </choice>
+ </define>
+ <define name="link.char.class.label">
+ <choice>
+ <ref name="link.label"/>
+ <ref name="olink.label"/>
+ <ref name="ulink.label"/>
+ </choice>
+ </define>
+ <define name="tech.char.class.label">
+ <choice>
+ <ref name="action.label"/>
+ <ref name="application.label"/>
+ <ref name="classname.label"/>
+ <ref name="methodname.label"/>
+ <ref name="interfacename.label"/>
+ <ref name="exceptionname.label"/>
+ <ref name="ooclass.label"/>
+ <ref name="oointerface.label"/>
+ <ref name="ooexception.label"/>
+ <ref name="command.label"/>
+ <ref name="computeroutput.label"/>
+ <ref name="database.label"/>
+ <ref name="email.label"/>
+ <ref name="envar.label"/>
+ <ref name="errorcode.label"/>
+ <ref name="errorname.label"/>
+ <ref name="errortype.label"/>
+ <ref name="filename.label"/>
+ <ref name="function.label"/>
+ <ref name="guibutton.label"/>
+ <ref name="guiicon.label"/>
+ <ref name="guilabel.label"/>
+ <ref name="guimenu.label"/>
+ <ref name="guimenuitem.label"/>
+ <ref name="guisubmenu.label"/>
+ <ref name="hardware.label"/>
+ <ref name="interface.label"/>
+ <ref name="keycap.label"/>
+ <ref name="keycode.label"/>
+ <ref name="keycombo.label"/>
+ <ref name="keysym.label"/>
+ <ref name="literal.label"/>
+ <ref name="constant.label"/>
+ <ref name="markup.label"/>
+ <ref name="medialabel.label"/>
+ <ref name="menuchoice.label"/>
+ <ref name="mousebutton.label"/>
+ <ref name="option.label"/>
+ <ref name="optional.label"/>
+ <ref name="parameter.label"/>
+ <ref name="prompt.label"/>
+ <ref name="property.label"/>
+ <ref name="replaceable.label"/>
+ <ref name="returnvalue.label"/>
+ <ref name="sgmltag.label"/>
+ <ref name="structfield.label"/>
+ <ref name="structname.label"/>
+ <ref name="symbol.label"/>
+ <ref name="systemitem.label"/>
+ <ref name="token.label"/>
+ <ref name="type.label"/>
+ <ref name="userinput.label"/>
+ <ref name="varname.label"/>
+ </choice>
+ </define>
+ <define name="base.char.class.label">
+ <choice>
+ <ref name="anchor.label"/>
+ </choice>
+ </define>
+ <define name="docinfo.char.class.label">
+ <choice>
+ <ref name="author.label"/>
+ <ref name="authorinitials.label"/>
+ <ref name="corpauthor.label"/>
+ <ref name="modespec.label"/>
+ <ref name="othercredit.label"/>
+ <ref name="productname.label"/>
+ <ref name="productnumber.label"/>
+ <ref name="revhistory.label"/>
+ </choice>
+ </define>
+ <define name="other.char.class.label">
+ <choice>
+ <ref name="remark.label"/>
+ <ref name="subscript.label"/>
+ <ref name="superscript.label"/>
+ </choice>
+ </define>
+ <define name="inlineobj.char.class.label">
+ <choice>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="inlineequation.label"/>
+ </choice>
+ </define>
+ <define name="component.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="compound.class.label"/>
+ <ref name="genobj.class.label"/>
+ <ref name="descobj.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="sidebar.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="procedure.label"/>
+ <ref name="genobj.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="qandaset.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="procedure.label"/>
+ <ref name="genobj.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ </choice>
+ </define>
+ <define name="revdescription.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="procedure.label"/>
+ <ref name="genobj.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ </choice>
+ </define>
+ <define name="footnote.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ </choice>
+ </define>
+ <define name="example.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="highlights.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ </choice>
+ </define>
+ <define name="para.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ </choice>
+ </define>
+ <define name="admon.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="procedure.label"/>
+ <ref name="sidebar.label"/>
+ <ref name="anchor.label"/>
+ <ref name="bridgehead.label"/>
+ <ref name="remark.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="figure.mix.label">
+ <choice>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="tabentry.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="graphic.label"/>
+ <ref name="mediaobject.label"/>
+ </choice>
+ </define>
+ <define name="glossdef.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="informal.class.label"/>
+ <ref name="formal.class.label"/>
+ <ref name="remark.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="legalnotice.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="blockquote.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="textobject.mix.label">
+ <choice>
+ <ref name="list.class.label"/>
+ <ref name="admon.class.label"/>
+ <ref name="linespecific.class.label"/>
+ <ref name="para.class.label"/>
+ <ref name="blockquote.label"/>
+ </choice>
+ </define>
+ <define name="mediaobject.mix.label">
+ <choice>
+ <ref name="videoobject.label"/>
+ <ref name="audioobject.label"/>
+ <ref name="imageobject.label"/>
+ </choice>
+ </define>
+ <define name="para.char.mix.label">
+ <choice>
+ <ref name="xref.char.class.label"/>
+ <ref name="gen.char.class.label"/>
+ <ref name="link.char.class.label"/>
+ <ref name="tech.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="docinfo.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlineobj.char.class.label"/>
+ <ref name="synop.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="title.char.mix.label">
+ <choice>
+ <ref name="xref.char.class.label"/>
+ <ref name="gen.char.class.label"/>
+ <ref name="link.char.class.label"/>
+ <ref name="tech.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="docinfo.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlineobj.char.class.label"/>
+ <ref name="ndxterm.class.label"/>
+ </choice>
+ </define>
+ <define name="ndxterm.char.mix.label">
+ <choice>
+ <ref name="xref.char.class.label"/>
+ <ref name="gen.char.class.label"/>
+ <ref name="link.char.class.label"/>
+ <ref name="tech.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="docinfo.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ </choice>
+ </define>
+ <define name="cptr.char.mix.label">
+ <choice>
+ <ref name="link.char.class.label"/>
+ <ref name="tech.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="smallcptr.char.mix.label">
+ <choice>
+ <ref name="replaceable.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="word.char.mix.label">
+ <choice>
+ <ref name="acronym.label"/>
+ <ref name="emphasis.label"/>
+ <ref name="trademark.label"/>
+ <ref name="link.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="ndxterm.class.label"/>
+ <ref name="beginpage.label"/>
+ </choice>
+ </define>
+ <define name="docinfo.char.mix.label">
+ <choice>
+ <ref name="link.char.class.label"/>
+ <ref name="emphasis.label"/>
+ <ref name="trademark.label"/>
+ <ref name="replaceable.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="ndxterm.class.label"/>
+ </choice>
+ </define>
+ <define name="formalobject.title.content.label">
+ <choice>
+ <group>
+ <ref name="title.label"/>
+ <optional>
+ <ref name="titleabbrev.label"/>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="arch.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="arch">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="condition.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="condition">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="conformance.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="conformance">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="os.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="os">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="revision.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="revision">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="security.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="security">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="userlevel.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="userlevel">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="vendor.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="vendor">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="effectivity.attrib.role">
+ <empty/>
+ <ref name="arch.attrib.role"/>
+ <ref name="condition.attrib.role"/>
+ <ref name="conformance.attrib.role"/>
+ <ref name="os.attrib.role"/>
+ <ref name="revision.attrib.role"/>
+ <ref name="security.attrib.role"/>
+ <ref name="userlevel.attrib.role"/>
+ <ref name="vendor.attrib.role"/>
+ </define>
+ <define name="id.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="id">
+ <data type="xsd:ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="idreq.attrib.role">
+ <empty/>
+ <attribute name="id">
+ <data type="xsd:ID"/>
+ </attribute>
+ </define>
+ <define name="lang.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="lang">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="remap.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="remap">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="role.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="role">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="xreflabel.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="xreflabel">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="revisionflag.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="revisionflag">
+ <choice>
+ <string>changed</string>
+ <string>added</string>
+ <string>deleted</string>
+ <string>off</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="common.attrib.role">
+ <empty/>
+ <ref name="id.attrib.role"/>
+ <ref name="lang.attrib.role"/>
+ <ref name="remap.attrib.role"/>
+ <ref name="xreflabel.attrib.role"/>
+ <ref name="revisionflag.attrib.role"/>
+ <ref name="effectivity.attrib.role"/>
+ </define>
+ <define name="idreq.common.attrib.role">
+ <empty/>
+ <ref name="idreq.attrib.role"/>
+ <ref name="lang.attrib.role"/>
+ <ref name="remap.attrib.role"/>
+ <ref name="xreflabel.attrib.role"/>
+ <ref name="revisionflag.attrib.role"/>
+ <ref name="effectivity.attrib.role"/>
+ </define>
+ <define name="graphics.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="fileref">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="format">
+ <choice>
+ <string>BMP</string>
+ <string>CGM-CHAR</string>
+ <string>CGM-BINARY</string>
+ <string>CGM-CLEAR</string>
+ <string>DITROFF</string>
+ <string>DVI</string>
+ <string>EPS</string>
+ <string>EQN</string>
+ <string>FAX</string>
+ <string>GIF</string>
+ <string>GIF87a</string>
+ <string>GIF89a</string>
+ <string>JPG</string>
+ <string>JPEG</string>
+ <string>IGES</string>
+ <string>PCX</string>
+ <string>PIC</string>
+ <string>PNG</string>
+ <string>PS</string>
+ <string>SGML</string>
+ <string>TBL</string>
+ <string>TEX</string>
+ <string>TIFF</string>
+ <string>WMF</string>
+ <string>WPG</string>
+ <string>linespecific</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="srccredit">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <string>left</string>
+ <string>right</string>
+ <string>center</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scale">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scalefit">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="keyaction.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="action">
+ <choice>
+ <string>click</string>
+ <string>double-click</string>
+ <string>press</string>
+ <string>seq</string>
+ <string>simul</string>
+ <string>other</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otheraction">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="label.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="label">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="linespecific.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="format">
+ <choice>
+ <string>linespecific</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linenumbering">
+ <choice>
+ <string>numbered</string>
+ <string>unnumbered</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="linkend.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="linkend">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="linkendreq.attrib.role">
+ <empty/>
+ <attribute name="linkend">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </define>
+ <define name="linkends.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="linkends">
+ <data type="xsd:IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mark.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="mark">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="moreinfo.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="moreinfo">
+ <choice>
+ <string>refentry</string>
+ <string>none</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="pagenum.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="pagenum">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="status.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="status">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="width.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="width">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="title.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="title.label">
+ <choice>
+ <element name="title">
+ <ref name="title.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="title.role">
+ <empty/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="title.role.attrib.role"/>
+ </define>
+ <define name="titleabbrev.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="titleabbrev.label">
+ <choice>
+ <element name="titleabbrev">
+ <ref name="titleabbrev.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="titleabbrev.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="titleabbrev.role.attrib.role"/>
+ </define>
+ <define name="subtitle.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="subtitle.label">
+ <choice>
+ <element name="subtitle">
+ <ref name="subtitle.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="subtitle.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="subtitle.role.attrib.role"/>
+ </define>
+ <define name="person.ident.mix.label">
+ <choice>
+ <ref name="honorific.label"/>
+ <ref name="firstname.label"/>
+ <ref name="surname.label"/>
+ <ref name="lineage.label"/>
+ <ref name="othername.label"/>
+ <ref name="affiliation.label"/>
+ <ref name="authorblurb.label"/>
+ <ref name="contrib.label"/>
+ </choice>
+ </define>
+ <define name="bibliocomponent.mix.label">
+ <choice>
+ <ref name="abbrev.label"/>
+ <ref name="abstract.label"/>
+ <ref name="address.label"/>
+ <ref name="artpagenums.label"/>
+ <ref name="author.label"/>
+ <ref name="authorgroup.label"/>
+ <ref name="authorinitials.label"/>
+ <ref name="bibliomisc.label"/>
+ <ref name="biblioset.label"/>
+ <ref name="collab.label"/>
+ <ref name="confgroup.label"/>
+ <ref name="contractnum.label"/>
+ <ref name="contractsponsor.label"/>
+ <ref name="copyright.label"/>
+ <ref name="corpauthor.label"/>
+ <ref name="corpname.label"/>
+ <ref name="date.label"/>
+ <ref name="edition.label"/>
+ <ref name="editor.label"/>
+ <ref name="invpartnumber.label"/>
+ <ref name="isbn.label"/>
+ <ref name="issn.label"/>
+ <ref name="issuenum.label"/>
+ <ref name="orgname.label"/>
+ <ref name="othercredit.label"/>
+ <ref name="pagenums.label"/>
+ <ref name="printhistory.label"/>
+ <ref name="productname.label"/>
+ <ref name="productnumber.label"/>
+ <ref name="pubdate.label"/>
+ <ref name="publisher.label"/>
+ <ref name="publishername.label"/>
+ <ref name="pubsnumber.label"/>
+ <ref name="releaseinfo.label"/>
+ <ref name="revhistory.label"/>
+ <ref name="seriesvolnums.label"/>
+ <ref name="subtitle.label"/>
+ <ref name="title.label"/>
+ <ref name="titleabbrev.label"/>
+ <ref name="volumenum.label"/>
+ <ref name="citetitle.label"/>
+ <ref name="person.ident.mix.label"/>
+ <ref name="ndxterm.class.label"/>
+ </choice>
+ </define>
+ <define name="biblioentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="biblioentry.label">
+ <choice>
+ <element name="biblioentry">
+ <ref name="biblioentry.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="articleinfo.label"/>
+ <ref name="bibliocomponent.mix.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="biblioentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="biblioentry.role.attrib.role"/>
+ </define>
+ <define name="bibliomixed.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bibliomixed.label">
+ <choice>
+ <element name="bibliomixed">
+ <ref name="bibliomixed.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="bibliocomponent.mix.label"/>
+ <ref name="bibliomset.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="bibliomixed.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="bibliomixed.role.attrib.role"/>
+ </define>
+ <define name="articleinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="infoContentModel.label">
+ <choice>
+ <oneOrMore>
+ <choice>
+ <ref name="graphic.label"/>
+ <ref name="mediaobject.label"/>
+ <ref name="legalnotice.label"/>
+ <ref name="modespec.label"/>
+ <ref name="subjectset.label"/>
+ <ref name="keywordset.label"/>
+ <ref name="itermset.label"/>
+ <ref name="bibliocomponent.mix.label"/>
+ </choice>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="articleinfo.label">
+ <choice>
+ <element name="articleinfo">
+ <ref name="articleinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="articleinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="articleinfo.role.attrib.role"/>
+ </define>
+ <define name="biblioset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="biblioset.label">
+ <choice>
+ <element name="biblioset">
+ <ref name="biblioset.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="bibliocomponent.mix.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="biblioset.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="biblioset.role.attrib.role"/>
+ <optional>
+ <attribute name="relation">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibliomset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bibliomset.label">
+ <choice>
+ <element name="bibliomset">
+ <ref name="bibliomset.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="bibliocomponent.mix.label"/>
+ <ref name="bibliomset.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="bibliomset.role">
+ <empty/>
+ <ref name="bibliomset.role.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <optional>
+ <attribute name="relation">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibliomisc.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bibliomisc.label">
+ <choice>
+ <element name="bibliomisc">
+ <ref name="bibliomisc.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="bibliomisc.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="bibliomisc.role.attrib.role"/>
+ </define>
+ <define name="subjectset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="subjectset.label">
+ <choice>
+ <element name="subjectset">
+ <ref name="subjectset.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="subject.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="subjectset.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="subjectset.role.attrib.role"/>
+ <optional>
+ <attribute name="scheme">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="subject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="subject.label">
+ <choice>
+ <element name="subject">
+ <ref name="subject.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="subjectterm.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="subject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="subject.role.attrib.role"/>
+ <optional>
+ <attribute name="weight">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="subjectterm.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="subjectterm.label">
+ <choice>
+ <element name="subjectterm">
+ <ref name="subjectterm.role"/>
+ <mixed>
+ <empty/>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="subjectterm.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="subjectterm.role.attrib.role"/>
+ </define>
+ <define name="keywordset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="keywordset.label">
+ <choice>
+ <element name="keywordset">
+ <ref name="keywordset.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="keyword.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="keywordset.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="keywordset.role.attrib.role"/>
+ </define>
+ <define name="keyword.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="keyword.label">
+ <choice>
+ <element name="keyword">
+ <ref name="keyword.role"/>
+ <mixed>
+ <empty/>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="keyword.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="keyword.role.attrib.role"/>
+ </define>
+ <define name="itermset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="itermset.label">
+ <choice>
+ <element name="itermset">
+ <ref name="itermset.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="indexterm.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="itermset.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="itermset.role.attrib.role"/>
+ </define>
+ <define name="msgset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgset.label">
+ <choice>
+ <element name="msgset">
+ <ref name="msgset.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="msgentry.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplemsgentry.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msgset.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgset.role.attrib.role"/>
+ </define>
+ <define name="msgentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgentry.label">
+ <choice>
+ <element name="msgentry">
+ <ref name="msgentry.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="msg.label"/>
+ </oneOrMore>
+ <optional>
+ <ref name="msginfo.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="msgexplan.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msgentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgentry.role.attrib.role"/>
+ </define>
+ <define name="simplemsgentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="simplemsgentry.label">
+ <choice>
+ <element name="simplemsgentry">
+ <ref name="simplemsgentry.role"/>
+ <group>
+ <ref name="msgtext.label"/>
+ <ref name="msgexplan.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="simplemsgentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="simplemsgentry.role.attrib.role"/>
+ <optional>
+ <attribute name="audience">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="level">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="origin">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msg.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msg.label">
+ <choice>
+ <element name="msg">
+ <ref name="msg.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <ref name="msgmain.label"/>
+ <zeroOrMore>
+ <ref name="msgsub.label"/>
+ <ref name="msgrel.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msg.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msg.role.attrib.role"/>
+ </define>
+ <define name="msgmain.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgmain.label">
+ <choice>
+ <element name="msgmain">
+ <ref name="msgmain.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <ref name="msgtext.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msgmain.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgmain.role.attrib.role"/>
+ </define>
+ <define name="msgsub.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgsub.label">
+ <choice>
+ <element name="msgsub">
+ <ref name="msgsub.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <ref name="msgtext.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msgsub.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgsub.role.attrib.role"/>
+ </define>
+ <define name="msgrel.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgrel.label">
+ <choice>
+ <element name="msgrel">
+ <ref name="msgrel.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <ref name="msgtext.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msgrel.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgrel.role.attrib.role"/>
+ </define>
+ <define name="msginfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msginfo.label">
+ <choice>
+ <element name="msginfo">
+ <ref name="msginfo.role"/>
+ <zeroOrMore>
+ <ref name="msglevel.label"/>
+ <ref name="msgorig.label"/>
+ <ref name="msgaud.label"/>
+ </zeroOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="msginfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msginfo.role.attrib.role"/>
+ </define>
+ <define name="msglevel.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msglevel.label">
+ <choice>
+ <element name="msglevel">
+ <ref name="msglevel.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="msglevel.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msglevel.role.attrib.role"/>
+ </define>
+ <define name="msgorig.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgorig.label">
+ <choice>
+ <element name="msgorig">
+ <ref name="msgorig.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="msgorig.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgorig.role.attrib.role"/>
+ </define>
+ <define name="msgaud.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgaud.label">
+ <choice>
+ <element name="msgaud">
+ <ref name="msgaud.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="msgaud.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgaud.role.attrib.role"/>
+ </define>
+ <define name="msgexplan.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgexplan.label">
+ <choice>
+ <element name="msgexplan">
+ <ref name="msgexplan.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="msgexplan.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgexplan.role.attrib.role"/>
+ </define>
+ <define name="qandset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="qandaset.label">
+ <choice>
+ <element name="qandaset">
+ <ref name="qandaset.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="qandaset.mix.label"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="qandadiv.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="qandaentry.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="qandaset.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="qandset.role.attrib.role"/>
+ <optional>
+ <attribute name="defaultlabel">
+ <choice>
+ <string>qanda</string>
+ <string>number</string>
+ <string>none</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="qandadiv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="qandadiv.label">
+ <choice>
+ <element name="qandadiv">
+ <ref name="qandadiv.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="qandaset.mix.label"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="qandadiv.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="qandaentry.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="qandadiv.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="qandadiv.role.attrib.role"/>
+ </define>
+ <define name="qandaentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="qandaentry.label">
+ <choice>
+ <element name="qandaentry">
+ <ref name="qandaentry.role"/>
+ <group>
+ <optional>
+ <ref name="revhistory.label"/>
+ </optional>
+ <ref name="question.label"/>
+ <zeroOrMore>
+ <ref name="answer.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="qandaentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="qandaentry.role.attrib.role"/>
+ </define>
+ <define name="question.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="question.label">
+ <choice>
+ <element name="question">
+ <ref name="question.role"/>
+ <group>
+ <optional>
+ <ref name="label.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="qandaset.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="question.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="question.role.attrib.role"/>
+ </define>
+ <define name="answer.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="answer.label">
+ <choice>
+ <element name="answer">
+ <ref name="answer.role"/>
+ <group>
+ <optional>
+ <ref name="label.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="qandaset.mix.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="qandaentry.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="answer.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="answer.role.attrib.role"/>
+ </define>
+ <define name="label.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="label.label">
+ <choice>
+ <element name="label">
+ <ref name="label.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="label.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="label.role.attrib.role"/>
+ </define>
+ <define name="procedure.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="procedure.label">
+ <choice>
+ <element name="procedure">
+ <ref name="procedure.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="step.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="procedure.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="procedure.role.attrib.role"/>
+ </define>
+ <define name="step.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="step.label">
+ <choice>
+ <element name="step">
+ <ref name="step.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="component.mix.label"/>
+ </oneOrMore>
+ <optional>
+ <group>
+ <ref name="substeps.label"/>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ </group>
+ </optional>
+ </group>
+ <group>
+ <ref name="substeps.label"/>
+ <zeroOrMore>
+ <ref name="component.mix.label"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="step.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="step.role.attrib.role"/>
+ <optional>
+ <attribute name="performance">
+ <choice>
+ <string>optional</string>
+ <string>required</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="substeps.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="substeps.label">
+ <choice>
+ <element name="substeps">
+ <ref name="substeps.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="step.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="substeps.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="substeps.role.attrib.role"/>
+ <optional>
+ <attribute name="performance">
+ <choice>
+ <string>optional</string>
+ <string>required</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sidebarinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sidebarinfo.label">
+ <choice>
+ <element name="sidebarinfo">
+ <ref name="sidebarinfo.role"/>
+ <mixed>
+ <empty/>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="sidebarinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sidebarinfo.role.attrib.role"/>
+ </define>
+ <define name="sidebar.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sidebar.label">
+ <choice>
+ <element name="sidebar">
+ <ref name="sidebar.role"/>
+ <group>
+ <optional>
+ <ref name="sidebarinfo.label"/>
+ </optional>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="sidebar.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="sidebar.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sidebar.role.attrib.role"/>
+ </define>
+ <define name="abstract.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="abstract.label">
+ <choice>
+ <element name="abstract">
+ <ref name="abstract.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="para.class.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="abstract.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="abstract.role.attrib.role"/>
+ </define>
+ <define name="authorblurb.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="authorblurb.label">
+ <choice>
+ <element name="authorblurb">
+ <ref name="authorblurb.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="para.class.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="authorblurb.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="authorblurb.role.attrib.role"/>
+ </define>
+ <define name="blockquote.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="blockquote.label">
+ <choice>
+ <element name="blockquote">
+ <ref name="blockquote.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <optional>
+ <ref name="attribution.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="component.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="blockquote.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="blockquote.role.attrib.role"/>
+ </define>
+ <define name="attribution.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="attribution.label">
+ <choice>
+ <element name="attribution">
+ <ref name="attribution.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="attribution.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="attribution.role.attrib.role"/>
+ </define>
+ <define name="bridgehead.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="bridgehead.label">
+ <choice>
+ <element name="bridgehead">
+ <ref name="bridgehead.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="bridgehead.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="bridgehead.role.attrib.role"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <string>other</string>
+ <string>sect1</string>
+ <string>sect2</string>
+ <string>sect3</string>
+ <string>sect4</string>
+ <string>sect5</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="remark.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="remark.label">
+ <choice>
+ <element name="remark">
+ <ref name="remark.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="remark.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="remark.role.attrib.role"/>
+ </define>
+ <define name="epigraph.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="epigraph.label">
+ <choice>
+ <element name="epigraph">
+ <ref name="epigraph.role"/>
+ <group>
+ <optional>
+ <ref name="attribution.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="para.class.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="epigraph.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="epigraph.role.attrib.role"/>
+ </define>
+ <define name="footnote.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="footnote.label">
+ <choice>
+ <element name="footnote">
+ <ref name="footnote.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="footnote.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="footnote.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="footnote.role.attrib.role"/>
+ </define>
+ <define name="highlights.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="highlights.label">
+ <choice>
+ <element name="highlights">
+ <ref name="highlights.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="highlights.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="highlights.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="highlights.role.attrib.role"/>
+ </define>
+ <define name="formalpara.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="formalpara.label">
+ <choice>
+ <element name="formalpara">
+ <ref name="formalpara.role"/>
+ <group>
+ <ref name="title.label"/>
+ <zeroOrMore>
+ <ref name="ndxterm.class.label"/>
+ </zeroOrMore>
+ <ref name="para.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="formalpara.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="formalpara.role.attrib.role"/>
+ </define>
+ <define name="para.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="para.label">
+ <choice>
+ <element name="para">
+ <ref name="para.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ <ref name="para.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="para.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="para.role.attrib.role"/>
+ </define>
+ <define name="simpara.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="simpara.label">
+ <choice>
+ <element name="simpara">
+ <ref name="simpara.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="simpara.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="simpara.role.attrib.role"/>
+ </define>
+ <define name="admon.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="admonitionType.label">
+ <choice>
+ <group>
+ <ref name="title.label"/>
+ <oneOrMore>
+ <ref name="admon.mix.label"/>
+ </oneOrMore>
+ </group>
+ </choice>
+ </define>
+ <define name="important.label">
+ <choice>
+ <element name="important">
+ <ref name="important.role"/>
+ <group>
+ <ref name="admonitionType.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="important.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="admon.role.attrib.role"/>
+ </define>
+ <define name="warning.label">
+ <choice>
+ <element name="warning">
+ <ref name="warning.role"/>
+ <group>
+ <ref name="admonitionType.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="warning.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="admon.role.attrib.role"/>
+ </define>
+ <define name="caution.label">
+ <choice>
+ <element name="caution">
+ <ref name="caution.role"/>
+ <group>
+ <ref name="admonitionType.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="caution.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="admon.role.attrib.role"/>
+ </define>
+ <define name="note.label">
+ <choice>
+ <element name="note">
+ <ref name="note.role"/>
+ <group>
+ <ref name="admonitionType.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="note.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="admon.role.attrib.role"/>
+ </define>
+ <define name="tip.label">
+ <choice>
+ <element name="tip">
+ <ref name="tip.role"/>
+ <group>
+ <ref name="admonitionType.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="tip.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="admon.role.attrib.role"/>
+ </define>
+ <define name="glosslist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glosslist.label">
+ <choice>
+ <element name="glosslist">
+ <ref name="glosslist.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="glossentry.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="glosslist.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glosslist.role.attrib.role"/>
+ </define>
+ <define name="glossentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossentry.label">
+ <choice>
+ <element name="glossentry">
+ <ref name="glossentry.role"/>
+ <group>
+ <ref name="glossterm.label"/>
+ <optional>
+ <ref name="acronym.label"/>
+ </optional>
+ <optional>
+ <ref name="abbrev.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ndxterm.class.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="revhistory.label"/>
+ </optional>
+ <choice>
+ <ref name="glosssee.label"/>
+ <oneOrMore>
+ <ref name="glossdef.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="glossentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossentry.role.attrib.role"/>
+ <optional>
+ <attribute name="sortas">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="glossdef.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossdef.label">
+ <choice>
+ <element name="glossdef">
+ <ref name="glossdef.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="glossdef.mix.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="glossseealso.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="glossdef.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossdef.role.attrib.role"/>
+ <optional>
+ <attribute name="subject">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="glosssee.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glosssee.label">
+ <choice>
+ <element name="glosssee">
+ <ref name="glosssee.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="glosssee.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glosssee.role.attrib.role"/>
+ <optional>
+ <attribute name="otherterm">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="glossseealso.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossseealso.label">
+ <choice>
+ <element name="glossseealso">
+ <ref name="glossseealso.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="glossseealso.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossseealso.role.attrib.role"/>
+ <optional>
+ <attribute name="otherterm">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="itemizedlist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="itemizedlist.label">
+ <choice>
+ <element name="itemizedlist">
+ <ref name="itemizedlist.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="listitem.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="itemizedlist.role">
+ <empty/>
+ <ref name="mark.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="itemizedlist.role.attrib.role"/>
+ <optional>
+ <attribute name="spacing">
+ <choice>
+ <string>normal</string>
+ <string>compact</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="orderedlist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="orderedlist.label">
+ <choice>
+ <element name="orderedlist">
+ <ref name="orderedlist.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="listitem.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="orderedlist.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="orderedlist.role.attrib.role"/>
+ <optional>
+ <attribute name="numeration">
+ <choice>
+ <string>arabic</string>
+ <string>upperalpha</string>
+ <string>loweralpha</string>
+ <string>upperroman</string>
+ <string>lowerroman</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="inheritnum">
+ <choice>
+ <string>inherit</string>
+ <string>ignore</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="continuation">
+ <choice>
+ <string>continues</string>
+ <string>restarts</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spacing">
+ <choice>
+ <string>normal</string>
+ <string>compact</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="listitem.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="listitem.label">
+ <choice>
+ <element name="listitem">
+ <ref name="listitem.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="component.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="listitem.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="listitem.role.attrib.role"/>
+ <optional>
+ <attribute name="override">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="segmentedlist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="segmentedlist.label">
+ <choice>
+ <element name="segmentedlist">
+ <ref name="segmentedlist.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <ref name="segtitle.label"/>
+ <zeroOrMore>
+ <ref name="segtitle.label"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="seglistitem.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="segmentedlist.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="segmentedlist.role.attrib.role"/>
+ </define>
+ <define name="segtitle.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="segtitle.label">
+ <choice>
+ <element name="segtitle">
+ <ref name="segtitle.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="segtitle.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="segtitle.role.attrib.role"/>
+ </define>
+ <define name="seglistitem.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="seglistitem.label">
+ <choice>
+ <element name="seglistitem">
+ <ref name="seglistitem.role"/>
+ <group>
+ <ref name="seg.label"/>
+ <zeroOrMore>
+ <ref name="seg.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="seglistitem.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="seglistitem.role.attrib.role"/>
+ </define>
+ <define name="seg.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="seg.label">
+ <choice>
+ <element name="seg">
+ <ref name="seg.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="seg.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="seg.role.attrib.role"/>
+ </define>
+ <define name="simplelist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="simplelist.label">
+ <choice>
+ <element name="simplelist">
+ <ref name="simplelist.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="member.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="simplelist.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="simplelist.role.attrib.role"/>
+ <optional>
+ <attribute name="columns">
+ <data type="xsd:integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <string>inline</string>
+ <string>vert</string>
+ <string>horiz</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="member.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="member.label">
+ <choice>
+ <element name="member">
+ <ref name="member.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="member.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="member.role.attrib.role"/>
+ </define>
+ <define name="variablelist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="variablelist.label">
+ <choice>
+ <element name="variablelist">
+ <ref name="variablelist.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="varlistentry.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="variablelist.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="variablelist.role.attrib.role"/>
+ <optional>
+ <attribute name="termlength">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="varlistentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="varlistentry.label">
+ <choice>
+ <element name="varlistentry">
+ <ref name="varlistentry.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="term.label"/>
+ </oneOrMore>
+ <ref name="listitem.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="varlistentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="varlistentry.role.attrib.role"/>
+ </define>
+ <define name="term.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="term.label">
+ <choice>
+ <element name="term">
+ <ref name="term.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="term.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="term.role.attrib.role"/>
+ </define>
+ <define name="calloutlist.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="calloutlist.label">
+ <choice>
+ <element name="calloutlist">
+ <ref name="calloutlist.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="callout.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="calloutlist.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="calloutlist.role.attrib.role"/>
+ </define>
+ <define name="callout.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="callout.label">
+ <choice>
+ <element name="callout">
+ <ref name="callout.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="component.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="callout.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="callout.role.attrib.role"/>
+ <optional>
+ <attribute name="arearefs">
+ <data type="xsd:IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="example.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="example.label">
+ <choice>
+ <element name="example">
+ <ref name="example.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="example.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="example.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="width.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="example.role.attrib.role"/>
+ </define>
+ <define name="informalexample.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="informalexample.label">
+ <choice>
+ <element name="informalexample">
+ <ref name="informalexample.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="example.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="informalexample.role">
+ <empty/>
+ <ref name="width.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="informalexample.role.attrib.role"/>
+ </define>
+ <define name="programlistingco.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="programlistingco.label">
+ <choice>
+ <element name="programlistingco">
+ <ref name="programlistingco.role"/>
+ <group>
+ <ref name="areaspec.label"/>
+ <ref name="programlisting.label"/>
+ <zeroOrMore>
+ <ref name="calloutlist.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="programlistingco.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="programlistingco.role.attrib.role"/>
+ </define>
+ <define name="areaspec.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="areaspec.label">
+ <choice>
+ <element name="areaspec">
+ <ref name="areaspec.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="area.label"/>
+ <ref name="areaset.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="areaspec.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="areaspec.role.attrib.role"/>
+ <optional>
+ <attribute name="units">
+ <choice>
+ <string>calspair</string>
+ <string>linecolumn</string>
+ <string>linerange</string>
+ <string>linecolumnpair</string>
+ <string>other</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otherunits">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="area.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="area.label">
+ <choice>
+ <element name="area">
+ <ref name="area.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="area.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="linkends.attrib.role"/>
+ <ref name="idreq.common.attrib.role"/>
+ <ref name="area.role.attrib.role"/>
+ <optional>
+ <attribute name="units">
+ <choice>
+ <string>calspair</string>
+ <string>linecolumn</string>
+ <string>linerange</string>
+ <string>linecolumnpair</string>
+ <string>other</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otherunits">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <attribute name="coords">
+ <anyString/>
+ </attribute>
+ </define>
+ <define name="areaset.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="areaset.label">
+ <choice>
+ <element name="areaset">
+ <ref name="areaset.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="area.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="areaset.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="idreq.common.attrib.role"/>
+ <ref name="areaset.role.attrib.role"/>
+ <optional>
+ <attribute name="units">
+ <choice>
+ <string>calspair</string>
+ <string>linecolumn</string>
+ <string>linerange</string>
+ <string>linecolumnpair</string>
+ <string>other</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otherunits">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <attribute name="coords">
+ <anyString/>
+ </attribute>
+ </define>
+ <define name="programlisting.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="programlisting.label">
+ <choice>
+ <element name="programlisting">
+ <ref name="programlisting.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ <ref name="co.label"/>
+ <ref name="lineannotation.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="programlisting.role">
+ <empty/>
+ <ref name="width.attrib.role"/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="programlisting.role.attrib.role"/>
+ </define>
+ <define name="literallayout.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="literallayout.label">
+ <choice>
+ <element name="literallayout">
+ <ref name="literallayout.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ <ref name="co.label"/>
+ <ref name="lineannotation.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="literallayout.role">
+ <empty/>
+ <ref name="width.attrib.role"/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="literallayout.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>monospaced</string>
+ <string>normal</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="screenco.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="screenco.label">
+ <choice>
+ <element name="screenco">
+ <ref name="screenco.role"/>
+ <group>
+ <ref name="areaspec.label"/>
+ <ref name="screen.label"/>
+ <zeroOrMore>
+ <ref name="calloutlist.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="screenco.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="screenco.role.attrib.role"/>
+ </define>
+ <define name="screen.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="screen.label">
+ <choice>
+ <element name="screen">
+ <ref name="screen.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ <ref name="co.label"/>
+ <ref name="lineannotation.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="screen.role">
+ <empty/>
+ <ref name="width.attrib.role"/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="screen.role.attrib.role"/>
+ </define>
+ <define name="screenshot.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="screenshot.label">
+ <choice>
+ <element name="screenshot">
+ <ref name="screenshot.role"/>
+ <group>
+ <optional>
+ <ref name="screeninfo.label"/>
+ </optional>
+ <choice>
+ <ref name="graphic.label"/>
+ <ref name="graphicco.label"/>
+ <ref name="mediaobject.label"/>
+ <ref name="mediaobjectco.label"/>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="screenshot.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="screenshot.role.attrib.role"/>
+ </define>
+ <define name="screeninfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="screeninfo.label">
+ <choice>
+ <element name="screeninfo">
+ <ref name="screeninfo.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="screeninfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="screeninfo.role.attrib.role"/>
+ </define>
+ <define name="figure.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="figure.label">
+ <choice>
+ <element name="figure">
+ <ref name="figure.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <ref name="figure.mix.label"/>
+ <ref name="link.char.class.label"/>
+ </choice>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="figure.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="figure.role.attrib.role"/>
+ <optional>
+ <attribute name="float">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pgwide">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="informalfigure.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="informalfigure.label">
+ <choice>
+ <element name="informalfigure">
+ <ref name="informalfigure.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="figure.mix.label"/>
+ <ref name="link.char.class.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="informalfigure.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="informalfigure.role.attrib.role"/>
+ <optional>
+ <attribute name="float">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pgwide">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="graphicco.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="graphicco.label">
+ <choice>
+ <element name="graphicco">
+ <ref name="graphicco.role"/>
+ <group>
+ <ref name="areaspec.label"/>
+ <ref name="graphic.label"/>
+ <zeroOrMore>
+ <ref name="calloutlist.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="graphicco.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="graphicco.role.attrib.role"/>
+ </define>
+ <define name="graphic.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="graphic.label">
+ <choice>
+ <element name="graphic">
+ <ref name="graphic.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="graphic.role">
+ <empty/>
+ <ref name="graphics.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="graphic.role.attrib.role"/>
+ </define>
+ <define name="inlinegraphic.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="inlinegraphic.label">
+ <choice>
+ <element name="inlinegraphic">
+ <ref name="inlinegraphic.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="inlinegraphic.role">
+ <empty/>
+ <ref name="graphics.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="inlinegraphic.role.attrib.role"/>
+ </define>
+ <define name="mediaobject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="mediaobject.label">
+ <choice>
+ <element name="mediaobject">
+ <ref name="mediaobject.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <ref name="mediaobject.mix.label"/>
+ <zeroOrMore>
+ <ref name="mediaobject.mix.label"/>
+ <ref name="textobject.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="caption.label"/>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="mediaobject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="mediaobject.role.attrib.role"/>
+ </define>
+ <define name="inlinemediaobject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="inlinemediaobject.label">
+ <choice>
+ <element name="inlinemediaobject">
+ <ref name="inlinemediaobject.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <ref name="mediaobject.mix.label"/>
+ <zeroOrMore>
+ <ref name="mediaobject.mix.label"/>
+ <ref name="textobject.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="inlinemediaobject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="inlinemediaobject.role.attrib.role"/>
+ </define>
+ <define name="videoobject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="videoobject.label">
+ <choice>
+ <element name="videoobject">
+ <ref name="videoobject.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <ref name="videodata.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="videoobject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="videoobject.role.attrib.role"/>
+ </define>
+ <define name="audioobject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="audioobject.label">
+ <choice>
+ <element name="audioobject">
+ <ref name="audioobject.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <ref name="audiodata.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="audioobject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="audioobject.role.attrib.role"/>
+ </define>
+ <define name="imageobject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="imageobject.label">
+ <choice>
+ <element name="imageobject">
+ <ref name="imageobject.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <ref name="imagedata.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="imageobject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="imageobject.role.attrib.role"/>
+ </define>
+ <define name="textobject.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="textobject.label">
+ <choice>
+ <element name="textobject">
+ <ref name="textobject.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <choice>
+ <ref name="phrase.label"/>
+ <oneOrMore>
+ <ref name="textobject.mix.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="textobject.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="textobject.role.attrib.role"/>
+ </define>
+ <define name="objectinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="objectinfo.label">
+ <choice>
+ <element name="objectinfo">
+ <ref name="objectinfo.role"/>
+ <group>
+ <ref name="infoContentModel.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="objectinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="objectinfo.role.attrib.role"/>
+ </define>
+ <define name="objectdata.attrib.role">
+ <empty/>
+ <optional>
+ <attribute name="fileref">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="format">
+ <choice>
+ <string>BMP</string>
+ <string>CGM-CHAR</string>
+ <string>CGM-BINARY</string>
+ <string>CGM-CLEAR</string>
+ <string>DITROFF</string>
+ <string>DVI</string>
+ <string>EPS</string>
+ <string>EQN</string>
+ <string>FAX</string>
+ <string>GIF</string>
+ <string>GIF87a</string>
+ <string>GIF89a</string>
+ <string>JPG</string>
+ <string>JPEG</string>
+ <string>IGES</string>
+ <string>PCX</string>
+ <string>PIC</string>
+ <string>PNG</string>
+ <string>PS</string>
+ <string>SGML</string>
+ <string>TBL</string>
+ <string>TEX</string>
+ <string>TIFF</string>
+ <string>WMF</string>
+ <string>WPG</string>
+ <string>linespecific</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="srccredit">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="videodata.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="videodata.label">
+ <choice>
+ <element name="videodata">
+ <ref name="videodata.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="videodata.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="objectdata.attrib.role"/>
+ <optional>
+ <attribute name="width">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <string>left</string>
+ <string>right</string>
+ <string>center</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scale">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scalefit">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="audiodata.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="audiodata.label">
+ <choice>
+ <element name="audiodata">
+ <ref name="audiodata.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="audiodata.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="objectdata.attrib.role"/>
+ <ref name="audiodata.role.attrib.role"/>
+ </define>
+ <define name="imagedata.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="imagedata.label">
+ <choice>
+ <element name="imagedata">
+ <ref name="imagedata.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="imagedata.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="objectdata.attrib.role"/>
+ <ref name="imagedata.role.attrib.role"/>
+ <optional>
+ <attribute name="width">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <string>left</string>
+ <string>right</string>
+ <string>center</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scale">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scalefit">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="caption.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="caption.label">
+ <choice>
+ <element name="caption">
+ <ref name="caption.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="textobject.mix.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="caption.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="caption.role.attrib.role"/>
+ </define>
+ <define name="mediaobjectco.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="mediaobjectco.label">
+ <choice>
+ <element name="mediaobjectco">
+ <ref name="mediaobjectco.role"/>
+ <group>
+ <optional>
+ <ref name="objectinfo.label"/>
+ </optional>
+ <ref name="imageobjectco.label"/>
+ <zeroOrMore>
+ <ref name="imageobjectco.label"/>
+ <ref name="textobject.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="mediaobjectco.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="mediaobjectco.role.attrib.role"/>
+ </define>
+ <define name="imageobjectco.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="imageobjectco.label">
+ <choice>
+ <element name="imageobjectco">
+ <ref name="imageobjectco.role"/>
+ <group>
+ <ref name="areaspec.label"/>
+ <ref name="imageobject.label"/>
+ <zeroOrMore>
+ <ref name="calloutlist.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="imageobjectco.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="imageobjectco.role.attrib.role"/>
+ </define>
+ <define name="equation.content.label">
+ <group>
+ <optional>
+ <ref name="alt.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="mediaobject.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </define>
+ <define name="equation.content.role">
+ <empty/>
+ </define>
+ <define name="inlineequation.content.label">
+ <group>
+ <optional>
+ <ref name="alt.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="inlinemediaobject.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </define>
+ <define name="inlineequation.content.role">
+ <empty/>
+ </define>
+ <define name="equation.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="equation.label">
+ <choice>
+ <element name="equation">
+ <ref name="equation.role"/>
+ <group>
+ <optional>
+ <ref name="formalobject.title.content.label"/>
+ </optional>
+ <choice>
+ <ref name="informalequation.label"/>
+ <ref name="equation.content.label"/>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="equation.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="equation.role.attrib.role"/>
+ </define>
+ <define name="informalequation.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="informalequation.label">
+ <choice>
+ <element name="informalequation">
+ <ref name="informalequation.role"/>
+ <group>
+ <ref name="equation.content.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="informalequation.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="informalequation.role.attrib.role"/>
+ </define>
+ <define name="inlineequation.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="inlineequation.label">
+ <choice>
+ <element name="inlineequation">
+ <ref name="inlineequation.role"/>
+ <group>
+ <ref name="inlineequation.content.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="inlineequation.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="inlineequation.role.attrib.role"/>
+ </define>
+ <define name="alt.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="alt.label">
+ <choice>
+ <element name="alt">
+ <ref name="alt.role"/>
+ <mixed>
+ <empty/>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="alt.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="alt.role.attrib.role"/>
+ </define>
+ <define name="synopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="synopsis.label">
+ <choice>
+ <element name="synopsis">
+ <ref name="synopsis.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ <ref name="graphic.label"/>
+ <ref name="mediaobject.label"/>
+ <ref name="lineannotation.label"/>
+ <ref name="co.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="synopsis.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="synopsis.role.attrib.role"/>
+ </define>
+ <define name="cmdsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="cmdsynopsis.label">
+ <choice>
+ <element name="cmdsynopsis">
+ <ref name="cmdsynopsis.role"/>
+ <group>
+ <oneOrMore>
+ <choice>
+ <ref name="command.label"/>
+ <ref name="arg.label"/>
+ <ref name="group.label"/>
+ <ref name="sbr.label"/>
+ </choice>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="synopfragment.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="cmdsynopsis.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="cmdsynopsis.role.attrib.role"/>
+ <optional>
+ <attribute name="sepchar">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cmdlength">
+ <data type="xsd:integer"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="arg.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="arg.label">
+ <choice>
+ <element name="arg">
+ <ref name="arg.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="arg.label"/>
+ <ref name="group.label"/>
+ <ref name="option.label"/>
+ <ref name="synopfragmentref.label"/>
+ <ref name="replaceable.label"/>
+ <ref name="sbr.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="arg.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="arg.role.attrib.role"/>
+ <optional>
+ <attribute name="choice">
+ <choice>
+ <string>opt</string>
+ <string>req</string>
+ <string>plain</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rep">
+ <choice>
+ <string>norepeat</string>
+ <string>repeat</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="group.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="group.label">
+ <choice>
+ <element name="group">
+ <ref name="group.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="arg.label"/>
+ <ref name="group.label"/>
+ <ref name="option.label"/>
+ <ref name="synopfragmentref.label"/>
+ <ref name="replaceable.label"/>
+ <ref name="sbr.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="group.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="group.role.attrib.role"/>
+ <optional>
+ <attribute name="choice">
+ <choice>
+ <string>opt</string>
+ <string>req</string>
+ <string>plain</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rep">
+ <choice>
+ <string>norepeat</string>
+ <string>repeat</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sbr.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sbr.label">
+ <choice>
+ <element name="sbr">
+ <ref name="sbr.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="sbr.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sbr.role.attrib.role"/>
+ </define>
+ <define name="synopfragmentref.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="synopfragmentref.label">
+ <choice>
+ <element name="synopfragmentref">
+ <ref name="synopfragmentref.role"/>
+ <mixed>
+ <empty/>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="synopfragmentref.role">
+ <empty/>
+ <ref name="linkendreq.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="synopfragmentref.role.attrib.role"/>
+ </define>
+ <define name="synopfragment.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="synopfragment.label">
+ <choice>
+ <element name="synopfragment">
+ <ref name="synopfragment.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="arg.label"/>
+ <ref name="group.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="synopfragment.role">
+ <empty/>
+ <ref name="idreq.common.attrib.role"/>
+ <ref name="synopfragment.role.attrib.role"/>
+ </define>
+ <define name="funcsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="funcsynopsis.label">
+ <choice>
+ <element name="funcsynopsis">
+ <ref name="funcsynopsis.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="funcsynopsisinfo.label"/>
+ <ref name="funcprototype.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="funcsynopsis.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="funcsynopsis.role.attrib.role"/>
+ </define>
+ <define name="funcsynopsisinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="funcsynopsisinfo.label">
+ <choice>
+ <element name="funcsynopsisinfo">
+ <ref name="funcsynopsisinfo.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ <ref name="lineannotation.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="funcsynopsisinfo.role">
+ <empty/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="funcsynopsisinfo.role.attrib.role"/>
+ </define>
+ <define name="funcprototype.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="funcprototype.label">
+ <choice>
+ <element name="funcprototype">
+ <ref name="funcprototype.role"/>
+ <group>
+ <ref name="funcdef.label"/>
+ <oneOrMore>
+ <choice>
+ <ref name="void.label"/>
+ <ref name="varargs.label"/>
+ <ref name="paramdef.label"/>
+ </choice>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="funcprototype.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="funcprototype.role.attrib.role"/>
+ </define>
+ <define name="funcdef.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="funcdef.label">
+ <choice>
+ <element name="funcdef">
+ <ref name="funcdef.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="replaceable.label"/>
+ <ref name="function.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="funcdef.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="funcdef.role.attrib.role"/>
+ </define>
+ <define name="void.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="void.label">
+ <choice>
+ <element name="void">
+ <ref name="void.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="void.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="void.role.attrib.role"/>
+ </define>
+ <define name="varargs.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="varargs.label">
+ <choice>
+ <element name="varargs">
+ <ref name="varargs.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="varargs.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="varargs.role.attrib.role"/>
+ </define>
+ <define name="paramdef.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="paramdef.label">
+ <choice>
+ <element name="paramdef">
+ <ref name="paramdef.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="replaceable.label"/>
+ <ref name="parameter.label"/>
+ <ref name="funcparams.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="paramdef.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="paramdef.role.attrib.role"/>
+ </define>
+ <define name="funcparams.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="funcparams.label">
+ <choice>
+ <element name="funcparams">
+ <ref name="funcparams.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="funcparams.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="funcparams.role.attrib.role"/>
+ </define>
+ <define name="classsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="classsynopsis.label">
+ <choice>
+ <element name="classsynopsis">
+ <ref name="classsynopsis.role"/>
+ <group>
+ <oneOrMore>
+ <choice>
+ <ref name="ooclass.label"/>
+ <ref name="oointerface.label"/>
+ <ref name="ooexception.label"/>
+ </choice>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="classsynopsisinfo.label"/>
+ <ref name="fieldsynopsis.label"/>
+ <ref name="method.synop.class.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="classsynopsis.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="classsynopsis.role.attrib.role"/>
+ <optional>
+ <attribute name="language">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>class</string>
+ <string>interface</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="classsynopsisinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="classsynopsisinfo.label">
+ <choice>
+ <element name="classsynopsisinfo">
+ <ref name="classsynopsisinfo.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ <ref name="lineannotation.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="classsynopsisinfo.role">
+ <empty/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="classsynopsisinfo.role.attrib.role"/>
+ </define>
+ <define name="ooclass.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="ooclass.label">
+ <choice>
+ <element name="ooclass">
+ <ref name="ooclass.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <ref name="classname.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="ooclass.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="ooclass.role.attrib.role"/>
+ </define>
+ <define name="oointerface.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="oointerface.label">
+ <choice>
+ <element name="oointerface">
+ <ref name="oointerface.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <ref name="interfacename.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="oointerface.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="oointerface.role.attrib.role"/>
+ </define>
+ <define name="ooexception.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="ooexception.label">
+ <choice>
+ <element name="ooexception">
+ <ref name="ooexception.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <ref name="exceptionname.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="ooexception.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="ooexception.role.attrib.role"/>
+ </define>
+ <define name="modifier.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="modifier.label">
+ <choice>
+ <element name="modifier">
+ <ref name="modifier.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="modifier.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="modifier.role.attrib.role"/>
+ </define>
+ <define name="interfacename.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="interfacename.label">
+ <choice>
+ <element name="interfacename">
+ <ref name="interfacename.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="interfacename.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="interfacename.role.attrib.role"/>
+ </define>
+ <define name="exceptionname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="exceptionname.label">
+ <choice>
+ <element name="exceptionname">
+ <ref name="exceptionname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="exceptionname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="exceptionname.role.attrib.role"/>
+ </define>
+ <define name="fieldsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="fieldsynopsis.label">
+ <choice>
+ <element name="fieldsynopsis">
+ <ref name="fieldsynopsis.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="type.label"/>
+ </optional>
+ <ref name="varname.label"/>
+ <optional>
+ <ref name="initializer.label"/>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="fieldsynopsis.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="fieldsynopsis.role.attrib.role"/>
+ </define>
+ <define name="initializer.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="initializer.label">
+ <choice>
+ <element name="initializer">
+ <ref name="initializer.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="initializer.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="initializer.role.attrib.role"/>
+ </define>
+ <define name="constructorsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="constructorsynopsis.label">
+ <choice>
+ <element name="constructorsynopsis">
+ <ref name="constructorsynopsis.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="methodname.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="methodparam.label"/>
+ </oneOrMore>
+ <ref name="void.label"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="exceptionname.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="constructorsynopsis.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="constructorsynopsis.role.attrib.role"/>
+ </define>
+ <define name="destructorsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="destructorsynopsis.label">
+ <choice>
+ <element name="destructorsynopsis">
+ <ref name="destructorsynopsis.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="methodname.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="methodparam.label"/>
+ </oneOrMore>
+ <ref name="void.label"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="exceptionname.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="destructorsynopsis.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="destructorsynopsis.role.attrib.role"/>
+ </define>
+ <define name="methodsynopsis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="methodsynopsis.label">
+ <choice>
+ <element name="methodsynopsis">
+ <ref name="methodsynopsis.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ <optional>
+ <choice>
+ <ref name="type.label"/>
+ <ref name="void.label"/>
+ </choice>
+ </optional>
+ <optional>
+ <ref name="methodname.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="methodparam.label"/>
+ </oneOrMore>
+ <ref name="void.label"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="exceptionname.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="modifier.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="methodsynopsis.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="methodsynopsis.role.attrib.role"/>
+ </define>
+ <define name="methodname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="methodname.label">
+ <choice>
+ <element name="methodname">
+ <ref name="methodname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="methodname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="methodname.role.attrib.role"/>
+ </define>
+ <define name="methodparam.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="methodparam.label">
+ <choice>
+ <element name="methodparam">
+ <ref name="methodparam.role"/>
+ <group>
+ <zeroOrMore>
+ <element name="modifier">
+ <anyString/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="type">
+ <anyString/>
+ </element>
+ </optional>
+ <choice>
+ <group>
+ <element name="parameter">
+ <anyString/>
+ </element>
+ <optional>
+ <element name="initializer">
+ <anyString/>
+ </element>
+ </optional>
+ </group>
+ <element name="funcparams">
+ <anyString/>
+ </element>
+ </choice>
+ <zeroOrMore>
+ <element name="modifier">
+ <anyString/>
+ </element>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="methodparam.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="methodparam.role.attrib.role"/>
+ <optional>
+ <attribute name="choice">
+ <choice>
+ <string>opt</string>
+ <string>req</string>
+ <string>plain</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rep">
+ <choice>
+ <string>norepeat</string>
+ <string>repeat</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ackno.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="ackno.label">
+ <choice>
+ <element name="ackno">
+ <ref name="ackno.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="ackno.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="ackno.role.attrib.role"/>
+ </define>
+ <define name="address.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="address.label">
+ <choice>
+ <element name="address">
+ <ref name="address.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="person.ident.mix.label"/>
+ <ref name="street.label"/>
+ <ref name="pob.label"/>
+ <ref name="postcode.label"/>
+ <ref name="city.label"/>
+ <ref name="state.label"/>
+ <ref name="country.label"/>
+ <ref name="phone.label"/>
+ <ref name="fax.label"/>
+ <ref name="email.label"/>
+ <ref name="otheraddr.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="address.role">
+ <empty/>
+ <ref name="linespecific.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="address.role.attrib.role"/>
+ </define>
+ <define name="street.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="street.label">
+ <choice>
+ <element name="street">
+ <ref name="street.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="street.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="street.role.attrib.role"/>
+ </define>
+ <define name="pob.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="pob.label">
+ <choice>
+ <element name="pob">
+ <ref name="pob.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="pob.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="pob.role.attrib.role"/>
+ </define>
+ <define name="postcode.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="postcode.label">
+ <choice>
+ <element name="postcode">
+ <ref name="postcode.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="postcode.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="postcode.role.attrib.role"/>
+ </define>
+ <define name="city.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="city.label">
+ <choice>
+ <element name="city">
+ <ref name="city.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="city.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="city.role.attrib.role"/>
+ </define>
+ <define name="state.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="state.label">
+ <choice>
+ <element name="state">
+ <ref name="state.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="state.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="state.role.attrib.role"/>
+ </define>
+ <define name="country.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="country.label">
+ <choice>
+ <element name="country">
+ <ref name="country.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="country.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="country.role.attrib.role"/>
+ </define>
+ <define name="phone.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="phone.label">
+ <choice>
+ <element name="phone">
+ <ref name="phone.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="phone.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="phone.role.attrib.role"/>
+ </define>
+ <define name="fax.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="fax.label">
+ <choice>
+ <element name="fax">
+ <ref name="fax.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="fax.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="fax.role.attrib.role"/>
+ </define>
+ <define name="otheraddr.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="otheraddr.label">
+ <choice>
+ <element name="otheraddr">
+ <ref name="otheraddr.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="otheraddr.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="otheraddr.role.attrib.role"/>
+ </define>
+ <define name="affiliation.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="affiliation.label">
+ <choice>
+ <element name="affiliation">
+ <ref name="affiliation.role"/>
+ <group>
+ <optional>
+ <ref name="shortaffil.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="jobtitle.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="orgname.label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="orgdiv.label"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="address.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="affiliation.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="affiliation.role.attrib.role"/>
+ </define>
+ <define name="shortaffil.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="shortaffil.label">
+ <choice>
+ <element name="shortaffil">
+ <ref name="shortaffil.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="shortaffil.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="shortaffil.role.attrib.role"/>
+ </define>
+ <define name="jobtitle.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="jobtitle.label">
+ <choice>
+ <element name="jobtitle">
+ <ref name="jobtitle.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="jobtitle.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="jobtitle.role.attrib.role"/>
+ </define>
+ <define name="orgdiv.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="orgdiv.label">
+ <choice>
+ <element name="orgdiv">
+ <ref name="orgdiv.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="orgdiv.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="orgdiv.role.attrib.role"/>
+ </define>
+ <define name="artpagenums.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="artpagenums.label">
+ <choice>
+ <element name="artpagenums">
+ <ref name="artpagenums.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="artpagenums.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="artpagenums.role.attrib.role"/>
+ </define>
+ <define name="author.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="author.label">
+ <choice>
+ <element name="author">
+ <ref name="author.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="person.ident.mix.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="author.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="author.role.attrib.role"/>
+ </define>
+ <define name="authorgroup.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="authorgroup.label">
+ <choice>
+ <element name="authorgroup">
+ <ref name="authorgroup.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="author.label"/>
+ <ref name="editor.label"/>
+ <ref name="collab.label"/>
+ <ref name="corpauthor.label"/>
+ <ref name="othercredit.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="authorgroup.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="authorgroup.role.attrib.role"/>
+ </define>
+ <define name="collab.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="collab.label">
+ <choice>
+ <element name="collab">
+ <ref name="collab.role"/>
+ <group>
+ <ref name="collabname.label"/>
+ <zeroOrMore>
+ <ref name="affiliation.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="collab.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="collab.role.attrib.role"/>
+ </define>
+ <define name="collabname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="collabname.label">
+ <choice>
+ <element name="collabname">
+ <ref name="collabname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="collabname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="collabname.role.attrib.role"/>
+ </define>
+ <define name="authorinitials.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="authorinitials.label">
+ <choice>
+ <element name="authorinitials">
+ <ref name="authorinitials.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="authorinitials.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="authorinitials.role.attrib.role"/>
+ </define>
+ <define name="confgroup.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="confgroup.label">
+ <choice>
+ <element name="confgroup">
+ <ref name="confgroup.role"/>
+ <zeroOrMore>
+ <ref name="confdates.label"/>
+ <ref name="conftitle.label"/>
+ <ref name="confnum.label"/>
+ <ref name="address.label"/>
+ <ref name="confsponsor.label"/>
+ </zeroOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="confgroup.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="confgroup.role.attrib.role"/>
+ </define>
+ <define name="confdates.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="confdates.label">
+ <choice>
+ <element name="confdates">
+ <ref name="confdates.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="confdates.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="confdates.role.attrib.role"/>
+ </define>
+ <define name="conftitle.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="conftitle.label">
+ <choice>
+ <element name="conftitle">
+ <ref name="conftitle.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="conftitle.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="conftitle.role.attrib.role"/>
+ </define>
+ <define name="confnum.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="confnum.label">
+ <choice>
+ <element name="confnum">
+ <ref name="confnum.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="confnum.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="confnum.role.attrib.role"/>
+ </define>
+ <define name="confsponsor.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="confsponsor.label">
+ <choice>
+ <element name="confsponsor">
+ <ref name="confsponsor.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="confsponsor.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="confsponsor.role.attrib.role"/>
+ </define>
+ <define name="contractnum.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="contractnum.label">
+ <choice>
+ <element name="contractnum">
+ <ref name="contractnum.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="contractnum.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="contractnum.role.attrib.role"/>
+ </define>
+ <define name="contractsponsor.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="contractsponsor.label">
+ <choice>
+ <element name="contractsponsor">
+ <ref name="contractsponsor.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="contractsponsor.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="contractsponsor.role.attrib.role"/>
+ </define>
+ <define name="copyright.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="copyright.label">
+ <choice>
+ <element name="copyright">
+ <ref name="copyright.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="year.label"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="holder.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="copyright.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="copyright.role.attrib.role"/>
+ </define>
+ <define name="year.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="year.label">
+ <choice>
+ <element name="year">
+ <ref name="year.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="year.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="year.role.attrib.role"/>
+ </define>
+ <define name="holder.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="holder.label">
+ <choice>
+ <element name="holder">
+ <ref name="holder.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="holder.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="holder.role.attrib.role"/>
+ </define>
+ <define name="corpauthor.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="corpauthor.label">
+ <choice>
+ <element name="corpauthor">
+ <ref name="corpauthor.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="corpauthor.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="corpauthor.role.attrib.role"/>
+ </define>
+ <define name="corpname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="corpname.label">
+ <choice>
+ <element name="corpname">
+ <ref name="corpname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="corpname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="corpname.role.attrib.role"/>
+ </define>
+ <define name="date.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="date.label">
+ <choice>
+ <element name="date">
+ <ref name="date.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="date.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="date.role.attrib.role"/>
+ </define>
+ <define name="edition.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="edition.label">
+ <choice>
+ <element name="edition">
+ <ref name="edition.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="edition.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="edition.role.attrib.role"/>
+ </define>
+ <define name="editor.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="editor.label">
+ <choice>
+ <element name="editor">
+ <ref name="editor.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="person.ident.mix.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="editor.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="editor.role.attrib.role"/>
+ </define>
+ <define name="isbn.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="isbn.label">
+ <choice>
+ <element name="isbn">
+ <ref name="isbn.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="isbn.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="isbn.role.attrib.role"/>
+ </define>
+ <define name="issn.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="issn.label">
+ <choice>
+ <element name="issn">
+ <ref name="issn.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="issn.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="issn.role.attrib.role"/>
+ </define>
+ <define name="invpartnumber.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="invpartnumber.label">
+ <choice>
+ <element name="invpartnumber">
+ <ref name="invpartnumber.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="invpartnumber.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="invpartnumber.role.attrib.role"/>
+ </define>
+ <define name="issuenum.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="issuenum.label">
+ <choice>
+ <element name="issuenum">
+ <ref name="issuenum.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="issuenum.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="issuenum.role.attrib.role"/>
+ </define>
+ <define name="legalnotice.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="legalnotice.label">
+ <choice>
+ <element name="legalnotice">
+ <ref name="legalnotice.role"/>
+ <group>
+ <optional>
+ <ref name="title.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="legalnotice.mix.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="legalnotice.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="legalnotice.role.attrib.role"/>
+ </define>
+ <define name="modespec.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="modespec.label">
+ <choice>
+ <element name="modespec">
+ <ref name="modespec.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="modespec.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="modespec.role.attrib.role"/>
+ <optional>
+ <attribute name="application">
+ <choice>
+ <string>BMP</string>
+ <string>CGM-CHAR</string>
+ <string>CGM-BINARY</string>
+ <string>CGM-CLEAR</string>
+ <string>DITROFF</string>
+ <string>DVI</string>
+ <string>EPS</string>
+ <string>EQN</string>
+ <string>FAX</string>
+ <string>GIF</string>
+ <string>GIF87a</string>
+ <string>GIF89a</string>
+ <string>JPG</string>
+ <string>JPEG</string>
+ <string>IGES</string>
+ <string>PCX</string>
+ <string>PIC</string>
+ <string>PNG</string>
+ <string>PS</string>
+ <string>SGML</string>
+ <string>TBL</string>
+ <string>TEX</string>
+ <string>TIFF</string>
+ <string>WMF</string>
+ <string>WPG</string>
+ <string>linespecific</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="orgname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="orgname.label">
+ <choice>
+ <element name="orgname">
+ <ref name="orgname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="orgname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="orgname.role.attrib.role"/>
+ </define>
+ <define name="othercredit.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="othercredit.label">
+ <choice>
+ <element name="othercredit">
+ <ref name="othercredit.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="person.ident.mix.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="othercredit.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="othercredit.role.attrib.role"/>
+ </define>
+ <define name="pagenums.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="pagenums.label">
+ <choice>
+ <element name="pagenums">
+ <ref name="pagenums.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="pagenums.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="pagenums.role.attrib.role"/>
+ </define>
+ <define name="contrib.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="contrib.label">
+ <choice>
+ <element name="contrib">
+ <ref name="contrib.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="contrib.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="contrib.role.attrib.role"/>
+ </define>
+ <define name="firstname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="firstname.label">
+ <choice>
+ <element name="firstname">
+ <ref name="firstname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="firstname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="firstname.role.attrib.role"/>
+ </define>
+ <define name="honorific.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="honorific.label">
+ <choice>
+ <element name="honorific">
+ <ref name="honorific.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="honorific.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="honorific.role.attrib.role"/>
+ </define>
+ <define name="lineage.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="lineage.label">
+ <choice>
+ <element name="lineage">
+ <ref name="lineage.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="lineage.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="lineage.role.attrib.role"/>
+ </define>
+ <define name="othername.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="othername.label">
+ <choice>
+ <element name="othername">
+ <ref name="othername.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="othername.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="othername.role.attrib.role"/>
+ </define>
+ <define name="surname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="surname.label">
+ <choice>
+ <element name="surname">
+ <ref name="surname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="surname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="surname.role.attrib.role"/>
+ </define>
+ <define name="printhistory.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="printhistory.label">
+ <choice>
+ <element name="printhistory">
+ <ref name="printhistory.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="para.class.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="printhistory.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="printhistory.role.attrib.role"/>
+ </define>
+ <define name="productname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="productname.label">
+ <choice>
+ <element name="productname">
+ <ref name="productname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="productname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="productname.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>service</string>
+ <string>trade</string>
+ <string>registered</string>
+ <string>copyright</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="productnumber.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="productnumber.label">
+ <choice>
+ <element name="productnumber">
+ <ref name="productnumber.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="productnumber.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="productnumber.role.attrib.role"/>
+ </define>
+ <define name="pubdate.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="pubdate.label">
+ <choice>
+ <element name="pubdate">
+ <ref name="pubdate.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="pubdate.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="pubdate.role.attrib.role"/>
+ </define>
+ <define name="publisher.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="publisher.label">
+ <choice>
+ <element name="publisher">
+ <ref name="publisher.role"/>
+ <group>
+ <ref name="publishername.label"/>
+ <zeroOrMore>
+ <ref name="address.label"/>
+ </zeroOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="publisher.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="publisher.role.attrib.role"/>
+ </define>
+ <define name="publishername.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="publishername.label">
+ <choice>
+ <element name="publishername">
+ <ref name="publishername.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="publishername.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="publishername.role.attrib.role"/>
+ </define>
+ <define name="pubsnumber.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="pubsnumber.label">
+ <choice>
+ <element name="pubsnumber">
+ <ref name="pubsnumber.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="pubsnumber.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="pubsnumber.role.attrib.role"/>
+ </define>
+ <define name="releaseinfo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="releaseinfo.label">
+ <choice>
+ <element name="releaseinfo">
+ <ref name="releaseinfo.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="releaseinfo.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="releaseinfo.role.attrib.role"/>
+ </define>
+ <define name="revhistory.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="revhistory.label">
+ <choice>
+ <element name="revhistory">
+ <ref name="revhistory.role"/>
+ <group>
+ <oneOrMore>
+ <ref name="revision.label"/>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="revhistory.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="revhistory.role.attrib.role"/>
+ </define>
+ <define name="revision.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="revision.label">
+ <choice>
+ <element name="revision">
+ <ref name="revision.role"/>
+ <group>
+ <ref name="revnumber.label"/>
+ <ref name="date.label"/>
+ <zeroOrMore>
+ <ref name="authorinitials.label"/>
+ </zeroOrMore>
+ <optional>
+ <choice>
+ <ref name="revremark.label"/>
+ <ref name="revdescription.label"/>
+ </choice>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="revision.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="revision.role.attrib.role"/>
+ </define>
+ <define name="revnumber.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="revnumber.label">
+ <choice>
+ <element name="revnumber">
+ <ref name="revnumber.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="revnumber.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="revnumber.role.attrib.role"/>
+ </define>
+ <define name="revremark.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="revremark.label">
+ <choice>
+ <element name="revremark">
+ <ref name="revremark.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="revremark.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="revremark.role.attrib.role"/>
+ </define>
+ <define name="revdescription.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="revdescription.label">
+ <choice>
+ <element name="revdescription">
+ <ref name="revdescription.role"/>
+ <oneOrMore>
+ <group>
+ <ref name="revdescription.mix.label"/>
+ </group>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="revdescription.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="revdescription.role.attrib.role"/>
+ </define>
+ <define name="seriesvolnums.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="seriesvolnums.label">
+ <choice>
+ <element name="seriesvolnums">
+ <ref name="seriesvolnums.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="seriesvolnums.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="seriesvolnums.role.attrib.role"/>
+ </define>
+ <define name="volumenum.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="volumenum.label">
+ <choice>
+ <element name="volumenum">
+ <ref name="volumenum.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="volumenum.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="volumenum.role.attrib.role"/>
+ </define>
+ <define name="accel.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="accel.label">
+ <choice>
+ <element name="accel">
+ <ref name="accel.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="accel.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="accel.role.attrib.role"/>
+ </define>
+ <define name="action.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="action.label">
+ <choice>
+ <element name="action">
+ <ref name="action.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="action.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="action.role.attrib.role"/>
+ </define>
+ <define name="application.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="application.label">
+ <choice>
+ <element name="application">
+ <ref name="application.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="application.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="application.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>hardware</string>
+ <string>software</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="classname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="classname.label">
+ <choice>
+ <element name="classname">
+ <ref name="classname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="classname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="classname.role.attrib.role"/>
+ </define>
+ <define name="co.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="co.label">
+ <choice>
+ <element name="co">
+ <ref name="co.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="co.role">
+ <empty/>
+ <ref name="label.attrib.role"/>
+ <ref name="linkends.attrib.role"/>
+ <ref name="idreq.common.attrib.role"/>
+ <ref name="co.role.attrib.role"/>
+ </define>
+ <define name="command.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="command.label">
+ <choice>
+ <element name="command">
+ <ref name="command.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="command.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="command.role.attrib.role"/>
+ </define>
+ <define name="computeroutput.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="computeroutput.label">
+ <choice>
+ <element name="computeroutput">
+ <ref name="computeroutput.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="computeroutput.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="computeroutput.role.attrib.role"/>
+ </define>
+ <define name="database.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="database.label">
+ <choice>
+ <element name="database">
+ <ref name="database.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="database.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="database.role.attrib.role"/>
+ <ref name="moreinfo.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>name</string>
+ <string>table</string>
+ <string>field</string>
+ <string>key1</string>
+ <string>key2</string>
+ <string>record</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="email.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="email.label">
+ <choice>
+ <element name="email">
+ <ref name="email.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="email.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="email.role.attrib.role"/>
+ </define>
+ <define name="envar.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="envar.label">
+ <choice>
+ <element name="envar">
+ <ref name="envar.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="envar.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="envar.role.attrib.role"/>
+ </define>
+ <define name="errorcode.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="errorcode.label">
+ <choice>
+ <element name="errorcode">
+ <ref name="errorcode.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="errorcode.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="errorcode.role.attrib.role"/>
+ </define>
+ <define name="errorname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="errorname.label">
+ <choice>
+ <element name="errorname">
+ <ref name="errorname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="errorname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="errorname.role.attrib.role"/>
+ </define>
+ <define name="errortype.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="errortype.label">
+ <choice>
+ <element name="errortype">
+ <ref name="errortype.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="errortype.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="errortype.role.attrib.role"/>
+ </define>
+ <define name="filename.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="filename.label">
+ <choice>
+ <element name="filename">
+ <ref name="filename.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="filename.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="filename.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>headerfile</string>
+ <string>devicefile</string>
+ <string>libraryfile</string>
+ <string>directory</string>
+ <string>symlink</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="path">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="function.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="function.label">
+ <choice>
+ <element name="function">
+ <ref name="function.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="function.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="function.role.attrib.role"/>
+ </define>
+ <define name="guibutton.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="guibutton.label">
+ <choice>
+ <element name="guibutton">
+ <ref name="guibutton.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="guibutton.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="guibutton.role.attrib.role"/>
+ </define>
+ <define name="guiicon.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="guiicon.label">
+ <choice>
+ <element name="guiicon">
+ <ref name="guiicon.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="guiicon.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="guiicon.role.attrib.role"/>
+ </define>
+ <define name="guilabel.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="guilabel.label">
+ <choice>
+ <element name="guilabel">
+ <ref name="guilabel.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="guilabel.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="guilabel.role.attrib.role"/>
+ </define>
+ <define name="guimenu.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="guimenu.label">
+ <choice>
+ <element name="guimenu">
+ <ref name="guimenu.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="guimenu.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="guimenu.role.attrib.role"/>
+ </define>
+ <define name="guimenuitem.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="guimenuitem.label">
+ <choice>
+ <element name="guimenuitem">
+ <ref name="guimenuitem.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="guimenuitem.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="guimenuitem.role.attrib.role"/>
+ </define>
+ <define name="guisubmenu.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="guisubmenu.label">
+ <choice>
+ <element name="guisubmenu">
+ <ref name="guisubmenu.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="guisubmenu.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="guisubmenu.role.attrib.role"/>
+ </define>
+ <define name="hardware.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="hardware.label">
+ <choice>
+ <element name="hardware">
+ <ref name="hardware.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="hardware.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="hardware.role.attrib.role"/>
+ </define>
+ <define name="interface.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="interface.label">
+ <choice>
+ <element name="interface">
+ <ref name="interface.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="accel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="interface.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="interface.role.attrib.role"/>
+ </define>
+ <define name="keycap.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="keycap.label">
+ <choice>
+ <element name="keycap">
+ <ref name="keycap.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="keycap.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="keycap.role.attrib.role"/>
+ </define>
+ <define name="keycode.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="keycode.label">
+ <choice>
+ <element name="keycode">
+ <ref name="keycode.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="keycode.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="keycode.role.attrib.role"/>
+ </define>
+ <define name="keycombo.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="keycombo.label">
+ <choice>
+ <element name="keycombo">
+ <ref name="keycombo.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="keycap.label"/>
+ <ref name="keycombo.label"/>
+ <ref name="keysym.label"/>
+ <ref name="mousebutton.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="keycombo.role">
+ <empty/>
+ <ref name="keyaction.attrib.role"/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="keycombo.role.attrib.role"/>
+ </define>
+ <define name="keysysm.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="keysym.label">
+ <choice>
+ <element name="keysym">
+ <ref name="keysym.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="keysym.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="keysysm.role.attrib.role"/>
+ </define>
+ <define name="lineannotation.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="lineannotation.label">
+ <choice>
+ <element name="lineannotation">
+ <ref name="lineannotation.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="lineannotation.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="lineannotation.role.attrib.role"/>
+ </define>
+ <define name="literal.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="literal.label">
+ <choice>
+ <element name="literal">
+ <ref name="literal.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="literal.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="literal.role.attrib.role"/>
+ </define>
+ <define name="constant.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="constant.label">
+ <choice>
+ <element name="constant">
+ <ref name="constant.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="constant.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="constant.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>limit</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="varname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="varname.label">
+ <choice>
+ <element name="varname">
+ <ref name="varname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="varname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="varname.role.attrib.role"/>
+ </define>
+ <define name="markup.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="markup.label">
+ <choice>
+ <element name="markup">
+ <ref name="markup.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="markup.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="markup.role.attrib.role"/>
+ </define>
+ <define name="medialabel.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="medialabel.label">
+ <choice>
+ <element name="medialabel">
+ <ref name="medialabel.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="medialabel.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="medialabel.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>cartridge</string>
+ <string>cdrom</string>
+ <string>disk</string>
+ <string>tape</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="menuchoice.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="menuchoice.label">
+ <choice>
+ <element name="menuchoice">
+ <ref name="menuchoice.role"/>
+ <group>
+ <optional>
+ <ref name="shortcut.label"/>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <ref name="guibutton.label"/>
+ <ref name="guiicon.label"/>
+ <ref name="guilabel.label"/>
+ <ref name="guimenu.label"/>
+ <ref name="guimenuitem.label"/>
+ <ref name="guisubmenu.label"/>
+ <ref name="interface.label"/>
+ </choice>
+ </oneOrMore>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="menuchoice.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="menuchoice.role.attrib.role"/>
+ </define>
+ <define name="shortcut.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="shortcut.label">
+ <choice>
+ <element name="shortcut">
+ <ref name="shortcut.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="keycap.label"/>
+ <ref name="keycombo.label"/>
+ <ref name="keysym.label"/>
+ <ref name="mousebutton.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="shortcut.role">
+ <empty/>
+ <ref name="keyaction.attrib.role"/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="shortcut.role.attrib.role"/>
+ </define>
+ <define name="mousebutton.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="mousebutton.label">
+ <choice>
+ <element name="mousebutton">
+ <ref name="mousebutton.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="mousebutton.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="mousebutton.role.attrib.role"/>
+ </define>
+ <define name="msgtext.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="msgtext.label">
+ <choice>
+ <element name="msgtext">
+ <ref name="msgtext.role"/>
+ <oneOrMore>
+ <choice>
+ <ref name="component.mix.label"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </define>
+ <define name="msgtext.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="msgtext.role.attrib.role"/>
+ </define>
+ <define name="option.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="option.label">
+ <choice>
+ <element name="option">
+ <ref name="option.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="option.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="option.role.attrib.role"/>
+ </define>
+ <define name="optional.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="optional.label">
+ <choice>
+ <element name="optional">
+ <ref name="optional.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="optional.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="optional.role.attrib.role"/>
+ </define>
+ <define name="parameter.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="parameter.label">
+ <choice>
+ <element name="parameter">
+ <ref name="parameter.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="parameter.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="parameter.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>command</string>
+ <string>function</string>
+ <string>option</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="prompt.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="prompt.label">
+ <choice>
+ <element name="prompt">
+ <ref name="prompt.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="prompt.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="prompt.role.attrib.role"/>
+ </define>
+ <define name="property.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="property.label">
+ <choice>
+ <element name="property">
+ <ref name="property.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="property.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="property.role.attrib.role"/>
+ </define>
+ <define name="replaceable.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="replaceable.label">
+ <choice>
+ <element name="replaceable">
+ <ref name="replaceable.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="link.char.class.label"/>
+ <ref name="optional.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="replaceable.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="replaceable.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>command</string>
+ <string>function</string>
+ <string>option</string>
+ <string>parameter</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="returnvalue.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="returnvalue.label">
+ <choice>
+ <element name="returnvalue">
+ <ref name="returnvalue.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="returnvalue.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="returnvalue.role.attrib.role"/>
+ </define>
+ <define name="sgmltag.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="sgmltag.label">
+ <choice>
+ <element name="sgmltag">
+ <ref name="sgmltag.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="sgmltag.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="sgmltag.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>attribute</string>
+ <string>attvalue</string>
+ <string>element</string>
+ <string>endtag</string>
+ <string>emptytag</string>
+ <string>genentity</string>
+ <string>numcharref</string>
+ <string>paramentity</string>
+ <string>pi</string>
+ <string>xmlpi</string>
+ <string>starttag</string>
+ <string>sgmlcomment</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="structfield.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="structfield.label">
+ <choice>
+ <element name="structfield">
+ <ref name="structfield.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="structfield.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="structfield.role.attrib.role"/>
+ </define>
+ <define name="structname.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="structname.label">
+ <choice>
+ <element name="structname">
+ <ref name="structname.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="structname.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="structname.role.attrib.role"/>
+ </define>
+ <define name="symbol.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="symbol.label">
+ <choice>
+ <element name="symbol">
+ <ref name="symbol.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="symbol.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="symbol.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>limit</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="systemitem.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="systemitem.label">
+ <choice>
+ <element name="systemitem">
+ <ref name="systemitem.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ <ref name="acronym.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="systemitem.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="systemitem.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>constant</string>
+ <string>groupname</string>
+ <string>library</string>
+ <string>macro</string>
+ <string>osname</string>
+ <string>resource</string>
+ <string>systemname</string>
+ <string>username</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="token.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="token.label">
+ <choice>
+ <element name="token">
+ <ref name="token.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="token.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="token.role.attrib.role"/>
+ </define>
+ <define name="type.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="type.label">
+ <choice>
+ <element name="type">
+ <ref name="type.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="type.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="type.role.attrib.role"/>
+ </define>
+ <define name="userinput.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="userinput.label">
+ <choice>
+ <element name="userinput">
+ <ref name="userinput.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="userinput.role">
+ <empty/>
+ <ref name="moreinfo.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="userinput.role.attrib.role"/>
+ </define>
+ <define name="abbrev.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="abbrev.label">
+ <choice>
+ <element name="abbrev">
+ <ref name="abbrev.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="abbrev.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="abbrev.role.attrib.role"/>
+ </define>
+ <define name="acronym.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="acronym.label">
+ <choice>
+ <element name="acronym">
+ <ref name="acronym.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="acronym.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="acronym.role.attrib.role"/>
+ </define>
+ <define name="citation.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="citation.label">
+ <choice>
+ <element name="citation">
+ <ref name="citation.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="citation.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="citation.role.attrib.role"/>
+ </define>
+ <define name="citerefentry.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="citerefentry.label">
+ <choice>
+ <element name="citerefentry">
+ <ref name="citerefentry.role"/>
+ <group>
+ <ref name="refentrytitle.label"/>
+ <optional>
+ <ref name="manvolnum.label"/>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="citerefentry.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="citerefentry.role.attrib.role"/>
+ </define>
+ <define name="refentrytitle.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="refentrytitle.label">
+ <choice>
+ <element name="refentrytitle">
+ <ref name="refentrytitle.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="refentrytitle.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="refentrytitle.role.attrib.role"/>
+ </define>
+ <define name="namvolnum.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="manvolnum.label">
+ <choice>
+ <element name="manvolnum">
+ <ref name="manvolnum.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="manvolnum.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="namvolnum.role.attrib.role"/>
+ </define>
+ <define name="citetitle.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="citetitle.label">
+ <choice>
+ <element name="citetitle">
+ <ref name="citetitle.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="citetitle.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="citetitle.role.attrib.role"/>
+ <optional>
+ <attribute name="pubwork">
+ <choice>
+ <string>article</string>
+ <string>book</string>
+ <string>chapter</string>
+ <string>part</string>
+ <string>refentry</string>
+ <string>section</string>
+ <string>journal</string>
+ <string>series</string>
+ <string>set</string>
+ <string>manuscript</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="emphasis.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="emphasis.label">
+ <choice>
+ <element name="emphasis">
+ <ref name="emphasis.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="emphasis.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="emphasis.role.attrib.role"/>
+ </define>
+ <define name="firstterm.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="firstterm.label">
+ <choice>
+ <element name="firstterm">
+ <ref name="firstterm.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="firstterm.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="firstterm.role.attrib.role"/>
+ <ref name="linkend.attrib.role"/>
+ </define>
+ <define name="foreignphrase.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="foreignphrase.label">
+ <choice>
+ <element name="foreignphrase">
+ <ref name="foreignphrase.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="foreignphrase.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="foreignphrase.role.attrib.role"/>
+ </define>
+ <define name="glossterm.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="glossterm.label">
+ <choice>
+ <element name="glossterm">
+ <ref name="glossterm.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="glossterm.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="glossterm.role.attrib.role"/>
+ <ref name="linkend.attrib.role"/>
+ <optional>
+ <attribute name="baseform">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="phrase.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="phrase.label">
+ <choice>
+ <element name="phrase">
+ <ref name="phrase.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="phrase.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="phrase.role.attrib.role"/>
+ </define>
+ <define name="quote.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="quote.label">
+ <choice>
+ <element name="quote">
+ <ref name="quote.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="quote.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="quote.role.attrib.role"/>
+ </define>
+ <define name="ssscript.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="subscriptContentModel.label">
+ <choice>
+ <zeroOrMore>
+ <ref name="link.char.class.label"/>
+ <ref name="emphasis.label"/>
+ <ref name="replaceable.label"/>
+ <ref name="symbol.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="subscript.label">
+ <choice>
+ <element name="subscript">
+ <ref name="subscript.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="subscriptContentModel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="subscript.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="ssscript.role.attrib.role"/>
+ </define>
+ <define name="superscript.label">
+ <choice>
+ <element name="superscript">
+ <ref name="superscript.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="subscriptContentModel.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="superscript.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="ssscript.role.attrib.role"/>
+ </define>
+ <define name="trademark.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="trademark.label">
+ <choice>
+ <element name="trademark">
+ <ref name="trademark.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="link.char.class.label"/>
+ <ref name="tech.char.class.label"/>
+ <ref name="base.char.class.label"/>
+ <ref name="other.char.class.label"/>
+ <ref name="inlinegraphic.label"/>
+ <ref name="inlinemediaobject.label"/>
+ <ref name="emphasis.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="trademark.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="trademark.role.attrib.role"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>service</string>
+ <string>trade</string>
+ <string>registered</string>
+ <string>copyright</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="wordasword.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="wordasword.label">
+ <choice>
+ <element name="wordasword">
+ <ref name="wordasword.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="wordasword.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="wordasword.role.attrib.role"/>
+ </define>
+ <define name="link.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="link.label">
+ <choice>
+ <element name="link">
+ <ref name="link.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="link.role">
+ <empty/>
+ <ref name="linkendreq.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="link.role.attrib.role"/>
+ <optional>
+ <attribute name="endterm">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="olink.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="olink.label">
+ <choice>
+ <element name="olink">
+ <ref name="olink.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="olink.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="olink.role.attrib.role"/>
+ <optional>
+ <attribute name="linkmode">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="localinfo">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ulink.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="ulink.label">
+ <choice>
+ <element name="ulink">
+ <ref name="ulink.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="ulink.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="ulink.role.attrib.role"/>
+ <attribute name="url">
+ <anyString/>
+ </attribute>
+ <optional>
+ <attribute name="type">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="footnoteref.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="footnoteref.label">
+ <choice>
+ <element name="footnoteref">
+ <ref name="footnoteref.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="footnoteref.role">
+ <empty/>
+ <ref name="linkendreq.attrib.role"/>
+ <ref name="label.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="footnoteref.role.attrib.role"/>
+ </define>
+ <define name="xref.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="xref.label">
+ <choice>
+ <element name="xref">
+ <ref name="xref.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="xref.role">
+ <empty/>
+ <ref name="linkendreq.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="xref.role.attrib.role"/>
+ <optional>
+ <attribute name="endterm">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="anchor.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="anchor.label">
+ <choice>
+ <element name="anchor">
+ <ref name="anchor.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="anchor.role">
+ <empty/>
+ <ref name="idreq.attrib.role"/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="remap.attrib.role"/>
+ <ref name="xreflabel.attrib.role"/>
+ <ref name="revisionflag.attrib.role"/>
+ <ref name="effectivity.attrib.role"/>
+ <ref name="anchor.role.attrib.role"/>
+ </define>
+ <define name="beginpage.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="beginpage.label">
+ <choice>
+ <element name="beginpage">
+ <ref name="beginpage.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="beginpage.role">
+ <empty/>
+ <ref name="pagenum.attrib.role"/>
+ <ref name="common.attrib.role"/>
+ <ref name="beginpage.role.attrib.role"/>
+ </define>
+ <define name="indexterm.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="indexterm.label">
+ <choice>
+ <element name="indexterm">
+ <ref name="indexterm.role"/>
+ <group>
+ <ref name="primary.label"/>
+ <optional>
+ <choice>
+ <group>
+ <ref name="secondary.label"/>
+ <optional>
+ <choice>
+ <group>
+ <ref name="tertiary.label"/>
+ <optional>
+ <choice>
+ <ref name="see.label"/>
+ <oneOrMore>
+ <ref name="seealso.label"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </group>
+ <ref name="see.label"/>
+ <oneOrMore>
+ <ref name="seealso.label"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ <ref name="see.label"/>
+ <oneOrMore>
+ <ref name="seealso.label"/>
+ </oneOrMore>
+ </group>
+ <ref name="see.label"/>
+ <oneOrMore>
+ <ref name="seealso.label"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="indexterm.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="indexterm.role.attrib.role"/>
+ <ref name="pagenum.attrib.role"/>
+ <optional>
+ <attribute name="scope">
+ <choice>
+ <string>all</string>
+ <string>global</string>
+ <string>local</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="significance">
+ <choice>
+ <string>preferred</string>
+ <string>normal</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <string>singular</string>
+ <string>startofrange</string>
+ <string>endofrange</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startref">
+ <data type="xsd:IDREF"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zone">
+ <data type="xsd:IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="primsecter.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="primary.label">
+ <choice>
+ <element name="primary">
+ <ref name="primary.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="primary.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="primsecter.role.attrib.role"/>
+ <optional>
+ <attribute name="sortas">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="secondary.label">
+ <choice>
+ <element name="secondary">
+ <ref name="secondary.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="secondary.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="primsecter.role.attrib.role"/>
+ <optional>
+ <attribute name="sortas">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tertiary.label">
+ <choice>
+ <element name="tertiary">
+ <ref name="tertiary.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="tertiary.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="primsecter.role.attrib.role"/>
+ <optional>
+ <attribute name="sortas">
+ <anyString/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="seeseealso.role.attrib.role">
+ <empty/>
+ <ref name="role.attrib.role"/>
+ </define>
+ <define name="see.label">
+ <choice>
+ <element name="see">
+ <ref name="see.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="see.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="seeseealso.role.attrib.role"/>
+ </define>
+ <define name="seealso.label">
+ <choice>
+ <element name="seealso">
+ <ref name="seealso.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="seealso.role">
+ <empty/>
+ <ref name="common.attrib.role"/>
+ <ref name="seeseealso.role.attrib.role"/>
+ </define>
+
+</grammar>
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<grammar xmlns="http://www.thaiopensource.com/trex"
+ xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
+ ns="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
+
+ <define name="table.att.role">
+ <empty/>
+ </define>
+ <define name="tgroup.att.role">
+ <empty/>
+ </define>
+ <define name="colspec.att.role">
+ <empty/>
+ </define>
+ <define name="thead.att.role">
+ <empty/>
+ </define>
+ <define name="tbody.att.role">
+ <empty/>
+ </define>
+ <define name="row.att.role">
+ <empty/>
+ </define>
+ <define name="entry.att.role">
+ <empty/>
+ </define>
+ <define name="table.label">
+ <choice>
+ <element name="table">
+ <ref name="table.role"/>
+ <group>
+ <ref name="formalobject.title.content.label"/>
+ <optional>
+ <ref name="ndxterm.class.label"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="mediaobject.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="tgroup.label"/>
+ </oneOrMore>
+ </choice>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="table.role">
+ <empty/>
+ <ref name="table.att.role"/>
+ <optional>
+ <attribute name="frame">
+ <choice>
+ <string>top</string>
+ <string>bottom</string>
+ <string>topbot</string>
+ <string>all</string>
+ <string>sides</string>
+ <string>none</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="informaltable.label">
+ <choice>
+ <element name="informaltable">
+ <ref name="informaltable.role"/>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="mediaobject.label"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="tgroup.label"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </choice>
+ </define>
+ <define name="informaltable.role">
+ <empty/>
+ <ref name="table.att.role"/>
+ <optional>
+ <attribute name="frame">
+ <choice>
+ <string>top</string>
+ <string>bottom</string>
+ <string>topbot</string>
+ <string>all</string>
+ <string>sides</string>
+ <string>none</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tgroup.label">
+ <choice>
+ <element name="tgroup">
+ <ref name="tgroup.role"/>
+ <group>
+ <zeroOrMore>
+ <ref name="colspec.label"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="thead.label"/>
+ </optional>
+ <ref name="tbody.label"/>
+ </group>
+ </element>
+ </choice>
+ </define>
+ <define name="tgroup.role">
+ <empty/>
+ <ref name="tgroup.att.role"/>
+ <attribute name="cols">
+ <data type="xsd:integer"/>
+ </attribute>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <string>left</string>
+ <string>right</string>
+ <string>center</string>
+ <string>justify</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="colspec.label">
+ <choice>
+ <element name="colspec">
+ <ref name="colspec.role"/>
+ <empty/>
+ </element>
+ </choice>
+ </define>
+ <define name="colspec.role">
+ <empty/>
+ <ref name="colspec.att.role"/>
+ <optional>
+ <attribute name="colnum">
+ <data type="xsd:integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colname">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colwidth">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <string>left</string>
+ <string>right</string>
+ <string>center</string>
+ <string>justify</string>
+ <string>char</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charoff">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="thead.label">
+ <choice>
+ <element name="thead">
+ <ref name="thead.role"/>
+ <choice>
+ <oneOrMore>
+ <ref name="row.label"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </choice>
+ </define>
+ <define name="thead.role">
+ <empty/>
+ <ref name="thead.att.role"/>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <string>top</string>
+ <string>middle</string>
+ <string>bottom</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tbody.label">
+ <choice>
+ <element name="tbody">
+ <ref name="tbody.role"/>
+ <choice>
+ <oneOrMore>
+ <ref name="row.label"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </choice>
+ </define>
+ <define name="tbody.role">
+ <empty/>
+ <ref name="tbody.att.role"/>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <string>top</string>
+ <string>middle</string>
+ <string>bottom</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="row.label">
+ <choice>
+ <element name="row">
+ <ref name="row.role"/>
+ <choice>
+ <oneOrMore>
+ <ref name="entry.label"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </choice>
+ </define>
+ <define name="row.role">
+ <empty/>
+ <ref name="row.att.role"/>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <string>top</string>
+ <string>middle</string>
+ <string>bottom</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="entry.label">
+ <choice>
+ <element name="entry">
+ <ref name="entry.role"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix.label"/>
+ <ref name="tabentry.mix.label"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </choice>
+ </define>
+ <define name="entry.role">
+ <empty/>
+ <ref name="entry.att.role"/>
+ <optional>
+ <attribute name="colname">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="namest">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="nameend">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="morerows">
+ <data type="xsd:integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <string>0</string>
+ <string>1</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <string>left</string>
+ <string>right</string>
+ <string>center</string>
+ <string>justify</string>
+ <string>char</string>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char">
+ <anyString/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charoff">
+ <data type="xsd:NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <string>top</string>
+ <string>middle</string>
+ <string>bottom</string>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<grammar xmlns="http://www.thaiopensource.com/trex"
+ xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
+ ns="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
+
+ <start>
+ <choice>
+ <ref name="set.label"/>
+ <ref name="book.label"/>
+ <ref name="chapter.label"/>
+ <ref name="appendix.label"/>
+ <ref name="article.label"/>
+ <ref name="part.label"/>
+ <ref name="reference.label"/>
+ <ref name="refentry.label"/>
+ <ref name="section.label"/>
+ <ref name="sect1.label"/>
+ <ref name="sect2.label"/>
+ <ref name="sect3.label"/>
+ <ref name="sect4.label"/>
+ <ref name="sect5.label"/>
+ <ref name="para.label"/>
+ </choice>
+ </start>
+
+ <include href="dbpool.trex"/>
+ <include href="dbhier.trex"/>
+ <include href="dbtables.trex"/>
+
+</grammar>
--- /dev/null
+<chapter xmlns="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
+<title>foo</title>
+<para>
+some text
+</para>
+</chapter>
--- /dev/null
+README.html
--- /dev/null
+include ../../cvstools/Makefile.incl
+
+DRAFT=yes
+STYLESHEET=../../xsl/html/docbook.xsl
+
+all: README.html
+
+README.html: README.xml
+ $(XJPARSE) $<
+ $(XSLT) $< $(STYLESHEET) $@ nochunks=1 draft=$(DRAFT)
+
--- /dev/null
+<!DOCTYPE article
+ PUBLIC "-//Norman Walsh//DTD Simplified DocBook XML V4.1.2.4//EN"
+ "http://nwalsh.com/docbook/simple/4.1.2.4/sdocbook.dtd" [
+<!ENTITY version "V4.1.2.3">
+]>
+<article>
+<articleinfo>
+<title>DocBook XML Schema</title>
+<pubdate>12 Jan 2001</pubdate>
+<releaseinfo role="meta">
+$Id$
+</releaseinfo>
+
+<revhistory>
+<revision>
+<revnumber>4.1.2.3</revnumber>
+<date>12 Jan 2001</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Updated experimental release.</revremark>
+</revision>
+<revision>
+<revnumber>4.1.2.2</revnumber>
+<date>10 Jan 2001</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Updated experimental release.</revremark>
+</revision>
+<revision>
+<revnumber>4.1.2.1</revnumber>
+<date>16 Oct 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Initial experimental release.</revremark>
+</revision>
+</revhistory>
+
+<author><firstname>Norman</firstname><surname>Walsh</surname>
+</author>
+</articleinfo>
+
+<para>This is the README for the
+<ulink role="linktable" url="http://www.oasis-open.org/docbook/">DocBook</ulink>
+<ulink role="linktable" url="http://www.w3.org/XML/Schema">XML Schema</ulink>.
+</para>
+
+<para>
+The <ulink role="linktable" url="dbxs4121.zip">DocBook
+XML Schema &version;</ulink> attempts to be an accurate translation of the
+<ulink url="http://www.oasis-open.org/docbook/xml">DocBook
+XML V4.1.2 DTD</ulink>.</para>
+
+<para>In this version, the parameterization of the schema is roughly
+identical to the parameterization of the DTD. This may change as I
+begin to experiment with the construction of derivative schemas.</para>
+
+<note><title>Alpha Release</title>
+<para>DocBook XML Schema &version; is an experimental release.
+It validates with
+<ulink role="linktable" url="http://www.w3.org/2000/06/webdata/xsv">XSV</ulink>
+version SV 1.173.2.10/1.82 of 2000/10/31 16:30:47 on my system.</para>
+<para>I welcome reports of success or failure with other XML Schema
+validation tools.</para>
+</note>
+
+<para>
+The namespace names (URIs) used in this schema are purely
+imaginary. They have no official status, nor do they foreshadow the
+future existence of any similar official URIs. I had to use something.
+</para>
+
+<para>The DocBook XML Schema is known to differ from the DocBook
+DTD in the following ways:</para>
+
+<itemizedlist>
+<listitem><para>There are no named character entities. You can't
+define those in XML Schema.</para></listitem>
+
+<listitem><para>The table model is the OASIS Exchange Table Model,
+not the CALS Table Model. This table model is less rich than the
+CALS model, lacking <literal>spanspec</literal>, <literal>tfoot</literal>,
+and a few other things.
+</para></listitem>
+
+<listitem><para>Inside the table model, the <literal>tgroup</literal>
+element and all of its descendants are in a different namespace.
+</para></listitem>
+
+<listitem><para>There are bugs, perhaps dozens, possibly hundreds.
+</para></listitem>
+</itemizedlist>
+
+<para>With the exception of tables, which will definitely require some
+markup changes in the instances, documents that are valid against the
+DTD should be valid against this schema.</para>
+
+</article>
--- /dev/null
+<!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>
--- /dev/null
+<!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.... -->
+
+<!-- FIXME: why is public required in XML Schema!? -->
+
+<xsd:notation name='BMP'
+ public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN"/>
+
+<xsd:notation name='CGM-CHAR'
+ public="ISO 8632/2//NOTATION Character encoding//EN"/>
+
+<xsd:notation name='CGM-BINARY'
+ public="ISO 8632/3//NOTATION Binary encoding//EN"/>
+
+<xsd:notation name='CGM-CLEAR'
+ public="ISO 8632/4//NOTATION Clear text encoding//EN"/>
+
+<xsd:notation name='DITROFF'
+ public="DITROFF"
+ system="DITROFF"/>
+
+<xsd:notation name='DVI'
+ public="DVI"
+ system="DVI"/>
+
+<xsd:notation name='EPS'
+ public="+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref. Manual//EN"/>
+
+<xsd:notation name='EQN'
+ public="EQN"
+ system="EQN"/>
+
+<xsd:notation name='FAX'
+ public="-//USA-DOD//NOTATION CCITT Group 4 Facsimile Type 1 Untiled Raster//EN"/>
+
+<xsd:notation name='GIF'
+ public="GIF"
+ system="GIF"/>
+
+<xsd:notation name='GIF87a'
+ public="-//CompuServe//NOTATION Graphics Interchange Format 87a//EN"/>
+
+<xsd:notation name='GIF89a'
+ public="-//CompuServe//NOTATION Graphics Interchange Format 89a//EN"/>
+
+<xsd:notation name='JPG'
+ public="JPG"
+ system="JPG"/>
+
+<xsd:notation name='JPEG'
+ public="JPG"
+ system="JPG"/>
+
+<xsd:notation name='IGES'
+ public="-//USA-DOD//NOTATION (ASME/ANSI Y14.26M-1987) Initial Graphics Exchange Specification//EN"/>
+
+<xsd:notation name='PCX'
+ public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION ZSoft PCX bitmap//EN"/>
+
+<xsd:notation name='PIC'
+ public="PIC"
+ system="PIC"/>
+
+<xsd:notation name='PNG'
+ public="PNG"
+ system="http://www.w3.org/TR/REC-png"/>
+
+<xsd:notation name='PS'
+ public="PS"
+ system="PS"/>
+
+<xsd:notation name='SGML'
+ public="ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN"/>
+
+<xsd:notation name='TBL'
+ public="TBL"
+ system="TBL"/>
+
+<xsd:notation name='TEX'
+ public="+//ISBN 0-201-13448-9::Knuth//NOTATION The TeXbook//EN"/>
+
+<xsd:notation name='TIFF'
+ public="TIFF"
+ system="TIFF"/>
+
+<xsd:notation name='WMF'
+ public="+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows Metafile//EN"/>
+
+<xsd:notation name='WPG'
+ public="WPG"
+ system="WPG"/> <!--WordPerfect Graphic format-->
+
+<xsd:notation name='linespecific'
+ public="linespecific"
+ system='http://www.oasis-open.org/docbook/notation/linespecific'/>
+
+</xsd:schema>
--- /dev/null
+<!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'
+ xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
+ elementFormDefault='qualified'>
+
+ <xsd:import namespace='http://www.oasis-open.org/tables/exchange/1.0'
+ schemaLocation="dbtables.xsd"/>
+
+<!-- ...................................................................... -->
+<!-- DocBook XML Schema V4.1.2.3........................................... -->
+<!-- ...................................................................... -->
+<!-- Copyright 2000, Norman Walsh, Sun Microsystems. Schema
+ derived from DocBook DTD Copyright 1992-2000 HaL Computer.... -->
+
+<!-- ...................................................................... -->
+<!-- General-purpose semantics entities ................................... -->
+
+<xsd:simpleType name='yesorno.attvals'>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='0'/>
+ <xsd:enumeration value='1'/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+
+<!--ENTITY % dbpool.redecl.module "IGNORE"-->
+
+<!-- ...................................................................... -->
+<!-- Entities for element classes and mixtures ............................ -->
+
+<!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+
+<!--ENTITY % local.ndxterm.class ""-->
+<xsd:group name='ndxterm.class'>
+ <xsd:choice>
+ <xsd:element ref='db:indexterm'/>
+ <!-- %local.ndxterm.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!-- Object-level classes ................................................. -->
+
+<!--ENTITY % local.list.class ""-->
+<xsd:group name='list.class'>
+ <xsd:choice>
+ <xsd:element ref='db:calloutlist'/>
+ <xsd:element ref='db:glosslist'/>
+ <xsd:element ref='db:itemizedlist'/>
+ <xsd:element ref='db:orderedlist'/>
+ <xsd:element ref='db:segmentedlist'/>
+ <xsd:element ref='db:simplelist'/>
+ <xsd:element ref='db:variablelist'/>
+ <!-- %local.list.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.admon.class ""-->
+<xsd:group name='admon.class'>
+ <xsd:choice>
+ <xsd:element ref='db:caution'/>
+ <xsd:element ref='db:important'/>
+ <xsd:element ref='db:note'/>
+ <xsd:element ref='db:tip'/>
+ <xsd:element ref='db:warning'/>
+ <!-- %local.admon.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.linespecific.class ""-->
+<xsd:group name='linespecific.class'>
+ <xsd:choice>
+ <xsd:element ref='db:literallayout'/>
+ <xsd:element ref='db:programlisting'/>
+ <xsd:element ref='db:programlistingco'/>
+ <xsd:element ref='db:screen'/>
+ <xsd:element ref='db:screenco'/>
+ <xsd:element ref='db:screenshot'/>
+ <!-- %local.linespecific.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.method.synop.class ""-->
+<xsd:group name='method.synop.class'>
+ <xsd:choice>
+ <xsd:element ref='db:constructorsynopsis'/>
+ <xsd:element ref='db:destructorsynopsis'/>
+ <xsd:element ref='db:methodsynopsis'/>
+ <!-- %local.method.synop.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.synop.class ""-->
+<xsd:group name='synop.class'>
+ <xsd:choice>
+ <xsd:element ref='db:synopsis'/>
+ <xsd:element ref='db:cmdsynopsis'/>
+ <xsd:element ref='db:funcsynopsis'/>
+ <xsd:element ref='db:classsynopsis'/>
+ <xsd:element ref='db:fieldsynopsis'/>
+ <!-- %method.synop.class; -->
+ <!-- %local.synop.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.para.class ""-->
+<xsd:group name='para.class'>
+ <xsd:choice>
+ <xsd:element ref='db:formalpara'/>
+ <xsd:element ref='db:para'/>
+ <xsd:element ref='db:simpara'/>
+ <!-- %local.para.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.informal.class ""-->
+<xsd:group name='informal.class'>
+ <xsd:choice>
+ <xsd:element ref='db:address'/>
+ <xsd:element ref='db:blockquote'/>
+ <xsd:element ref='db:graphic'/>
+ <xsd:element ref='db:graphicco'/>
+ <xsd:element ref='db:mediaobject'/>
+ <xsd:element ref='db:mediaobjectco'/>
+ <xsd:element ref='db:informalequation'/>
+ <xsd:element ref='db:informalexample'/>
+ <xsd:element ref='db:informalfigure'/>
+ <xsd:element ref='db:informaltable'/>
+ <!-- %local.informal.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.formal.class ""-->
+<xsd:group name='formal.class'>
+ <xsd:choice>
+ <xsd:element ref='db:equation'/>
+ <xsd:element ref='db:example'/>
+ <xsd:element ref='db:figure'/>
+ <xsd:element ref='db:table'/>
+ <!-- %local.formal.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!--ENTITY % ebnf.block.hook ""-->
+
+<!--ENTITY % local.compound.class ""-->
+<xsd:group name='compound.class'>
+ <xsd:choice>
+ <xsd:element ref='db:msgset'/>
+ <xsd:element ref='db:procedure'/>
+ <xsd:element ref='db:sidebar'/>
+ <xsd:element ref='db:qandaset'/>
+ <!-- %ebnf.block.hook; -->
+ <!-- %local.compound.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.genobj.class ""-->
+<xsd:group name='genobj.class'>
+ <xsd:choice>
+ <xsd:element ref='db:anchor'/>
+ <xsd:element ref='db:bridgehead'/>
+ <xsd:element ref='db:remark'/>
+ <xsd:element ref='db:highlights'/>
+ <!-- %local.genobj.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.descobj.class ""-->
+<xsd:group name='descobj.class'>
+ <xsd:choice>
+ <xsd:element ref='db:abstract'/>
+ <xsd:element ref='db:authorblurb'/>
+ <xsd:element ref='db:epigraph'/>
+ <!-- %local.descobj.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!-- Character-level classes .............................................. -->
+
+<!--ENTITY % local.xref.char.class ""-->
+<xsd:group name='xref.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:footnoteref'/>
+ <xsd:element ref='db:xref'/>
+ <!-- %local.xref.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.gen.char.class ""-->
+<xsd:group name='gen.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:abbrev'/>
+ <xsd:element ref='db:acronym'/>
+ <xsd:element ref='db:citation'/>
+ <xsd:element ref='db:citerefentry'/>
+ <xsd:element ref='db:citetitle'/>
+ <xsd:element ref='db:emphasis'/>
+ <xsd:element ref='db:firstterm'/>
+ <xsd:element ref='db:foreignphrase'/>
+ <xsd:element ref='db:glossterm'/>
+ <xsd:element ref='db:footnote'/>
+ <xsd:element ref='db:phrase'/>
+ <xsd:element ref='db:quote'/>
+ <xsd:element ref='db:trademark'/>
+ <xsd:element ref='db:wordasword'/>
+ <!-- %local.gen.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.link.char.class ""-->
+<xsd:group name='link.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:link'/>
+ <xsd:element ref='db:olink'/>
+ <xsd:element ref='db:ulink'/>
+ <!-- %local.link.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+<!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+<!-- This PE provides the hook by which it can be inserted into the DTD. -->
+<!--ENTITY % ebnf.inline.hook ""-->
+
+<!--ENTITY % local.tech.char.class ""-->
+<xsd:group name='tech.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:action'/>
+ <xsd:element ref='db:application'/>
+ <xsd:element ref='db:classname'/>
+ <xsd:element ref='db:methodname'/>
+ <xsd:element ref='db:interfacename'/>
+ <xsd:element ref='db:exceptionname'/>
+ <xsd:element ref='db:ooclass'/>
+ <xsd:element ref='db:oointerface'/>
+ <xsd:element ref='db:ooexception'/>
+ <xsd:element ref='db:command'/>
+ <xsd:element ref='db:computeroutput'/>
+ <xsd:element ref='db:database'/>
+ <xsd:element ref='db:email'/>
+ <xsd:element ref='db:envar'/>
+ <xsd:element ref='db:errorcode'/>
+ <xsd:element ref='db:errorname'/>
+ <xsd:element ref='db:errortype'/>
+ <xsd:element ref='db:filename'/>
+ <xsd:element ref='db:function'/>
+ <xsd:element ref='db:guibutton'/>
+ <xsd:element ref='db:guiicon'/>
+ <xsd:element ref='db:guilabel'/>
+ <xsd:element ref='db:guimenu'/>
+ <xsd:element ref='db:guimenuitem'/>
+ <xsd:element ref='db:guisubmenu'/>
+ <xsd:element ref='db:hardware'/>
+ <xsd:element ref='db:interface'/>
+ <xsd:element ref='db:keycap'/>
+ <xsd:element ref='db:keycode'/>
+ <xsd:element ref='db:keycombo'/>
+ <xsd:element ref='db:keysym'/>
+ <xsd:element ref='db:literal'/>
+ <xsd:element ref='db:constant'/>
+ <xsd:element ref='db:markup'/>
+ <xsd:element ref='db:medialabel'/>
+ <xsd:element ref='db:menuchoice'/>
+ <xsd:element ref='db:mousebutton'/>
+ <xsd:element ref='db:option'/>
+ <xsd:element ref='db:optional'/>
+ <xsd:element ref='db:parameter'/>
+ <xsd:element ref='db:prompt'/>
+ <xsd:element ref='db:property'/>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:returnvalue'/>
+ <xsd:element ref='db:sgmltag'/>
+ <xsd:element ref='db:structfield'/>
+ <xsd:element ref='db:structname'/>
+ <xsd:element ref='db:symbol'/>
+ <xsd:element ref='db:systemitem'/>
+ <xsd:element ref='db:token'/>
+ <xsd:element ref='db:type'/>
+ <xsd:element ref='db:userinput'/>
+ <xsd:element ref='db:varname'/>
+ <!-- %ebnf.inline.hook; -->
+ <!-- %local.tech.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.base.char.class ""-->
+<xsd:group name='base.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:anchor'/>
+ <!-- %local.base.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.docinfo.char.class ""-->
+<xsd:group name='docinfo.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:author'/>
+ <xsd:element ref='db:authorinitials'/>
+ <xsd:element ref='db:corpauthor'/>
+ <xsd:element ref='db:modespec'/>
+ <xsd:element ref='db:othercredit'/>
+ <xsd:element ref='db:productname'/>
+ <xsd:element ref='db:productnumber'/>
+ <xsd:element ref='db:revhistory'/>
+ <!-- %local.docinfo.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.other.char.class ""-->
+<xsd:group name='other.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:remark'/>
+ <xsd:element ref='db:subscript'/>
+ <xsd:element ref='db:superscript'/>
+ <!-- %local.other.char.class; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.inlineobj.char.class ""-->
+<xsd:group name='inlineobj.char.class'>
+ <xsd:choice>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:element ref='db:inlineequation'/>
+ <!-- %local.inlineobj.char.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 -->
+
+<!--[%dbpool.redecl.module;[-->
+<!-- Defining rdbpool here makes some buggy XML parsers happy. -->
+<!--ENTITY % rdbpool ""-->
+<!--%rdbpool;-->
+<!--end of dbpool.redecl.module-->
+<!--] ]>-->
+
+<!-- Object-level mixtures ................................................ -->
+
+<!--
+ list admn line synp para infm form cmpd gen desc
+Component mixture X X X X X X X X X X
+Sidebar mixture X X X X X X X a X
+Footnote mixture X X X X X
+Example mixture X X X X X
+Highlights mixture X X X
+Paragraph mixture X X X X
+Admonition mixture X X X X X X b c
+Figure mixture X X X
+Table entry mixture X X X X d
+Glossary def mixture X X X X X e
+Legal notice mixture X X X X f
+
+a. Just Procedure; not Sidebar itself or MsgSet.
+b. No MsgSet.
+c. No Highlights.
+d. Just Graphic; no other informal objects.
+e. No Anchor, BridgeHead, or Highlights.
+f. Just BlockQuote; no other informal objects.
+-->
+
+<!--ENTITY % local.component.mix ""-->
+<xsd:group name='component.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.component.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.sidebar.mix ""-->
+<xsd:group name='sidebar.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:element ref='db:procedure'/>
+ <xsd:group ref='db:genobj.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.sidebar.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.qandaset.mix ""-->
+<xsd:group name='qandaset.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:element ref='db:procedure'/>
+ <xsd:group ref='db:genobj.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <!-- %local.qandaset.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.revdescription.mix ""-->
+<xsd:group name='revdescription.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:element ref='db:procedure'/>
+ <xsd:group ref='db:genobj.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <!-- %local.revdescription.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.footnote.mix ""-->
+<xsd:group name='footnote.mix'>
+ <xsd:choice>
+ <xsd:group ref='db:list.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'/>
+ <!-- %local.footnote.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.example.mix ""-->
+<xsd:group name='example.mix'>
+ <xsd:choice>
+ <xsd:group ref='db:list.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:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.example.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.highlights.mix ""-->
+<xsd:group name='highlights.mix'>
+ <xsd:choice>
+ <xsd:group ref='db:list.class'/>
+ <xsd:group ref='db:admon.class'/>
+ <xsd:group ref='db:para.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <!-- %local.highlights.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!-- %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used -->
+<!--ENTITY % local.para.mix ""-->
+<xsd:group name='para.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:informal.class'/>
+ <xsd:group ref='db:formal.class'/>
+ <!-- %local.para.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.admon.mix ""-->
+<xsd:group name='admon.mix'>
+ <xsd:choice>
+ <xsd:group ref='db:list.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:element ref='db:procedure'/>
+ <xsd:element ref='db:sidebar'/>
+ <xsd:element ref='db:anchor'/>
+ <xsd:element ref='db:bridgehead'/>
+ <xsd:element ref='db:remark'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.admon.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.figure.mix ""-->
+<xsd:group name='figure.mix'>
+ <xsd:choice>
+ <xsd:group ref='db:linespecific.class'/>
+ <xsd:group ref='db:synop.class'/>
+ <xsd:group ref='db:informal.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.figure.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.tabentry.mix ""-->
+<xsd:group name='tabentry.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:para.class'/>
+ <xsd:element ref='db:graphic'/>
+ <xsd:element ref='db:mediaobject'/>
+ <!-- %local.tabentry.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.glossdef.mix ""-->
+<xsd:group name='glossdef.mix'>
+ <xsd:choice>
+ <xsd:group ref='db:list.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:element ref='db:remark'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.glossdef.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.legalnotice.mix ""-->
+<xsd:group name='legalnotice.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:para.class'/>
+ <xsd:element ref='db:blockquote'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.legalnotice.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.textobject.mix ""-->
+<xsd:group name='textobject.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:para.class'/>
+ <xsd:element ref='db:blockquote'/>
+ <!-- %local.textobject.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.mediaobject.mix ""-->
+<xsd:group name='mediaobject.mix'>
+ <xsd:choice>
+ <xsd:element ref='db:videoobject'/>
+ <xsd:element ref='db:audioobject'/>
+ <xsd:element ref='db:imageobject'/>
+ <!-- %local.mediaobject.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!-- Character-level mixtures ............................................. -->
+
+<!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+para.char.mix X X X X X X X X X
+title.char.mix X X X X X X X X X
+ndxterm.char.mix X X X X X X X X a
+cptr.char.mix X X X X X a
+smallcptr.char.mix X b a
+word.char.mix X c X X X a
+docinfo.char.mix X d X b X a
+
+a. Just InlineGraphic; no InlineEquation.
+b. Just Replaceable; no other computer terms.
+c. Just Emphasis and Trademark; no other word elements.
+d. Just Acronym, Emphasis, and Trademark; no other word elements.
+-->
+
+<!-- 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 % forminlines.hook ""-->
+
+<!--ENTITY % local.para.char.mix ""-->
+<xsd:group name='para.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:inlineobj.char.class'/>
+ <xsd:group ref='db:synop.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.para.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.title.char.mix ""-->
+<xsd:group name='title.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:inlineobj.char.class'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <!-- %local.title.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.ndxterm.char.mix ""-->
+<xsd:group name='ndxterm.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:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <!-- %local.ndxterm.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.cptr.char.mix ""-->
+<xsd:group name='cptr.char.mix'>
+ <xsd:choice>
+ <!-- #PCDATA -->
+ <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:other.char.class'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.cptr.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.smallcptr.char.mix ""-->
+<xsd:group name='smallcptr.char.mix'>
+ <xsd:choice>
+ <!-- #PCDATA -->
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.smallcptr.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.word.char.mix ""-->
+<xsd:group name='word.char.mix'>
+ <xsd:choice>
+ <!-- #PCDATA -->
+ <xsd:element ref='db:acronym'/>
+ <xsd:element ref='db:emphasis'/>
+ <xsd:element ref='db:trademark'/>
+ <xsd:group ref='db:link.char.class'/>
+ <xsd:group ref='db:base.char.class'/>
+ <xsd:group ref='db:other.char.class'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <xsd:element ref='db:beginpage'/>
+ <!-- %local.word.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+
+<!--ENTITY % local.docinfo.char.mix ""-->
+<xsd:group name='docinfo.char.mix'>
+ <xsd:choice>
+ <!-- #PCDATA -->
+ <xsd:group ref='db:link.char.class'/>
+ <xsd:element ref='db:emphasis'/>
+ <xsd:element ref='db:trademark'/>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:group ref='db:other.char.class'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <!-- %local.docinfo.char.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+<!--ENTITY % bibliocomponent.mix (see Bibliographic section, below)-->
+<!--ENTITY % person.ident.mix (see Bibliographic section, below)-->
+
+<!-- ...................................................................... -->
+<!-- Entities for content models .......................................... -->
+
+<xsd:group name='formalobject.title.content'>
+ <xsd:sequence>
+ <xsd:element ref='db:title'/>
+ <xsd:element ref='db:titleabbrev' minOccurs='0'/>
+ </xsd:sequence>
+</xsd:group>
+
+<!-- ...................................................................... -->
+<!-- Entities for attributes and attribute components ..................... -->
+
+<!-- Effectivity attributes ............................................... -->
+
+<!-- Arch: Computer or chip architecture to which element applies; no
+ default -->
+<xsd:attributeGroup name='arch.attrib'>
+ <xsd:attribute name='arch' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Condition: General-purpose effectivity attribute -->
+
+<xsd:attributeGroup name='condition.attrib'>
+ <xsd:attribute name='condition' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Conformance: Standards conformance characteristics -->
+
+<xsd:attributeGroup name='conformance.attrib'>
+ <xsd:attribute name='conformance' type='xsd:NMTOKENS'/>
+</xsd:attributeGroup>
+
+<!-- OS: Operating system to which element applies; no default -->
+
+<xsd:attributeGroup name='os.attrib'>
+ <xsd:attribute name='os' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Revision: Editorial revision to which element belongs; no default -->
+
+<xsd:attributeGroup name='revision.attrib'>
+ <xsd:attribute name='revision' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Security: Security classification; no default -->
+
+<xsd:attributeGroup name='security.attrib'>
+ <xsd:attribute name='security' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- UserLevel: Level of user experience to which element applies; no
+ default -->
+
+<xsd:attributeGroup name='userlevel.attrib'>
+ <xsd:attribute name='userlevel' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Vendor: Computer vendor to which element applies; no default -->
+
+<xsd:attributeGroup name='vendor.attrib'>
+ <xsd:attribute name='vendor' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!--ENTITY % local.effectivity.attrib ""-->
+<xsd:attributeGroup name='effectivity.attrib'>
+ <xsd:attributeGroup ref='db:arch.attrib'/>
+ <xsd:attributeGroup ref='db:condition.attrib'/>
+ <xsd:attributeGroup ref='db:conformance.attrib'/>
+ <xsd:attributeGroup ref='db:os.attrib'/>
+ <xsd:attributeGroup ref='db:revision.attrib'/>
+ <xsd:attributeGroup ref='db:security.attrib'/>
+ <xsd:attributeGroup ref='db:userlevel.attrib'/>
+ <xsd:attributeGroup ref='db:vendor.attrib'/>
+ <!-- %local.effectivity.attrib; -->
+</xsd:attributeGroup>
+
+<!-- Common attributes .................................................... -->
+
+<!-- Id: Unique identifier of element; no default -->
+
+<xsd:attributeGroup name='id.attrib'>
+ <xsd:attribute name='id' type='xsd:ID'/>
+</xsd:attributeGroup>
+
+<!-- Id: Unique identifier of element; a value must be supplied; no
+ default -->
+
+<xsd:attributeGroup name='idreq.attrib'>
+ <xsd:attribute name='id' type='xsd:ID' use='required'/>
+</xsd:attributeGroup>
+
+<!-- Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default -->
+
+<xsd:attributeGroup name='lang.attrib'>
+ <xsd:attribute name='lang' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Remap: Previous role of element before conversion; no default -->
+
+<xsd:attributeGroup name='remap.attrib'>
+ <xsd:attribute name='remap' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Role: New role of element in local environment; no default -->
+
+<xsd:attributeGroup name='role.attrib'>
+ <xsd:attribute name='role' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element -->
+
+<xsd:attributeGroup name='xreflabel.attrib'>
+ <xsd:attribute name='xreflabel' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- RevisionFlag: Revision status of element; default is that element
+ wasn't revised -->
+
+<xsd:attributeGroup name='revisionflag.attrib'>
+ <xsd:attribute name='revisionflag'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='changed'/>
+ <xsd:enumeration value='added'/>
+ <xsd:enumeration value='deleted'/>
+ <xsd:enumeration value='off'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:attributeGroup>
+
+<!--ENTITY % local.common.attrib ""-->
+
+<!-- Role is included explicitly on each element -->
+
+<xsd:attributeGroup name='common.attrib'>
+ <xsd:attributeGroup ref='db:id.attrib'/>
+ <xsd:attributeGroup ref='db:lang.attrib'/>
+ <xsd:attributeGroup ref='db:remap.attrib'/>
+ <xsd:attributeGroup ref='db:xreflabel.attrib'/>
+ <xsd:attributeGroup ref='db:revisionflag.attrib'/>
+ <xsd:attributeGroup ref='db:effectivity.attrib'/>
+ <!-- %local.common.attrib; -->
+</xsd:attributeGroup>
+
+<!-- Role is included explicitly on each element -->
+
+<xsd:attributeGroup name='idreq.common.attrib'>
+ <xsd:attributeGroup ref='db:idreq.attrib'/>
+ <xsd:attributeGroup ref='db:lang.attrib'/>
+ <xsd:attributeGroup ref='db:remap.attrib'/>
+ <xsd:attributeGroup ref='db:xreflabel.attrib'/>
+ <xsd:attributeGroup ref='db:revisionflag.attrib'/>
+ <xsd:attributeGroup ref='db:effectivity.attrib'/>
+ <!-- %local.common.attrib; -->
+</xsd:attributeGroup>
+
+<!-- Semi-common attributes and other attribute entities .................. -->
+
+<!--ENTITY % local.graphics.attrib ""-->
+
+<!-- EntityRef: Name of an external entity containing the content
+ of the graphic -->
+<!-- FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic -->
+<!-- Format: Notation of the element content, if any -->
+<!-- SrcCredit: Information about the source of the Graphic -->
+<!-- Width: Same as CALS reprowid (desired width) -->
+<!-- Depth: Same as CALS reprodep (desired depth) -->
+<!-- Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific -->
+<!-- Scale: Conflation of CALS hscale and vscale -->
+<!-- Scalefit: Same as CALS scalefit -->
+
+<xsd:attributeGroup name='graphics.attrib'>
+ <!-- FIXME: -->
+ <!-- entityref ENTITY #IMPLIED -->
+ <xsd:attribute name='fileref' type='xsd:string'/>
+ <xsd:attribute name='format' type='xsd:NOTATION'/>
+ <xsd:attribute name='srccredit' type='xsd:string'/>
+ <xsd:attribute name='width' type='xsd:string'/>
+ <xsd:attribute name='depth' type='xsd:string'/>
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name='scale' type='xsd:string'/>
+ <xsd:attribute name='scalefit' type='db:yesorno.attvals'/>
+ <!-- %local.graphics.attrib;-->
+</xsd:attributeGroup>
+
+<!--ENTITY % local.keyaction.attrib ""-->
+
+<!-- Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value -->
+<!-- OtherAction: User-defined key combination type -->
+
+<xsd:attributeGroup name='keyaction.attrib'>
+ <xsd:attribute name='action'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='click'/>
+ <xsd:enumeration value='double-click'/>
+ <xsd:enumeration value='press'/>
+ <xsd:enumeration value='seq'/>
+ <xsd:enumeration value='simul'/>
+ <xsd:enumeration value='other'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name='otheraction' type='xsd:string'/>
+ <!-- %local.keyaction.attrib; -->
+</xsd:attributeGroup>
+
+<!-- Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter -->
+
+<xsd:attributeGroup name='label.attrib'>
+ <xsd:attribute name='label' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- Format: whether element is assumed to contain significant white
+ space -->
+
+<xsd:attributeGroup name='linespecific.attrib'>
+ <xsd:attribute name='format'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:NOTATION'>
+ <xsd:enumeration value='linespecific'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attribute name='linenumbering'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='numbered'/>
+ <xsd:enumeration value='unnumbered'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:attributeGroup>
+
+<!-- Linkend: link to related information; no default -->
+
+<xsd:attributeGroup name='linkend.attrib'>
+ <xsd:attribute name='linkend' type='xsd:IDREF'/>
+</xsd:attributeGroup>
+
+<!-- Linkend: required link to related information -->
+
+<xsd:attributeGroup name='linkendreq.attrib'>
+ <xsd:attribute name='linkend' type='xsd:IDREF' use='required'/>
+</xsd:attributeGroup>
+
+<!-- Linkends: link to one or more sets of related information; no
+ default -->
+
+<xsd:attributeGroup name='linkends.attrib'>
+ <xsd:attribute name='linkends' type='xsd:IDREFS'/>
+</xsd:attributeGroup>
+
+<!--ENTITY % local.mark.attrib ""-->
+<xsd:attributeGroup name='mark.attrib'>
+ <xsd:attribute name='mark' type='xsd:string'/>
+ <!-- %local.mark.attrib; -->
+</xsd:attributeGroup>
+
+<!-- MoreInfo: whether element's content has an associated RefEntry -->
+
+<xsd:attributeGroup name='moreinfo.attrib'>
+ <xsd:attribute name='moreinfo' use='default' value='none'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='refentry'/>
+ <xsd:enumeration value='none'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:attributeGroup>
+
+<!-- Pagenum: number of page on which element appears; no default -->
+
+<xsd:attributeGroup name='pagenum.attrib'>
+ <xsd:attribute name='pagenum' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!--ENTITY % local.status.attrib ""-->
+
+<!-- Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution" -->
+
+<xsd:attributeGroup name='status.attrib'>
+ <xsd:attribute name='status' type='xsd:string'/>
+ <!-- %local.status.attrib; -->
+</xsd:attributeGroup>
+
+<!-- Width: width of the longest line in the element to which it
+ pertains, in number of characters -->
+
+<xsd:attributeGroup name='width.attrib'>
+ <xsd:attribute name='width' type='xsd:string'/>
+</xsd:attributeGroup>
+
+<!-- ...................................................................... -->
+<!-- Title elements ....................................................... -->
+
+<xsd:attributeGroup name='title.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='title' mixed='true'>
+ <!-- (%title.char.mix;)* -->
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:title.char.mix'/>
+ </xsd:choice>
+
+ <xsd:attributeGroup ref='db:pagenum.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:title.role.attrib'/>
+ <!-- %local.title.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='titleabbrev.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='titleabbrev' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='title.char.mix'/>
+ </xsd:choice>
+ <!-- (%title.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:titleabbrev.role.attrib'/>
+ <!-- %local.titleabbrev.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='subtitle.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='subtitle' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='title.char.mix'/>
+ </xsd:choice>
+ <!-- (%title.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:subtitle.role.attrib'/>
+ <!-- %local.subtitle.attrib; -->
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Bibliographic entities and elements .................................. -->
+
+<!-- The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below. -->
+
+<xsd:group name='person.ident.mix'>
+ <xsd:choice>
+ <xsd:element ref='db:honorific'/>
+ <xsd:element ref='db:firstname'/>
+ <xsd:element ref='db:surname'/>
+ <xsd:element ref='db:lineage'/>
+ <xsd:element ref='db:othername'/>
+ <xsd:element ref='db:affiliation'/>
+ <xsd:element ref='db:authorblurb'/>
+ <xsd:element ref='db:contrib'/>
+ <!-- %local.person.ident.mix; -->
+ </xsd:choice>
+</xsd:group>
+
+<xsd:group name='bibliocomponent.mix'>
+ <xsd:choice>
+ <xsd:element ref='db:abbrev'/>
+ <xsd:element ref='db:abstract'/>
+ <xsd:element ref='db:address'/>
+ <xsd:element ref='db:artpagenums'/>
+ <xsd:element ref='db:author'/>
+ <xsd:element ref='db:authorgroup'/>
+ <xsd:element ref='db:authorinitials'/>
+ <xsd:element ref='db:bibliomisc'/>
+ <xsd:element ref='db:biblioset'/>
+ <xsd:element ref='db:collab'/>
+ <xsd:element ref='db:confgroup'/>
+ <xsd:element ref='db:contractnum'/>
+ <xsd:element ref='db:contractsponsor'/>
+ <xsd:element ref='db:copyright'/>
+ <xsd:element ref='db:corpauthor'/>
+ <xsd:element ref='db:corpname'/>
+ <xsd:element ref='db:date'/>
+ <xsd:element ref='db:edition'/>
+ <xsd:element ref='db:editor'/>
+ <xsd:element ref='db:invpartnumber'/>
+ <xsd:element ref='db:isbn'/>
+ <xsd:element ref='db:issn'/>
+ <xsd:element ref='db:issuenum'/>
+ <xsd:element ref='db:orgname'/>
+ <xsd:element ref='db:othercredit'/>
+ <xsd:element ref='db:pagenums'/>
+ <xsd:element ref='db:printhistory'/>
+ <xsd:element ref='db:productname'/>
+ <xsd:element ref='db:productnumber'/>
+ <xsd:element ref='db:pubdate'/>
+ <xsd:element ref='db:publisher'/>
+ <xsd:element ref='db:publishername'/>
+ <xsd:element ref='db:pubsnumber'/>
+ <xsd:element ref='db:releaseinfo'/>
+ <xsd:element ref='db:revhistory'/>
+ <xsd:element ref='db:seriesvolnums'/>
+ <xsd:element ref='db:subtitle'/>
+ <xsd:element ref='db:title'/>
+ <xsd:element ref='db:titleabbrev'/>
+ <xsd:element ref='db:volumenum'/>
+ <xsd:element ref='db:citetitle'/>
+ <xsd:group ref='db:person.ident.mix'/>
+ <xsd:group ref='db:ndxterm.class'/>
+ <!-- %local.bibliocomponent.mix -->
+ </xsd:choice>
+</xsd:group>
+
+
+<xsd:attributeGroup name='biblioentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='biblioentry'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:articleinfo'/>
+ <xsd:group ref='db:bibliocomponent.mix'/>
+ </xsd:choice>
+ <!-- ((articleinfo | (%bibliocomponent.mix;))+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:biblioentry.role.attrib'/>
+ <!-- %local.biblioentry.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='bibliomixed.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='bibliomixed' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:bibliocomponent.mix'/>
+ <xsd:element ref='db:bibliomset'/>
+ </xsd:choice>
+ <!-- (#PCDATA | %bibliocomponent.mix; | bibliomset)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:bibliomixed.role.attrib'/>
+ <!-- %local.bibliomixed.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='articleinfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='infoContentModel'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:graphic'/>
+ <xsd:element ref='db:mediaobject'/>
+ <xsd:element ref='db:legalnotice'/>
+ <xsd:element ref='db:modespec'/>
+ <xsd:element ref='db:subjectset'/>
+ <xsd:element ref='db:keywordset'/>
+ <xsd:element ref='db:itermset'/>
+ <xsd:group ref='db:bibliocomponent.mix'/>
+ </xsd:choice>
+ <!-- ((graphic | mediaobject | legalnotice | modespec
+ | subjectset | keywordset | itermset | %bibliocomponent.mix;)+) -->
+</xsd:complexType>
+
+<xsd:complexType name='articleinfo'>
+ <xsd:complexContent>
+ <xsd:extension base='db:infoContentModel'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:articleinfo.role.attrib'/>
+ <!-- %local.articleinfo.attrib; -->
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='biblioset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='biblioset'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:bibliocomponent.mix'/>
+ </xsd:choice>
+ <!-- ((%bibliocomponent.mix;)+) -->
+
+ <!-- Relation: Relationship of elements contained within BiblioSet -->
+ <xsd:attribute name='relation' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:biblioset.role.attrib'/>
+ <!-- %local.biblioset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='bibliomset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='bibliomset' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:bibliocomponent.mix'/>
+ <xsd:element ref='db:bibliomset'/>
+ </xsd:choice>
+ <!-- (#PCDATA | %bibliocomponent.mix; | bibliomset)* -->
+
+ <!-- Relation: Relationship of elements contained within BiblioMSet -->
+ <xsd:attribute name='relation' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:bibliomset.role.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <!-- %local.bibliomset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='bibliomisc.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='bibliomisc' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:bibliomisc.role.attrib'/>
+ <!-- %local.bibliomisc.attrib; -->
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Subject, Keyword, and ITermSet elements .............................. -->
+
+<xsd:attributeGroup name='subjectset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='subjectset'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:subject'/>
+ </xsd:sequence>
+ <!-- (subject+) -->
+
+ <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+ <xsd:attribute name='scheme' type='xsd:NMTOKEN'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:subjectset.role.attrib'/>
+ <!-- %local.subjectset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='subject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='subject'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:subjectterm'/>
+ </xsd:sequence>
+ <!-- (subjectterm+) -->
+
+ <!-- Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified -->
+ <xsd:attribute name='weight' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:subject.role.attrib'/>
+ <!-- %local.subject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='subjectterm.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='subjectterm'>
+ <!-- (#PCDATA) -->
+ <xsd:simpleContent>
+ <xsd:extension base='xsd:string'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:subjectterm.role.attrib'/>
+ <!-- %local.subjectterm.attrib; -->
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='keywordset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='keywordset'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:keyword'/>
+ </xsd:sequence>
+ <!-- (keyword+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:keywordset.role.attrib'/>
+ <!-- %local.keywordset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='keyword.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='keyword'>
+ <!-- (#PCDATA) -->
+ <xsd:simpleContent>
+ <xsd:extension base='xsd:string'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:keyword.role.attrib'/>
+ <!-- %local.keyword.attrib; -->
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='itermset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='itermset'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:indexterm'/>
+ </xsd:sequence>
+ <!-- (indexterm+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:itermset.role.attrib'/>
+ <!-- %local.itermset.attrib; -->
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Compound (section-ish) elements ...................................... -->
+
+<!-- Message set ...................... -->
+
+<xsd:attributeGroup name='msgset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgset'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:msgentry' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:simplemsgentry' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?, (msgentry+|simplemsgentry+)) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgset.role.attrib'/>
+ <!-- %local.msgset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgentry'>
+ <xsd:sequence>
+ <xsd:element ref='db:msg' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:msginfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:msgexplan' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (msg+, msginfo?, msgexplan*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgentry.role.attrib'/>
+ <!-- %local.msgentry.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='simplemsgentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='simplemsgentry'>
+ <xsd:sequence>
+ <xsd:element ref='db:msgtext'/>
+ <xsd:element ref='db:msgexplan'/>
+ </xsd:sequence>
+ <!-- (msgtext, msgexplan) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:simplemsgentry.role.attrib'/>
+ <!-- %local.simplemsgentry.attrib; -->
+ <xsd:attribute name='audience' type='xsd:string'/>
+ <xsd:attribute name='level' type='xsd:string'/>
+ <xsd:attribute name='origin' type='xsd:string'/>
+</xsd:complexType>
+
+<xsd:attributeGroup name='msg.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msg'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:msgmain'/>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:msgsub'/>
+ <xsd:element ref='db:msgrel'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (title?, msgmain, (msgsub | msgrel)*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msg.role.attrib'/>
+ <!-- %local.msg.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgmain.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgmain'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:msgtext'/>
+ </xsd:sequence>
+ <!-- (title?, msgtext) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgmain.role.attrib'/>
+ <!-- %local.msgmain.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgsub.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgsub'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:msgtext'/>
+ </xsd:sequence>
+ <!-- (title?, msgtext) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgsub.role.attrib'/>
+ <!-- %local.msgsub.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgrel.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgrel'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:msgtext'/>
+ </xsd:sequence>
+ <!-- (title?, msgtext) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgrel.role.attrib'/>
+ <!-- %local.msgrel.attrib; -->
+</xsd:complexType>
+
+<!-- MsgText (defined in the Inlines section, below)-->
+
+<xsd:attributeGroup name='msginfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msginfo'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:msglevel'/>
+ <xsd:element ref='db:msgorig'/>
+ <xsd:element ref='db:msgaud'/>
+ </xsd:choice>
+ <!-- ((msglevel | msgorig | msgaud)*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msginfo.role.attrib'/>
+ <!-- %local.msginfo.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msglevel.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msglevel' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msglevel.role.attrib'/>
+ <!-- %local.msglevel.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgorig.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgorig' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgorig.role.attrib'/>
+ <!-- %local.msgorig.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgaud.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgaud' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgaud.role.attrib'/>
+ <!-- %local.msgaud.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgexplan.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgexplan'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:component.mix'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (title?, (%component.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgexplan.role.attrib'/>
+ <!-- %local.msgexplan.attrib; -->
+</xsd:complexType>
+
+<!-- QandASet ........................ -->
+
+<xsd:attributeGroup name='qandset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='qandaset'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:qandaset.mix' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:choice>
+ <xsd:element ref='db:qandadiv' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:qandaentry' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?,
+ (%qandaset.mix;)*,
+ (qandadiv+|qandaentry+)) -->
+
+ <xsd:attribute name='defaultlabel'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='qanda'/>
+ <xsd:enumeration value='number'/>
+ <xsd:enumeration value='none'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:qandset.role.attrib'/>
+ <!-- %local.qandset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='qandadiv.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='qandadiv'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:qandaset.mix' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:choice>
+ <xsd:element ref='db:qandadiv' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:qandaentry' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?,
+ (%qandaset.mix;)*,
+ (qandadiv+|qandaentry+)) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:qandadiv.role.attrib'/>
+ <!-- %local.qandadiv.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='qandaentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='qandaentry'>
+ <xsd:sequence>
+ <xsd:element ref='db:revhistory' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:question'/>
+ <xsd:element ref='db:answer' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (revhistory?, question, answer*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:qandaentry.role.attrib'/>
+ <!-- %local.qandaentry.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='question.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='question'>
+ <xsd:sequence>
+ <xsd:element ref='db:label' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:qandaset.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (label?, (%qandaset.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:question.role.attrib'/>
+ <!-- %local.question.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='answer.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='answer'>
+ <xsd:sequence>
+ <xsd:element ref='db:label' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:qandaset.mix' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:qandaentry' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (label?, (%qandaset.mix;)*, qandaentry*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:answer.role.attrib'/>
+ <!-- %local.answer.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='label.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='label' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:word.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%word.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:label.role.attrib'/>
+ <!-- %local.label.attrib; -->
+</xsd:complexType>
+
+<!-- Procedure ........................ -->
+
+<xsd:attributeGroup name='procedure.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='procedure'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:step' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?,
+ (%component.mix;)*, step+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:procedure.role.attrib'/>
+ <!-- %local.procedure.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='step.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='step'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:sequence minOccurs='0' maxOccurs='1'>
+ <xsd:element ref='db:substeps'/>
+ <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ </xsd:sequence>
+ <xsd:sequence>
+ <xsd:element ref='db:substeps'/>
+ <xsd:group ref='db:component.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (title?, (((%component.mix;)+, (substeps,
+ (%component.mix;)*)?) | (substeps, (%component.mix;)*))) -->
+
+ <!-- Performance: Whether the Step must be performed -->
+ <!-- not #REQUIRED! -->
+ <xsd:attribute name='performance'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='optional'/>
+ <xsd:enumeration value='required'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:step.role.attrib'/>
+ <!-- %local.step.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='substeps.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='substeps'>
+ <xsd:sequence>
+ <xsd:element ref='db:step' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (step+) -->
+
+ <!-- Performance: whether entire set of substeps must be performed -->
+ <!-- not #REQUIRED! -->
+ <xsd:attribute name='performance'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='optional'/>
+ <xsd:enumeration value='required'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:substeps.role.attrib'/>
+ <!-- %local.substeps.attrib; -->
+</xsd:complexType>
+
+<!-- Sidebar .......................... -->
+
+<xsd:attributeGroup name='sidebarinfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='sidebarinfo'>
+ <xsd:complexContent>
+ <xsd:extension base='db:infoContentModel'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:sidebarinfo.role.attrib'/>
+ <!-- %local.articleinfo.attrib; -->
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='sidebar.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='sidebar'>
+ <xsd:sequence>
+ <xsd:element ref='db:sidebarinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:sidebar.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (sidebarinfo?,
+ (%formalobject.title.content;)?,
+ (%sidebar.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:sidebar.role.attrib'/>
+ <!-- %local.sidebar.attrib; -->
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Paragraph-related elements ........................................... -->
+
+<xsd:attributeGroup name='abstract.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='abstract'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:para.class' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (title?, (%para.class;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:abstract.role.attrib'/>
+ <!-- %local.abstract.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='authorblurb.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='authorblurb'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:para.class' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (title?, (%para.class;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:authorblurb.role.attrib'/>
+ <!-- %local.authorblurb.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='blockquote.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='blockquote'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:attribution' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (title?, attribution?, (%component.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:blockquote.role.attrib'/>
+ <!-- %local.blockquote.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='attribution.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='attribution' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:attribution.role.attrib'/>
+ <!-- %local.attribution.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='bridgehead.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='bridgehead' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:title.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%title.char.mix;)* -->
+
+ <!-- Renderas: Indicates the format in which the BridgeHead
+ should appear -->
+ <xsd:attribute name='renderas'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='other'/>
+ <xsd:enumeration value='sect1'/>
+ <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:common.attrib'/>
+ <xsd:attributeGroup ref='db:bridgehead.role.attrib'/>
+ <!-- %local.bridgehead.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='remark.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='remark' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:remark.role.attrib'/>
+ <!-- %local.remark.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='epigraph.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='epigraph'>
+ <xsd:sequence>
+ <xsd:element ref='db:attribution' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:para.class' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (attribution?, (%para.class;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:epigraph.role.attrib'/>
+ <!-- %local.epigraph.attrib; -->
+</xsd:complexType>
+<!-- Attribution (defined above)-->
+
+<xsd:attributeGroup name='footnote.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='footnote'>
+ <xsd:sequence>
+ <xsd:group ref='db:footnote.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%footnote.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:footnote.role.attrib'/>
+ <!-- %local.footnote.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='highlights.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='highlights'>
+ <xsd:sequence>
+ <xsd:group ref='db:highlights.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%highlights.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:highlights.role.attrib'/>
+ <!-- %local.highlights.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='formalpara.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='formalpara'>
+ <xsd:sequence>
+ <xsd:element ref='db:title'/>
+ <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:para'/>
+ </xsd:sequence>
+ <!-- (title, (%ndxterm.class;)*, para) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:formalpara.role.attrib'/>
+ <!-- %local.formalpara.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='para.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='para' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ <xsd:group ref='db:para.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix; | %para.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:para.role.attrib'/>
+ <!-- %local.para.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='simpara.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='simpara' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:simpara.role.attrib'/>
+ <!-- %local.simpara.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='admon.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='admonitionType'>
+ <xsd:sequence>
+ <xsd:element ref='db:title'/>
+ <xsd:group ref='db:admon.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (title?, (%admon.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:admon.role.attrib'/>
+ <!-- %local.admon.attrib; -->
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Lists ................................................................ -->
+
+<!-- GlossList ........................ -->
+
+<xsd:attributeGroup name='glosslist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='glosslist'>
+ <xsd:sequence>
+ <xsd:element ref='db:glossentry' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (glossentry+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:glosslist.role.attrib'/>
+ <!-- %local.glosslist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='glossentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='glossentry'>
+ <xsd:sequence>
+ <xsd:element ref='db:glossterm'/>
+ <xsd:element ref='db:acronym' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:abbrev' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:revhistory' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:glosssee'/>
+ <xsd:element ref='db:glossdef' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (glossterm, acronym?, abbrev?,
+ (%ndxterm.class;)*,
+ revhistory?, (glosssee|glossdef+)) -->
+
+ <!-- SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content -->
+ <xsd:attribute name='sortas' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:glossentry.role.attrib'/>
+ <!-- %local.glossentry.attrib; -->
+</xsd:complexType>
+
+<!-- GlossTerm (defined in the Inlines section, below)-->
+<xsd:attributeGroup name='glossdef.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='glossdef'>
+ <xsd:sequence>
+ <xsd:group ref='db:glossdef.mix' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:glossseealso' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%glossdef.mix;)+, glossseealso*) -->
+
+ <!-- Subject: List of subjects; keywords for the definition -->
+ <xsd:attribute name='subject' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:glossdef.role.attrib'/>
+ <!-- %local.glossdef.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='glosssee.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='glosssee' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee -->
+ <!-- FIXME: restrict to glossentry -->
+ <xsd:attribute name='otherterm' type='xsd:IDREF'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:glosssee.role.attrib'/>
+ <!-- %local.glosssee.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='glossseealso.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='glossseealso' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso -->
+ <!-- FIXME: restrict to glossentry -->
+ <xsd:attribute name='otherterm' type='xsd:IDREF'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:glossseealso.role.attrib'/>
+ <!-- %local.glossseealso.attrib; -->
+</xsd:complexType>
+
+<!-- ItemizedList and OrderedList ..... -->
+
+<xsd:attributeGroup name='itemizedlist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='itemizedlist'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:listitem' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?, listitem+) -->
+
+ <!-- Spacing: Whether the vertical space in the list should be
+ compressed -->
+ <xsd:attribute name='spacing'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='normal'/>
+ <xsd:enumeration value='compact'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific -->
+ <xsd:attributeGroup ref='db:mark.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:itemizedlist.role.attrib'/>
+ <!-- %local.itemizedlist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='orderedlist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='orderedlist'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:listitem' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?, listitem+) -->
+
+ <!-- Numeration: Style of ListItem numbered; default is expected
+ to be Arabic -->
+ <xsd:attribute name='numeration'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='arabic'/>
+ <xsd:enumeration value='upperalpha'/>
+ <xsd:enumeration value='loweralpha'/>
+ <xsd:enumeration value='upperroman'/>
+ <xsd:enumeration value='lowerroman'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b) -->
+ <xsd:attribute name='inheritnum' use='default' value='ignore'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='inherit'/>
+ <xsd:enumeration value='ignore'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues) -->
+ <xsd:attribute name='continuation' use='default' value='restarts'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='continues'/>
+ <xsd:enumeration value='restarts'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Spacing: Whether the vertical space in the list should be
+ compressed -->
+ <xsd:attribute name='spacing'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='normal'/>
+ <xsd:enumeration value='compact'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:orderedlist.role.attrib'/>
+ <!-- %local.orderedlist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='listitem.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='listitem'>
+ <xsd:sequence>
+ <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%component.mix;)+) -->
+
+ <!-- Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList -->
+ <xsd:attribute name='override' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:listitem.role.attrib'/>
+ <!-- %local.listitem.attrib; -->
+</xsd:complexType>
+
+<!-- SegmentedList .................... -->
+<xsd:attributeGroup name='segmentedlist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='segmentedlist'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:segtitle' minOccurs='2' maxOccurs='unbounded'/>
+ <xsd:element ref='db:seglistitem' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?,
+ segtitle, segtitle+,
+ seglistitem+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:segmentedlist.role.attrib'/>
+ <!-- %local.segmentedlist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='segtitle.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='segtitle' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:title.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%title.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:segtitle.role.attrib'/>
+ <!-- %local.segtitle.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='seglistitem.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='seglistitem'>
+ <xsd:sequence>
+ <xsd:element ref='db:seg' minOccurs='2' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (seg, seg+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:seglistitem.role.attrib'/>
+ <!-- %local.seglistitem.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='seg.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='seg' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:seg.role.attrib'/>
+ <!-- %local.seg.attrib; -->
+</xsd:complexType>
+
+<!-- SimpleList ....................... -->
+
+<xsd:attributeGroup name='simplelist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='simplelist'>
+ <xsd:sequence>
+ <xsd:element ref='db:member' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (member+) -->
+
+ <!-- Columns: The number of columns the array should contain -->
+ <xsd:attribute name='columns' type='xsd:integer'/>
+
+ <!-- Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results. -->
+ <xsd:attribute name='type' use='default' value='vert'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='inline'/>
+ <xsd:enumeration value='vert'/>
+ <xsd:enumeration value='horiz'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:simplelist.role.attrib'/>
+ <!-- %local.simplelist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='member.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='member' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:member.role.attrib'/>
+ <!-- %local.member.attrib; -->
+</xsd:complexType>
+
+<!-- VariableList ..................... -->
+
+<xsd:attributeGroup name='variablelist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='variablelist'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:varlistentry' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?, varlistentry+) -->
+
+ <!-- TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem. -->
+ <xsd:attribute name='termlength' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:variablelist.role.attrib'/>
+ <!-- %local.variablelist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='varlistentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='varlistentry'>
+ <xsd:sequence>
+ <xsd:element ref='db:term' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:listitem'/>
+ </xsd:sequence>
+ <!-- (term+, listitem) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:varlistentry.role.attrib'/>
+ <!-- %local.varlistentry.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='term.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='term' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:para.char.mix' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:term.role.attrib'/>
+ <!-- %local.term.attrib; -->
+</xsd:complexType>
+
+<!-- ListItem (defined above)-->
+
+<!-- CalloutList ...................... -->
+
+<xsd:attributeGroup name='calloutlist.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='calloutlist'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:callout' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?, callout+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:calloutlist.role.attrib'/>
+ <!-- %local.calloutlist.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='callout.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='callout'>
+ <xsd:sequence>
+ <xsd:group ref='db:component.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%component.mix;)+) -->
+
+ <!-- AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout -->
+ <xsd:attribute name='arearefs' type='xsd:IDREFS'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:callout.role.attrib'/>
+ <!-- %local.callout.attrib; -->
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Objects .............................................................. -->
+
+<!-- Examples etc. .................... -->
+
+<xsd:attributeGroup name='example.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='example'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:example.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;), (%example.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:width.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:example.role.attrib'/>
+ <!-- %local.example.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='informalexample.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='informalexample'>
+ <xsd:sequence>
+ <xsd:group ref='db:example.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((%example.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:width.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:informalexample.role.attrib'/>
+ <!-- %local.informalexample.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='programlistingco.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='programlistingco'>
+ <xsd:sequence>
+ <xsd:element ref='db:areaspec'/>
+ <xsd:element ref='db:programlisting'/>
+ <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (areaspec, programlisting, calloutlist*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:programlistingco.role.attrib'/>
+ <!-- %local.programlistingco.attrib; -->
+</xsd:complexType>
+<!-- CalloutList (defined above in Lists)-->
+
+<xsd:attributeGroup name='areaspec.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='areaspec'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:area'/>
+ <xsd:element ref='db:areaset'/>
+ </xsd:choice>
+ <!-- ((area|areaset)+) -->
+
+ <!-- Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn) -->
+ <xsd:attribute name='units'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='calspair'/>
+ <xsd:enumeration value='linecolumn'/>
+ <xsd:enumeration value='linerange'/>
+ <xsd:enumeration value='linecolumnpair'/>
+ <xsd:enumeration value='other'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- OtherUnits: User-defined units -->
+ <xsd:attribute name='otherunits' type='xsd:NMTOKEN'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:areaspec.role.attrib'/>
+ <!-- %local.areaspec.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='area.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='area'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xsd:attributeGroup ref='db:label.attrib'/>
+
+ <!-- Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec -->
+ <xsd:attribute name='units'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='calspair'/>
+ <xsd:enumeration value='linecolumn'/>
+ <xsd:enumeration value='linerange'/>
+ <xsd:enumeration value='linecolumnpair'/>
+ <xsd:enumeration value='other'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- OtherUnits: User-defined units -->
+ <xsd:attribute name='otherunits' type='xsd:NMTOKEN'/>
+
+ <xsd:attributeGroup ref='db:linkends.attrib'/>
+ <xsd:attribute name='coords' type='xsd:string' use='required'/>
+ <xsd:attributeGroup ref='db:idreq.common.attrib'/>
+ <xsd:attributeGroup ref='db:area.role.attrib'/>
+ <!-- %local.area.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='areaset.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='areaset'>
+ <xsd:sequence>
+ <xsd:element ref='db:area' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (area+) -->
+
+ <!-- bug number/symbol override or initialization -->
+ <xsd:attributeGroup ref='db:label.attrib'/>
+
+ <!-- Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec -->
+ <xsd:attribute name='units'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='calspair'/>
+ <xsd:enumeration value='linecolumn'/>
+ <xsd:enumeration value='linerange'/>
+ <xsd:enumeration value='linecolumnpair'/>
+ <xsd:enumeration value='other'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- OtherUnits: User-defined units -->
+ <xsd:attribute name='otherunits' type='xsd:NMTOKEN'/>
+
+ <xsd:attribute name='coords' type='xsd:string' use='required'/>
+
+ <xsd:attributeGroup ref='db:idreq.common.attrib'/>
+ <xsd:attributeGroup ref='db:areaset.role.attrib'/>
+ <!-- %local.areaset.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='programlisting.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='programlisting' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ <xsd:element ref='db:co'/>
+ <xsd:element ref='db:lineannotation'/>
+ </xsd:choice>
+ <!-- (%para.char.mix; | co | lineannotation)* -->
+
+ <xsd:attributeGroup ref='db:width.attrib'/>
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:programlisting.role.attrib'/>
+ <!-- %local.programlisting.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='literallayout.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='literallayout' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ <xsd:element ref='db:co'/>
+ <xsd:element ref='db:lineannotation'/>
+ </xsd:choice>
+ <!-- (%para.char.mix; | lineannotation | co)* -->
+
+ <xsd:attribute name='class' use='default' value='normal'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='monospaced'/>
+ <xsd:enumeration value='normal'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:width.attrib'/>
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:literallayout.role.attrib'/>
+ <!-- %local.literallayout.attrib; -->
+</xsd:complexType>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+
+<xsd:attributeGroup name='screenco.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='screenco'>
+ <xsd:sequence>
+ <xsd:element ref='db:areaspec'/>
+ <xsd:element ref='db:screen'/>
+ <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (areaspec, screen, calloutlist*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:screenco.role.attrib'/>
+ <!-- %local.screenco.attrib; -->
+</xsd:complexType>
+
+<!-- AreaSpec (defined above)-->
+<!-- CalloutList (defined above in Lists)-->
+
+<xsd:attributeGroup name='screen.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='screen' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ <xsd:element ref='db:co'/>
+ <xsd:element ref='db:lineannotation'/>
+ </xsd:choice>
+ <!-- (%para.char.mix; | co | lineannotation)* -->
+
+ <xsd:attributeGroup ref='db:width.attrib'/>
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:screen.role.attrib'/>
+ <!-- %local.screen.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='screenshot.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='screenshot'>
+ <xsd:sequence>
+ <xsd:element ref='db:screeninfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:graphic'/>
+ <xsd:element ref='db:graphicco'/>
+ <xsd:element ref='db:mediaobject'/>
+ <xsd:element ref='db:mediaobjectco'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (screeninfo?,
+ (graphic|graphicco
+ |mediaobject|mediaobjectco)) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:screenshot.role.attrib'/>
+ <!-- %local.screenshot.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='screeninfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='screeninfo' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:screeninfo.role.attrib'/>
+ <!-- %local.screeninfo.attrib; -->
+</xsd:complexType>
+
+<!-- Figures etc. ..................... -->
+
+<xsd:attributeGroup name='figure.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='figure'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:figure.mix'/>
+ <xsd:group ref='db:link.char.class'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;), (%figure.mix; |
+ %link.char.class;)+) -->
+
+ <!-- Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default) -->
+ <xsd:attribute name='float' type='db:yesorno.attvals' use='default' value='0'/>
+ <xsd:attribute name='pgwide' type='db:yesorno.attvals'/>
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:figure.role.attrib'/>
+ <!-- %local.figure.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='informalfigure.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='informalfigure'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:figure.mix'/>
+ <xsd:group ref='db:link.char.class'/>
+ </xsd:choice>
+ <!-- ((%figure.mix; | %link.char.class;)+) -->
+
+ <!-- Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default) -->
+ <xsd:attribute name='float' type='db:yesorno.attvals' use='default' value='0'/>
+ <xsd:attribute name='pgwide' type='db:yesorno.attvals'/>
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:informalfigure.role.attrib'/>
+ <!-- %local.informalfigure.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='graphicco.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='graphicco'>
+ <xsd:sequence>
+ <xsd:element ref='db:areaspec'/>
+ <xsd:element ref='db:graphic'/>
+ <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (areaspec, graphic, calloutlist*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:graphicco.role.attrib'/>
+ <!-- %local.graphicco.attrib; -->
+</xsd:complexType>
+
+<!-- AreaSpec (defined above in Examples)-->
+<!-- CalloutList (defined above in Lists)-->
+
+<!-- Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref). -->
+
+<xsd:attributeGroup name='graphic.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='graphic'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:graphics.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:graphic.role.attrib'/>
+ <!-- %local.graphic.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='inlinegraphic.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='inlinegraphic'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:graphics.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:inlinegraphic.role.attrib'/>
+ <!-- %local.inlinegraphic.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='mediaobject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='mediaobject'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:mediaobject.mix'/>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:mediaobject.mix'/>
+ <xsd:element ref='db:textobject'/>
+ </xsd:choice>
+ <xsd:element ref='db:caption' minOccurs='0' maxOccurs='1'/>
+ </xsd:sequence>
+ <!-- (objectinfo?,
+ (%mediaobject.mix;),
+ (%mediaobject.mix;|textobject)*,
+ caption?) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:mediaobject.role.attrib'/>
+ <!-- %local.mediaobject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='inlinemediaobject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='inlinemediaobject'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:mediaobject.mix'/>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:mediaobject.mix'/>
+ <xsd:element ref='db:textobject'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (objectinfo?,
+ (%mediaobject.mix;),
+ (%mediaobject.mix;|textobject)*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:inlinemediaobject.role.attrib'/>
+ <!-- %local.inlinemediaobject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='videoobject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='videoobject'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:videodata'/>
+ </xsd:sequence>
+ <!-- (objectinfo?, videodata) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:videoobject.role.attrib'/>
+ <!-- %local.videoobject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='audioobject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='audioobject'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:audiodata'/>
+ </xsd:sequence>
+ <!-- (objectinfo?, audiodata) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:audioobject.role.attrib'/>
+ <!-- %local.audioobject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='imageobject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='imageobject'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:imagedata'/>
+ </xsd:sequence>
+ <!-- (objectinfo?, imagedata) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:imageobject.role.attrib'/>
+ <!-- %local.imageobject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='textobject.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='textobject'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:phrase'/>
+ <xsd:group ref='db:textobject.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (objectinfo?, (phrase|(%textobject.mix;)+)) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:textobject.role.attrib'/>
+ <!-- %local.textobject.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='objectinfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='objectinfo'>
+ <xsd:complexContent>
+ <xsd:extension base='db:infoContentModel'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:objectinfo.role.attrib'/>
+ <!-- %local.objectinfo.attrib; -->
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!--EntityRef: Name of an external entity containing the content
+ of the object data-->
+<!--FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data-->
+<!--Format: Notation of the element content, if any-->
+<!--SrcCredit: Information about the source of the image-->
+<xsd:attributeGroup name='objectdata.attrib'>
+ <!-- FIXME: -->
+ <!-- entityref ENTITY #IMPLIED -->
+ <xsd:attribute name='fileref' type='xsd:string'/>
+ <xsd:attribute name='format' type='xsd:NOTATION'/>
+ <xsd:attribute name='srccredit' type='xsd:string'/>
+ <!-- %local.objectdata.attrib;-->
+</xsd:attributeGroup>
+
+<xsd:attributeGroup name='videodata.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='videodata'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <!--Width: Same as CALS reprowid (desired width)-->
+ <xsd:attribute name='width' type='xsd:string'/>
+
+ <!--Depth: Same as CALS reprodep (desired depth)-->
+ <xsd:attribute name='depth' type='xsd:string'/>
+
+ <!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific-->
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!--Scale: Conflation of CALS hscale and vscale-->
+ <xsd:attribute name='scale' type='xsd:string'/>
+
+ <!--Scalefit: Same as CALS scalefit-->
+ <xsd:attribute name='scalefit' type='db:yesorno.attvals'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:objectdata.attrib'/>
+ <!-- %local.videodata.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='audiodata.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='audiodata'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:objectdata.attrib'/>
+ <!-- %local.audiodata.attrib; -->
+ <xsd:attributeGroup ref='db:audiodata.role.attrib'/>
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='imagedata.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='imagedata'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <!--Width: Same as CALS reprowid (desired width)-->
+ <xsd:attribute name='width' type='xsd:string'/>
+
+ <!--Depth: Same as CALS reprodep (desired depth)-->
+ <xsd:attribute name='depth' type='xsd:string'/>
+
+ <!--Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific-->
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!--Scale: Conflation of CALS hscale and vscale-->
+ <xsd:attribute name='scale' type='xsd:string'/>
+
+ <!--Scalefit: Same as CALS scalefit-->
+ <xsd:attribute name='scalefit' type='db:yesorno.attvals'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:objectdata.attrib'/>
+ <xsd:attributeGroup ref='db:imagedata.role.attrib'/>
+ <!-- %local.videodata.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='caption.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='caption'>
+ <xsd:sequence>
+ <xsd:group ref='db:textobject' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <!-- %local.caption.attrib; -->
+ <xsd:attributeGroup ref='db:caption.role.attrib'/>
+</xsd:complexType>
+
+<xsd:attributeGroup name='mediaobjectco.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='mediaobjectco'>
+ <xsd:sequence>
+ <xsd:element ref='db:objectinfo' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:imageobjectco'/>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:imageobjectco'/>
+ <xsd:element ref='db:textobject'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (objectinfo?, imageobjectco,
+ (imageobjectco|textobject)*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:mediaobjectco.role.attrib'/>
+ <!-- %local.mediaobjectco.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='imageobjectco.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='imageobjectco'>
+ <xsd:sequence>
+ <xsd:element ref='db:areaspec'/>
+ <xsd:element ref='db:imageobject'/>
+ <xsd:element ref='db:calloutlist' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (areaspec, imageobject, calloutlist*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:imageobjectco.role.attrib'/>
+ <!-- %local.imageobjectco.attrib; -->
+</xsd:complexType>
+
+<!-- Equations ........................ -->
+
+<!-- This PE provides a mechanism for replacing equation content, -->
+<!-- perhaps adding a new or different model (e.g., MathML) -->
+
+<xsd:group name='equation.content'>
+ <xsd:sequence>
+ <xsd:element ref='db:alt' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:mediaobject' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (alt?, (graphic+|mediaobject+)) -->
+</xsd:group>
+
+<xsd:group name='inlineequation.content'>
+ <xsd:sequence>
+ <xsd:element ref='db:alt' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:inlinemediaobject' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (alt?, (graphic+|inlinemediaobject+)) -->
+</xsd:group>
+
+<xsd:attributeGroup name='equation.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='equation'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:informalequation'/>
+ <xsd:group ref='db:equation.content'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- ((%formalobject.title.content;)?, (informalequation |
+ %equation.content;)) -->
+
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:equation.role.attrib'/>
+ <!-- %local.equation.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='informalequation.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='informalequation'>
+ <xsd:sequence>
+ <xsd:group ref='db:equation.content'/>
+ </xsd:sequence>
+ <!-- (%equation.content;) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:informalequation.role.attrib'/>
+ <!-- %local.informalequation.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='inlineequation.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='inlineequation'>
+ <xsd:sequence>
+ <xsd:group ref='db:inlineequation.content'/>
+ </xsd:sequence>
+ <!-- (%inlineequation.content;) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:inlineequation.role.attrib'/>
+ <!-- %local.inlineequation.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='alt.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='alt'>
+ <!-- (#PCDATA) -->
+ <xsd:simpleContent>
+ <xsd:extension base='xsd:string'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:alt.role.attrib'/>
+ <!-- %local.alt.attrib; -->
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<!-- Tables ........................... -->
+
+<xsd:complexType name='table'>
+ <xsd:complexContent>
+ <xsd:extension base='tbl:tableType'>
+ <xsd:sequence>
+ <xsd:group ref='db:formalobject.title.content'/>
+ <xsd:group ref='db:ndxterm.class' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:mediaobject' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='tbl:tgroup' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- % tbl.table.mdl
+ "((%formalobject.title.content;),
+ (%ndxterm.class;)*,
+ (graphic+|tgroup+))"-->
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name='informaltable'>
+ <xsd:complexContent>
+ <xsd:extension base='tbl:tableType'>
+ <xsd:choice>
+ <xsd:element ref='db:graphic' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:mediaobject' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='tbl:tgroup' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Synopses ............................................................. -->
+
+<!-- Synopsis ......................... -->
+
+<xsd:attributeGroup name='synopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='synopsis' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ <xsd:element ref='db:graphic'/>
+ <xsd:element ref='db:mediaobject'/>
+ <xsd:element ref='db:lineannotation'/>
+ <xsd:element ref='db:co'/>
+ </xsd:choice>
+ <!-- (%para.char.mix; | graphic | mediaobject | lineannotation | co)* -->
+
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:synopsis.role.attrib'/>
+ <!-- %local.synopsis.attrib; -->
+</xsd:complexType>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+
+<!-- CmdSynopsis ...................... -->
+
+<xsd:attributeGroup name='cmdsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='cmdsynopsis'>
+ <xsd:sequence>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:command'/>
+ <xsd:element ref='db:arg'/>
+ <xsd:element ref='db:group'/>
+ <xsd:element ref='db:sbr'/>
+ </xsd:choice>
+ <xsd:element ref='db:synopfragment' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- ((command | arg | group | sbr)+, synopfragment*) -->
+
+ <!-- Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., Δ -->
+ <xsd:attribute name='sepchar' type='xsd:string' use='default' value=' '/>
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attribute name='cmdlength' type='xsd:integer'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:cmdsynopsis.role.attrib'/>
+ <!-- %local.cmdsynopsis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='arg.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='arg' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:arg'/>
+ <xsd:element ref='db:group'/>
+ <xsd:element ref='db:option'/>
+ <xsd:element ref='db:synopfragmentref'/>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:sbr'/>
+ </xsd:choice>
+ <!-- (#PCDATA
+ | arg
+ | group
+ | option
+ | synopfragmentref
+ | replaceable
+ | sbr)* -->
+
+ <!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+ <xsd:attribute name='choice' use='default' value='opt'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='opt'/>
+ <xsd:enumeration value='req'/>
+ <xsd:enumeration value='plain'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+ <xsd:attribute name='rep' use='default' value='norepeat'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='norepeat'/>
+ <xsd:enumeration value='repeat'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:arg.role.attrib'/>
+ <!-- %local.arg.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='group.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='group'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:arg'/>
+ <xsd:element ref='db:group'/>
+ <xsd:element ref='db:option'/>
+ <xsd:element ref='db:synopfragmentref'/>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:sbr'/>
+ </xsd:choice>
+ <!-- ((arg | group | option | synopfragmentref
+ | replaceable | sbr)+) -->
+
+ <!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+ <xsd:attribute name='choice' use='default' value='opt'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='opt'/>
+ <xsd:enumeration value='req'/>
+ <xsd:enumeration value='plain'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+ <xsd:attribute name='rep' use='default' value='norepeat'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='norepeat'/>
+ <xsd:enumeration value='repeat'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:group.role.attrib'/>
+ <!-- %local.group.attrib; -->
+</xsd:complexType>
+
+<!-- Synopsis break -->
+<xsd:attributeGroup name='sbr.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='sbr'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:sbr.role.attrib'/>
+ <!-- %local.sbr.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='synopfragmentref.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='synopfragmentref' mixed='true'>
+ <!-- (#PCDATA) -->
+ <xsd:simpleContent>
+ <xsd:extension base='xsd:string'>
+ <!-- to SynopFragment of complex synopsis
+ material for separate referencing -->
+ <xsd:attributeGroup ref='db:linkendreq.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:synopfragmentref.role.attrib'/>
+ <!-- %local.synopfragmentref.attrib; -->
+ </xsd:extension>
+ </xsd:simpleContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='synopfragment.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='synopfragment'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:arg'/>
+ <xsd:element ref='db:group'/>
+ </xsd:choice>
+ <!-- ((arg | group)+) -->
+
+ <xsd:attributeGroup ref='db:idreq.common.attrib'/>
+ <xsd:attributeGroup ref='db:synopfragment.role.attrib'/>
+ <!-- %local.synopfragment.attrib; -->
+</xsd:complexType>
+
+<!-- Command (defined in the Inlines section, below)-->
+<!-- Option (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+
+<!-- FuncSynopsis ..................... -->
+
+<xsd:attributeGroup name='funcsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='funcsynopsis'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:funcsynopsisinfo'/>
+ <xsd:element ref='db:funcprototype'/>
+ </xsd:choice>
+ <!-- ((funcsynopsisinfo | funcprototype)+) -->
+
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:funcsynopsis.role.attrib'/>
+ <!-- %local.funcsynopsis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='funcsynopsisinfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='funcsynopsisinfo' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ <xsd:element ref='db:lineannotation'/>
+ </xsd:choice>
+ <!-- (%cptr.char.mix; | lineannotation)* -->
+
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:funcsynopsisinfo.role.attrib'/>
+ <!-- %local.funcsynopsisinfo.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='funcprototype.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='funcprototype'>
+ <xsd:sequence>
+ <xsd:element ref='db:funcdef'/>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:void'/>
+ <xsd:element ref='db:varargs'/>
+ <xsd:element ref='db:paramdef'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (funcdef, (void | varargs | paramdef+)) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:funcprototype.role.attrib'/>
+ <!-- %local.funcprototype.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='funcdef.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='funcdef' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:function'/>
+ </xsd:choice>
+ <!-- (#PCDATA
+ | replaceable
+ | function)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:funcdef.role.attrib'/>
+ <!-- %local.funcdef.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='void.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='void'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:void.role.attrib'/>
+ <!-- %local.void.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='varargs.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='varargs'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:varargs.role.attrib'/>
+ <!-- %local.varargs.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!-- Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions. -->
+
+<xsd:attributeGroup name='paramdef.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='paramdef' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:parameter'/>
+ <xsd:element ref='db:funcparams'/>
+ </xsd:choice>
+ <!-- (#PCDATA
+ | replaceable
+ | parameter
+ | funcparams)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:paramdef.role.attrib'/>
+ <!-- %local.paramdef.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='funcparams.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='funcparams' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:funcparams.role.attrib'/>
+ <!-- %local.funcparams.attrib; -->
+</xsd:complexType>
+
+<!-- LineAnnotation (defined in the Inlines section, below)-->
+<!-- Replaceable (defined in the Inlines section, below)-->
+<!-- Function (defined in the Inlines section, below)-->
+<!-- Parameter (defined in the Inlines section, below)-->
+
+<!-- ClassSynopsis ..................... -->
+
+<xsd:attributeGroup name='classsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='classsynopsis'>
+ <xsd:sequence>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:ooclass'/>
+ <xsd:element ref='db:oointerface'/>
+ <xsd:element ref='db:ooexception'/>
+ </xsd:choice>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:classsynopsisinfo'/>
+ <xsd:element ref='db:fieldsynopsis'/>
+ <xsd:group ref='db:method.synop.class'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- ((ooclass|oointerface|ooexception)+,
+ (classsynopsisinfo
+ |fieldsynopsis|%method.synop.class;)*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:classsynopsis.role.attrib'/>
+ <!-- %local.classsynopsis.attrib; -->
+ <xsd:attribute name='language' type='xsd:string'/>
+ <xsd:attribute name='class' use='default' value='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='class'/>
+ <xsd:enumeration value='interface'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:complexType>
+
+<xsd:attributeGroup name='classsynopsisinfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='classsynopsisinfo' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='1'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ <xsd:element ref='db:lineannotation'/>
+ </xsd:choice>
+ <!-- (%cptr.char.mix; | lineannotation)* -->
+
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:classsynopsisinfo.role.attrib'/>
+ <!-- %local.classsynopsisinfo.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='ooclass.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='ooclass'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:classname'/>
+ </xsd:sequence>
+ <!-- (modifier*, classname) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:ooclass.role.attrib'/>
+ <!-- %local.ooclass.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='oointerface.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='oointerface'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:interfacename'/>
+ </xsd:sequence>
+ <!-- (modifier*, interfacename) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:oointerface.role.attrib'/>
+ <!-- %local.oointerface.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='ooexception.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='ooexception'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:exceptionname'/>
+ </xsd:sequence>
+ <!-- (modifier*, exceptionname) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:ooexception.role.attrib'/>
+ <!-- %local.ooexception.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='modifier.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='modifier'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:modifier.role.attrib'/>
+ <!-- %local.modifier.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='interfacename.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='interfacename'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:interfacename.role.attrib'/>
+ <!-- %local.interfacename.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='exceptionname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='exceptionname'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:exceptionname.role.attrib'/>
+ <!-- %local.exceptionname.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='fieldsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='fieldsynopsis'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:type' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:varname'/>
+ <xsd:element ref='db:initializer' minOccurs='0' maxOccurs='1'/>
+ </xsd:sequence>
+ <!-- (modifier*, type?, varname, initializer?) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:fieldsynopsis.role.attrib'/>
+ <!-- %local.fieldsynopsis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='initializer.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='initializer'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:initializer.role.attrib'/>
+ <!-- %local.initializer.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='constructorsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='constructorsynopsis'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:methodname' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:methodparam' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:void'/>
+ </xsd:choice>
+ <xsd:element ref='db:exceptionname' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (modifier*,
+ methodname?,
+ (methodparam+|void),
+ exceptionname*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:constructorsynopsis.role.attrib'/>
+ <!-- %local.constructorsynopsis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='destructorsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='destructorsynopsis'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:methodname' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:methodparam' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:void'/>
+ </xsd:choice>
+ <xsd:element ref='db:exceptionname' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (modifier*,
+ methodname?,
+ (methodparam+|void),
+ exceptionname*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:destructorsynopsis.role.attrib'/>
+ <!-- %local.destructorsynopsis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='methodsynopsis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='methodsynopsis'>
+ <xsd:sequence>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:choice minOccurs='0' maxOccurs='1'>
+ <xsd:element ref='db:type'/>
+ <xsd:element ref='db:void'/>
+ </xsd:choice>
+ <xsd:element ref='db:methodname' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:element ref='db:methodparam' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:void'/>
+ </xsd:choice>
+ <xsd:element ref='db:exceptionname' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (modifier*,
+ (type|void)?,
+ methodname,
+ (methodparam+|void),
+ exceptionname*,
+ modifier*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:methodsynopsis.role.attrib'/>
+ <!-- %local.methodsynopsis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='methodname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='methodname'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:methodname.role.attrib'/>
+ <!-- %local.methodname.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='methodparam.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='methodparam'>
+ <xsd:sequence>
+ <xsd:element name='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element name='db:type' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name='db:parameter'/>
+ <xsd:element name='db:initializer' minOccurs='0' maxOccurs='1'/>
+ </xsd:sequence>
+ <xsd:element name='db:funcparams'/>
+ </xsd:choice>
+ <xsd:element name='db:modifier' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (modifier*,
+ type?,
+ ((parameter,initializer?)|funcparams),
+ modifier*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:methodparam.role.attrib'/>
+ <!-- %local.methodparam.attrib; -->
+
+ <!-- Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg) -->
+ <xsd:attribute name='choice' use='default' value='opt'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='opt'/>
+ <xsd:enumeration value='req'/>
+ <xsd:enumeration value='plain'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...) -->
+ <xsd:attribute name='rep' use='default' value='norepeat'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='norepeat'/>
+ <xsd:enumeration value='repeat'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:complexType>
+
+<!-- ...................................................................... -->
+<!-- Document information entities and elements ........................... -->
+
+<!-- The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies. -->
+
+<!-- .................................. -->
+
+<!-- Ackno ............................ -->
+
+<xsd:attributeGroup name='ackno.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='ackno' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:ackno.role.attrib'/>
+ <!-- %local.ackno.attrib; -->
+</xsd:complexType>
+
+<!-- Address .......................... -->
+
+<xsd:attributeGroup name='address.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='address' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:person.ident.mix'/>
+ <xsd:element ref='db:street'/>
+ <xsd:element ref='db:pob'/>
+ <xsd:element ref='db:postcode'/>
+ <xsd:element ref='db:city'/>
+ <xsd:element ref='db:state'/>
+ <xsd:element ref='db:country'/>
+ <xsd:element ref='db:phone'/>
+ <xsd:element ref='db:fax'/>
+ <xsd:element ref='db:email'/>
+ <xsd:element ref='db:otheraddr'/>
+ </xsd:choice>
+ <!-- (#PCDATA|%person.ident.mix;
+ |street|pob|postcode|city|state|country|phone
+ |fax|email|otheraddr)* -->
+
+ <xsd:attributeGroup ref='db:linespecific.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:address.role.attrib'/>
+ <!-- %local.address.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='street.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='street' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:street.role.attrib'/>
+ <!-- %local.street.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='pob.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='pob' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:pob.role.attrib'/>
+ <!-- %local.pob.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='postcode.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='postcode' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:postcode.role.attrib'/>
+ <!-- %local.postcode.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='city.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='city' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:city.role.attrib'/>
+ <!-- %local.city.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='state.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='state' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:state.role.attrib'/>
+ <!-- %local.state.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='country.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='country' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:country.role.attrib'/>
+ <!-- %local.country.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='phone.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='phone' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:phone.role.attrib'/>
+ <!-- %local.phone.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='fax.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='fax' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:fax.role.attrib'/>
+ <!-- %local.fax.attrib; -->
+</xsd:complexType>
+
+<!-- Email (defined in the Inlines section, below)-->
+
+<xsd:attributeGroup name='otheraddr.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='otheraddr' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:otheraddr.role.attrib'/>
+ <!-- %local.otheraddr.attrib; -->
+</xsd:complexType>
+
+<!-- Affiliation ...................... -->
+
+<xsd:attributeGroup name='affiliation.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='affiliation'>
+ <xsd:sequence>
+ <xsd:element ref='db:shortaffil' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:jobtitle' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:orgname' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='db:orgdiv' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='db:address' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (shortaffil?, jobtitle*, orgname?, orgdiv*,
+ address*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:affiliation.role.attrib'/>
+ <!-- %local.affiliation.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='shortaffil.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='shortaffil' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:shortaffil.role.attrib'/>
+ <!-- %local.shortaffil.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='jobtitle.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='jobtitle' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+<xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:jobtitle.role.attrib'/>
+ <!-- %local.jobtitle.attrib; -->
+</xsd:complexType>
+
+<!-- OrgName (defined elsewhere in this section)-->
+
+<xsd:attributeGroup name='orgdiv.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='orgdiv' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:orgdiv.role.attrib'/>
+ <!-- %local.orgdiv.attrib; -->
+</xsd:complexType>
+
+<!-- Address (defined elsewhere in this section)-->
+
+<!-- ArtPageNums ...................... -->
+
+<xsd:attributeGroup name='artpagenums.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='artpagenums' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:artpagenums.role.attrib'/>
+ <!-- %local.artpagenums.attrib; -->
+</xsd:complexType>
+
+<!-- Author ........................... -->
+
+<xsd:attributeGroup name='author.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='author'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:person.ident.mix'/>
+ </xsd:sequence>
+ <!-- ((%person.ident.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:author.role.attrib'/>
+ <!-- %local.author.attrib; -->
+</xsd:complexType>
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+<!-- AuthorGroup ...................... -->
+
+<xsd:attributeGroup name='authorgroup.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='authorgroup'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:author'/>
+ <xsd:element ref='db:editor'/>
+ <xsd:element ref='db:collab'/>
+ <xsd:element ref='db:corpauthor'/>
+ <xsd:element ref='db:othercredit'/>
+ </xsd:choice>
+ <!-- ((author|editor|collab|corpauthor|othercredit)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:authorgroup.role.attrib'/>
+ <!-- %local.authorgroup.attrib; -->
+</xsd:complexType>
+
+<!-- Author (defined elsewhere in this section)-->
+<!-- Editor (defined elsewhere in this section)-->
+
+<xsd:attributeGroup name='collab.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='collab'>
+ <xsd:sequence>
+ <xsd:element ref='db:collabname'/>
+ <xsd:element ref='db:affiliation' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (collabname, affiliation*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:collab.role.attrib'/>
+ <!-- %local.collab.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='collabname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='collabname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:collabname.role.attrib'/>
+ <!-- %local.collabname.attrib; -->
+</xsd:complexType>
+
+<!-- Affiliation (defined elsewhere in this section)-->
+
+<!-- CorpAuthor (defined elsewhere in this section)-->
+<!-- OtherCredit (defined elsewhere in this section)-->
+
+<!-- AuthorInitials ................... -->
+
+<xsd:attributeGroup name='authorinitials.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='authorinitials' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:authorinitials.role.attrib'/>
+ <!-- %local.authorinitials.attrib; -->
+</xsd:complexType>
+
+<!-- ConfGroup ........................ -->
+
+<xsd:attributeGroup name='confgroup.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='confgroup'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element ref='db:confdates'/>
+ <xsd:element ref='db:conftitle'/>
+ <xsd:element ref='db:confnum'/>
+ <xsd:element ref='db:address'/>
+ <xsd:element ref='db:confsponsor'/>
+ </xsd:choice>
+ <!-- ((confdates|conftitle|confnum|address|confsponsor)*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:confgroup.role.attrib'/>
+ <!-- %local.confgroup.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='confdates.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='confdates' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:confdates.role.attrib'/>
+ <!-- %local.confdates.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='conftitle.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='conftitle' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:conftitle.role.attrib'/>
+ <!-- %local.conftitle.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='confnum.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='confnum' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:confnum.role.attrib'/>
+ <!-- %local.confnum.attrib; -->
+</xsd:complexType>
+
+<!-- Address (defined elsewhere in this section)-->
+
+<xsd:attributeGroup name='confsponsor.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='confsponsor' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:confsponsor.role.attrib'/>
+ <!-- %local.confsponsor.attrib; -->
+</xsd:complexType>
+
+<!-- ContractNum ...................... -->
+
+<xsd:attributeGroup name='contractnum.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='contractnum' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:contractnum.role.attrib'/>
+ <!-- %local.contractnum.attrib; -->
+</xsd:complexType>
+
+<!-- ContractSponsor .................. -->
+
+<xsd:attributeGroup name='contractsponsor.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='contractsponsor' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:contractsponsor.role.attrib'/>
+ <!-- %local.contractsponsor.attrib; -->
+</xsd:complexType>
+
+<!-- Copyright ........................ -->
+
+<xsd:attributeGroup name='copyright.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='copyright'>
+ <xsd:sequence>
+ <xsd:element ref='db:year' minOccurs='1' maxOccurs='unbounded'/>
+ <xsd:element ref='db:holder' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (year+, holder*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:copyright.role.attrib'/>
+ <!-- %local.copyright.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='year.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='year' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:year.role.attrib'/>
+ <!-- %local.year.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='holder.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='holder' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:holder.role.attrib'/>
+ <!-- %local.holder.attrib; -->
+</xsd:complexType>
+
+<!-- CorpAuthor ....................... -->
+
+<xsd:attributeGroup name='corpauthor.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='corpauthor' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:corpauthor.role.attrib'/>
+ <!-- %local.corpauthor.attrib; -->
+</xsd:complexType>
+
+<!-- CorpName ......................... -->
+
+<xsd:attributeGroup name='corpname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='corpname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:corpname.role.attrib'/>
+ <!-- %local.corpname.attrib; -->
+</xsd:complexType>
+
+<!-- Date ............................. -->
+
+<xsd:attributeGroup name='date.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='date' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:date.role.attrib'/>
+ <!-- %local.date.attrib; -->
+</xsd:complexType>
+
+<!-- Edition .......................... -->
+
+<xsd:attributeGroup name='edition.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='edition' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:edition.role.attrib'/>
+ <!-- %local.edition.attrib; -->
+</xsd:complexType>
+
+<!-- Editor ........................... -->
+
+<xsd:attributeGroup name='editor.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='editor'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:person.ident.mix'/>
+ </xsd:sequence>
+ <!-- ((%person.ident.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:editor.role.attrib'/>
+ <!-- %local.editor.attrib; -->
+</xsd:complexType>
+
+<!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+<!-- ISBN ............................. -->
+
+<xsd:attributeGroup name='isbn.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='isbn' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:isbn.role.attrib'/>
+ <!-- %local.isbn.attrib; -->
+</xsd:complexType>
+
+<!-- ISSN ............................. -->
+
+<xsd:attributeGroup name='issn.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='issn' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:issn.role.attrib'/>
+ <!-- %local.issn.attrib; -->
+</xsd:complexType>
+
+<!-- InvPartNumber .................... -->
+
+<xsd:attributeGroup name='invpartnumber.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='invpartnumber' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:invpartnumber.role.attrib'/>
+ <!-- %local.invpartnumber.attrib; -->
+</xsd:complexType>
+
+<!-- IssueNum ......................... -->
+
+<xsd:attributeGroup name='issuenum.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='issuenum' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:issuenum.role.attrib'/>
+ <!-- %local.issuenum.attrib; -->
+</xsd:complexType>
+
+<!-- LegalNotice ...................... -->
+
+<xsd:attributeGroup name='legalnotice.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='legalnotice'>
+ <xsd:sequence>
+ <xsd:element ref='db:title' minOccurs='0' maxOccurs='1'/>
+ <xsd:group ref='db:legalnotice.mix' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (title?, (%legalnotice.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:legalnotice.role.attrib'/>
+ <!-- %local.legalnotice.attrib; -->
+</xsd:complexType>
+
+<!-- ModeSpec ......................... -->
+
+<xsd:attributeGroup name='modespec.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='modespec' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <!-- Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query) -->
+
+ <xsd:attribute name='application' type='xsd:NOTATION'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:modespec.role.attrib'/>
+ <!-- %local.modespec.attrib; -->
+</xsd:complexType>
+
+<!-- OrgName .......................... -->
+
+<xsd:attributeGroup name='orgname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='orgname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:orgname.role.attrib'/>
+ <!-- %local.orgname.attrib; -->
+</xsd:complexType>
+
+<!-- OtherCredit ...................... -->
+
+<xsd:attributeGroup name='othercredit.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='othercredit'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:person.ident.mix'/>
+ </xsd:sequence>
+ <!-- ((%person.ident.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:othercredit.role.attrib'/>
+ <!-- %local.othercredit.attrib; -->
+</xsd:complexType>
+ <!--(see "Personal identity elements" for %person.ident.mix;)-->
+
+<!-- PageNums ......................... -->
+
+<xsd:attributeGroup name='pagenums.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='pagenums' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:pagenums.role.attrib'/>
+ <!-- %local.pagenums.attrib; -->
+</xsd:complexType>
+
+<!-- Personal identity elements ....... -->
+
+<!-- These elements are used only within Author, Editor, and
+ OtherCredit. -->
+
+<xsd:attributeGroup name='contrib.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='contrib' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:contrib.role.attrib'/>
+ <!-- %local.contrib.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='firstname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='firstname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:firstname.role.attrib'/>
+ <!-- %local.firstname.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='honorific.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='honorific' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:honorific.role.attrib'/>
+ <!-- %local.honorific.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='lineage.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='lineage' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:lineage.role.attrib'/>
+ <!-- %local.lineage.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='othername.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='othername' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:othername.role.attrib'/>
+ <!-- %local.othername.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='surname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='surname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:surname.role.attrib'/>
+ <!-- %local.surname.attrib; -->
+</xsd:complexType>
+
+<!-- PrintHistory ..................... -->
+
+<xsd:attributeGroup name='printhistory.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='printhistory'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.class'/>
+ </xsd:sequence>
+ <!-- ((%para.class;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:printhistory.role.attrib'/>
+ <!-- %local.printhistory.attrib; -->
+</xsd:complexType>
+
+<!-- ProductName ...................... -->
+
+<xsd:attributeGroup name='productname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='productname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- Class: More precisely identifies the item the element names -->
+ <xsd:attribute name='class' use='default' value='trade'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='service'/>
+ <xsd:enumeration value='trade'/>
+ <xsd:enumeration value='registered'/>
+ <xsd:enumeration value='copyright'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:productname.role.attrib'/>
+ <!-- %local.productname.attrib; -->
+</xsd:complexType>
+
+<!-- ProductNumber .................... -->
+
+<xsd:attributeGroup name='productnumber.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='productnumber' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:productnumber.role.attrib'/>
+ <!-- %local.productnumber.attrib; -->
+</xsd:complexType>
+
+<!-- PubDate .......................... -->
+
+<xsd:attributeGroup name='pubdate.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='pubdate' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:pubdate.role.attrib'/>
+ <!-- %local.pubdate.attrib; -->
+</xsd:complexType>
+
+<!-- Publisher ........................ -->
+
+<xsd:attributeGroup name='publisher.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='publisher'>
+ <xsd:sequence>
+ <xsd:element ref='db:publishername'/>
+ <xsd:element ref='db:address' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (publishername, address*) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:publisher.role.attrib'/>
+ <!-- %local.publisher.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='publishername.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='publishername' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:publishername.role.attrib'/>
+ <!-- %local.publishername.attrib; -->
+</xsd:complexType>
+
+<!-- Address (defined elsewhere in this section)-->
+
+<!-- PubsNumber ....................... -->
+
+<xsd:attributeGroup name='pubsnumber.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='pubsnumber' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:pubsnumber.role.attrib'/>
+ <!-- %local.pubsnumber.attrib; -->
+</xsd:complexType>
+
+<!-- ReleaseInfo ...................... -->
+
+<xsd:attributeGroup name='releaseinfo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='releaseinfo' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:releaseinfo.role.attrib'/>
+ <!-- %local.releaseinfo.attrib; -->
+</xsd:complexType>
+
+<!-- RevHistory ....................... -->
+
+<xsd:attributeGroup name='revhistory.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='revhistory'>
+ <xsd:sequence>
+ <xsd:element ref='db:revision' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ <!-- (revision+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:revhistory.role.attrib'/>
+ <!-- %local.revhistory.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='revision.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='revision'>
+ <xsd:sequence>
+ <xsd:element ref='db:revnumber'/>
+ <xsd:element ref='db:date'/>
+ <xsd:element ref='db:authorinitials' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:choice minOccurs='0' maxOccurs='1'>
+ <xsd:element ref='db:revremark'/>
+ <xsd:element ref='db:revdescription'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (revnumber, date, authorinitials*,
+ (revremark|revdescription)?) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:revision.role.attrib'/>
+ <!-- %local.revision.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='revnumber.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='revnumber' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:revnumber.role.attrib'/>
+ <!-- %local.revnumber.attrib; -->
+</xsd:complexType>
+
+<!-- Date (defined elsewhere in this section)-->
+<!-- AuthorInitials (defined elsewhere in this section)-->
+
+<xsd:attributeGroup name='revremark.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='revremark' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:revremark.role.attrib'/>
+ <!-- %local.revremark.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='revdescription.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='revdescription'>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:revdescription.mix'/>
+ </xsd:sequence>
+ <!-- ((%revdescription.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:revdescription.role.attrib'/>
+ <!-- %local.revdescription.attrib; -->
+</xsd:complexType>
+
+<!-- SeriesVolNums .................... -->
+
+<xsd:attributeGroup name='seriesvolnums.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='seriesvolnums' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:seriesvolnums.role.attrib'/>
+ <!-- %local.seriesvolnums.attrib; -->
+</xsd:complexType>
+
+<!-- VolumeNum ........................ -->
+
+<xsd:attributeGroup name='volumenum.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='volumenum' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:volumenum.role.attrib'/>
+ <!-- %local.volumenum.attrib; -->
+</xsd:complexType>
+
+<!-- .................................. -->
+
+<!-- ...................................................................... -->
+<!-- Inline, link, and ubiquitous elements ................................ -->
+
+<!-- Technical and computer terms ......................................... -->
+
+<xsd:attributeGroup name='accel.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='accel' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:accel.role.attrib'/>
+ <!-- %local.accel.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='action.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='action' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:action.role.attrib'/>
+ <!-- %local.action.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='application.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='application' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:sequence>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='hardware'/>
+ <xsd:enumeration value='software'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:application.role.attrib'/>
+ <!-- %local.application.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='classname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='classname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:classname.role.attrib'/>
+ <!-- %local.classname.attrib; -->
+</xsd:complexType>
+
+<!-- CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO. -->
+<xsd:attributeGroup name='co.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='co'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:linkends.attrib'/>
+ <xsd:attributeGroup ref='db:idreq.common.attrib'/>
+ <xsd:attributeGroup ref='db:co.role.attrib'/>
+ <!-- %local.co.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='command.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='command' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:command.role.attrib'/>
+ <!-- %local.command.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='computeroutput.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='computeroutput' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:computeroutput.role.attrib'/>
+ <!-- %local.computeroutput.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='database.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='database' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <!-- Class: Type of database the element names; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='name'/>
+ <xsd:enumeration value='table'/>
+ <xsd:enumeration value='field'/>
+ <xsd:enumeration value='key1'/>
+ <xsd:enumeration value='key2'/>
+ <xsd:enumeration value='record'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:database.role.attrib'/>
+ <!-- %local.database.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='email.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='email' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%docinfo.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:email.role.attrib'/>
+ <!-- %local.email.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='envar.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='envar' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:docinfo.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:envar.role.attrib'/>
+ <!-- %local.envar.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='errorcode.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='errorcode' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:errorcode.role.attrib'/>
+ <!-- %local.errorcode.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='errorname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='errorname' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:errorname.role.attrib'/>
+ <!-- %local.errorname.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='errortype.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='errortype' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:errortype.role.attrib'/>
+ <!-- %local.errortype.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='filename.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='filename' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <!-- Class: Type of filename the element names; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='headerfile'/>
+ <xsd:enumeration value='devicefile'/>
+ <xsd:enumeration value='libraryfile'/>
+ <xsd:enumeration value='directory'/>
+ <xsd:enumeration value='symlink'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Path: Search path (possibly system-specific) in which
+ file can be found -->
+ <xsd:attribute name='path' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:filename.role.attrib'/>
+ <!-- %local.filename.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='function.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='function' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:function.role.attrib'/>
+ <!-- %local.function.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='guibutton.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='guibutton' mixed='true'>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:sequence>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:guibutton.role.attrib'/>
+ <!-- %local.guibutton.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='guiicon.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='guiicon' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:accel'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:guiicon.role.attrib'/>
+ <!-- %local.guiicon.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='guilabel.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='guilabel' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:accel'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:guilabel.role.attrib'/>
+ <!-- %local.guilabel.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='guimenu.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='guimenu' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:accel'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:guimenu.role.attrib'/>
+ <!-- %local.guimenu.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='guimenuitem.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='guimenuitem' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:accel'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:guimenuitem.role.attrib'/>
+ <!-- %local.guimenuitem.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='guisubmenu.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='guisubmenu' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:accel'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:guisubmenu.role.attrib'/>
+ <!-- %local.guisubmenu.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='hardware.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='hardware' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:hardware.role.attrib'/>
+ <!-- %local.hardware.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='interface.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='interface' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:accel'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;|accel)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:interface.role.attrib'/>
+ <!-- %local.interface.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='keycap.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='keycap' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:keycap.role.attrib'/>
+ <!-- %local.keycap.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='keycode.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='keycode' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:keycode.role.attrib'/>
+ <!-- %local.keycode.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='keycombo.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='keycombo'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:keycap'/>
+ <xsd:element ref='db:keycombo'/>
+ <xsd:element ref='db:keysym'/>
+ <xsd:element ref='db:mousebutton'/>
+ </xsd:choice>
+ <!-- ((keycap|keycombo|keysym|mousebutton)+) -->
+
+ <xsd:attributeGroup ref='db:keyaction.attrib'/>
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:keycombo.role.attrib'/>
+ <!-- %local.keycombo.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='keysysm.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='keysym' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:keysysm.role.attrib'/>
+ <!-- %local.keysym.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='lineannotation.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='lineannotation' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:lineannotation.role.attrib'/>
+ <!-- %local.lineannotation.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='literal.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='literal' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:literal.role.attrib'/>
+ <!-- %local.literal.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='constant.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='constant' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:constant.role.attrib'/>
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='limit'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+</xsd:complexType>
+
+<xsd:attributeGroup name='varname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='varname' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:varname.role.attrib'/>
+ <!-- %local.varname.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='markup.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='markup' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:markup.role.attrib'/>
+ <!-- %local.markup.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='medialabel.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='medialabel' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <!-- Class: Type of medium named by the element; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='cartridge'/>
+ <xsd:enumeration value='cdrom'/>
+ <xsd:enumeration value='disk'/>
+ <xsd:enumeration value='tape'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:medialabel.role.attrib'/>
+ <!-- %local.medialabel.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='menuchoice.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='menuchoice'>
+ <xsd:sequence>
+ <xsd:element ref='db:shortcut' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:guibutton'/>
+ <xsd:element ref='db:guiicon'/>
+ <xsd:element ref='db:guilabel'/>
+ <xsd:element ref='db:guimenu'/>
+ <xsd:element ref='db:guimenuitem'/>
+ <xsd:element ref='db:guisubmenu'/>
+ <xsd:element ref='db:interface'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (shortcut?, (guibutton|guiicon|guilabel
+ |guimenu|guimenuitem|guisubmenu|interface)+) -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:menuchoice.role.attrib'/>
+ <!-- %local.menuchoice.attrib; -->
+</xsd:complexType>
+
+<!-- See also KeyCombo -->
+<xsd:attributeGroup name='shortcut.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='shortcut'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element ref='db:keycap'/>
+ <xsd:element ref='db:keycombo'/>
+ <xsd:element ref='db:keysym'/>
+ <xsd:element ref='db:mousebutton'/>
+ </xsd:choice>
+ <!-- ((keycap|keycombo|keysym|mousebutton)+) -->
+
+ <xsd:attributeGroup ref='db:keyaction.attrib'/>
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:shortcut.role.attrib'/>
+ <!-- %local.shortcut.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='mousebutton.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='mousebutton' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:mousebutton.role.attrib'/>
+ <!-- %local.mousebutton.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='msgtext.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='msgtext'>
+ <xsd:choice minOccurs='1' maxOccurs='unbounded'>
+ <xsd:group ref='db:component.mix'/>
+ </xsd:choice>
+ <!-- ((%component.mix;)+) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:msgtext.role.attrib'/>
+ <!-- %local.msgtext.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='option.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='option' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:option.role.attrib'/>
+ <!-- %local.option.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='optional.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='optional' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:optional.role.attrib'/>
+ <!-- %local.optional.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='parameter.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='parameter' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <!-- Class: Type of the Parameter; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='command'/>
+ <xsd:enumeration value='function'/>
+ <xsd:enumeration value='option'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:parameter.role.attrib'/>
+ <!-- %local.parameter.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='prompt.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='prompt' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:prompt.role.attrib'/>
+ <!-- %local.prompt.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='property.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='property' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:property.role.attrib'/>
+ <!-- %local.property.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='replaceable.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='replaceable' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:link.char.class'/>
+ <xsd:element ref='db:optional'/>
+ <xsd:group ref='db:base.char.class'/>
+ <xsd:group ref='db:other.char.class'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ </xsd:choice>
+ <!-- (#PCDATA
+ | %link.char.class;
+ | optional
+ | %base.char.class;
+ | %other.char.class;
+ | inlinegraphic
+ | inlinemediaobject)* -->
+
+ <!-- Class: Type of information the element represents; no
+ default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='command'/>
+ <xsd:enumeration value='function'/>
+ <xsd:enumeration value='option'/>
+ <xsd:enumeration value='parameter'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:replaceable.role.attrib'/>
+ <!-- %local.replaceable.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='returnvalue.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='returnvalue' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:returnvalue.role.attrib'/>
+ <!-- %local.returnvalue.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='sgmltag.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='sgmltag' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <!-- Class: Type of SGML construct the element names; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='attribute'/>
+ <xsd:enumeration value='attvalue'/>
+ <xsd:enumeration value='element'/>
+ <xsd:enumeration value='endtag'/>
+ <xsd:enumeration value='emptytag'/>
+ <xsd:enumeration value='genentity'/>
+ <xsd:enumeration value='numcharref'/>
+ <xsd:enumeration value='paramentity'/>
+ <xsd:enumeration value='pi'/>
+ <xsd:enumeration value='xmlpi'/>
+ <xsd:enumeration value='starttag'/>
+ <xsd:enumeration value='sgmlcomment'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:sgmltag.role.attrib'/>
+ <!-- %local.sgmltag.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='structfield.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='structfield' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:structfield.role.attrib'/>
+ <!-- %local.structfield.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='structname.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='structname' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:structname.role.attrib'/>
+ <!-- %local.structname.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='symbol.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='symbol' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <!-- Class: Type of symbol; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='limit'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:symbol.role.attrib'/>
+ <!-- %local.symbol.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='systemitem.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='systemitem' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ <xsd:element ref='db:acronym'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix; | acronym)* -->
+
+ <!-- Class: Type of system item the element names; no default -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='constant'/>
+ <xsd:enumeration value='groupname'/>
+ <xsd:enumeration value='library'/>
+ <xsd:enumeration value='macro'/>
+ <xsd:enumeration value='osname'/>
+ <xsd:enumeration value='resource'/>
+ <xsd:enumeration value='systemname'/>
+ <xsd:enumeration value='username'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:systemitem.role.attrib'/>
+ <!-- %local.systemitem.attrib; -->
+</xsd:complexType>
+
+
+<xsd:attributeGroup name='token.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='token' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:token.role.attrib'/>
+ <!-- %local.token.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='type.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='type' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:smallcptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%smallcptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:type.role.attrib'/>
+ <!-- %local.type.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='userinput.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='userinput' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:cptr.char.mix'/>
+ </xsd:choice>
+ <!-- (%cptr.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:moreinfo.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:userinput.role.attrib'/>
+ <!-- %local.userinput.attrib; -->
+</xsd:complexType>
+
+<!-- General words and phrases ............................................ -->
+
+<xsd:attributeGroup name='abbrev.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='abbrev' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:word.char.mix'/>
+ </xsd:choice>
+ <!-- (%word.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:abbrev.role.attrib'/>
+ <!-- %local.abbrev.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='acronym.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='acronym' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:word.char.mix'/>
+ </xsd:choice>
+ <!-- (%word.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:acronym.role.attrib'/>
+ <!-- %local.acronym.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='citation.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='citation' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:citation.role.attrib'/>
+ <!-- %local.citation.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='citerefentry.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='citerefentry'>
+ <xsd:sequence>
+ <xsd:element ref='db:refentrytitle'/>
+ <xsd:element ref='db:manvolnum' minOccurs='0' maxOccurs='1'/>
+ </xsd:sequence>
+ <!-- (refentrytitle, manvolnum?) -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:citerefentry.role.attrib'/>
+ <!-- %local.citerefentry.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='refentrytitle.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='refentrytitle' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:refentrytitle.role.attrib'/>
+ <!-- %local.refentrytitle.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='namvolnum.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='manvolnum' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:word.char.mix'/>
+ </xsd:choice>
+ <!-- (%word.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:namvolnum.role.attrib'/>
+ <!-- %local.manvolnum.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='citetitle.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='citetitle' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- Pubwork: Genre of published work cited; no default -->
+ <xsd:attribute name='pubwork'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='article'/>
+ <xsd:enumeration value='book'/>
+ <xsd:enumeration value='chapter'/>
+ <xsd:enumeration value='part'/>
+ <xsd:enumeration value='refentry'/>
+ <xsd:enumeration value='section'/>
+ <xsd:enumeration value='journal'/>
+ <xsd:enumeration value='series'/>
+ <xsd:enumeration value='set'/>
+ <xsd:enumeration value='manuscript'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:citetitle.role.attrib'/>
+ <!-- %local.citetitle.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='emphasis.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='emphasis' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:emphasis.role.attrib'/>
+ <!-- %local.emphasis.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='firstterm.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='firstterm' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:word.char.mix'/>
+ </xsd:choice>
+ <!-- (%word.char.mix;)* -->
+
+ <!-- to GlossEntry or other explanation -->
+ <xsd:attributeGroup ref='db:linkend.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:firstterm.role.attrib'/>
+ <!-- %local.firstterm.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='foreignphrase.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='foreignphrase' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:foreignphrase.role.attrib'/>
+ <!-- %local.foreignphrase.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='glossterm.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='glossterm' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- to GlossEntry if Glossterm used in text -->
+ <xsd:attributeGroup ref='db:linkend.attrib'/>
+
+ <!-- BaseForm: Provides the form of GlossTerm to be used
+ for indexing -->
+ <xsd:attribute name='baseform' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:glossterm.role.attrib'/>
+ <!-- %local.glossterm.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='phrase.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='phrase' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:phrase.role.attrib'/>
+ <!-- %local.phrase.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='quote.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='quote' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:quote.role.attrib'/>
+ <!-- %local.quote.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='ssscript.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:group name='subscriptContentModel'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:link.char.class'/>
+ <xsd:element ref='db:emphasis'/>
+ <xsd:element ref='db:replaceable'/>
+ <xsd:element ref='db:symbol'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:group ref='db:base.char.class'/>
+ <xsd:group ref='db:other.char.class'/>
+ </xsd:choice>
+ <!-- (#PCDATA
+ | %link.char.class;
+ | emphasis
+ | replaceable
+ | symbol
+ | inlinegraphic
+ | inlinemediaobject
+ | %base.char.class;
+ | %other.char.class;)* -->
+
+</xsd:group>
+
+<xsd:complexType name='subscript' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:subscriptContentModel'/>
+ </xsd:sequence>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:ssscript.role.attrib'/>
+ <!-- %local.ssscript.attrib; -->
+</xsd:complexType>
+
+<xsd:complexType name='superscript' mixed='true'>
+ <xsd:sequence>
+ <xsd:group ref='db:subscriptContentModel'/>
+ </xsd:sequence>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:ssscript.role.attrib'/>
+ <!-- %local.ssscript.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='trademark.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='trademark' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <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:other.char.class'/>
+ <xsd:element ref='db:inlinegraphic'/>
+ <xsd:element ref='db:inlinemediaobject'/>
+ <xsd:element ref='db:emphasis'/>
+ </xsd:choice>
+ <!-- (#PCDATA
+ | %link.char.class;
+ | %tech.char.class;
+ | %base.char.class;
+ | %other.char.class;
+ | inlinegraphic
+ | inlinemediaobject
+ | emphasis)* -->
+
+ <!-- Class: More precisely identifies the item the element names -->
+ <xsd:attribute name='class' use='default' value='trade'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='service'/>
+ <xsd:enumeration value='trade'/>
+ <xsd:enumeration value='registered'/>
+ <xsd:enumeration value='copyright'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:trademark.role.attrib'/>
+ <!-- %local.trademark.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='wordasword.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='wordasword' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:word.char.mix'/>
+ </xsd:choice>
+ <!-- (%word.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:wordasword.role.attrib'/>
+ <!-- %local.wordasword.attrib; -->
+</xsd:complexType>
+
+<!-- Links and cross-references ........................................... -->
+
+<xsd:attributeGroup name='link.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='link' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element -->
+ <xsd:attribute name='endterm' type='xsd:IDREF'/>
+
+ <!-- to linked-to object -->
+ <xsd:attributeGroup ref='db:linkendreq.attrib'/>
+
+ <!-- Type: Freely assignable parameter -->
+ <xsd:attribute name='type' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:link.role.attrib'/>
+ <!-- %local.link.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='olink.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='olink' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- TargetDocEnt: Name of an entity to be the target of the link -->
+ <!-- FIXME: -->
+ <!-- targetdocent ENTITY #IMPLIED -->
+
+ <!-- LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt -->
+ <xsd:attribute name='linkmode' type='xsd:IDREF'/>
+
+ <!-- LocalInfo: Information that may be passed to ModeSpec -->
+ <xsd:attribute name='localinfo' type='xsd:string'/>
+
+ <!-- Type: Freely assignable parameter -->
+ <xsd:attribute name='type' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:olink.role.attrib'/>
+ <!-- %local.olink.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='ulink.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='ulink' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ </xsd:choice>
+ <!-- (%para.char.mix;)* -->
+
+ <!-- URL: uniform resource locator; the target of the ULink -->
+ <xsd:attribute name='url' type='xsd:string' use='required'/>
+
+ <!-- Type: Freely assignable parameter -->
+ <xsd:attribute name='type' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:ulink.role.attrib'/>
+ <!-- %local.ulink.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='footnoteref.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='footnoteref'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <!-- to footnote content supplied elsewhere -->
+ <!-- FIXME: constrain -->
+ <xsd:attributeGroup ref='db:linkendreq.attrib'/>
+
+ <xsd:attributeGroup ref='db:label.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:footnoteref.role.attrib'/>
+ <!-- %local.footnoteref.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='xref.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='xref'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+
+ <!-- Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element -->
+ <xsd:attribute name='endterm' type='xsd:IDREF'/>
+
+ <!-- to linked-to object -->
+ <xsd:attributeGroup ref='db:linkendreq.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:xref.role.attrib'/>
+ <!-- %local.xref.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!-- Ubiquitous elements .................................................. -->
+
+<xsd:attributeGroup name='anchor.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='anchor'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attributeGroup ref='db:idreq.attrib'/>
+ <xsd:attributeGroup ref='db:pagenum.attrib'/>
+ <xsd:attributeGroup ref='db:remap.attrib'/>
+ <xsd:attributeGroup ref='db:xreflabel.attrib'/>
+ <xsd:attributeGroup ref='db:revisionflag.attrib'/>
+ <xsd:attributeGroup ref='db:effectivity.attrib'/>
+ <xsd:attributeGroup ref='db:anchor.role.attrib'/>
+ <!-- %local.anchor.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:attributeGroup name='beginpage.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='beginpage'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <!-- PageNum: Number of page that begins at this point -->
+ <xsd:attributeGroup ref='db:pagenum.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:beginpage.role.attrib'/>
+ <!-- %local.beginpage.attrib; -->
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!-- IndexTerms appear in the text flow for generating or linking an
+ index. -->
+
+<xsd:attributeGroup name='indexterm.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='indexterm'>
+ <xsd:sequence>
+ <xsd:element ref='db:primary' minOccurs='0' maxOccurs='1'/>
+ <xsd:choice minOccurs='0' maxOccurs='1'>
+ <xsd:sequence>
+ <xsd:element ref='db:secondary'/>
+ <xsd:choice minOccurs='0' maxOccurs='1'>
+ <xsd:sequence>
+ <xsd:element ref='db:tertiary'/>
+ <xsd:choice minOccurs='0' maxOccurs='1'>
+ <xsd:element ref='db:see'/>
+ <xsd:element ref='db:seealso' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:element ref='db:see'/>
+ <xsd:element ref='db:seealso' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ <xsd:element ref='db:see'/>
+ <xsd:element ref='db:seealso' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:sequence>
+ </xsd:choice>
+ </xsd:sequence>
+ <!-- (primary?, ((secondary, ((tertiary, (see|seealso+)?)
+ | see | seealso+)?) | see | seealso+)?) -->
+
+ <!-- Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both) -->
+ <xsd:attribute name='scope'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='all'/>
+ <xsd:enumeration value='global'/>
+ <xsd:enumeration value='local'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default) -->
+ <xsd:attribute name='significance' use='default' value='normal'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='preferred'/>
+ <xsd:enumeration value='normal'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges -->
+ <xsd:attribute name='class'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='singular'/>
+ <xsd:enumeration value='startofrange'/>
+ <xsd:enumeration value='endofrange'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+
+ <!-- StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm -->
+ <!-- FIXME: constrain -->
+ <xsd:attribute name='startref' type='xsd:IDREF'/>
+
+ <!-- Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs -->
+ <!-- FIXME: constrain -->
+ <xsd:attribute name='zone' type='xsd:IDREFS'/>
+ <xsd:attributeGroup ref='db:pagenum.attrib'/>
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:indexterm.role.attrib'/>
+ <!-- %local.indexterm.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='primsecter.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='primary' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:ndxterm.char.mix'/>
+ </xsd:choice>
+ <!-- (%ndxterm.char.mix;)* -->
+
+ <!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+ <xsd:attribute name='sortas' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:primsecter.role.attrib'/>
+ <!-- %local.primsecter.attrib; -->
+</xsd:complexType>
+
+<xsd:complexType name='secondary' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:ndxterm.char.mix'/>
+ </xsd:choice>
+ <!-- (%ndxterm.char.mix;)* -->
+ <!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+ <xsd:attribute name='sortas' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:primsecter.role.attrib'/>
+ <!-- %local.primsecter.attrib; -->
+</xsd:complexType>
+
+<xsd:complexType name='tertiary' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:ndxterm.char.mix'/>
+ </xsd:choice>
+ <!-- (%ndxterm.char.mix;)* -->
+
+ <!-- SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14" -->
+ <xsd:attribute name='sortas' type='xsd:string'/>
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:primsecter.role.attrib'/>
+ <!-- %local.primsecter.attrib; -->
+</xsd:complexType>
+
+<xsd:attributeGroup name='seeseealso.role.attrib'>
+ <xsd:attributeGroup ref='db:role.attrib'/>
+</xsd:attributeGroup>
+
+<xsd:complexType name='see' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:ndxterm.char.mix'/>
+ </xsd:choice>
+ <!-- (%ndxterm.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:seeseealso.role.attrib'/>
+ <!-- %local.seeseealso.attrib; -->
+</xsd:complexType>
+
+<xsd:complexType name='seealso' mixed='true'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:ndxterm.char.mix'/>
+ </xsd:choice>
+ <!-- (%ndxterm.char.mix;)* -->
+
+ <xsd:attributeGroup ref='db:common.attrib'/>
+ <xsd:attributeGroup ref='db:seeseealso.role.attrib'/>
+ <!-- %local.seeseealso.attrib; -->
+</xsd:complexType>
+
+<xsd:element name='abbrev' type='db:abbrev'/>
+<xsd:element name='abstract' type='db:abstract'/>
+<xsd:element name='accel' type='db:accel'/>
+<xsd:element name='ackno' type='db:ackno'/>
+<xsd:element name='acronym' type='db:acronym'/>
+<xsd:element name='action' type='db:action'/>
+<xsd:element name='address' type='db:address'/>
+<xsd:element name='affiliation' type='db:affiliation'/>
+<xsd:element name='alt' type='db:alt'/>
+<xsd:element name='anchor' type='db:anchor'/>
+<xsd:element name='answer' type='db:answer'/>
+<xsd:element name='application' type='db:application'/>
+<xsd:element name='area' type='db:area'/>
+<xsd:element name='areaset' type='db:areaset'/>
+<xsd:element name='areaspec' type='db:areaspec'/>
+<xsd:element name='arg' type='db:arg'/>
+<xsd:element name='articleinfo' type='db:articleinfo'/>
+<xsd:element name='artpagenums' type='db:artpagenums'/>
+<xsd:element name='attribution' type='db:attribution'/>
+<xsd:element name='audiodata' type='db:audiodata'/>
+<xsd:element name='audioobject' type='db:audioobject'/>
+<xsd:element name='author' type='db:author'/>
+<xsd:element name='authorblurb' type='db:authorblurb'/>
+<xsd:element name='authorgroup' type='db:authorgroup'/>
+<xsd:element name='authorinitials' type='db:authorinitials'/>
+<xsd:element name='beginpage' type='db:beginpage'/>
+<xsd:element name='biblioentry' type='db:biblioentry'/>
+<xsd:element name='bibliomisc' type='db:bibliomisc'/>
+<xsd:element name='bibliomixed' type='db:bibliomixed'/>
+<xsd:element name='bibliomset' type='db:bibliomset'/>
+<xsd:element name='biblioset' type='db:biblioset'/>
+<xsd:element name='blockquote' type='db:blockquote'/>
+<xsd:element name='bridgehead' type='db:bridgehead'/>
+<xsd:element name='callout' type='db:callout'/>
+<xsd:element name='calloutlist' type='db:calloutlist'/>
+<xsd:element name='caption' type='db:caption'/>
+<xsd:element name='caution' type='db:admonitionType'/>
+<xsd:element name='citation' type='db:citation'/>
+<xsd:element name='citerefentry' type='db:citerefentry'/>
+<xsd:element name='citetitle' type='db:citetitle'/>
+<xsd:element name='city' type='db:city'/>
+<xsd:element name='classname' type='db:classname'/>
+<xsd:element name='classsynopsis' type='db:classsynopsis'/>
+<xsd:element name='classsynopsisinfo' type='db:classsynopsisinfo'/>
+<xsd:element name='cmdsynopsis' type='db:cmdsynopsis'/>
+<xsd:element name='co' type='db:co'/>
+<xsd:element name='collab' type='db:collab'/>
+<xsd:element name='collabname' type='db:collabname'/>
+<xsd:element name='command' type='db:command'/>
+<xsd:element name='computeroutput' type='db:computeroutput'/>
+<xsd:element name='confdates' type='db:confdates'/>
+<xsd:element name='confgroup' type='db:confgroup'/>
+<xsd:element name='confnum' type='db:confnum'/>
+<xsd:element name='confsponsor' type='db:confsponsor'/>
+<xsd:element name='conftitle' type='db:conftitle'/>
+<xsd:element name='constant' type='db:constant'/>
+<xsd:element name='constructorsynopsis' type='db:constructorsynopsis'/>
+<xsd:element name='contractnum' type='db:contractnum'/>
+<xsd:element name='contractsponsor' type='db:contractsponsor'/>
+<xsd:element name='contrib' type='db:contrib'/>
+<xsd:element name='copyright' type='db:copyright'/>
+<xsd:element name='corpauthor' type='db:corpauthor'/>
+<xsd:element name='corpname' type='db:corpname'/>
+<xsd:element name='country' type='db:country'/>
+<xsd:element name='database' type='db:database'/>
+<xsd:element name='date' type='db:date'/>
+<xsd:element name='destructorsynopsis' type='db:destructorsynopsis'/>
+<xsd:element name='edition' type='db:edition'/>
+<xsd:element name='editor' type='db:editor'/>
+<xsd:element name='email' type='db:email'/>
+<xsd:element name='emphasis' type='db:emphasis'/>
+<xsd:element name='envar' type='db:envar'/>
+<xsd:element name='epigraph' type='db:epigraph'/>
+<xsd:element name='equation' type='db:equation'/>
+<xsd:element name='errorcode' type='db:errorcode'/>
+<xsd:element name='errorname' type='db:errorname'/>
+<xsd:element name='errortype' type='db:errortype'/>
+<xsd:element name='example' type='db:example'/>
+<xsd:element name='exceptionname' type='db:exceptionname'/>
+<xsd:element name='fax' type='db:fax'/>
+<xsd:element name='fieldsynopsis' type='db:fieldsynopsis'/>
+<xsd:element name='figure' type='db:figure'/>
+<xsd:element name='filename' type='db:filename'/>
+<xsd:element name='firstname' type='db:firstname'/>
+<xsd:element name='firstterm' type='db:firstterm'/>
+<xsd:element name='footnote' type='db:footnote'/>
+<xsd:element name='footnoteref' type='db:footnoteref'/>
+<xsd:element name='foreignphrase' type='db:foreignphrase'/>
+<xsd:element name='formalpara' type='db:formalpara'/>
+<xsd:element name='funcdef' type='db:funcdef'/>
+<xsd:element name='funcparams' type='db:funcparams'/>
+<xsd:element name='funcprototype' type='db:funcprototype'/>
+<xsd:element name='funcsynopsis' type='db:funcsynopsis'/>
+<xsd:element name='funcsynopsisinfo' type='db:funcsynopsisinfo'/>
+<xsd:element name='function' type='db:function'/>
+<xsd:element name='glossdef' type='db:glossdef'/>
+<xsd:element name='glossentry' type='db:glossentry'/>
+<xsd:element name='glosslist' type='db:glosslist'/>
+<xsd:element name='glosssee' type='db:glosssee'/>
+<xsd:element name='glossseealso' type='db:glossseealso'/>
+<xsd:element name='glossterm' type='db:glossterm'/>
+<xsd:element name='graphic' type='db:graphic'/>
+<xsd:element name='graphicco' type='db:graphicco'/>
+<xsd:element name='group' type='db:group'/>
+<xsd:element name='guibutton' type='db:guibutton'/>
+<xsd:element name='guiicon' type='db:guiicon'/>
+<xsd:element name='guilabel' type='db:guilabel'/>
+<xsd:element name='guimenu' type='db:guimenu'/>
+<xsd:element name='guimenuitem' type='db:guimenuitem'/>
+<xsd:element name='guisubmenu' type='db:guisubmenu'/>
+<xsd:element name='hardware' type='db:hardware'/>
+<xsd:element name='highlights' type='db:highlights'/>
+<xsd:element name='holder' type='db:holder'/>
+<xsd:element name='honorific' type='db:honorific'/>
+<xsd:element name='imagedata' type='db:imagedata'/>
+<xsd:element name='imageobject' type='db:imageobject'/>
+<xsd:element name='imageobjectco' type='db:imageobjectco'/>
+<xsd:element name='important' type='db:admonitionType'/>
+<xsd:element name='indexterm' type='db:indexterm'/>
+<xsd:element name='informalequation' type='db:informalequation'/>
+<xsd:element name='informalexample' type='db:informalexample'/>
+<xsd:element name='informalfigure' type='db:informalfigure'/>
+<xsd:element name='informaltable' type='db:informaltable'/>
+<xsd:element name='initializer' type='db:initializer'/>
+<xsd:element name='inlineequation' type='db:inlineequation'/>
+<xsd:element name='inlinegraphic' type='db:inlinegraphic'/>
+<xsd:element name='inlinemediaobject' type='db:inlinemediaobject'/>
+<xsd:element name='interface' type='db:interface'/>
+<xsd:element name='interfacename' type='db:interfacename'/>
+<xsd:element name='invpartnumber' type='db:invpartnumber'/>
+<xsd:element name='isbn' type='db:isbn'/>
+<xsd:element name='issn' type='db:issn'/>
+<xsd:element name='issuenum' type='db:issuenum'/>
+<xsd:element name='itemizedlist' type='db:itemizedlist'/>
+<xsd:element name='itermset' type='db:itermset'/>
+<xsd:element name='jobtitle' type='db:jobtitle'/>
+<xsd:element name='keycap' type='db:keycap'/>
+<xsd:element name='keycode' type='db:keycode'/>
+<xsd:element name='keycombo' type='db:keycombo'/>
+<xsd:element name='keysym' type='db:keysym'/>
+<xsd:element name='keyword' type='db:keyword'/>
+<xsd:element name='keywordset' type='db:keywordset'/>
+<xsd:element name='label' type='db:label'/>
+<xsd:element name='legalnotice' type='db:legalnotice'/>
+<xsd:element name='lineage' type='db:lineage'/>
+<xsd:element name='lineannotation' type='db:lineannotation'/>
+<xsd:element name='link' type='db:link'/>
+<xsd:element name='listitem' type='db:listitem'/>
+<xsd:element name='literal' type='db:literal'/>
+<xsd:element name='literallayout' type='db:literallayout'/>
+<xsd:element name='manvolnum' type='db:manvolnum'/>
+<xsd:element name='markup' type='db:markup'/>
+<xsd:element name='medialabel' type='db:medialabel'/>
+<xsd:element name='mediaobject' type='db:mediaobject'/>
+<xsd:element name='mediaobjectco' type='db:mediaobjectco'/>
+<xsd:element name='member' type='db:member'/>
+<xsd:element name='menuchoice' type='db:menuchoice'/>
+<xsd:element name='methodname' type='db:methodname'/>
+<xsd:element name='methodparam' type='db:methodparam'/>
+<xsd:element name='methodsynopsis' type='db:methodsynopsis'/>
+<xsd:element name='modespec' type='db:modespec'/>
+<xsd:element name='modifier' type='db:modifier'/>
+<xsd:element name='mousebutton' type='db:mousebutton'/>
+<xsd:element name='msg' type='db:msg'/>
+<xsd:element name='msgaud' type='db:msgaud'/>
+<xsd:element name='msgentry' type='db:msgentry'/>
+<xsd:element name='msgexplan' type='db:msgexplan'/>
+<xsd:element name='msginfo' type='db:msginfo'/>
+<xsd:element name='msglevel' type='db:msglevel'/>
+<xsd:element name='msgmain' type='db:msgmain'/>
+<xsd:element name='msgorig' type='db:msgorig'/>
+<xsd:element name='msgrel' type='db:msgrel'/>
+<xsd:element name='msgset' type='db:msgset'/>
+<xsd:element name='msgsub' type='db:msgsub'/>
+<xsd:element name='msgtext' type='db:msgtext'/>
+<xsd:element name='note' type='db:admonitionType'/>
+<xsd:element name='objectinfo' type='db:objectinfo'/>
+<xsd:element name='olink' type='db:olink'/>
+<xsd:element name='ooclass' type='db:ooclass'/>
+<xsd:element name='ooexception' type='db:ooexception'/>
+<xsd:element name='oointerface' type='db:oointerface'/>
+<xsd:element name='option' type='db:option'/>
+<xsd:element name='optional' type='db:optional'/>
+<xsd:element name='orderedlist' type='db:orderedlist'/>
+<xsd:element name='orgdiv' type='db:orgdiv'/>
+<xsd:element name='orgname' type='db:orgname'/>
+<xsd:element name='otheraddr' type='db:otheraddr'/>
+<xsd:element name='othercredit' type='db:othercredit'/>
+<xsd:element name='othername' type='db:othername'/>
+<xsd:element name='pagenums' type='db:pagenums'/>
+<xsd:element name='para' type='db:para'/>
+<xsd:element name='paramdef' type='db:paramdef'/>
+<xsd:element name='parameter' type='db:parameter'/>
+<xsd:element name='phone' type='db:phone'/>
+<xsd:element name='phrase' type='db:phrase'/>
+<xsd:element name='pob' type='db:pob'/>
+<xsd:element name='postcode' type='db:postcode'/>
+<xsd:element name='primary' type='db:primary'/>
+<xsd:element name='printhistory' type='db:printhistory'/>
+<xsd:element name='procedure' type='db:procedure'/>
+<xsd:element name='productname' type='db:productname'/>
+<xsd:element name='productnumber' type='db:productnumber'/>
+<xsd:element name='programlisting' type='db:programlisting'/>
+<xsd:element name='programlistingco' type='db:programlistingco'/>
+<xsd:element name='prompt' type='db:prompt'/>
+<xsd:element name='property' type='db:property'/>
+<xsd:element name='pubdate' type='db:pubdate'/>
+<xsd:element name='publisher' type='db:publisher'/>
+<xsd:element name='publishername' type='db:publishername'/>
+<xsd:element name='pubsnumber' type='db:pubsnumber'/>
+<xsd:element name='qandadiv' type='db:qandadiv'/>
+<xsd:element name='qandaentry' type='db:qandaentry'/>
+<xsd:element name='qandaset' type='db:qandaset'/>
+<xsd:element name='question' type='db:question'/>
+<xsd:element name='quote' type='db:quote'/>
+<xsd:element name='refentrytitle' type='db:refentrytitle'/>
+<xsd:element name='releaseinfo' type='db:releaseinfo'/>
+<xsd:element name='remark' type='db:remark'/>
+<xsd:element name='replaceable' type='db:replaceable'/>
+<xsd:element name='returnvalue' type='db:returnvalue'/>
+<xsd:element name='revdescription' type='db:revdescription'/>
+<xsd:element name='revhistory' type='db:revhistory'/>
+<xsd:element name='revision' type='db:revision'/>
+<xsd:element name='revnumber' type='db:revnumber'/>
+<xsd:element name='revremark' type='db:revremark'/>
+<xsd:element name='sbr' type='db:sbr'/>
+<xsd:element name='screen' type='db:screen'/>
+<xsd:element name='screenco' type='db:screenco'/>
+<xsd:element name='screeninfo' type='db:screeninfo'/>
+<xsd:element name='screenshot' type='db:screenshot'/>
+<xsd:element name='secondary' type='db:secondary'/>
+<xsd:element name='see' type='db:see'/>
+<xsd:element name='seealso' type='db:seealso'/>
+<xsd:element name='seg' type='db:seg'/>
+<xsd:element name='seglistitem' type='db:seglistitem'/>
+<xsd:element name='segmentedlist' type='db:segmentedlist'/>
+<xsd:element name='segtitle' type='db:segtitle'/>
+<xsd:element name='seriesvolnums' type='db:seriesvolnums'/>
+<xsd:element name='sgmltag' type='db:sgmltag'/>
+<xsd:element name='shortaffil' type='db:shortaffil'/>
+<xsd:element name='shortcut' type='db:shortcut'/>
+<xsd:element name='sidebar' type='db:sidebar'/>
+<xsd:element name='sidebarinfo' type='db:sidebarinfo'/>
+<xsd:element name='simpara' type='db:simpara'/>
+<xsd:element name='simplelist' type='db:simplelist'/>
+<xsd:element name='simplemsgentry' type='db:simplemsgentry'/>
+<xsd:element name='state' type='db:state'/>
+<xsd:element name='step' type='db:step'/>
+<xsd:element name='street' type='db:street'/>
+<xsd:element name='structfield' type='db:structfield'/>
+<xsd:element name='structname' type='db:structname'/>
+<xsd:element name='subject' type='db:subject'/>
+<xsd:element name='subjectset' type='db:subjectset'/>
+<xsd:element name='subjectterm' type='db:subjectterm'/>
+<xsd:element name='subscript' type='db:subscript'/>
+<xsd:element name='substeps' type='db:substeps'/>
+<xsd:element name='subtitle' type='db:subtitle'/>
+<xsd:element name='superscript' type='db:superscript'/>
+<xsd:element name='surname' type='db:surname'/>
+<xsd:element name='symbol' type='db:symbol'/>
+<xsd:element name='synopfragment' type='db:synopfragment'/>
+<xsd:element name='synopfragmentref' type='db:synopfragmentref'/>
+<xsd:element name='synopsis' type='db:synopsis'/>
+<xsd:element name='systemitem' type='db:systemitem'/>
+<xsd:element name='table' type='db:table'/>
+<xsd:element name='term' type='db:term'/>
+<xsd:element name='tertiary' type='db:tertiary'/>
+<xsd:element name='textobject' type='db:textobject'/>
+<xsd:element name='tip' type='db:admonitionType'/>
+<xsd:element name='title' type='db:title'/>
+<xsd:element name='titleabbrev' type='db:titleabbrev'/>
+<xsd:element name='token' type='db:token'/>
+<xsd:element name='trademark' type='db:trademark'/>
+<xsd:element name='type' type='db:type'/>
+<xsd:element name='ulink' type='db:ulink'/>
+<xsd:element name='userinput' type='db:userinput'/>
+<xsd:element name='varargs' type='db:varargs'/>
+<xsd:element name='variablelist' type='db:variablelist'/>
+<xsd:element name='varlistentry' type='db:varlistentry'/>
+<xsd:element name='varname' type='db:varname'/>
+<xsd:element name='videodata' type='db:videodata'/>
+<xsd:element name='videoobject' type='db:videoobject'/>
+<xsd:element name='void' type='db:void'/>
+<xsd:element name='volumenum' type='db:volumenum'/>
+<xsd:element name='warning' type='db:admonitionType'/>
+<xsd:element name='wordasword' type='db:wordasword'/>
+<xsd:element name='xref' type='db:xref'/>
+<xsd:element name='year' type='db:year'/>
+
+</xsd:schema>
--- /dev/null
+<!DOCTYPE xsd:schema SYSTEM
+ "http://www.w3.org/2000/10/XMLSchema.dtd" [
+
+<!ENTITY % p 'xsd:'>
+<!ENTITY % s ':xsd'>
+<!ENTITY % schemaAttrs "
+ xmlns:xsd CDATA #IMPLIED
+ xmlns:tbl CDATA #IMPLIED
+ xmlns:db CDATA #IMPLIED
+">
+]>
+<!-- Copyright 2000, Norman Walsh, Sun Microsystems. Schema
+ derived from DocBook DTD Copyright 1992-2000 HaL Computer.... -->
+
+<xsd:schema xmlns:xsd='http://www.w3.org/2000/10/XMLSchema'
+ xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
+ targetNamespace='http://www.oasis-open.org/tables/exchange/1.0'
+ xmlns:db='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
+ elementFormDefault='qualified'>
+
+ <xsd:import namespace='http://www.oasis-open.org/docbook/xmlschema/4.1.2'/>
+
+<!-- ...................................................................... -->
+<!-- DocBook XML Schema V4.1.2.3........................................... -->
+<!-- ...................................................................... -->
+<!-- Copyright 2000, Norman Walsh, Sun Microsystems. Schema
+ derived from DocBook DTD Copyright 1992-2000 HaL Computer.... -->
+
+<!-- ...................................................................... -->
+<!-- The Table Model ...................................................... -->
+
+<xsd:redefine schemaLocation='soextblx.xsd'>
+ <!-- declare some extension attributes; these are referenced in -->
+ <!-- soextblx.xsd, but locally defined as empty -->
+ <!-- this doesn't work in xsv ... -->
+ <!--
+ <xsd:attributeGroup name='tbl.entry.att'>
+ <xsd:attribute ref='tbl.entry.att'/>
+ <xsd:attribute name='role' type='xsd:string'/>
+ </xsd:attributeGroup>
+ -->
+
+ <!-- re-declare the entryType type as an extension of the original -->
+ <!-- entryType declared in soextblx.xsd -->
+ <xsd:complexType name='entryType' mixed='true'>
+ <xsd:complexContent>
+ <xsd:extension base='tbl:entryType'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:group ref='db:para.char.mix'/>
+ <xsd:group ref='db:tabentry.mix'/>
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+</xsd:redefine>
+
+</xsd:schema>
--- /dev/null
+<!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
+">
+]>
+<!-- ...................................................................... -->
+<!-- DocBook XML Schema V4.1.2.3........................................... -->
+<!-- ...................................................................... -->
+
+<!-- Copyright 2000 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Sun Microsystems, Inc, and the Organization for the
+ Advancement of Structured Information Standards (OASIS).
+
+ $Id$
+-->
+
+<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:tbl='http://www.oasis-open.org/tables/exchange/1.0'
+ xmlns:xml='http://www.w3.org/XML/1998/namespace'
+ elementFormDefault='qualified'>
+
+<xsd:include schemaLocation="dbnotn.xsd"/>
+<xsd:include schemaLocation="dbpool.xsd"/>
+<xsd:include schemaLocation="dbhier.xsd"/>
+
+</xsd:schema>
--- /dev/null
+<!DOCTYPE xsd:schema SYSTEM
+ "http://www.w3.org/2000/10/XMLSchema.dtd" [
+
+<!ENTITY % p 'xsd:'>
+<!ENTITY % s ':xsd'>
+<!ENTITY % schemaAttrs "
+ xmlns:tbl CDATA #IMPLIED
+">
+]>
+<!-- Copyright 2000, Norman Walsh, Sun Microsystems. Schema
+ derived from DocBook DTD Copyright 1992-2000 HaL Computer.... -->
+
+<xsd:schema xmlns:xsd='http://www.w3.org/2000/10/XMLSchema'
+ targetNamespace='http://www.oasis-open.org/tables/exchange/1.0'
+ xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
+ elementFormDefault='qualified'>
+
+<xsd:simpleType name='yesorno'>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='0'/>
+ <xsd:enumeration value='1'/>
+ </xsd:restriction>
+</xsd:simpleType>
+
+<xsd:attributeGroup name='table.att'/>
+<xsd:attributeGroup name='tgroup.att'/>
+<xsd:attributeGroup name='colspec.att'/>
+<xsd:attributeGroup name='thead.att'/>
+<xsd:attributeGroup name='tbody.att'/>
+<xsd:attributeGroup name='row.att'/>
+<xsd:attributeGroup name='entry.att'/>
+
+<xsd:complexType name="tableType">
+ <xsd:attribute name='frame'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='top'/>
+ <xsd:enumeration value='bottom'/>
+ <xsd:enumeration value='topbot'/>
+ <xsd:enumeration value='all'/>
+ <xsd:enumeration value='sides'/>
+ <xsd:enumeration value='none'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name='colsep' type='tbl:yesorno'/>
+ <xsd:attribute name='rowsep' type='tbl:yesorno'/>
+ <xsd:attributeGroup ref='tbl:table.att'/>
+</xsd:complexType>
+
+<xsd:complexType name='tgroup'>
+ <xsd:sequence>
+ <xsd:element ref='tbl:colspec' minOccurs='0' maxOccurs='unbounded'/>
+ <xsd:element ref='tbl:thead' minOccurs='0' maxOccurs='1'/>
+ <xsd:element ref='tbl:tbody'/>
+ </xsd:sequence>
+ <xsd:attribute name='cols' type='xsd:integer' use='required'/>
+ <xsd:attribute name='colsep' type='tbl:yesorno'/>
+ <xsd:attribute name='rowsep' type='tbl:yesorno'/>
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ <xsd:enumeration value='justify'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='tbl:tgroup.att'/>
+</xsd:complexType>
+
+<xsd:complexType name='colspec'>
+ <!-- EMPTY -->
+ <xsd:complexContent>
+ <xsd:restriction base='xsd:anyType'>
+ <xsd:attribute name='colnum' type='xsd:integer'/>
+ <xsd:attribute name='colname' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='colwidth' type='xsd:string'/>
+ <xsd:attribute name='colsep' type='tbl:yesorno'/>
+ <xsd:attribute name='rowsep' type='tbl:yesorno'/>
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ <xsd:enumeration value='justify'/>
+ <xsd:enumeration value='char'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name='char' type='xsd:string'/>
+ <xsd:attribute name='charoff' type='xsd:NMTOKEN'/>
+ <xsd:attributeGroup ref='tbl:colspec.att'/>
+ </xsd:restriction>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name='thead'>
+ <xsd:choice>
+ <xsd:element ref='tbl:row' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ <xsd:attribute name='valign'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='top'/>
+ <xsd:enumeration value='middle'/>
+ <xsd:enumeration value='bottom'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='tbl:thead.att'/>
+</xsd:complexType>
+
+<xsd:complexType name='tbody'>
+ <xsd:choice>
+ <xsd:element ref='tbl:row' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ <xsd:attribute name='valign'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='top'/>
+ <xsd:enumeration value='middle'/>
+ <xsd:enumeration value='bottom'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='tbl:tbody.att'/>
+</xsd:complexType>
+
+<xsd:complexType name='row'>
+ <xsd:choice>
+ <xsd:element ref='tbl:entry' minOccurs='1' maxOccurs='unbounded'/>
+ </xsd:choice>
+ <xsd:attribute name='rowsep' type='tbl:yesorno'/>
+ <xsd:attribute name='valign'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='top'/>
+ <xsd:enumeration value='middle'/>
+ <xsd:enumeration value='bottom'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='tbl:row.att'/>
+</xsd:complexType>
+
+<xsd:complexType name="entryType">
+ <xsd:attribute name='colname' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='namest' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='nameend' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='morerows' type='xsd:integer'/>
+ <xsd:attribute name='colsep' type='tbl:yesorno'/>
+ <xsd:attribute name='rowsep' type='tbl:yesorno'/>
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ <xsd:enumeration value='justify'/>
+ <xsd:enumeration value='char'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name='char' type='xsd:string'/>
+ <xsd:attribute name='charoff' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='valign'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='top'/>
+ <xsd:enumeration value='middle'/>
+ <xsd:enumeration value='bottom'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='tbl:entry.att'/>
+</xsd:complexType>
+
+<!--
+<xsd:complexType name='entry' mixed='true'>
+ <xsd:choice>
+ <xsd:any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+ </xsd:choice>
+
+ <xsd:attribute name='colname' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='namest' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='nameend' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='morerows' type='xsd:integer'/>
+ <xsd:attribute name='colsep' type='tbl:yesorno'/>
+ <xsd:attribute name='rowsep' type='tbl:yesorno'/>
+ <xsd:attribute name='align'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='left'/>
+ <xsd:enumeration value='right'/>
+ <xsd:enumeration value='center'/>
+ <xsd:enumeration value='justify'/>
+ <xsd:enumeration value='char'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name='char' type='xsd:string'/>
+ <xsd:attribute name='charoff' type='xsd:NMTOKEN'/>
+ <xsd:attribute name='valign'>
+ <xsd:simpleType>
+ <xsd:restriction base='xsd:string'>
+ <xsd:enumeration value='top'/>
+ <xsd:enumeration value='middle'/>
+ <xsd:enumeration value='bottom'/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref='tbl:entry.att'/>
+</xsd:complexType>
+-->
+
+<xsd:element name='tgroup' type='tbl:tgroup'/>
+<xsd:element name='colspec' type='tbl:colspec'/>
+<xsd:element name='thead' type='tbl:thead'/>
+<xsd:element name='tbody' type='tbl:tbody'/>
+<xsd:element name='row' type='tbl:row'/>
+<xsd:element name='entry' type='tbl:entryType'/>
+
+</xsd:schema>
--- /dev/null
+<!DOCTYPE article
+ PUBLIC "-//Norman Walsh//DTD Simplified DocBook XML V4.1.2.4//EN"
+ "http://www.nwalsh.com/docbook/simple/4.1.2.4/sdocbook.dtd" [
+<!ENTITY % local.article.attrib
+"xmlns CDATA #IMPLIED
+xmlns:xsi CDATA #IMPLIED
+xmlns:tbl CDATA #IMPLIED
+xsi:schemaLocation CDATA #IMPLIED
+">
+<!ENTITY conduitzip "xmlconduit11.zip">
+<!ENTITY trade "(TM)">
+]>
+<article xmlns='http://www.oasis-open.org/docbook/xmlschema/4.1.2'
+ xmlns:xsi='http://www.w3.org/2000/10/XMLSchema-instance'
+ xmlns:tbl='http://www.oasis-open.org/tables/exchange/1.0'
+ xsi:schemaLocation='
+ http://www.oasis-open.org/docbook/xmlschema/4.1.2
+ docbook.xsd'>
+
+<!-- This article is included as a test case for the XML Schema -->
+
+<articleinfo>
+<title>XML From Your Palm</title>
+<pubdate>11 Oct 2000</pubdate>
+<releaseinfo role="meta">
+$Id$
+</releaseinfo>
+
+<revhistory>
+<revision>
+<revnumber>1.2</revnumber>
+<date>11 Oct 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Documented significant changes to the conduits.</revremark>
+</revision>
+<revision>
+<revnumber>1.1</revnumber>
+<date>15 Aug 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Fixed broken internal links.</revremark>
+</revision>
+<revision>
+<revnumber>1.0</revnumber>
+<date>15 Aug 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>First public release.</revremark>
+</revision>
+<revision>
+<revnumber>0.4</revnumber>
+<date>15 Aug 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Added SyncXmlTD and SyncXmlMB</revremark>
+</revision>
+<revision>
+<revnumber>0.3</revnumber>
+<date>14 Aug 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Added link table</revremark>
+</revision>
+<revision>
+<revnumber>0.2</revnumber>
+<date>14 Aug 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>A few revisions; spellcheck</revremark>
+</revision>
+<revision>
+<revnumber>0.1</revnumber>
+<date>08 Aug 2000</date>
+<authorinitials>ndw</authorinitials>
+<revremark>Initial draft</revremark>
+</revision>
+</revhistory>
+
+<author><firstname>Norman</firstname><surname>Walsh</surname>
+<affiliation>
+<jobtitle>Staff Engineer</jobtitle>
+<orgname>Sun Microsystems, XML Technology Center</orgname>
+</affiliation>
+<authorblurb>
+<para>Norman Walsh, a Staff Engineer in Sun's XML Technology Center,
+is chair of the OASIS DocBook Technical Committee and serves on a number
+of W3C Working Groups, including the XML Core, XSL, and XML Schema WGs.</para>
+</authorblurb>
+</author>
+
+<copyright>
+ <year>2000</year>
+ <holder>Sun Microsystems, Inc.</holder>
+</copyright>
+</articleinfo>
+
+<para>This article was updated on 11 Oct 2000 to reflect changes made
+in the version 1.1 conduits. For a quick summary of the changes in version
+1.1, see <xref linkend="app11"/>; for upgrading instructions see
+<xref linkend="upg11"/>.</para>
+
+<para>If you're like me, you rely on your Palm™ organizer to
+keep a semblance of order in your life. Without it, I wouldn't get to
+meetings on time, or remember to participate in telephone conference
+calls<footnote><para>Ok, it's definitely a mixed blessing, I see that,
+but... :-)</para></footnote>, or know how to reach my colleagues when
+I'm on the road.</para>
+
+<para>Unfortunately, for all its benefits, I still have some troubles
+with my Palm. Among them, the fact that I can't sync my Palm address
+book with other information management tools that are important to
+me (e.g., my
+<ulink role="linktable" url="http://bbdb.sourceforge.net/">BBDB</ulink><footnote><para>I have since been informed of
+<ulink url="http://home.rochester.rr.com/tsdeweese/SyncBBDB.html">SyncBBDB</ulink>,
+but I'm still working on other XML-based information management tools.</para>
+</footnote>
+in Emacs) or publish the calendar on the web so that I can share
+my calendar with my manager and colleagues.</para>
+
+<para>Now, I'm sure I could have gone out and found solutions for some
+of these problems, for example, one of the web calendar syncing tools,
+but when I hear a problem described that involves open-format information
+exchange and multiple output formats, one answer springs immediately to
+mind: XML.</para>
+
+<para>So, what I wanted was some way to sync my Palm to my desktop
+machine using XML so that I could transform the XML into other formats
+and sync it with other formats.</para>
+
+<section><title>Initial Forays</title>
+
+<para>This was very much a personal project, so the amount of time and
+energy that I had to spend on it was directly influenced by the number
+and priority of other projects that I had going on.</para>
+
+<para>Initially I looked into the possibility of reverse engineering
+the PDB file formats that the Palm Desktop application created when syncing
+my Palm. It didn't take me long to abandon that course. I'm sure it
+could be done, but how tedious!</para>
+
+<para>Using the gcc-based conduit tools, or buying one of the commercial
+conduit toolkits, crossed my mind. But that looked like a pretty steep
+learning curve, too.</para>
+
+<para>Next, I found the
+<ulink role="linktable" url="http://sourceforge.net/projects/pilot-link">pilot-link</ulink>
+package. This package included
+<command>pilot-file</command>, which produced a much more readable dump
+of a Palm database. Armed with this dump, I was able to reverse
+engineer the Datebook format well enough to produce an XML
+version. But that only solved half the problem because I couldn't see
+any way to rebuild the file header information that would be necessary
+to sync the database back into my Palm. Besides, when I looked at the
+<command>pilot-file</command> dump of the Addressbook, I was reminded
+of just how tedious it had been to reverse engineer the
+Datebook.</para>
+
+<para>Looking at the source for <command>pilot-xfer</command>
+convinced me that everything I needed was in there. The next logical
+step was to hack pilot-xfer so that it read/wrote XML instead of
+PDBs.</para>
+
+<para>That was back sometime in January or February. Before I got around
+to hacking on <command>pilot-xfer</command>, I started running Linux
+on my desktop and discovered
+<ulink role="linktable" url="http://www.moshpit.org/pilotmgr/">PilotManager</ulink>.
+<ulink url="http://www.moshpit.org/pilotmgr/">PilotManager</ulink> is
+essentially a Perl/TK interface wrapped around the
+<ulink url="http://sourceforge.net/projects/pilot-link">pilot-link</ulink>
+tools that provides a complete Palm syncing tool for Unix. More importantly,
+it provides an extensible framework for writing conduits of your own.
+</para>
+</section>
+
+<section><title>PilotManager</title>
+
+<para><xref linkend="pmfig"/> shows the PilotManager application after
+a sync operation. As you can see, I made a couple of changes to the
+Addressbook on the desktop (specifically by editing
+<filename>.xmlAddr</filename>) and updated my schedule on the Pilot.
+These changes were synced appropriately.</para>
+
+<figure id="pmfig"><title>The PilotManager Interface</title>
+<mediaobject>
+<imageobject>
+<imagedata fileref="images/pilot-manager.png"/>
+</imageobject>
+</mediaobject>
+</figure>
+
+<para>I should note at this point that the PilotManager application
+runs on Linux, Solaris, and presumably other Unixes, but does not
+run on Windows, as far as I know. The code that underlies PilotManager:
+Perl, Perl/Tk, and pilot-link have all been ported, so it's theoretically
+a simple matter of porting, but I haven't tried it.</para>
+
+</section>
+
+<section><title>PilotManager Conduits</title>
+
+<para>The PilotManager application includes several conduits. I
+modeled the SyncXml
+Conduits off the standard <filename>SyncAB</filename> conduit.</para>
+
+<para>In simplest terms, the PilotManager conduit interface is a set
+of hashes. A sync operation reads information from the Palm and returns
+each record as a hash. Appropriately constructed hashes can be passed
+back to update the Palm.</para>
+
+<para>If the conduit can provide enough information about each record
+(its fields and what fields constitute a match, etc.), as the
+Addressbook and Datebook conduits can, PilotManager takes care of most
+of the bookkeeping for us.</para>
+
+<section id="upg11"><title>Upgrading the Conduits</title>
+
+<para>If you have been using the version 1.0
+SyncXML Conduits, you are <emphasis>strongly
+encouraged</emphasis> to upgrade. In addition to a few new features,
+the version 1.1 conduits contain several bug fixes. Note, in
+particular, that the version 1.0 <filename>SyncXmlTB</filename>
+conduit is fundamentally broken; it does not preserve the due date of
+Todo items across a sync!</para>
+
+<para>Before you upgrade the conduits, make sure that you make a
+complete backup of your Palm using the <filename>Backup</filename>
+conduit or whatever method you normally use for full backups. This
+will allow you to recover in case of catastrophic error.</para>
+
+<para>Perform a sync operation using the version 1.0
+SyncXml Conduits.</para>
+
+<para>Examine the configuration of each conduit and record the
+location of the XML databases. Generally, these will be in
+<filename>~/.xmlAddr</filename>, <filename>~/.xmlDate</filename>,
+etc., but the conduits may have been configured differently.</para>
+
+<para>Download the
+<ulink url="&conduitzip;">SyncXml Conduits 1.1</ulink> package
+and unpack it somewhere.</para>
+
+<para>Install the version 1.1 conduits:</para>
+
+<itemizedlist>
+<listitem><para>Replace the version 1.0
+<filename>SyncXml{AB,DB,MB,TB}.pm</filename> files on your system with
+the version 1.1 files of the same name
+</para></listitem>
+<listitem><para>Install the <emphasis>new file</emphasis>
+<filename>SyncXml.pm</filename> in the same location.
+</para></listitem>
+<listitem><para>Install the new DTDs as well.
+</para></listitem>
+</itemizedlist>
+
+<para>Now <emphasis>delete the XML databases</emphasis>. In order to do this
+successfully, you must delete both the XML files (stored at the locations you
+recorded a moment ago) and the PilotManager binary
+databases. The binary databases are usually
+<filename>~/.pilotmgr/SyncXmlAB/addr.db</filename>,
+<filename>~/.pilotmgr/SyncXmlDB/date.db</filename>,
+<filename>~/.pilotmgr/SyncXmlMB/memo.db</filename>, and
+<filename>~/.pilotmgr/SyncXmlTB/todo.db</filename>. Naturally, if you
+configured PilotManager to use another directory, they will be elsewhere.
+Make sure you delete both the XML files and the binary files before you
+continue.</para>
+
+<para>Do not delete the <filename>SyncXml{AB,DB,MB,TB}</filename>
+directories. As near as I can tell, PilotManager only creates them
+when a new conduit is added.</para>
+
+<para>Now restart PilotManager and re-sync using the
+SyncXML Conduits. Because the local databases do
+not exist, the conduits will copy all of the data off your Palm and
+rebuild the local databases.</para>
+
+<para>The version 1.1 conduits have several new configuration options; you
+may want to examine the configuration of each new conduit.</para>
+
+<section><title>Installing the Conduits</title>
+
+<para>Before you begin, make sure that you make a complete backup of
+your Palm using whatever method you normally use for full
+backups. This will allow you to recover in case of catastrophic
+error.</para>
+
+<para>If you have not already done so, install
+<ulink url="http://www.moshpit.org/pilotmgr/">PilotManager</ulink> and make
+sure that it's working. This will guarantee that you have appropriate
+versions of Perl and other supporting tools in place.</para>
+
+<para>Get the Perl <literal>XML::Parser</literal> and
+<literal>XML::DOM</literal> modules from
+<ulink url="http://cpan.perl.com/">CPAN</ulink> and install them, if you do
+not already have them installed.</para>
+
+<para>Download the
+<ulink role="linktable" url="&conduitzip;">SyncXml Conduits</ulink> package
+and unpack it somewhere.</para>
+
+<para>Install the conduits by placing the
+<filename>SyncXml.pm</filename> and
+<filename>SyncXml{AB,DB,MB,TB}.pm</filename> files
+where PilotManager will find them. Exactly where that is depends on how
+you've installed PilotManager. On my system, that would be in
+<filename>/usr/lib/perl5/PilotMgr</filename> or in
+<filename>~/.pilotmgr</filename>.</para>
+
+<para>Install the DTDs by placing them where the SyncXml conduits will
+find them. I recommend that you install them in
+<filename>lib/schema</filename> under wherever you installed the
+conduits, but you can also put them directly in the conduits directory or in
+<filename>~/.pilotmgr/SyncXml{AB,DB,MB,TB}</filename>.
+</para>
+
+<para>When all the installation is complete, run
+<command>pilot-manager</command>. It will announce the discovery of the
+new conduits. Under the <literal>File/Properties...</literal> menu, add
+the new conduits to the list of active conduits and they'll get used the
+next time you sync.</para>
+</section>
+
+</section>
+
+<section><title>SyncXmlAB</title>
+
+<para>The SyncXmlAB conduit syncs your Palm AddressBook with your
+desktop.</para>
+
+<section><title>Customizing SyncXmlAB</title>
+
+<para>Configuring <literal>SyncXmlAB</literal> reveals the panel
+shown in <xref linkend="config-ab"/>:</para>
+
+<figure id="config-ab"><title>The SyncXmlAB Configuration Panel</title>
+<mediaobject>
+<imageobject>
+<imagedata fileref="images/config-ab.png"/>
+</imageobject>
+</mediaobject>
+</figure>
+
+<variablelist>
+<varlistentry><term>Enable user fields</term>
+<listitem><para>If this option is enabled, the <literal>Notes</literal>
+field of each Addressbook record is treated as structured text
+according to the conventions discussed in <xref linkend="userfields"/>.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>XML file:</term>
+<listitem><para>Identifies the location where the XML Addressbook file
+is to be stored. This file is used to sync with the Palm. Changes to
+this file will be reflected in the Palm at the next sync, and changes
+in the Palm will be written back to this file. </para></listitem>
+</varlistentry>
+<varlistentry><term>Validate:</term>
+<listitem><para>Identifies the location of the DTD to which the XML
+Addressbook file will refer. During first-time initialization, the
+conduit attempts to locate the DTD. If you subsequently move the DTD,
+or if you have installed it somewhere that the conduit does not look,
+you will have to update this value; otherwise, it's unlikely that
+you'll ever need to change this.</para></listitem>
+</varlistentry>
+</variablelist>
+
+</section>
+
+<section><title>Understanding the XML Address Book</title>
+
+<para>Syncing your Palm with the <literal>SyncXmlAB</literal> conduit,
+produces a single XML file, by default <filename>~/.xmlAddr</filename>.
+This file contains the complete Addressbook database. The PilotManager
+also keeps a binary representation of the database in
+<filename>~/.pilotmgr/SyncXmlAB/addr.db</filename>. If you want to delete
+the XML address book and resync from the Palm, delete both files.
+</para>
+
+<section><title>addressbook</title>
+
+<para>The root element of an Addressbook is <literal>addressbook</literal>.
+It identifies the version number of the XML file format and the name
+of the user. Attempts to sync the wrong user will generate a warning.
+If a future version of the conduit uses a different version number, the
+sync will abort so that you don't wind up with a horribly corrupted
+database.
+</para>
+</section>
+
+<section><title>categories, fields, and phones</title>
+
+<para>The Palm stores categories, field names, and phone number labels
+only once in the database, essentially as arrays. Each record in the
+database refers to the field name by offset into the appropriate array.
+</para>
+
+<para>Each of these label arrays is stored at the top of the XML file.
+If you change these labels, the effects will be global within the
+addressbook.</para>
+
+<para>Modify these fields with some caution because the conduit makes
+no effort to assure that the changes you've made are reasonable.</para>
+
+</section>
+
+<section><title>address</title>
+
+<para>Following the categories and other fields, each record appears
+in an <literal><address></literal> element. Each address is a fairly
+straightforward duplicate of the record from the Addressbook database.
+There are only a few issues to consider.
+</para>
+
+<section><title>Address IDs</title>
+
+<para>Internally, the Palm maintains a unique ID value for each
+record. The Palm IDs are not stored in the XML file because there
+would be no way to generate a new one on the desktop in order to add a
+record to the XML address book. Instead, a mapping is maintained
+between the XML ID values and the Palm unique IDs.</para>
+
+<para>To add a new address to the XML file, simply construct a new XML
+ID value that is unique within the XML address book. You do not need
+to consider the Palm unique IDs.</para>
+</section>
+
+<section><title>Phone labels</title>
+
+<para>The label value on each phone number is expected to match one of
+the labels in the top-level <literal><phones></literal> list.
+The sync will fail if it does not.</para>
+
+<para>The phone number identified as <quote>primary</quote> will be the one
+displayed on the address book summary screen.</para>
+
+</section>
+
+<section><title>Custom labels</title>
+
+<para>Labels on the custom fields are just a convenience for stylesheets
+and other processing tools. The fields are actually inserted into each
+record in the order presented, without regard to the labels.</para>
+
+</section>
+
+<section><title>Category</title>
+
+<para>The category value is expected to match one of
+the labels in the top-level <literal><categories></literal> list.
+The sync will fail if it does not.</para>
+
+</section>
+</section>
+</section>
+</section>
+
+<section><title>SyncXmlDB</title>
+
+<para>The SyncXmlDB conduit syncs your Palm DateBook with your
+desktop.</para>
+
+<section><title>Customizing SyncXmlDB</title>
+
+<para>Configuring <literal>SyncXmlDB</literal> reveals the panel
+shown in <xref linkend="config-db"/>:</para>
+
+<figure id="config-db"><title>The SyncXmlDB Configuration Panel</title>
+<mediaobject>
+<imageobject>
+<imagedata fileref="images/config-db.png"/>
+</imageobject>
+</mediaobject>
+</figure>
+
+<variablelist>
+<varlistentry><term>Enable user fields</term>
+<listitem><para>If this option is enabled, the <literal>Notes</literal>
+field of each Addressbook record is treated as structured text
+according to the conventions discussed in <xref linkend="userfields"/>.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>Write Calendar</term>
+<listitem><para>If this option is enabled, the <literal>Calendar</literal>
+file will be written. The Calendar file is a write-only, linear representation
+of the Palm Datebook.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>Enable DateBk4 extensions</term>
+<listitem><para>If this option is enabled, the conduit will attempt to
+decode the additional information stored in each appointment by
+the DateBk4 application. See <xref linkend="datebook-db4ext"/>.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>XML file:</term>
+<listitem><para>Identifies the location where the XML Datebook file
+is to be stored. This file is used to sync with the Palm. Changes to
+this file will be reflected in the Palm at the next sync, and changes
+in the Palm will be written back to this file. </para></listitem>
+</varlistentry>
+<varlistentry><term>Val. XML:</term>
+<listitem><para>Identifies the location of the DTD to which the XML
+Datebook file will refer. During first-time initialization, the
+conduit attempts to locate the DTD. If you subsequently move the DTD,
+or if you have installed it somewhere that the conduit does not look,
+you will have to update this value; otherwise, it's unlikely that
+you'll ever need to change this.</para></listitem>
+</varlistentry>
+<varlistentry><term>Calendar:</term>
+<listitem><para>Identifies the location where the Calendar will be written,
+if the <quote>Write Calendar</quote> option is enabled. This file is
+write-only, it is updated by a sync operation, but is not consulted. Any
+local changes made to this file will be lost at each sync.</para></listitem>
+</varlistentry>
+<varlistentry><term>Val. Cal.:</term>
+<listitem><para>Identifies the location of the DTD to which the XML
+Calendar file will refer. During first-time initialization, the
+conduit attempts to locate the DTD. If you subsequently move the DTD,
+or if you have installed it somewhere that the conduit does not look,
+you will have to update this value; otherwise, it's unlikely that
+you'll ever need to change this.</para></listitem>
+</varlistentry>
+<varlistentry><term>Cal Weeks:</term>
+<listitem><para>Identifies the number of weeks (starting with the
+first week of the current month) that should be copied to the
+Calendar file.</para></listitem>
+</varlistentry>
+<varlistentry><term>Use dummy days</term>
+<listitem><para>If this option is enabled, each week in the Calendar
+file will contain exactly seven days. So, for example, if the first of
+the month occurs on a Wednesday, "dummy days" will be inserted before
+the first to pad the week to seven days. Similarly, the last week in
+each month may be padded.</para>
+<para>Dummy days are only inserted in the Calendar file (not the Datebook
+XML file). They may simplify the task of writing stylesheets and other
+software designed to display the calendar.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</section>
+
+<section id="unddb"><title>Understanding the XML Date Book</title>
+
+<para>Syncing your Palm with the <literal>SyncXmlDB</literal> conduit,
+produces one or two XML files. It always produces an XML version of
+the date book, by default <filename>~/.xmlDate</filename>. It may also
+produce a calendar, by default <filename>~/.xmlCalendar</filename>.
+</para>
+
+<para>The XML version of the date book contains the complete Datebook
+database. The PilotManager
+also keeps a binary representation of the database in
+<filename>~/.pilotmgr/SyncXmlDB/date.db</filename>. If you want to delete
+the XML date book and resync from the Palm, delete both files.
+</para>
+
+<para>The date book is a compact representation of your schedule.
+Each entry in your schedule appears once in the date book, with start
+and end dates, repeating information, and exceptions all represented
+compactly as properties of the event. The events do not even appear in
+chronological order, necessarily, with in the date book.</para>
+
+<para>While this compact representation is useful for syncing, it is
+difficult to produce your typical <quote>month at a glance</quote> or
+other traditional calendar view from it. Events must be sorted into
+proper chronological order, repeating events must be generated (with
+exceptions), etc.</para>
+
+<para>In order to make the problem of constructing a calendar view more
+tractable for stylesheets, the conduit can also produce a calendar file.
+In this file, every month, week, and day is represented in chronological
+order. The XSL stylesheet, <filename>calendar.xsl</filename>, distributed
+with the conduits demonstrates how this file may be transformed.</para>
+
+<section><title>datebook</title>
+
+<para>The root element of a Datebook is <literal>datebook</literal>.
+It identifies the version number of the XML file format, the name
+of the user, the day of the week that the user identifies as the
+start of the week, and the date that that the file was produced.</para>
+
+<para>Attempts to sync the wrong user will generate a warning.
+If a future version of the conduit uses a different version number, the
+sync will abort so that you don't wind up with a horribly corrupted
+database.
+</para>
+</section>
+
+<section><title>appointment</title>
+
+<para>Each record appears
+in an <literal><appointment></literal> element. Each appointment
+is a fairly
+straightforward duplicate of the record from the Addressbook database.
+There are only a few issues to consider.
+</para>
+
+<section><title>Appointment IDs</title>
+
+<para>Internally, the Palm maintains a unique ID value for each
+record. The Palm IDs are not stored in the XML file because there
+would be no way to generate a new one on the desktop in order to add a
+record to the XML date book. Instead, a mapping is maintained
+between the XML ID values and the Palm unique IDs.</para>
+
+<para>To add a new appointment to the XML file, simply construct a new XML
+ID value that is unique within the XML date book. You do not need
+to consider the Palm unique IDs.</para>
+</section>
+
+<section><title>Category</title>
+
+<para>The builtin date book on the Palm (or at least, on some of the
+Palm devices) does not support categories on appointments. But in fact the
+database does contain them. Some applications allow you to edit the
+category values on the Palm. This is reflected in a category on each
+appointment.</para>
+
+<para>The category value is expected to match one of
+the labels in the top-level <literal><categories></literal> list.
+The sync will fail if it does not.</para>
+
+</section>
+
+<section id="datebook-db4ext"><title>DateBk4 Extensions</title>
+
+<para>The DateBk4 application from
+<ulink url="http://www.pimlicosoftware.com/">Pimlico Software</ulink> adds
+several useful features to the Palm datebook. In order to maintain
+complete compatibility with the built-in datebook database, these
+additional features are encoded in the Note field of each appointment.
+</para>
+
+<para>If you enable DateBk4 extensions, this information is decoded
+in the XML Datebook and Calendar files. This allows you to observe the
+icons, time zones, and other DateBk4 extensions. Note, however, that these
+are "read only" values in the XML file; if you change them, the changes
+will not be synced to the Palm.</para>
+</section>
+
+</section>
+</section>
+</section>
+
+<section><title>SyncXmlMB</title>
+
+<para>The SyncXmlMB conduit syncs your Palm Memos with your
+desktop.</para>
+
+<section><title>Customizing SyncXmlMB</title>
+
+<para>Configuring <literal>SyncXmlMB</literal> reveals the panel
+shown in <xref linkend="config-mb"/>:</para>
+
+<figure id="config-mb"><title>The SyncXmlMB Configuration Panel</title>
+<mediaobject>
+<imageobject>
+<imagedata fileref="images/config-mb.png"/>
+</imageobject>
+</mediaobject>
+</figure>
+
+<variablelist>
+<varlistentry><term>XML file:</term>
+<listitem><para>Identifies the location where the XML Memo file
+is to be stored. This file is used to sync with the Palm. Changes to
+this file will be reflected in the Palm at the next sync, and changes
+in the Palm will be written back to this file.</para></listitem>
+</varlistentry>
+<varlistentry><term>Validate:</term>
+<listitem><para>Identifies the location of the DTD to which the XML
+Memo file will refer. During first-time initialization, the
+conduit attempts to locate the DTD. If you subsequently move the DTD,
+or if you have installed it somewhere that the conduit does not look,
+you will have to update this value; otherwise, it's unlikely that
+you'll ever need to change this.</para></listitem>
+</varlistentry>
+</variablelist>
+</section>
+
+<section><title>Understanding the XML Memo List</title>
+
+<para>Syncing your Palm with the <literal>SyncXmlMB</literal> conduit,
+produces a single XML file, by default <filename>~/.xmlMemo</filename>.
+This file contains the complete Memo database. The PilotManager
+also keeps a binary representation of the database in
+<filename>~/.pilotmgr/SyncXmlMB/memo.db</filename>. If you want to delete
+the XML Memo list and resync from the Palm, delete both files.
+</para>
+
+<section><title>memobook</title>
+
+<para>The root element of an Memo list is <literal>memobook</literal>.
+It identifies the version number of the XML file format and the name
+of the user. Attempts to sync the wrong user will generate a warning.
+If a future version of the conduit uses a different version number, the
+sync will abort so that you don't wind up with a horribly corrupted
+database.
+</para>
+</section>
+
+<section><title>categories</title>
+
+<para>The Palm stores categories
+only once in the database, essentially as an array. Each record in the
+database refers to the category name by offset into this single array.
+</para>
+
+<para>The category label array is stored at the top of the XML file.
+If you change these labels, the effects will be global within the
+Memo list.</para>
+
+<para>Modify these fields with some caution because the conduit makes
+no effort to assure that the changes you've made are reasonable.</para>
+
+</section>
+
+<section><title>memo</title>
+
+<para>Following the categories, each record appears
+in a <literal><memo></literal> element. Each memo is a fairly
+straightforward duplicate of the record from the Memo database.
+There are only a few issues to consider.
+</para>
+
+<section><title>Memo IDs</title>
+
+<para>Internally, the Palm maintains a unique ID value for each
+record. The Palm IDs are not stored in the XML file because there
+would be no way to generate a new one on the desktop in order to add a
+record to the XML memo list. Instead, a mapping is maintained
+between the XML ID values and the Palm unique IDs.</para>
+
+<para>To add a new memo to the XML file, simply construct a new XML
+ID value that is unique within the XML memobook. You do not need
+to consider the Palm unique IDs.</para>
+</section>
+
+<section><title>Category</title>
+
+<para>The category value is expected to match one of
+the labels in the top-level <literal><categories></literal> list.
+The sync will fail if it does not.</para>
+
+</section>
+</section>
+</section>
+</section>
+
+<section><title>SyncXmlTB</title>
+
+<para>The SyncXmlTB conduit syncs your Palm Todo list with your
+desktop.</para>
+
+<section><title>Customizing SyncXmlTB</title>
+
+<para>Configuring <literal>SyncXmlTB</literal> reveals the panel
+shown in <xref linkend="config-tb"/>:</para>
+
+<figure id="config-tb"><title>The SyncXmlTB Configuration Panel</title>
+<mediaobject>
+<imageobject>
+<imagedata fileref="images/config-tb.png"/>
+</imageobject>
+</mediaobject>
+</figure>
+
+<variablelist>
+<varlistentry><term>Enable user fields</term>
+<listitem><para>If this option is enabled, the <literal>Notes</literal>
+field of each Todo record is treated as structured text
+according to the conventions discussed in <xref linkend="userfields"/>.
+</para></listitem>
+</varlistentry>
+<varlistentry><term>Enable DateBk4 extensions</term>
+<listitem><para>If this option is enabled, the conduit will attempt to
+decode the additional information stored in each appointment by
+the DateBk4 application. See <xref linkend="todo-db4ext"/>.</para>
+</listitem>
+</varlistentry>
+<varlistentry><term>XML file:</term>
+<listitem><para>Identifies the location where the XML Memo file
+is to be stored. This file is used to sync with the Palm. Changes to
+this file will be reflected in the Palm at the next sync, and changes
+in the Palm will be written back to this file.</para></listitem>
+</varlistentry>
+<varlistentry><term>Validate:</term>
+<listitem><para>Identifies the location of the DTD to which the XML
+Todo file will refer. During first-time initialization, the
+conduit attempts to locate the DTD. If you subsequently move the DTD,
+or if you have installed it somewhere that the conduit does not look,
+you will have to update this value; otherwise, it's unlikely that
+you'll ever need to change this.</para></listitem>
+</varlistentry>
+</variablelist>
+</section>
+
+<section><title>Understanding the XML Todo List</title>
+
+<para>Syncing your Palm with the <literal>SyncXmlTB</literal> conduit,
+produces a single XML file, by default <filename>~/.xmlTodo</filename>.
+This file contains the complete Todo database. The PilotManager
+also keeps a binary representation of the database in
+<filename>~/.pilotmgr/SyncXmlTB/todo.db</filename>. If you want to delete
+the XML Todo list and resync from the Palm, delete both files.
+</para>
+
+<section><title>todobook</title>
+
+<para>The root element of an Todo list is <literal>todobook</literal>.
+It identifies the version number of the XML file format and the name
+of the user. Attempts to sync the wrong user will generate a warning.
+If a future version of the conduit uses a different version number, the
+sync will abort so that you don't wind up with a horribly corrupted
+database.
+</para>
+</section>
+
+<section><title>categories</title>
+
+<para>The Palm stores categories
+only once in the database, essentially as an array. Each record in the
+database refers to the category name by offset into this single array.
+</para>
+
+<para>The category label array is stored at the top of the XML file.
+If you change these labels, the effects will be global within the
+Todo list.</para>
+
+<para>Modify these fields with some caution because the conduit makes
+no effort to assure that the changes you've made are reasonable.</para>
+
+</section>
+
+<section><title>todo</title>
+
+<para>Following the categories, each record appears
+in a <literal><todo></literal> element. Each memo is a fairly
+straightforward duplicate of the record from the Memo database.
+There are only a few issues to consider.
+</para>
+
+<section><title>Todo IDs</title>
+
+<para>Internally, the Palm maintains a unique ID value for each
+record. The Palm IDs are not stored in the XML file because there
+would be no way to generate a new one on the desktop in order to add a
+record to the XML todo list. Instead, a mapping is maintained
+between the XML ID values and the Palm unique IDs.</para>
+
+<para>To add a new todo to the XML file, simply construct a new XML
+ID value that is unique within the XML todobook. You do not need
+to consider the Palm unique IDs.</para>
+</section>
+
+<section><title>Category</title>
+
+<para>The category value is expected to match one of
+the labels in the top-level <literal><categories></literal> list.
+The sync will fail if it does not.</para>
+
+</section>
+
+<section id="todo-db4ext"><title>DateBk4 Extensions</title>
+
+<para>The DateBk4 application from
+<ulink url="http://www.pimlicosoftware.com/">Pimlico Software</ulink> adds
+several useful features to the Palm todo list. In order to maintain
+complete compatibility with the built-in todo database, these
+additional features are encoded in the Note field of each todo entry.
+</para>
+
+<para>If you enable DateBk4 extensions, this information is decoded
+in the XML Todo file. This allows you to observe the
+icons, alarm times, and other DateBk4 extensions. Note, however, that these
+are "read only" values in the XML file; if you change them, the changes
+will not be synced to the Palm.</para>
+</section>
+
+</section>
+</section>
+</section>
+
+<section id="userfields"><title>User Fields</title>
+
+<para>In order to store additional information in my Palm in a
+quasi-structured fashion, I've adopted a convention for the 'Note'
+field.</para>
+
+<para>If the <quote>Note</quote> field contains the line
+<quote>user-fields:</quote>, then all of the following lines that
+begin <quote>field-name:</quote> are <quote>user fields</quote>. If
+you enable user fields, these are parsed into the XML. For example, a
+DateBook entry with the following Note:</para>
+
+<programlisting>
+ user-fields:
+ loc: Bay Area
+ url: http://.../
+ type: business
+
+ other notes
+</programlisting>
+
+<para>will be parsed into the XML as:</para>
+
+<programlisting>
+<![CDATA[
+ <user-field name="loc">Bay Area</user-field>
+ <user-field name="url">http://.../</user-field>
+ <user-field name="type">business</user-field>
+ <note>user-fields:
+ loc: Bay Area
+ url: http://.../
+ type: business
+
+ other notes
+]]></programlisting>
+
+<para>Note that the user-fields are <quote>write-only</quote> in the
+database. If you want to change them on the desktop side, edit the value
+of the <quote>Note</quote> field directly.</para>
+
+<para>This is necessary because some applications, such as the <ulink
+role="linktable" url="http://www.pimlicosoftware.com/">Pimlico Software</ulink> DateBk*
+applications, also use the notes field in semantically important
+ways. Leading and trailing whitespace associated with removing the
+user-fields from the <quote>Note</quote>, often resulted in apparent
+changes that caused the Palm to appear out-of-sync in ways that made
+the syncing unreliable.</para>
+
+<section><title>Speaking of Pimlico...</title>
+
+<para>The enhanced DateBook application included in the HandSpring
+Visor™ is actually a licensed subset of Pimlico's DateBk3 application.
+This application, and its successor DateBk4, use structured values at
+the very beginning of the <quote>Note</quote>s field to hold information
+about semantics not included in the database proper (floating events, time
+zones, etc.).</para>
+
+<para>On the Palm, these values are invisible, but if you look in the
+XML database, you'll see them at the beginning of the <quote>Note</quote>
+of each augmented appointment.</para>
+
+<para>In order to preserve these characteristics, it is vital that you
+do not edit or delete these values, or insert notes before them.</para>
+</section>
+
+</section>
+
+<section><title>Making An HTML Calendar</title>
+
+<para>One of the benefits I touted at the beginning of this article
+was multiple output formats, for example the ability to publish my
+schedule for others to
+see. Included in the <ulink url="&conduitzip;">SyncXml Conduits</ulink> package
+is an XSL stylesheet that produces an HTML calendar from the
+<filename>.xmlCalendar</filename> file.</para>
+
+<para>After syncing, I run:</para>
+
+<programlisting>
+xt .xmlCalendar /projects/pilot/conduits/calendar.xsl sched.html
+</programlisting>
+
+<para>This produces a calendar like the one shown in
+<xref linkend="netscape"/>.</para>
+
+<figure id="netscape"><title>An HTML Schedule</title>
+<mediaobject>
+<imageobject>
+<imagedata fileref="images/netscape.png"/>
+</imageobject>
+</mediaobject>
+</figure>
+
+<section><title>User Fields and HTML</title>
+
+<para>The <filename>calendar.xsl</filename> stylesheet supports
+several user fields:</para>
+
+<itemizedlist>
+<listitem><para>The <literal>class</literal> and <literal>type</literal>
+user fields determine foreground and background colors on the month-view
+of the calendar.
+(Specifically, appointments with an <quote>undecided</quote> class are
+highlighted and appointments with <literal>type</literal>s of
+<quote>business</quote>, <quote>personal</quote>, and
+<quote>holiday</quote> are colored differently.</para></listitem>
+<listitem><para>If the user field <literal>url</literal> is set, then the
+appointment will include a link to that URL.</para></listitem>
+<listitem><para>If the user field <literal>loc</literal> is set, then the
+location will appear parenthetically after the description.</para></listitem>
+<listitem><para>If the user field <literal>locurl</literal> is set, then
+the location will be a hypertext link to that URL.</para></listitem>
+</itemizedlist>
+
+<para>In addition, a few user fields are usually ignored. You can
+make them significant by setting the stylesheet parameter
+<literal>ignoreuserfields</literal> to 0. With these additional
+fields:</para>
+
+<itemizedlist>
+<listitem><para>Weekly appointments with the user field <literal>type</literal>
+set to <quote>personal</quote> are not displayed. (This prevents my weekly
+reminder to take out the garbage on Monday mornings from appearing on my
+web calendar!)</para></listitem>
+<listitem><para>Appointments that <emphasis>do not</emphasis> have a
+user field of <literal>type</literal> are suppressed. This effectively
+makes untyped appointments <quote>personal</quote> by default.</para>
+</listitem>
+</itemizedlist>
+
+</section>
+</section>
+
+<section><title>Conclusion</title>
+
+<para>I'm by no means done hacking my XML address book and schedule.
+I still have to write the XML BBDB/Palm merging tool and I may decided
+to write a stylesheet for putting my address book online.</para>
+
+<para>I hope some of you find the SyncXml Conduits useful and feel
+inspired to introduce XML into your applications. Let me know!</para>
+
+</section>
+</section>
+
+<appendix id="app11"><title>What's New in Version 1.1</title>
+
+<para>The following significant changes were introduced in
+<ulink url="&conduitzip;">version 1.1</ulink>
+of the SyncXml conduits:</para>
+
+<itemizedlist>
+<listitem><para>Fixed a <emphasis>significant</emphasis> bug in
+<filename>SyncXmlTB</filename>. The version 1.0 conduit does not properly
+sync dated Todo items. The due date is lost!
+</para></listitem>
+
+<listitem><para>Fixed a significant bug in
+<filename>SyncXmlDB</filename>. The version 1.0 conduit does not properly
+sync items that repeat <literal>MonthlyByDay</literal> or
+<literal>MonthlyByDate</literal>.
+</para></listitem>
+
+<listitem><para>Fixed a significant bug in
+<filename>SyncXmlAB</filename>. The version 1.0 conduit sometimes syncs
+the "show in list" phone number incorrectly.
+</para></listitem>
+
+<listitem><para>Improved the encoding of international and XML markup
+characters. There were a few places in the version 1.0 conduits where
+markup characters were not escaped, leading to XML files that could not
+be loaded.
+</para>
+</listitem>
+
+<listitem><para>Added support for DateBk4 extensions to the Datebook and
+Todo databases.
+</para></listitem>
+
+<listitem><para>Provided user-interface configuration for previously
+"hidden" preferences.
+</para></listitem>
+
+<listitem><para>Added support for categories in the Datebook.
+</para></listitem>
+
+<listitem><para>Added <literal>sortByCompany</literal> and
+<literal>country</literal> attributes to the Addressbook.
+</para></listitem>
+
+<listitem><para>Added <literal>sortByAlpha</literal>
+attribute to the Memo file.
+</para></listitem>
+
+<listitem><para>Added <literal>sortByPriority</literal>
+attribute to the Todo file.
+</para></listitem>
+
+<listitem><para>Added support for DateBk4 icons to the Calendar
+stylesheet. The distribution also includes a simple-minded Perl
+script that can construct XPM icon files from the DateBk4 icon
+memo.
+</para></listitem>
+
+</itemizedlist>
+</appendix>
+
+</article>