<?xml version="1.0" encoding="UTF-8"?>
<!--
  /=====================================================================\ 
  |  LaTeXML-structure.rnc                                              |
  | RelaxNG model for LaTeXML generated documents                       |
  |=====================================================================|
  | Part of LaTeXML:                                                    |
  |  Public domain software, produced as part of work done by the       |
  |  United States Government & not subject to copyright in the US.     |
  |=====================================================================|
  | Bruce Miller <bruce.miller@nist.gov>                        #_#     |
  | http://dlmf.nist.gov/LaTeXML/                              (o o)    |
  \=========================================================ooo==U==ooo=/
-->
<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!-- ====================================================================== -->
  <define name="document">
    <element name="document">
      <a:documentation>The document root.</a:documentation>
      <ref name="document_attributes"/>
      <ref name="document_model"/>
    </element>
  </define>
  <define name="document.body.class">
    <a:documentation>The content allowable as the main body of the document.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="paragraph"/>
      <ref name="subsubsection"/>
      <ref name="subsection"/>
      <ref name="section"/>
      <ref name="chapter"/>
      <ref name="part"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="document_attributes">
    <a:documentation>Attributes for \elementref{document}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="document_model">
    <a:documentation>Content model for \elementref{document}.</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="FrontMatter.class"/>
        <ref name="SectionalFrontMatter.class"/>
        <ref name="Meta.class"/>
        <ref name="titlepage"/>
      </choice>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="document.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="part">
    <element name="part">
      <a:documentation>A part within a document.</a:documentation>
      <ref name="part_attributes"/>
      <ref name="part_model"/>
    </element>
  </define>
  <define name="part.body.class">
    <a:documentation>The content allowable as the main body of a part.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="paragraph"/>
      <ref name="subsubsection"/>
      <ref name="subsection"/>
      <ref name="section"/>
      <ref name="chapter"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="part_attributes">
    <a:documentation>Attributes for \elementref{part}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="part_model">
    <a:documentation>Content model for \elementref{part}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="part.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="chapter">
    <element name="chapter">
      <a:documentation>A Chapter within a document.</a:documentation>
      <ref name="chapter_attributes"/>
      <ref name="chapter_model"/>
    </element>
  </define>
  <define name="chapter.body.class">
    <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="paragraph"/>
      <ref name="subsubsection"/>
      <ref name="subsection"/>
      <ref name="section"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="chapter_attributes">
    <a:documentation>Attributes for \elementref{chapter}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="chapter_model">
    <a:documentation>Content model for \elementref{chapter}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="chapter.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="section">
    <element name="section">
      <a:documentation>A Section within a document.</a:documentation>
      <ref name="section_attributes"/>
      <ref name="section_model"/>
    </element>
  </define>
  <define name="section.body.class">
    <a:documentation>The content allowable as the main body of a section.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="paragraph"/>
      <ref name="subsubsection"/>
      <ref name="subsection"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="section_attributes">
    <a:documentation>Attributes for \elementref{section}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="section_model">
    <a:documentation>Content model for \elementref{section}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="section.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="subsection">
    <element name="subsection">
      <a:documentation>A Subsection within a document.</a:documentation>
      <ref name="subsection_attributes"/>
      <ref name="subsection_model"/>
    </element>
  </define>
  <define name="subsection.body.class">
    <a:documentation>The content allowable as the main body of a subsection.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="paragraph"/>
      <ref name="subsubsection"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="subsection_attributes">
    <a:documentation>Attributes for \elementref{subsection}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="subsection_model">
    <a:documentation>Content model for \elementref{subsection}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="subsection.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="subsubsection">
    <element name="subsubsection">
      <a:documentation>A Subsubsection within a document.</a:documentation>
      <ref name="subsubsection_attributes"/>
      <ref name="subsubsection_model"/>
    </element>
  </define>
  <define name="subsubsection.body.class">
    <a:documentation>The content allowable as the main body of a subsubsection.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="paragraph"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="subsubsection_attributes">
    <a:documentation>Attributes for \elementref{subsubsection}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="subsubsection_model">
    <a:documentation>Content model for \elementref{subsubsection}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="subsubsection.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="paragraph">
    <element name="paragraph">
      <a:documentation>A Paragraph within a document. This corresponds to a `formal' marked, possibly labelled
LaTeX Paragraph,  in distinction from an unlabelled logical paragraph.</a:documentation>
      <ref name="paragraph_attributes"/>
      <ref name="paragraph_model"/>
    </element>
  </define>
  <define name="paragraph.body.class">
    <a:documentation>The content allowable as the main body of a paragraph.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="paragraph_attributes">
    <a:documentation>Attributes for \elementref{paragraph}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="paragraph_model">
    <a:documentation>Content model for \elementref{paragraph}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="paragraph.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="subparagraph">
    <element name="subparagraph">
      <a:documentation>A Subparagraph within a document.</a:documentation>
      <ref name="subparagraph_attributes"/>
      <ref name="subparagraph_model"/>
    </element>
  </define>
  <define name="subparagraph.body.class">
    <a:documentation>The content allowable as the main body of a subparagraph.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="subparagraph_attributes">
    <a:documentation>Attributes for \elementref{subparagraph}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="subparagraph_model">
    <a:documentation>Content model for \elementref{subparagraph}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="subparagraph.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="slide">
    <element name="slide">
      <a:documentation>A Slide within a slideshow.
The model currently doesn't enforce this, but the idea is that
a slideshow document can contain section headings, but all
real content should be confined to slides.</a:documentation>
      <ref name="slide_attributes"/>
      <ref name="slide_model"/>
    </element>
  </define>
  <define name="slide.body.class">
    <a:documentation>The content allowable as the main body of a \elementref{slide}.</a:documentation>
    <ref name="Para.model"/>
  </define>
  <define name="slide_attributes">
    <a:documentation>Attributes for \elementref{slide}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="slide_model">
    <a:documentation>Content model for \elementref{slide}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="slide.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="sidebar">
    <element name="sidebar">
      <a:documentation>A Sidebar; a short section-like object that floats outside the main flow.</a:documentation>
      <ref name="sidebar_attributes"/>
      <ref name="sidebar_model"/>
    </element>
  </define>
  <define name="sidebar.body.class">
    <a:documentation>The content allowable as the main body of a \elementref{sidebar}.</a:documentation>
    <ref name="Para.model"/>
  </define>
  <define name="sidebar_attributes">
    <a:documentation>Attributes for \elementref{sidebar}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="sidebar_model">
    <a:documentation>Content model for \elementref{sidebar}.</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="FrontMatter.class"/>
        <ref name="SectionalFrontMatter.class"/>
      </choice>
    </zeroOrMore>
    <zeroOrMore>
      <choice>
        <ref name="sidebar.body.class"/>
        <ref name="BackMatter.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="appendix">
    <element name="appendix">
      <a:documentation>An Appendix within a document.</a:documentation>
      <ref name="appendix_attributes"/>
      <ref name="appendix_model"/>
    </element>
  </define>
  <define name="appendix.body.class">
    <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="subparagraph"/>
      <ref name="paragraph"/>
      <ref name="subsubsection"/>
      <ref name="subsection"/>
      <ref name="section"/>
      <ref name="slide"/>
      <ref name="sidebar"/>
    </choice>
  </define>
  <define name="appendix_attributes">
    <a:documentation>Attributes for \elementref{appendix}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="appendix_model">
    <a:documentation>Content model for \elementref{appendix}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="appendix.body.class"/>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="bibliography">
    <element name="bibliography">
      <a:documentation>A Bibliography within a document.</a:documentation>
      <ref name="bibliography_attributes"/>
      <ref name="bibliography_model"/>
    </element>
  </define>
  <define name="bibliography.body.class">
    <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="biblist"/>
    </choice>
  </define>
  <define name="bibliography_attributes">
    <a:documentation>Attributes for \elementref{bibliography}.</a:documentation>
    <ref name="Sectional.attributes"/>
    <ref name="Listing.attributes"/>
    <optional>
      <attribute name="files">
        <a:documentation>the list of bib files used to create the bibliography.</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="bibstyle">
        <a:documentation>the bibliographic style to be used to format the bibliography
(presumably a BibTeX bst file name)</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="citestyle">
        <a:documentation>the citation style to be used when citing items from the bibliography</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="sort">
        <a:documentation>whether the bibliographic items should be sorted or in order of citation.</a:documentation>
        <data type="boolean"/>
      </attribute>
    </optional>
  </define>
  <define name="bibliography_model">
    <a:documentation>Content model for \elementref{bibliography}.</a:documentation>
    <zeroOrMore>
      <ref name="FrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="bibliography.body.class"/>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="index">
    <element name="index">
      <a:documentation>An Index within a document.</a:documentation>
      <ref name="index_attributes"/>
      <ref name="index_model"/>
    </element>
  </define>
  <define name="index.body.class">
    <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="indexlist"/>
    </choice>
  </define>
  <define name="index_attributes">
    <a:documentation>Attributes for \elementref{index}.</a:documentation>
    <ref name="Sectional.attributes"/>
    <ref name="Listing.attributes"/>
    <optional>
      <attribute name="role">
        <a:documentation>The kind of index (obsolete?)</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="index_model">
    <a:documentation>Content model for \elementref{index}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="index.body.class"/>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="indexlist">
    <element name="indexlist">
      <a:documentation>A heirarchical index structure typically generated during postprocessing
from the collection of \elementref{indexmark} in the document
(or document collection).</a:documentation>
      <ref name="indexlist_attributes"/>
      <ref name="indexlist_model"/>
    </element>
  </define>
  <define name="indexlist_attributes">
    <a:documentation>Attributes for \elementref{indexlist}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="ID.attributes"/>
  </define>
  <define name="indexlist_model">
    <a:documentation>Content model for \elementref{indexlist}.</a:documentation>
    <zeroOrMore>
      <ref name="indexentry"/>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="indexentry">
    <element name="indexentry">
      <a:documentation>An entry in an \elementref{indexlist} consisting of a phrase, references to
points in the document where the phrase was found, and possibly
a nested \elementref{indexlist} represented index levels below this one.</a:documentation>
      <ref name="indexentry_attributes"/>
      <ref name="indexentry_model"/>
    </element>
  </define>
  <define name="indexentry_attributes">
    <a:documentation>Attributes for \elementref{indexentry}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="ID.attributes"/>
  </define>
  <define name="indexentry_model">
    <a:documentation>Content model for \elementref{indexentry}.</a:documentation>
    <ref name="indexphrase"/>
    <optional>
      <ref name="indexrefs"/>
    </optional>
    <optional>
      <ref name="indexlist"/>
    </optional>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="indexrefs">
    <element name="indexrefs">
      <a:documentation>A container for the references (\elementref{ref}) to where an \elementref{indexphrase} was
encountered in the document. The model is Inline to allow
arbitrary text, in addition to the expected \elementref{ref}'s.</a:documentation>
      <ref name="indexrefs_attributes"/>
      <ref name="indexrefs_model"/>
    </element>
  </define>
  <define name="indexrefs_attributes">
    <a:documentation>Attributes for \elementref{indexrefs}.</a:documentation>
    <ref name="Common.attributes"/>
  </define>
  <define name="indexrefs_model">
    <a:documentation>Content model for \elementref{indexrefs}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="glossary">
    <element name="glossary">
      <a:documentation>An Glossary within a document.</a:documentation>
      <ref name="glossary_attributes"/>
      <ref name="glossary_model"/>
    </element>
  </define>
  <define name="glossary.body.class">
    <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
    <choice>
      <ref name="Para.model"/>
      <ref name="glossarylist"/>
    </choice>
  </define>
  <define name="glossary_attributes">
    <a:documentation>Attributes for \elementref{glossary}.</a:documentation>
    <ref name="Sectional.attributes"/>
    <ref name="Listing.attributes"/>
    <optional>
      <attribute name="role">
        <a:documentation>The kind of glossary</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="glossary_model">
    <a:documentation>Content model for \elementref{glossary}.</a:documentation>
    <zeroOrMore>
      <ref name="SectionalFrontMatter.class"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="glossary.body.class"/>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="glossarylist">
    <element name="glossarylist">
      <a:documentation>A glossary list typically generated during postprocessing
from the collection of \elementref{glossaryphrase}'s in the document
(or document collection).</a:documentation>
      <ref name="glossarylist_attributes"/>
      <ref name="glossarylist_model"/>
    </element>
  </define>
  <define name="glossarylist_attributes">
    <a:documentation>Attributes for \elementref{glossarylist}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="ID.attributes"/>
  </define>
  <define name="glossarylist_model">
    <a:documentation>Content model for \elementref{glossarylist}.
The model allows loose \elementref{glossaryphrase}'s for data definitions,
but they are not displayed as part of the list.</a:documentation>
    <zeroOrMore>
      <ref name="glossaryentry"/>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="glossaryentry">
    <element name="glossaryentry">
      <a:documentation>An entry in an \elementref{glossarylist} consisting of a phrase,
(one or more, presumably in increasing detail?), possibly a definition,
and references to points in the document where the phrase was found.</a:documentation>
      <ref name="glossaryentry_attributes"/>
      <ref name="glossaryentry_model"/>
    </element>
  </define>
  <define name="glossaryentry_attributes">
    <a:documentation>Attributes for \elementref{glossaryentry}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="ID.attributes"/>
    <optional>
      <attribute name="role">
        <a:documentation>The kind of glossary</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="key">
        <a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="glossaryentry_model">
    <a:documentation>Content model for \elementref{glossaryentry}.</a:documentation>
    <zeroOrMore>
      <ref name="glossaryphrase"/>
    </zeroOrMore>
    <optional>
      <ref name="indexrefs"/>
    </optional>
  </define>
  <!-- ====================================================================== -->
  <define name="title">
    <element name="title">
      <a:documentation>The title of a document, section or similar document structure container.</a:documentation>
      <ref name="title_attributes"/>
      <ref name="title_model"/>
    </element>
  </define>
  <define name="title_attributes">
    <a:documentation>Attributes for \elementref{title}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="Fontable.attributes"/>
    <ref name="Colorable.attributes"/>
    <ref name="Backgroundable.attributes"/>
  </define>
  <define name="title_model">
    <a:documentation>Content model for \elementref{title},
basically Inline.model with tag included (normally, but not necessarily, tag would come first).</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="tag"/>
        <text/>
        <ref name="Inline.class"/>
        <ref name="Misc.class"/>
        <ref name="Meta.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="toctitle">
    <element name="toctitle">
      <a:documentation>The short form of a title, for use in tables of contents or similar.</a:documentation>
      <ref name="toctitle_attributes"/>
      <ref name="toctitle_model"/>
    </element>
  </define>
  <define name="toctitle_attributes">
    <a:documentation>Attributes for \elementref{toctitle}.</a:documentation>
    <ref name="Common.attributes"/>
  </define>
  <define name="toctitle_model">
    <a:documentation>Content model for \elementref{toctitle}.</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="tag"/>
        <text/>
        <ref name="Inline.class"/>
        <ref name="Misc.class"/>
        <ref name="Meta.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="subtitle">
    <element name="subtitle">
      <a:documentation>A subtitle, or secondary title.</a:documentation>
      <ref name="subtitle_attributes"/>
      <ref name="subtitle_model"/>
    </element>
  </define>
  <define name="subtitle_attributes">
    <a:documentation>Attributes for \elementref{subtitle}.</a:documentation>
    <ref name="Common.attributes"/>
  </define>
  <define name="subtitle_model">
    <a:documentation>Content model for \elementref{subtitle}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="creator">
    <element name="creator">
      <a:documentation>Generalized document creator.</a:documentation>
      <ref name="creator_attributes"/>
      <ref name="creator_model"/>
    </element>
  </define>
  <define name="Person.class">
    <a:documentation>The content allowed in authors, editors, etc.</a:documentation>
    <choice>
      <ref name="personname"/>
      <ref name="contact"/>
    </choice>
  </define>
  <define name="creator_attributes">
    <a:documentation>Attributes for \elementref{creator}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
    <optional>
      <attribute name="role">
        <a:documentation>indicates the role of the person in creating the docment.
Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
        <choice>
          <value>author</value>
          <value>editor</value>
          <value>translator</value>
          <value>contributor</value>
          <value>translator</value>
          <text/>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="before">
        <a:documentation>specifies opening text to display before this creator in a formatted titlepage.
This would be typically appear outside the author information, like "and".</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="after">
        <a:documentation>specifies closing text, punctuation or conjunction to display after
this creator in a formatted titlepage.</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="creator_model">
    <a:documentation>Content model for \elementref{creator}.</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="Person.class"/>
        <ref name="Misc.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!--
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NOTE: This should be aligned with Bibname.
  -->
  <define name="personname">
    <element name="personname">
      <a:documentation>A person's name.</a:documentation>
      <ref name="personname_attributes"/>
      <ref name="personname_model"/>
    </element>
  </define>
  <define name="personname_attributes">
    <a:documentation>Attributes for \elementref{personname}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="Refable.attributes"/>
  </define>
  <define name="personname_model">
    <a:documentation>Content model for \elementref{personname}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <define name="contact">
    <element name="contact">
      <a:documentation>Generalized contact information for a document creator.
Note that this element can be repeated to give different types 
of contact information (using \attr{role}) for the same creator.</a:documentation>
      <ref name="contact_attributes"/>
      <ref name="contact_model"/>
    </element>
  </define>
  <define name="contact_attributes">
    <a:documentation>Attributes for \elementref{contact}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
    <ref name="Refable.attributes"/>
    <optional>
      <attribute name="role">
        <a:documentation>indicates the type of contact information contained.
Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
        <choice>
          <value>affiliation</value>
          <value>address</value>
          <value>current_address</value>
          <value>email</value>
          <value>url</value>
          <value>thanks</value>
          <value>dedicatory</value>
          <text/>
        </choice>
      </attribute>
    </optional>
  </define>
  <define name="contact_model">
    <a:documentation>Content model for \elementref{contact}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="date">
    <element name="date">
      <a:documentation>Generalized document date.
Note that this element can be repeated to give the dates
of different events (using \attr{role}) for the same document.</a:documentation>
      <ref name="date_attributes"/>
      <ref name="date_model"/>
    </element>
  </define>
  <define name="date_attributes">
    <a:documentation>Attributes for \elementref{date}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
    <optional>
      <attribute name="role">
        <a:documentation>indicates the relevance of the date to the document.
Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
        <choice>
          <value>creation</value>
          <value>conversion</value>
          <value>posted</value>
          <value>received</value>
          <value>revised</value>
          <value>accepted</value>
          <text/>
        </choice>
      </attribute>
    </optional>
  </define>
  <define name="date_model">
    <a:documentation>Content model for \elementref{date}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="abstract">
    <element name="abstract">
      <a:documentation>A document abstract.</a:documentation>
      <ref name="abstract_attributes"/>
      <ref name="abstract_model"/>
    </element>
  </define>
  <define name="abstract_attributes">
    <a:documentation>Attributes for \elementref{abstract}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
  </define>
  <define name="abstract_model">
    <a:documentation>Content model for \elementref{abstract}.</a:documentation>
    <ref name="Block.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="acknowledgements">
    <element name="acknowledgements">
      <a:documentation>Acknowledgements for the document.</a:documentation>
      <ref name="acknowledgements_attributes"/>
      <ref name="acknowledgements_model"/>
    </element>
  </define>
  <define name="acknowledgements_attributes">
    <a:documentation>Attributes for \elementref{acknowledgements}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
  </define>
  <define name="acknowledgements_model">
    <a:documentation>Content model for \elementref{acknowledgements}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="keywords">
    <element name="keywords">
      <a:documentation>Keywords for the document. The content is freeform.</a:documentation>
      <ref name="keywords_attributes"/>
      <ref name="keywords_model"/>
    </element>
  </define>
  <define name="keywords_attributes">
    <a:documentation>Attributes for \elementref{keywords}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
  </define>
  <define name="keywords_model">
    <a:documentation>Content model for \elementref{keywords}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!-- ====================================================================== -->
  <define name="classification">
    <element name="classification">
      <a:documentation>A classification of the document.</a:documentation>
      <ref name="classification_attributes"/>
      <ref name="classification_model"/>
    </element>
  </define>
  <define name="classification_attributes">
    <a:documentation>Attributes for \elementref{classification}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
    <optional>
      <attribute name="scheme">
        <a:documentation>indicates what classification scheme was used.</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="classification_model">
    <a:documentation>Content model for \elementref{classification}.</a:documentation>
    <ref name="Inline.model"/>
  </define>
  <!--
    ======================================================================
    Fallback
  -->
  <define name="titlepage">
    <element name="titlepage">
      <a:documentation>block of random stuff marked as a titlepage</a:documentation>
      <ref name="titlepage_attributes"/>
      <ref name="titlepage_model"/>
    </element>
  </define>
  <define name="titlepage_attributes">
    <a:documentation>Attributes for \elementref{titlepage}.</a:documentation>
    <ref name="Sectional.attributes"/>
  </define>
  <define name="titlepage_model">
    <a:documentation>Content model for \elementref{titlepage}.</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="FrontMatter.class"/>
        <ref name="SectionalFrontMatter.class"/>
        <ref name="Block.class"/>
      </choice>
    </zeroOrMore>
  </define>
  <!--
    ======================================================================
    Table(s) of Contents
  -->
  <define name="TOC">
    <element name="TOC">
      <a:documentation>(Generalized) Table Of Contents, represents table of contents
as well as list of figures, tables, and other such things.
This will generally be placed by a \cs{tableofcontents} command
and filled in by postprocessing.</a:documentation>
      <ref name="TOC_attributes"/>
      <ref name="TOC_model"/>
    </element>
  </define>
  <define name="TOC_attributes">
    <a:documentation>Attributes for \elementref{TOC}.</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="FrontMatter.attributes"/>
    <optional>
      <attribute name="lists">
        <a:documentation>indicates the kind of lists; space separated names of lists like "toc","lof", etc.</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="select">
        <a:documentation>indicates what kind of document elements to list, in the form of
one or more tags such as \texttt{ltx:chapter} separated by \texttt{|}
(suggestive of an xpath expression).</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="scope">
        <a:documentation>indicates the scope set of elements to include:
\texttt{current} (default) is all in current document;
\texttt{global} indicates all in the document set;
otherwise an xml:id</a:documentation>
        <choice>
          <value>current</value>
          <value>global</value>
          <text/>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="show">
        <a:documentation>indicates what things to show in each entry</a:documentation>
      </attribute>
    </optional>
    <optional>
      <attribute name="format">
        <a:documentation>indicates how to format the listing</a:documentation>
        <choice>
          <value>normal</value>
          <value>short</value>
          <value>veryshort</value>
          <text/>
        </choice>
      </attribute>
    </optional>
  </define>
  <define name="TOC_model">
    <a:documentation>Content model for \elementref{TOC}.</a:documentation>
    <optional>
      <ref name="title"/>
    </optional>
    <optional>
      <ref name="toclist"/>
    </optional>
  </define>
  <define name="toclist">
    <element name="toclist">
      <a:documentation>The actual table of contents list, filled in.</a:documentation>
      <ref name="toclist_attributes"/>
      <ref name="toclist_model"/>
    </element>
  </define>
  <define name="toclist_attributes">
    <a:documentation>Attributes for \elementref{toclist}.</a:documentation>
    <ref name="Common.attributes"/>
  </define>
  <define name="toclist_model">
    <a:documentation>Content model for \elementref{toclist}.</a:documentation>
    <zeroOrMore>
      <ref name="tocentry"/>
    </zeroOrMore>
  </define>
  <define name="tocentry">
    <element name="tocentry">
      <a:documentation>An entry in a \elementref{toclist}.</a:documentation>
      <ref name="tocentry_attributes"/>
      <ref name="tocentry_model"/>
    </element>
  </define>
  <define name="tocentry_attributes">
    <a:documentation>Attributes for \elementref{tocentry}.</a:documentation>
    <ref name="Common.attributes"/>
  </define>
  <define name="tocentry_model">
    <a:documentation>Content model for \elementref{tocentry}.</a:documentation>
    <zeroOrMore>
      <choice>
        <ref name="ref"/>
        <ref name="toclist"/>
      </choice>
    </zeroOrMore>
  </define>
  <!-- ====================================================================== -->
  <define name="Sectional.attributes">
    <a:documentation>Attributes shared by all sectional elements</a:documentation>
    <ref name="Common.attributes"/>
    <ref name="Labelled.attributes"/>
    <ref name="Backgroundable.attributes"/>
    <optional>
      <attribute name="rdf-prefixes">
        <a:documentation>Stores RDFa prefixes as space separated pairs,
with the pairs being prefix and url separated by a colon;
this should only appear at the root element.</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="FrontMatter.attributes">
    <a:documentation>Attributes for other elements that can be used in frontmatter.</a:documentation>
    <optional>
      <attribute name="name">
        <a:documentation>Records the name of the type of object this is to be used when composing the
presentation.  The value of this attribute is often set by language localization packages.</a:documentation>
      </attribute>
    </optional>
  </define>
  <define name="SectionalFrontMatter.class">
    <a:documentation>The content allowed for the front matter of each sectional unit,
and the document.</a:documentation>
    <choice>
      <optional>
        <ref name="tags"/>
      </optional>
      <ref name="title"/>
      <ref name="toctitle"/>
      <ref name="creator"/>
    </choice>
  </define>
  <define name="FrontMatter.class">
    <a:documentation>The content allowed (in addition to \patternref{SectionalFrontMatter.class})
for the front matter of a document.</a:documentation>
    <choice>
      <ref name="subtitle"/>
      <ref name="date"/>
      <ref name="abstract"/>
      <ref name="acknowledgements"/>
      <ref name="keywords"/>
      <ref name="classification"/>
    </choice>
  </define>
  <define name="BackMatter.class">
    <a:documentation>The content allowed a the end of a document.
Note that this includes random trailing Block and Para material,
to support articles with figures and similar data appearing `at end'.</a:documentation>
    <choice>
      <ref name="bibliography"/>
      <ref name="appendix"/>
      <ref name="index"/>
      <ref name="glossary"/>
      <ref name="acknowledgements"/>
      <ref name="Para.class"/>
      <ref name="Meta.class"/>
    </choice>
  </define>
  <define name="Para.class" combine="choice">
    <ref name="TOC"/>
  </define>
</grammar>
<!-- ====================================================================== -->
