<?xml version="1.0" encoding="UTF-8"?>
<grammar 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">
  <start>
    <element name="pretext">
      <optional>
        <ref name="XMLLang"/>
      </optional>
      <optional>
        <ref name="DocInfo"/>
      </optional>
      <choice>
        <ref name="Book"/>
        <ref name="Article"/>
        <ref name="Letter"/>
        <ref name="Memorandum"/>
      </choice>
    </element>
  </start>
  <define name="Article">
    <element name="article">
      <ref name="MetaDataLinedSubtitle"/>
      <optional>
        <ref name="ArticleFrontMatter"/>
      </optional>
      <choice>
        <group>
          <optional>
            <ref name="Objectives"/>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="BlockDivision"/>
              <ref name="Paragraphs"/>
              <ref name="Commentary"/>
            </choice>
          </oneOrMore>
          <interleave>
            <optional>
              <ref name="ReadingQuestions"/>
            </optional>
            <optional>
              <ref name="Exercises"/>
            </optional>
            <optional>
              <ref name="Solutions"/>
            </optional>
            <optional>
              <ref name="References"/>
            </optional>
            <optional>
              <ref name="Glossary"/>
            </optional>
          </interleave>
          <optional>
            <ref name="Outcomes"/>
          </optional>
        </group>
        <group>
          <interleave>
            <optional>
              <ref name="Objectives"/>
            </optional>
            <optional>
              <ref name="IntroductionDivision"/>
            </optional>
          </interleave>
          <ref name="Section"/>
          <zeroOrMore>
            <choice>
              <ref name="Section"/>
              <ref name="ReadingQuestions"/>
              <ref name="Exercises"/>
              <ref name="Solutions"/>
              <ref name="References"/>
              <ref name="Glossary"/>
            </choice>
          </zeroOrMore>
          <interleave>
            <optional>
              <ref name="Outcomes"/>
            </optional>
            <optional>
              <ref name="ConclusionDivision"/>
            </optional>
          </interleave>
          <optional>
            <ref name="ArticleBackMatter"/>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="Book">
    <element name="book">
      <a:documentation>Here is what a book looks like.</a:documentation>
      <ref name="MetaDataLinedSubtitle"/>
      <optional>
        <ref name="BookFrontMatter"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="Part"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="Chapter"/>
        </oneOrMore>
      </choice>
      <optional>
        <ref name="BookBackMatter"/>
      </optional>
    </element>
  </define>
  <define name="Letter">
    <element name="letter">
      <empty/>
    </element>
  </define>
  <define name="Memorandum">
    <element name="memo">
      <empty/>
    </element>
  </define>
  <define name="Part">
    <element name="part">
      <ref name="MetaDataLinedTitle"/>
      <oneOrMore>
        <ref name="Chapter"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Chapter">
    <element name="chapter">
      <ref name="MetaDataLinedTitle"/>
      <zeroOrMore>
        <ref name="AuthorByline"/>
      </zeroOrMore>
      <choice>
        <group>
          <optional>
            <ref name="Objectives"/>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="BlockDivision"/>
              <ref name="Paragraphs"/>
              <ref name="Commentary"/>
            </choice>
          </oneOrMore>
          <interleave>
            <optional>
              <ref name="ReadingQuestions"/>
            </optional>
            <optional>
              <ref name="Exercises"/>
            </optional>
            <optional>
              <ref name="Solutions"/>
            </optional>
            <optional>
              <ref name="References"/>
            </optional>
            <optional>
              <ref name="Glossary"/>
            </optional>
          </interleave>
          <optional>
            <ref name="Outcomes"/>
          </optional>
        </group>
        <group>
          <interleave>
            <optional>
              <ref name="Objectives"/>
            </optional>
            <optional>
              <ref name="IntroductionDivision"/>
            </optional>
          </interleave>
          <ref name="Section"/>
          <zeroOrMore>
            <choice>
              <ref name="Section"/>
              <ref name="ReadingQuestions"/>
              <ref name="Exercises"/>
              <ref name="Solutions"/>
              <ref name="References"/>
              <ref name="Glossary"/>
            </choice>
          </zeroOrMore>
          <interleave>
            <optional>
              <ref name="Outcomes"/>
            </optional>
            <optional>
              <ref name="ConclusionDivision"/>
            </optional>
          </interleave>
        </group>
      </choice>
    </element>
  </define>
  <define name="Section">
    <element name="section">
      <ref name="MetaDataLinedTitle"/>
      <zeroOrMore>
        <ref name="AuthorByline"/>
      </zeroOrMore>
      <choice>
        <group>
          <optional>
            <ref name="Objectives"/>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="BlockDivision"/>
              <ref name="Paragraphs"/>
              <ref name="Commentary"/>
            </choice>
          </oneOrMore>
          <interleave>
            <optional>
              <ref name="ReadingQuestions"/>
            </optional>
            <optional>
              <ref name="Exercises"/>
            </optional>
            <optional>
              <ref name="Solutions"/>
            </optional>
            <optional>
              <ref name="References"/>
            </optional>
            <optional>
              <ref name="Glossary"/>
            </optional>
          </interleave>
          <optional>
            <ref name="Outcomes"/>
          </optional>
        </group>
        <group>
          <interleave>
            <optional>
              <ref name="Objectives"/>
            </optional>
            <optional>
              <ref name="IntroductionDivision"/>
            </optional>
          </interleave>
          <ref name="Subsection"/>
          <zeroOrMore>
            <choice>
              <ref name="Subsection"/>
              <ref name="ReadingQuestions"/>
              <ref name="Exercises"/>
              <ref name="Solutions"/>
              <ref name="References"/>
              <ref name="Glossary"/>
            </choice>
          </zeroOrMore>
          <interleave>
            <optional>
              <ref name="Outcomes"/>
            </optional>
            <optional>
              <ref name="ConclusionDivision"/>
            </optional>
          </interleave>
        </group>
      </choice>
    </element>
  </define>
  <define name="Subsection">
    <element name="subsection">
      <ref name="MetaDataAltTitle"/>
      <zeroOrMore>
        <ref name="AuthorByline"/>
      </zeroOrMore>
      <choice>
        <group>
          <optional>
            <ref name="Objectives"/>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="BlockDivision"/>
              <ref name="Paragraphs"/>
              <ref name="Commentary"/>
            </choice>
          </oneOrMore>
          <interleave>
            <optional>
              <ref name="ReadingQuestions"/>
            </optional>
            <optional>
              <ref name="Exercises"/>
            </optional>
            <optional>
              <ref name="Solutions"/>
            </optional>
            <optional>
              <ref name="References"/>
            </optional>
            <optional>
              <ref name="Glossary"/>
            </optional>
          </interleave>
          <optional>
            <ref name="Outcomes"/>
          </optional>
        </group>
        <group>
          <interleave>
            <optional>
              <ref name="Objectives"/>
            </optional>
            <optional>
              <ref name="IntroductionDivision"/>
            </optional>
          </interleave>
          <ref name="Subsubsection"/>
          <zeroOrMore>
            <choice>
              <ref name="Subsubsection"/>
              <ref name="ReadingQuestions"/>
              <ref name="Exercises"/>
              <ref name="Solutions"/>
              <ref name="References"/>
              <ref name="Glossary"/>
            </choice>
          </zeroOrMore>
          <interleave>
            <optional>
              <ref name="Outcomes"/>
            </optional>
            <optional>
              <ref name="ConclusionDivision"/>
            </optional>
          </interleave>
        </group>
      </choice>
    </element>
  </define>
  <define name="Subsubsection">
    <element name="subsubsection">
      <ref name="MetaDataAltTitle"/>
      <zeroOrMore>
        <ref name="AuthorByline"/>
      </zeroOrMore>
      <optional>
        <ref name="Objectives"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="BlockDivision"/>
          <ref name="Paragraphs"/>
          <ref name="Commentary"/>
        </choice>
      </oneOrMore>
      <interleave>
        <optional>
          <ref name="ReadingQuestions"/>
        </optional>
        <optional>
          <ref name="Exercises"/>
        </optional>
        <optional>
          <ref name="Solutions"/>
        </optional>
        <optional>
          <ref name="References"/>
        </optional>
        <optional>
          <ref name="Glossary"/>
        </optional>
      </interleave>
      <optional>
        <ref name="Outcomes"/>
      </optional>
    </element>
  </define>
  <define name="ArticleAppendix">
    <element name="appendix">
      <ref name="MetaDataAltTitle"/>
      <zeroOrMore>
        <ref name="AuthorByline"/>
      </zeroOrMore>
      <choice>
        <group>
          <optional>
            <ref name="Objectives"/>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="BlockDivision"/>
              <ref name="Paragraphs"/>
              <ref name="Commentary"/>
              <ref name="NotationList"/>
            </choice>
          </oneOrMore>
          <interleave>
            <optional>
              <ref name="ReadingQuestions"/>
            </optional>
            <optional>
              <ref name="Exercises"/>
            </optional>
            <optional>
              <ref name="Solutions"/>
            </optional>
            <optional>
              <ref name="References"/>
            </optional>
            <optional>
              <ref name="Glossary"/>
            </optional>
          </interleave>
          <optional>
            <ref name="Outcomes"/>
          </optional>
        </group>
        <group>
          <interleave>
            <optional>
              <ref name="Objectives"/>
            </optional>
            <optional>
              <ref name="IntroductionDivision"/>
            </optional>
          </interleave>
          <ref name="Subsection"/>
          <zeroOrMore>
            <choice>
              <ref name="Subsection"/>
              <ref name="ReadingQuestions"/>
              <ref name="Exercises"/>
              <ref name="Solutions"/>
              <ref name="References"/>
              <ref name="Glossary"/>
            </choice>
          </zeroOrMore>
          <interleave>
            <optional>
              <ref name="Outcomes"/>
            </optional>
            <optional>
              <ref name="ConclusionDivision"/>
            </optional>
          </interleave>
        </group>
      </choice>
    </element>
  </define>
  <define name="BookAppendix">
    <element name="appendix">
      <ref name="MetaDataAltTitle"/>
      <zeroOrMore>
        <ref name="AuthorByline"/>
      </zeroOrMore>
      <choice>
        <group>
          <optional>
            <ref name="Objectives"/>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="BlockDivision"/>
              <ref name="Paragraphs"/>
              <ref name="Commentary"/>
              <ref name="NotationList"/>
            </choice>
          </oneOrMore>
          <interleave>
            <optional>
              <ref name="ReadingQuestions"/>
            </optional>
            <optional>
              <ref name="Exercises"/>
            </optional>
            <optional>
              <ref name="Solutions"/>
            </optional>
            <optional>
              <ref name="References"/>
            </optional>
            <optional>
              <ref name="Glossary"/>
            </optional>
          </interleave>
          <optional>
            <ref name="Outcomes"/>
          </optional>
        </group>
        <group>
          <interleave>
            <optional>
              <ref name="Objectives"/>
            </optional>
            <optional>
              <ref name="IntroductionDivision"/>
            </optional>
          </interleave>
          <ref name="Section"/>
          <zeroOrMore>
            <choice>
              <ref name="Section"/>
              <ref name="ReadingQuestions"/>
              <ref name="Exercises"/>
              <ref name="Solutions"/>
              <ref name="References"/>
              <ref name="Glossary"/>
            </choice>
          </zeroOrMore>
          <interleave>
            <optional>
              <ref name="Outcomes"/>
            </optional>
            <optional>
              <ref name="ConclusionDivision"/>
            </optional>
          </interleave>
        </group>
      </choice>
    </element>
  </define>
  <define name="IndexDivision">
    <element name="index">
      <ref name="MetaDataAltTitleOptional"/>
      <ref name="IndexList"/>
    </element>
  </define>
  <define name="ArticleFrontMatter">
    <element name="frontmatter">
      <ref name="MetaDataTitleOptional"/>
      <ref name="TitlePage"/>
      <optional>
        <ref name="Abstract"/>
      </optional>
    </element>
  </define>
  <define name="BookFrontMatter">
    <element name="frontmatter">
      <ref name="MetaDataTitleOptional"/>
      <ref name="TitlePage"/>
      <optional>
        <ref name="ColophonFront"/>
      </optional>
      <zeroOrMore>
        <ref name="Biography"/>
      </zeroOrMore>
      <optional>
        <ref name="Dedication"/>
      </optional>
      <optional>
        <ref name="Acknowledgement"/>
      </optional>
      <zeroOrMore>
        <ref name="Preface"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="TitlePage">
    <element name="titlepage">
      <choice>
        <group>
          <ref name="Author"/>
          <zeroOrMore>
            <ref name="Author"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="Editor"/>
          </zeroOrMore>
        </group>
        <group>
          <ref name="Editor"/>
          <zeroOrMore>
            <ref name="Editor"/>
          </zeroOrMore>
        </group>
      </choice>
      <zeroOrMore>
        <ref name="Credit"/>
      </zeroOrMore>
      <optional>
        <ref name="Date"/>
      </optional>
    </element>
  </define>
  <define name="Author">
    <element name="author">
      <element name="personname">
        <ref name="TextSimple"/>
      </element>
      <optional>
        <element name="department">
          <choice>
            <ref name="TextSimple"/>
            <oneOrMore>
              <ref name="ShortLine"/>
            </oneOrMore>
          </choice>
        </element>
      </optional>
      <optional>
        <element name="institution">
          <choice>
            <ref name="TextSimple"/>
            <oneOrMore>
              <ref name="ShortLine"/>
            </oneOrMore>
          </choice>
        </element>
      </optional>
      <optional>
        <element name="email">
          <text/>
        </element>
      </optional>
    </element>
  </define>
  <define name="Editor">
    <element name="editor">
      <element name="personname">
        <ref name="TextSimple"/>
      </element>
      <optional>
        <element name="department">
          <choice>
            <ref name="TextSimple"/>
            <oneOrMore>
              <ref name="ShortLine"/>
            </oneOrMore>
          </choice>
        </element>
      </optional>
      <optional>
        <element name="institution">
          <choice>
            <ref name="TextSimple"/>
            <oneOrMore>
              <ref name="ShortLine"/>
            </oneOrMore>
          </choice>
        </element>
      </optional>
      <optional>
        <element name="email">
          <text/>
        </element>
      </optional>
    </element>
  </define>
  <define name="Credit">
    <element name="credit">
      <element name="title">
        <ref name="TextLong"/>
      </element>
      <oneOrMore>
        <ref name="Author"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Date">
    <element name="date">
      <mixed>
        <zeroOrMore>
          <choice>
            <ref name="Character"/>
            <ref name="Generator"/>
          </choice>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="Abstract">
    <element name="abstract">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="BlockText"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ColophonFront">
    <element name="colophon">
      <ref name="MetaDataTarget"/>
      <zeroOrMore>
        <element name="credit">
          <element name="role">
            <ref name="TextShort"/>
          </element>
          <element name="entity">
            <ref name="TextLong"/>
          </element>
        </element>
      </zeroOrMore>
      <optional>
        <element name="edition">
          <text/>
        </element>
      </optional>
      <optional>
        <element name="website">
          <element name="name">
            <ref name="TextShort"/>
          </element>
          <element name="address">
            <text/>
          </element>
        </element>
      </optional>
      <optional>
        <element name="copyright">
          <element name="year">
            <ref name="TextShort"/>
          </element>
          <element name="holder">
            <text/>
          </element>
          <optional>
            <element name="minilicense">
              <ref name="TextShort"/>
            </element>
          </optional>
          <optional>
            <element name="shortlicense">
              <ref name="TextLong"/>
            </element>
          </optional>
        </element>
      </optional>
    </element>
  </define>
  <define name="Biography">
    <element name="biography">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <choice>
          <ref name="BlockStatementNoCaption"/>
          <ref name="ParagraphsNoNumber"/>
          <ref name="Commentary"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="Dedication">
    <element name="dedication">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <choice>
          <ref name="Paragraph"/>
          <ref name="ParagraphLined"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="Acknowledgement">
    <element name="acknowledgement">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <choice>
          <ref name="BlockStatementNoCaption"/>
          <ref name="ParagraphsNoNumber"/>
          <ref name="Commentary"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="Preface">
    <element name="preface">
      <ref name="MetaDataTitleOptional"/>
      <choice>
        <group>
          <oneOrMore>
            <choice>
              <ref name="BlockStatementNoCaption"/>
              <ref name="ParagraphsNoNumber"/>
              <ref name="Commentary"/>
            </choice>
          </oneOrMore>
          <zeroOrMore>
            <ref name="Attribution"/>
          </zeroOrMore>
        </group>
        <group>
          <zeroOrMore>
            <choice>
              <ref name="BlockStatementNoCaption"/>
              <ref name="ParagraphsNoNumber"/>
              <ref name="Commentary"/>
            </choice>
          </zeroOrMore>
          <ref name="Contributors"/>
          <zeroOrMore>
            <choice>
              <ref name="BlockStatementNoCaption"/>
              <ref name="ParagraphsNoNumber"/>
              <ref name="Commentary"/>
            </choice>
          </zeroOrMore>
        </group>
      </choice>
    </element>
  </define>
  <define name="ArticleBackMatter">
    <element name="backmatter">
      <ref name="MetaDataTitleOptional"/>
      <zeroOrMore>
        <choice>
          <ref name="ArticleAppendix"/>
          <ref name="Solutions"/>
        </choice>
      </zeroOrMore>
      <optional>
        <ref name="References"/>
      </optional>
      <optional>
        <ref name="IndexDivision"/>
      </optional>
      <optional>
        <ref name="ColophonBack"/>
      </optional>
    </element>
  </define>
  <define name="BookBackMatter">
    <element name="backmatter">
      <ref name="MetaDataTitleOptional"/>
      <zeroOrMore>
        <choice>
          <ref name="BookAppendix"/>
          <ref name="Solutions"/>
        </choice>
      </zeroOrMore>
      <optional>
        <ref name="References"/>
      </optional>
      <optional>
        <ref name="IndexDivision"/>
      </optional>
      <optional>
        <ref name="ColophonBack"/>
      </optional>
    </element>
  </define>
  <define name="ColophonBack">
    <element name="colophon">
      <ref name="MetaDataTarget"/>
      <oneOrMore>
        <choice>
          <ref name="BlockText"/>
          <ref name="SideBySideNoCaption"/>
          <ref name="SideBySideGroupNoCaption"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="Paragraphs">
    <element name="paragraphs">
      <ref name="MetaDataTitle"/>
      <zeroOrMore>
        <ref name="Index"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="BlockDivision"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ParagraphsNoNumber">
    <element name="paragraphs">
      <ref name="MetaDataTitle"/>
      <zeroOrMore>
        <ref name="Index"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="BlockStatementNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Commentary">
    <element name="commentary">
      <ref name="MetaDataTitle"/>
      <zeroOrMore>
        <ref name="Index"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="BlockStatementNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ReadingQuestions">
    <element name="reading-questions">
      <ref name="MetaDataAltTitleOptional"/>
      <optional>
        <ref name="IntroductionDivision"/>
      </optional>
      <oneOrMore>
        <ref name="Exercise"/>
      </oneOrMore>
      <optional>
        <ref name="ConclusionDivision"/>
      </optional>
    </element>
  </define>
  <define name="Exercises">
    <element name="exercises">
      <ref name="MetaDataAltTitleOptional"/>
      <optional>
        <ref name="IntroductionDivision"/>
      </optional>
      <choice>
        <oneOrMore>
          <choice>
            <ref name="Exercise"/>
            <ref name="ExerciseGroup"/>
          </choice>
        </oneOrMore>
        <oneOrMore>
          <ref name="Subexercises"/>
        </oneOrMore>
      </choice>
      <optional>
        <ref name="ConclusionDivision"/>
      </optional>
    </element>
  </define>
  <define name="Subexercises">
    <element name="subexercises">
      <ref name="MetaDataAltTitleOptional"/>
      <optional>
        <ref name="IntroductionDivision"/>
      </optional>
      <oneOrMore>
        <choice>
          <ref name="Exercise"/>
          <ref name="ExerciseGroup"/>
        </choice>
      </oneOrMore>
      <optional>
        <ref name="ConclusionDivision"/>
      </optional>
    </element>
  </define>
  <define name="Solutions">
    <element name="solutions">
      <ref name="MetaDataAltTitleOptional"/>
      <optional>
        <attribute name="inline"/>
      </optional>
      <optional>
        <attribute name="divisional"/>
      </optional>
      <optional>
        <attribute name="project"/>
      </optional>
      <optional>
        <attribute name="admit">
          <choice>
            <value>all</value>
            <value>odd</value>
            <value>even</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <ref name="IntroductionDivision"/>
      </optional>
      <optional>
        <ref name="ConclusionDivision"/>
      </optional>
    </element>
  </define>
  <define name="References">
    <element name="references">
      <ref name="MetaDataAltTitleOptional"/>
      <optional>
        <ref name="IntroductionDivision"/>
      </optional>
      <oneOrMore>
        <ref name="BibliographyItem"/>
      </oneOrMore>
      <optional>
        <ref name="ConclusionDivision"/>
      </optional>
    </element>
  </define>
  <define name="Glossary">
    <element name="glossary">
      <ref name="MetaDataAltTitleOptional"/>
      <optional>
        <ref name="HeadNote"/>
      </optional>
      <oneOrMore>
        <ref name="GlossaryItem"/>
      </oneOrMore>
    </element>
  </define>
  <define name="BlockText">
    <choice>
      <ref name="Paragraph"/>
      <ref name="BlockQuote"/>
      <ref name="Preformatted"/>
      <ref name="Image"/>
      <ref name="Video"/>
      <ref name="Program"/>
      <ref name="Console"/>
      <ref name="Tabular"/>
    </choice>
  </define>
  <define name="BlockStatementNoCaption">
    <choice>
      <ref name="BlockText"/>
      <ref name="Aside"/>
      <ref name="SideBySideNoCaption"/>
      <ref name="SideBySideGroupNoCaption"/>
    </choice>
  </define>
  <define name="BlockStatement">
    <choice>
      <ref name="BlockText"/>
      <ref name="Figure"/>
      <ref name="Aside"/>
      <ref name="SideBySide"/>
      <ref name="SideBySideGroup"/>
      <ref name="Sage"/>
    </choice>
  </define>
  <define name="BlockSolution">
    <choice>
      <ref name="BlockStatement"/>
      <ref name="Proof"/>
    </choice>
  </define>
  <define name="BlockDivision">
    <choice>
      <ref name="BlockStatement"/>
      <ref name="Remark"/>
      <ref name="Computation"/>
      <ref name="Theorem"/>
      <ref name="Proof"/>
      <ref name="Definition"/>
      <ref name="Axiom"/>
      <ref name="Example"/>
      <ref name="Exercise"/>
      <ref name="Project"/>
      <ref name="Poem"/>
      <ref name="Assemblage"/>
      <ref name="ListGenerator"/>
      <ref name="Fragment"/>
      <ref name="Demonstration"/>
    </choice>
  </define>
  <define name="Prelude">
    <element name="prelude">
      <oneOrMore>
        <ref name="BlockText"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Interlude">
    <element name="interlude">
      <oneOrMore>
        <ref name="BlockText"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Postlude">
    <element name="postlude">
      <oneOrMore>
        <ref name="BlockText"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Statement">
    <element name="statement">
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Hint">
    <element name="hint">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="BlockSolution"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Answer">
    <element name="answer">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="BlockSolution"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Solution">
    <element name="solution">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="BlockSolution"/>
      </oneOrMore>
    </element>
  </define>
  <define name="IntroductionText">
    <element name="introduction">
      <oneOrMore>
        <ref name="BlockText"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ConclusionText">
    <element name="conclusion">
      <oneOrMore>
        <ref name="BlockText"/>
      </oneOrMore>
    </element>
  </define>
  <define name="IntroductionStatementNoCaption">
    <element name="introduction">
      <oneOrMore>
        <ref name="BlockStatementNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ConclusionStatementNoCaption">
    <element name="conclusion">
      <oneOrMore>
        <ref name="BlockStatementNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="IntroductionStatement">
    <element name="introduction">
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ConclusionStatement">
    <element name="conclusion">
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
    </element>
  </define>
  <define name="IntroductionDivision">
    <element name="introduction">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="BlockDivision"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ConclusionDivision">
    <element name="conclusion">
      <optional>
        <ref name="MetaDataTitleOptional"/>
      </optional>
      <oneOrMore>
        <ref name="BlockDivision"/>
      </oneOrMore>
    </element>
  </define>
  <define name="HeadNote">
    <element name="headnote">
      <oneOrMore>
        <ref name="BlockStatementNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Objectives">
    <element name="objectives">
      <ref name="MetaDataTitleOptional"/>
      <optional>
        <ref name="IntroductionText"/>
      </optional>
      <ref name="List"/>
      <optional>
        <ref name="ConclusionText"/>
      </optional>
    </element>
  </define>
  <define name="Outcomes">
    <element name="outcomes">
      <ref name="MetaDataTitleOptional"/>
      <optional>
        <ref name="IntroductionText"/>
      </optional>
      <ref name="List"/>
      <optional>
        <ref name="ConclusionText"/>
      </optional>
    </element>
  </define>
  <define name="BlockQuote">
    <element name="blockquote">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="Paragraph"/>
      </oneOrMore>
      <optional>
        <ref name="Attribution"/>
      </optional>
    </element>
  </define>
  <define name="SimpleLine">
    <element name="line">
      <ref name="TextSimple"/>
    </element>
  </define>
  <define name="ShortLine">
    <element name="line">
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="LongLine">
    <element name="line">
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="CodeLine">
    <element name="cline">
      <text/>
    </element>
  </define>
  <define name="CodeDisplay">
    <element name="cd">
      <optional>
        <attribute name="latexsep"/>
      </optional>
      <choice>
        <text/>
        <oneOrMore>
          <ref name="CodeLine"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <define name="Preformatted">
    <element name="pre">
      <choice>
        <text/>
        <oneOrMore>
          <ref name="CodeLine"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <define name="Console">
    <element name="console">
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="margins"/>
      </optional>
      <oneOrMore>
        <optional>
          <element name="prompt">
            <text/>
          </element>
        </optional>
        <optional>
          <element name="input">
            <text/>
          </element>
        </optional>
        <optional>
          <element name="output">
            <text/>
          </element>
        </optional>
      </oneOrMore>
    </element>
  </define>
  <define name="Program">
    <element name="program">
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="margins"/>
      </optional>
      <optional>
        <attribute name="language"/>
      </optional>
      <optional>
        <attribute name="interactive">
          <value>codelens</value>
        </attribute>
      </optional>
      <element name="input">
        <text/>
      </element>
    </element>
  </define>
  <define name="List">
    <choice>
      <element name="ol">
        <optional>
          <ref name="PermanentID"/>
        </optional>
        <optional>
          <attribute name="cols">
            <choice>
              <value>2</value>
              <value>3</value>
              <value>4</value>
              <value>5</value>
              <value>6</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="marker"/>
        </optional>
        <oneOrMore>
          <element name="li">
            <choice>
              <group>
                <ref name="MetaDataTarget"/>
                <ref name="TextParagraph"/>
              </group>
              <group>
                <ref name="MetaDataTitleOptional"/>
                <oneOrMore>
                  <ref name="BlockStatement"/>
                </oneOrMore>
              </group>
            </choice>
          </element>
        </oneOrMore>
      </element>
      <element name="ul">
        <optional>
          <ref name="PermanentID"/>
        </optional>
        <optional>
          <attribute name="cols">
            <choice>
              <value>2</value>
              <value>3</value>
              <value>4</value>
              <value>5</value>
              <value>6</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="marker">
            <choice>
              <value>disc</value>
              <value>circle</value>
              <value>square</value>
              <value/>
            </choice>
          </attribute>
        </optional>
        <oneOrMore>
          <element name="li">
            <choice>
              <group>
                <ref name="MetaDataTarget"/>
                <ref name="TextParagraph"/>
              </group>
              <group>
                <ref name="MetaDataTitleOptional"/>
                <oneOrMore>
                  <ref name="BlockStatement"/>
                </oneOrMore>
              </group>
            </choice>
          </element>
        </oneOrMore>
      </element>
      <element name="dl">
        <optional>
          <ref name="PermanentID"/>
        </optional>
        <optional>
          <attribute name="width">
            <choice>
              <value>narrow</value>
              <value>medium</value>
              <value>wide</value>
            </choice>
          </attribute>
        </optional>
        <oneOrMore>
          <element name="li">
            <ref name="MetaDataTitle"/>
            <oneOrMore>
              <ref name="BlockStatement"/>
            </oneOrMore>
          </element>
        </oneOrMore>
      </element>
    </choice>
  </define>
  <define name="DefinitionLike">
    <ref name="MetaDataTitleOptional"/>
    <zeroOrMore>
      <ref name="Notation"/>
    </zeroOrMore>
    <ref name="Statement"/>
  </define>
  <define name="Definition">
    <element name="definition">
      <ref name="DefinitionLike"/>
    </element>
  </define>
  <define name="Case">
    <element name="case">
      <ref name="MetaDataTitleOptional"/>
      <optional>
        <attribute name="direction"/>
      </optional>
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Proof">
    <element name="proof">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <choice>
          <ref name="BlockStatement"/>
          <ref name="Case"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="TheoremLike">
    <ref name="MetaDataTitleCreatorOptional"/>
    <choice>
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
      <group>
        <ref name="Statement"/>
        <zeroOrMore>
          <ref name="Proof"/>
        </zeroOrMore>
      </group>
    </choice>
  </define>
  <define name="Theorem">
    <choice>
      <element name="theorem">
        <ref name="TheoremLike"/>
      </element>
      <element name="lemma">
        <ref name="TheoremLike"/>
      </element>
      <element name="corollary">
        <ref name="TheoremLike"/>
      </element>
      <element name="claim">
        <ref name="TheoremLike"/>
      </element>
      <element name="proposition">
        <ref name="TheoremLike"/>
      </element>
      <element name="algorithm">
        <ref name="TheoremLike"/>
      </element>
      <element name="fact">
        <ref name="TheoremLike"/>
      </element>
      <element name="identity">
        <ref name="TheoremLike"/>
      </element>
    </choice>
  </define>
  <define name="AxiomLike">
    <ref name="MetaDataTitleCreatorOptional"/>
    <ref name="Statement"/>
  </define>
  <define name="Axiom">
    <choice>
      <element name="axiom">
        <ref name="AxiomLike"/>
      </element>
      <element name="principle">
        <ref name="AxiomLike"/>
      </element>
      <element name="conjecture">
        <ref name="AxiomLike"/>
      </element>
      <element name="heuristic">
        <ref name="AxiomLike"/>
      </element>
      <element name="hypothesis">
        <ref name="AxiomLike"/>
      </element>
      <element name="assumption">
        <ref name="AxiomLike"/>
      </element>
    </choice>
  </define>
  <define name="ExampleLike">
    <ref name="MetaDataTitleOptional"/>
    <choice>
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
      <group>
        <ref name="Statement"/>
        <zeroOrMore>
          <ref name="Hint"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="Answer"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="Solution"/>
        </zeroOrMore>
      </group>
      <group>
        <optional>
          <ref name="IntroductionStatement"/>
        </optional>
        <oneOrMore>
          <ref name="Task"/>
        </oneOrMore>
        <optional>
          <ref name="ConclusionStatement"/>
        </optional>
      </group>
    </choice>
  </define>
  <define name="Example">
    <choice>
      <element name="example">
        <ref name="ExampleLike"/>
      </element>
      <element name="question">
        <ref name="ExampleLike"/>
      </element>
      <element name="problem">
        <ref name="ExampleLike"/>
      </element>
    </choice>
  </define>
  <define name="ProjectLike">
    <ref name="MetaDataTitleOptional"/>
    <choice>
      <oneOrMore>
        <ref name="BlockStatement"/>
      </oneOrMore>
      <group>
        <optional>
          <ref name="Prelude"/>
        </optional>
        <choice>
          <group>
            <ref name="Statement"/>
            <zeroOrMore>
              <ref name="Hint"/>
            </zeroOrMore>
            <zeroOrMore>
              <ref name="Answer"/>
            </zeroOrMore>
            <zeroOrMore>
              <ref name="Solution"/>
            </zeroOrMore>
          </group>
          <group>
            <optional>
              <ref name="IntroductionStatement"/>
            </optional>
            <oneOrMore>
              <ref name="Task"/>
            </oneOrMore>
            <optional>
              <ref name="ConclusionStatement"/>
            </optional>
          </group>
        </choice>
        <optional>
          <ref name="Postlude"/>
        </optional>
      </group>
    </choice>
  </define>
  <define name="Project">
    <choice>
      <element name="activity">
        <ref name="ProjectLike"/>
      </element>
      <element name="investigation">
        <ref name="ProjectLike"/>
      </element>
      <element name="exploration">
        <ref name="ProjectLike"/>
      </element>
      <element name="project">
        <ref name="ProjectLike"/>
      </element>
    </choice>
  </define>
  <define name="Task">
    <element name="task">
      <ref name="MetaDataTitleOptional"/>
      <choice>
        <oneOrMore>
          <ref name="BlockStatement"/>
        </oneOrMore>
        <group>
          <ref name="Statement"/>
          <zeroOrMore>
            <ref name="Hint"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="Answer"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="Solution"/>
          </zeroOrMore>
        </group>
        <group>
          <optional>
            <ref name="IntroductionStatement"/>
          </optional>
          <oneOrMore>
            <ref name="Task"/>
          </oneOrMore>
          <optional>
            <ref name="ConclusionStatement"/>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="RemarkLike">
    <ref name="MetaDataTitleOptional"/>
    <oneOrMore>
      <ref name="BlockStatement"/>
    </oneOrMore>
  </define>
  <define name="Remark">
    <choice>
      <element name="remark">
        <ref name="RemarkLike"/>
      </element>
      <element name="convention">
        <ref name="RemarkLike"/>
      </element>
      <element name="note">
        <ref name="RemarkLike"/>
      </element>
      <element name="observation">
        <ref name="RemarkLike"/>
      </element>
      <element name="warning">
        <ref name="RemarkLike"/>
      </element>
      <element name="insight">
        <ref name="RemarkLike"/>
      </element>
    </choice>
  </define>
  <define name="ComputationLike">
    <ref name="MetaDataTitleOptional"/>
    <oneOrMore>
      <ref name="BlockStatement"/>
    </oneOrMore>
  </define>
  <define name="Computation">
    <choice>
      <element name="computation">
        <ref name="ComputationLike"/>
      </element>
      <element name="technology">
        <ref name="ComputationLike"/>
      </element>
    </choice>
  </define>
  <define name="AsideLike">
    <ref name="MetaDataTitleOptional"/>
    <oneOrMore>
      <ref name="BlockText"/>
    </oneOrMore>
  </define>
  <define name="Aside">
    <choice>
      <element name="aside">
        <ref name="AsideLike"/>
      </element>
      <element name="biographical">
        <ref name="AsideLike"/>
      </element>
      <element name="historical">
        <ref name="AsideLike"/>
      </element>
    </choice>
  </define>
  <define name="Assemblage">
    <element name="assemblage">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <choice>
          <ref name="BlockText"/>
          <ref name="SideBySideNoCaption"/>
          <ref name="SideBySideGroupNoCaption"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="Caption">
    <element name="caption">
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="Figure">
    <choice>
      <element name="figure">
        <ref name="MetaDataCaption"/>
        <choice>
          <ref name="Image"/>
          <ref name="Video"/>
          <ref name="SideBySide"/>
          <ref name="SideBySideGroup"/>
          <ref name="MuseScore"/>
        </choice>
      </element>
      <element name="table">
        <ref name="MetaDataAltTitle"/>
        <ref name="Tabular"/>
      </element>
      <element name="listing">
        <ref name="MetaDataCaption"/>
        <choice>
          <ref name="Program"/>
          <ref name="Console"/>
        </choice>
      </element>
      <element name="list">
        <ref name="MetaDataAltTitle"/>
        <optional>
          <ref name="IntroductionText"/>
        </optional>
        <ref name="List"/>
        <optional>
          <ref name="ConclusionText"/>
        </optional>
      </element>
    </choice>
  </define>
  <define name="Stack">
    <element name="stack">
      <oneOrMore>
        <choice>
          <ref name="Tabular"/>
          <ref name="Image"/>
          <ref name="Video"/>
          <ref name="Program"/>
          <ref name="Console"/>
          <ref name="Paragraph"/>
          <ref name="Preformatted"/>
          <ref name="List"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="SidebySideAttributes">
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <attribute name="margins"/>
    </optional>
    <optional>
      <choice>
        <attribute name="width"/>
        <attribute name="widths"/>
      </choice>
    </optional>
    <optional>
      <choice>
        <ref name="AlignmentVertical"/>
        <attribute name="valigns"/>
      </choice>
    </optional>
  </define>
  <define name="SideBySide">
    <element name="sidebyside">
      <ref name="SidebySideAttributes"/>
      <oneOrMore>
        <choice>
          <ref name="Figure"/>
          <ref name="Poem"/>
          <ref name="Tabular"/>
          <ref name="Image"/>
          <ref name="Video"/>
          <ref name="Program"/>
          <ref name="Console"/>
          <ref name="Paragraph"/>
          <ref name="Preformatted"/>
          <ref name="List"/>
          <ref name="Stack"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="SideBySideNoCaption">
    <element name="sidebyside">
      <ref name="SidebySideAttributes"/>
      <oneOrMore>
        <choice>
          <ref name="Poem"/>
          <ref name="Tabular"/>
          <ref name="Image"/>
          <ref name="Video"/>
          <ref name="Program"/>
          <ref name="Console"/>
          <ref name="Paragraph"/>
          <ref name="Preformatted"/>
          <ref name="List"/>
          <ref name="Stack"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="SideBySideGroup">
    <element name="sbsgroup">
      <ref name="SidebySideAttributes"/>
      <oneOrMore>
        <ref name="SideBySide"/>
      </oneOrMore>
    </element>
  </define>
  <define name="SideBySideGroupNoCaption">
    <element name="sbsgroup">
      <ref name="SidebySideAttributes"/>
      <oneOrMore>
        <ref name="SideBySideNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Image">
    <choice>
      <ref name="ImageRaster"/>
      <ref name="ImageCode"/>
    </choice>
  </define>
  <define name="ImageRaster">
    <element name="image">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="margins"/>
      </optional>
      <optional>
        <attribute name="archive"/>
      </optional>
      <attribute name="source"/>
      <optional>
        <attribute name="decorative">
          <choice>
            <value>yes</value>
            <value>no</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <element name="description">
          <ref name="TextShort"/>
        </element>
      </optional>
    </element>
  </define>
  <define name="ImageCode">
    <element name="image">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="margins"/>
      </optional>
      <optional>
        <attribute name="archive"/>
      </optional>
      <optional>
        <attribute name="decorative">
          <choice>
            <value>yes</value>
            <value>no</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <element name="description">
          <ref name="TextShort"/>
        </element>
      </optional>
      <choice>
        <element name="latex-image">
          <text/>
        </element>
        <element name="asymptote">
          <text/>
        </element>
        <element name="sageplot">
          <optional>
            <attribute name="variant">
              <choice>
                <value>2d</value>
                <value>3d</value>
              </choice>
            </attribute>
          </optional>
          <optional>
            <attribute name="aspect"/>
          </optional>
          <text/>
        </element>
      </choice>
    </element>
  </define>
  <define name="ImageWW">
    <element name="image">
      <optional>
        <attribute name="pg-name"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="decorative">
          <choice>
            <value>yes</value>
            <value>no</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <element name="description">
          <zeroOrMore>
            <choice>
              <ref name="TextShort"/>
              <ref name="WWVariable"/>
            </choice>
          </zeroOrMore>
        </element>
      </optional>
      <optional>
        <element name="latex-image">
          <attribute name="syntax">
            <value>PGtikz</value>
          </attribute>
          <text/>
        </element>
      </optional>
    </element>
  </define>
  <define name="BorderThickness">
    <choice>
      <value>none</value>
      <value>minor</value>
      <value>medium</value>
      <value>major</value>
    </choice>
  </define>
  <define name="BorderTop">
    <attribute name="top">
      <ref name="BorderThickness"/>
    </attribute>
  </define>
  <define name="BorderBottom">
    <attribute name="bottom">
      <ref name="BorderThickness"/>
    </attribute>
  </define>
  <define name="BorderLeft">
    <attribute name="left">
      <ref name="BorderThickness"/>
    </attribute>
  </define>
  <define name="BorderRight">
    <attribute name="right">
      <ref name="BorderThickness"/>
    </attribute>
  </define>
  <define name="AlignmentHorizontal">
    <attribute name="halign">
      <choice>
        <value>left</value>
        <value>center</value>
        <value>right</value>
        <value>justify</value>
      </choice>
    </attribute>
  </define>
  <define name="AlignmentVertical">
    <attribute name="valign">
      <choice>
        <value>top</value>
        <value>middle</value>
        <value>bottom</value>
      </choice>
    </attribute>
  </define>
  <define name="TableCell">
    <element name="cell">
      <optional>
        <ref name="AlignmentHorizontal"/>
      </optional>
      <optional>
        <ref name="BorderBottom"/>
      </optional>
      <optional>
        <ref name="BorderRight"/>
      </optional>
      <optional>
        <attribute name="colspan"/>
      </optional>
      <choice>
        <ref name="TextLong"/>
        <oneOrMore>
          <ref name="LongLine"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="Paragraph"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <define name="TableRow">
    <element name="row">
      <optional>
        <ref name="AlignmentHorizontal"/>
      </optional>
      <optional>
        <ref name="AlignmentVertical"/>
      </optional>
      <optional>
        <ref name="BorderBottom"/>
      </optional>
      <optional>
        <ref name="BorderLeft"/>
      </optional>
      <oneOrMore>
        <ref name="TableCell"/>
      </oneOrMore>
    </element>
  </define>
  <define name="TableColumn">
    <element name="col">
      <optional>
        <ref name="AlignmentHorizontal"/>
      </optional>
      <optional>
        <ref name="BorderTop"/>
      </optional>
      <optional>
        <ref name="BorderRight"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
    </element>
  </define>
  <define name="Tabular">
    <element name="tabular">
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="margins"/>
      </optional>
      <optional>
        <ref name="AlignmentHorizontal"/>
      </optional>
      <optional>
        <ref name="AlignmentVertical"/>
      </optional>
      <optional>
        <ref name="BorderTop"/>
      </optional>
      <optional>
        <ref name="BorderBottom"/>
      </optional>
      <optional>
        <ref name="BorderLeft"/>
      </optional>
      <optional>
        <ref name="BorderRight"/>
      </optional>
      <zeroOrMore>
        <ref name="TableColumn"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name="TableRow"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Sage">
    <element name="sage">
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="doctest"/>
      </optional>
      <optional>
        <attribute name="tolerance"/>
      </optional>
      <optional>
        <attribute name="language"/>
      </optional>
      <optional>
        <attribute name="type"/>
      </optional>
      <optional>
        <element name="input">
          <text/>
        </element>
        <optional>
          <element name="output">
            <text/>
          </element>
        </optional>
      </optional>
    </element>
  </define>
  <define name="MuseScore">
    <element name="score">
      <attribute name="musescoreuser"/>
      <attribute name="musescore"/>
    </element>
  </define>
  <define name="Video">
    <element name="video">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <optional>
        <attribute name="width"/>
      </optional>
      <optional>
        <attribute name="margins"/>
      </optional>
      <optional>
        <attribute name="aspect"/>
      </optional>
      <optional>
        <attribute name="start">
          <data type="integer"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="end">
          <data type="integer"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="play-at">
          <choice>
            <value>embed</value>
            <value>popout</value>
            <value>select</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="preview">
          <choice>
            <value>default</value>
            <value>generic</value>
            <text/>
          </choice>
        </attribute>
      </optional>
      <choice>
        <ref name="AttributesSourceFile"/>
        <ref name="AttributesNetwork"/>
        <ref name="AttributesYouTube"/>
        <ref name="AttributesYouTubePlaylist"/>
        <ref name="AttributesVimeo"/>
      </choice>
    </element>
  </define>
  <define name="AttributesSourceFile">
    <attribute name="source"/>
  </define>
  <define name="AttributesNetwork">
    <attribute name="href"/>
  </define>
  <define name="AttributesYouTube">
    <attribute name="youtube"/>
  </define>
  <define name="AttributesYouTubePlaylist">
    <attribute name="youtubeplaylist"/>
  </define>
  <define name="AttributesVimeo">
    <attribute name="vimeo"/>
  </define>
  <define name="ExerciseBody">
    <oneOrMore>
      <choice>
        <ref name="BlockStatement"/>
        <element name="ol">
          <optional>
            <attribute name="cols"/>
          </optional>
          <optional>
            <attribute name="marker"/>
          </optional>
          <oneOrMore>
            <element name="li">
              <ref name="MetaDataTarget"/>
              <choice>
                <ref name="TextParagraph"/>
                <oneOrMore>
                  <ref name="BlockText"/>
                </oneOrMore>
              </choice>
            </element>
          </oneOrMore>
        </element>
      </choice>
    </oneOrMore>
  </define>
  <define name="StatementExercise">
    <element name="statement">
      <ref name="ExerciseBody"/>
    </element>
  </define>
  <define name="Exercise">
    <element name="exercise">
      <ref name="MetaDataTitleOptional"/>
      <optional>
        <attribute name="number"/>
      </optional>
      <choice>
        <ref name="ExerciseBody"/>
        <group>
          <ref name="StatementExercise"/>
          <zeroOrMore>
            <ref name="Hint"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="Answer"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="Solution"/>
          </zeroOrMore>
        </group>
        <group>
          <optional>
            <ref name="IntroductionStatement"/>
          </optional>
          <oneOrMore>
            <ref name="Task"/>
          </oneOrMore>
          <optional>
            <ref name="ConclusionStatement"/>
          </optional>
        </group>
        <group>
          <optional>
            <ref name="IntroductionText"/>
          </optional>
          <ref name="WebWork"/>
          <optional>
            <ref name="ConclusionText"/>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="ExerciseGroup">
    <element name="exercisegroup">
      <ref name="MetaDataTitleOptional"/>
      <optional>
        <attribute name="cols">
          <choice>
            <value>2</value>
            <value>3</value>
            <value>4</value>
            <value>5</value>
            <value>6</value>
          </choice>
        </attribute>
      </optional>
      <ref name="IntroductionStatementNoCaption"/>
      <oneOrMore>
        <ref name="Exercise"/>
      </oneOrMore>
      <optional>
        <ref name="ConclusionStatementNoCaption"/>
      </optional>
    </element>
  </define>
  <define name="AlignmentPoem">
    <attribute name="halign">
      <choice>
        <value>left</value>
        <value>center</value>
        <value>right</value>
      </choice>
    </attribute>
  </define>
  <define name="Poem">
    <element name="poem">
      <ref name="MetaDataTitleOptional"/>
      <optional>
        <ref name="AlignmentPoem"/>
      </optional>
      <optional>
        <element name="author">
          <optional>
            <ref name="AlignmentPoem"/>
          </optional>
          <ref name="TextShort"/>
        </element>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="PoemLine"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="Stanza"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <define name="Stanza">
    <element name="stanza">
      <ref name="MetaDataTitleOptional"/>
      <oneOrMore>
        <ref name="PoemLine"/>
      </oneOrMore>
    </element>
  </define>
  <define name="PoemLine">
    <element name="line">
      <optional>
        <attribute name="indent">
          <data type="integer"/>
        </attribute>
      </optional>
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="TextBib">
    <mixed>
      <zeroOrMore>
        <choice>
          <ref name="Character"/>
          <ref name="MathInline"/>
        </choice>
      </zeroOrMore>
    </mixed>
  </define>
  <define name="BibliographyItem">
    <element name="biblio">
      <ref name="MetaDataTarget"/>
      <choice>
        <group>
          <attribute name="type">
            <value>raw</value>
          </attribute>
          <zeroOrMore>
            <choice>
              <ref name="TextLong"/>
              <ref name="Ibid"/>
              <ref name="BibTitle"/>
              <ref name="BibYear"/>
              <ref name="BibJournal"/>
              <ref name="BibNumber"/>
              <ref name="BibVolume"/>
              <ref name="BibNote"/>
            </choice>
          </zeroOrMore>
        </group>
        <group>
          <attribute name="type">
            <value>bibtex</value>
          </attribute>
          <zeroOrMore>
            <choice>
              <ref name="BibTitle"/>
              <ref name="BibAuthor"/>
              <ref name="BibEditor"/>
              <ref name="BibYear"/>
              <ref name="BibJournal"/>
              <ref name="BibNumber"/>
              <ref name="BibVolume"/>
              <ref name="BibSeries"/>
              <ref name="BibPublisher"/>
              <ref name="BibPages"/>
              <ref name="BibNote"/>
            </choice>
          </zeroOrMore>
        </group>
      </choice>
    </element>
  </define>
  <define name="Ibid">
    <element name="ibid">
      <empty/>
    </element>
  </define>
  <define name="BibYear">
    <element name="year">
      <text/>
    </element>
  </define>
  <define name="BibJournal">
    <element name="journal">
      <ref name="TextBib"/>
    </element>
  </define>
  <define name="BibNumber">
    <element name="number">
      <text/>
    </element>
  </define>
  <define name="BibVolume">
    <element name="volume">
      <text/>
    </element>
  </define>
  <define name="BibTitle">
    <element name="title">
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="BibNote">
    <element name="note">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <oneOrMore>
        <ref name="Paragraph"/>
      </oneOrMore>
    </element>
  </define>
  <define name="BibAuthor">
    <element name="author">
      <text/>
    </element>
  </define>
  <define name="BibEditor">
    <element name="editor">
      <text/>
    </element>
  </define>
  <define name="BibSeries">
    <element name="series">
      <text/>
    </element>
  </define>
  <define name="BibPublisher">
    <element name="publisher">
      <text/>
    </element>
  </define>
  <define name="BibPages">
    <element name="pages">
      <choice>
        <group>
          <attribute name="start"/>
          <attribute name="end"/>
          <empty/>
        </group>
        <text/>
      </choice>
    </element>
  </define>
  <define name="GlossaryItem">
    <element name="gi">
      <ref name="MetaDataTitle"/>
      <oneOrMore>
        <ref name="BlockStatementNoCaption"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Contributor">
    <element name="contributor">
      <ref name="MetaDataTarget"/>
      <element name="personname">
        <ref name="TextSimple"/>
      </element>
      <optional>
        <element name="department">
          <ref name="TextSimple"/>
        </element>
      </optional>
      <optional>
        <element name="institution">
          <ref name="TextSimple"/>
        </element>
      </optional>
      <optional>
        <element name="location">
          <ref name="TextSimple"/>
        </element>
      </optional>
      <optional>
        <element name="email">
          <text/>
        </element>
      </optional>
    </element>
  </define>
  <define name="Contributors">
    <element name="contributors">
      <oneOrMore>
        <ref name="Contributor"/>
      </oneOrMore>
    </element>
  </define>
  <define name="AuthorByline">
    <element name="author">
      <choice>
        <ref name="TextSimple"/>
        <ref name="Xref"/>
      </choice>
    </element>
  </define>
  <define name="WebWork">
    <choice>
      <ref name="WebWorkAuthored"/>
      <ref name="WebWorkSource"/>
    </choice>
  </define>
  <define name="WebWorkSource">
    <element name="webwork">
      <optional>
        <attribute name="source"/>
      </optional>
      <optional>
        <attribute name="seed">
          <data type="integer"/>
        </attribute>
      </optional>
    </element>
  </define>
  <define name="WebWorkAuthored">
    <element name="webwork">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <optional>
        <attribute name="seed">
          <data type="integer"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="copy"/>
      </optional>
      <optional>
        <element name="description">
          <choice>
            <ref name="TextSimple"/>
            <oneOrMore>
              <ref name="SimpleLine"/>
            </oneOrMore>
          </choice>
        </element>
      </optional>
      <optional>
        <ref name="WWMacros"/>
      </optional>
      <optional>
        <element name="pg-code">
          <text/>
        </element>
      </optional>
      <choice>
        <group>
          <ref name="StatementExerciseWW"/>
          <optional>
            <ref name="HintWW"/>
          </optional>
          <optional>
            <ref name="SolutionWW"/>
          </optional>
        </group>
        <group>
          <optional>
            <ref name="IntroductionText"/>
          </optional>
          <oneOrMore>
            <ref name="TaskWW"/>
          </oneOrMore>
          <optional>
            <ref name="ConclusionText"/>
          </optional>
        </group>
        <oneOrMore>
          <element name="stage">
            <optional>
              <ref name="Title"/>
            </optional>
            <ref name="StatementExerciseWW"/>
            <optional>
              <ref name="HintWW"/>
            </optional>
            <optional>
              <ref name="SolutionWW"/>
            </optional>
          </element>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <define name="BlockStatementWW">
    <choice>
      <ref name="Paragraph"/>
      <ref name="Preformatted"/>
      <ref name="Tabular"/>
      <ref name="ImageWW"/>
    </choice>
  </define>
  <define name="StatementExerciseWW">
    <element name="statement">
      <oneOrMore>
        <choice>
          <ref name="BlockStatementWW"/>
          <ref name="WWInstruction"/>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="TaskWW">
    <element name="task">
      <ref name="MetaDataTitleOptional"/>
      <choice>
        <group>
          <ref name="StatementExerciseWW"/>
          <optional>
            <ref name="HintWW"/>
          </optional>
          <optional>
            <ref name="SolutionWW"/>
          </optional>
        </group>
        <group>
          <optional>
            <ref name="IntroductionText"/>
          </optional>
          <oneOrMore>
            <ref name="TaskWW"/>
          </oneOrMore>
          <optional>
            <ref name="ConclusionText"/>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="WWMacros">
    <element name="pg-macros">
      <oneOrMore>
        <element name="macro-file">
          <text/>
        </element>
      </oneOrMore>
    </element>
  </define>
  <define name="WWVariable">
    <element name="var">
      <a:documentation>The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element.  As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element.  A Schematron rule will check on these two situations.</a:documentation>
      <choice>
        <group>
          <attribute name="name"/>
          <optional>
            <attribute name="evaluator"/>
          </optional>
          <optional>
            <attribute name="width"/>
          </optional>
          <optional>
            <attribute name="category">
              <choice>
                <value>angle</value>
                <value>decimal</value>
                <value>exponent</value>
                <value>formula</value>
                <value>fraction</value>
                <value>inequality</value>
                <value>integer</value>
                <value>interval</value>
                <value>logarithm</value>
                <value>limit</value>
                <value>number</value>
                <value>point</value>
                <value>syntax</value>
                <value>quantity</value>
                <value>vector</value>
              </choice>
            </attribute>
          </optional>
          <optional>
            <attribute name="form">
              <choice>
                <value>popup</value>
                <value>buttons</value>
                <value>none</value>
              </choice>
            </attribute>
          </optional>
        </group>
        <group>
          <attribute name="form">
            <value>essay</value>
          </attribute>
          <optional>
            <attribute name="width"/>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="WWInstruction">
    <element name="instruction">
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="HintWW">
    <element name="hint">
      <oneOrMore>
        <ref name="BlockStatementWW"/>
      </oneOrMore>
    </element>
  </define>
  <define name="SolutionWW">
    <element name="solution">
      <oneOrMore>
        <ref name="BlockStatementWW"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Fragment">
    <element name="fragment">
      <choice>
        <attribute name="xml:id"/>
        <group>
          <attribute name="filename"/>
          <optional>
            <attribute name="xml:id"/>
          </optional>
        </group>
      </choice>
      <ref name="Title"/>
      <oneOrMore>
        <choice>
          <element name="code">
            <text/>
          </element>
          <element name="fragref">
            <attribute name="ref"/>
          </element>
        </choice>
      </oneOrMore>
    </element>
  </define>
  <define name="Attribution">
    <element name="attribution">
      <choice>
        <ref name="TextLong"/>
        <oneOrMore>
          <ref name="LongLine"/>
        </oneOrMore>
      </choice>
    </element>
  </define>
  <define name="UniqueID">
    <attribute name="xml:id"/>
  </define>
  <define name="PermanentID">
    <attribute name="permid"/>
  </define>
  <define name="Title">
    <element name="title">
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="LinedTitle">
    <element name="title">
      <oneOrMore>
        <ref name="LongLine"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Subtitle">
    <element name="subtitle">
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="LinedSubtitle">
    <element name="subtitle">
      <oneOrMore>
        <ref name="LongLine"/>
      </oneOrMore>
    </element>
  </define>
  <define name="ShortTitle">
    <element name="shorttitle">
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="PlainTitle">
    <element name="plaintitle">
      <text/>
    </element>
  </define>
  <define name="Creator">
    <element name="creator">
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="XMLBase">
    <attribute name="xml:base"/>
  </define>
  <define name="XMLLang">
    <attribute name="xml:lang"/>
  </define>
  <define name="MetaDataTarget">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataTitle">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <ref name="Title"/>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataAltTitle">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <ref name="Title"/>
    <optional>
      <ref name="ShortTitle"/>
    </optional>
    <optional>
      <ref name="PlainTitle"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataLinedTitle">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <choice>
      <ref name="Title"/>
      <ref name="LinedTitle"/>
    </choice>
    <optional>
      <ref name="ShortTitle"/>
    </optional>
    <optional>
      <ref name="PlainTitle"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataSubtitle">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <ref name="Title"/>
    <optional>
      <ref name="Subtitle"/>
    </optional>
    <optional>
      <ref name="ShortTitle"/>
    </optional>
    <optional>
      <ref name="PlainTitle"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataLinedSubtitle">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <choice>
      <ref name="Title"/>
      <ref name="LinedTitle"/>
    </choice>
    <optional>
      <choice>
        <ref name="Subtitle"/>
        <ref name="LinedSubtitle"/>
      </choice>
    </optional>
    <optional>
      <ref name="ShortTitle"/>
    </optional>
    <optional>
      <ref name="PlainTitle"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataTitleOptional">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <optional>
      <ref name="Title"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataAltTitleOptional">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <optional>
      <ref name="Title"/>
      <optional>
        <ref name="ShortTitle"/>
      </optional>
      <optional>
        <ref name="PlainTitle"/>
      </optional>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataTitleCreatorOptional">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <optional>
      <ref name="Title"/>
    </optional>
    <optional>
      <ref name="Creator"/>
    </optional>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="MetaDataCaption">
    <optional>
      <ref name="UniqueID"/>
    </optional>
    <optional>
      <ref name="PermanentID"/>
    </optional>
    <optional>
      <ref name="XMLBase"/>
    </optional>
    <optional>
      <ref name="XMLLang"/>
    </optional>
    <optional>
      <ref name="Title"/>
    </optional>
    <ref name="Caption"/>
    <zeroOrMore>
      <ref name="Index"/>
    </zeroOrMore>
  </define>
  <define name="TextParagraph">
    <mixed>
      <zeroOrMore>
        <choice>
          <ref name="Character"/>
          <ref name="Generator"/>
          <ref name="Verbatim"/>
          <ref name="Group"/>
          <ref name="WWVariable"/>
          <ref name="MathInline"/>
          <ref name="Music"/>
          <ref name="Reference"/>
          <ref name="CodeDisplay"/>
          <ref name="MathDisplay"/>
          <ref name="List"/>
          <ref name="Footnote"/>
          <ref name="Notation"/>
          <ref name="Index"/>
        </choice>
      </zeroOrMore>
    </mixed>
  </define>
  <define name="Paragraph">
    <element name="p">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <ref name="TextParagraph"/>
    </element>
  </define>
  <define name="ParagraphLined">
    <element name="p">
      <optional>
        <ref name="UniqueID"/>
      </optional>
      <optional>
        <ref name="PermanentID"/>
      </optional>
      <oneOrMore>
        <element name="line">
          <ref name="TextShort"/>
        </element>
      </oneOrMore>
    </element>
  </define>
  <define name="TextSimple">
    <mixed>
      <zeroOrMore>
        <ref name="Character"/>
      </zeroOrMore>
    </mixed>
  </define>
  <define name="TextShort">
    <mixed>
      <zeroOrMore>
        <choice>
          <ref name="Character"/>
          <ref name="Generator"/>
          <ref name="Verbatim"/>
          <ref name="Group"/>
          <ref name="MathInline"/>
          <ref name="Music"/>
        </choice>
      </zeroOrMore>
    </mixed>
  </define>
  <define name="TextLong">
    <mixed>
      <zeroOrMore>
        <choice>
          <ref name="Character"/>
          <ref name="Generator"/>
          <ref name="Verbatim"/>
          <ref name="Group"/>
          <ref name="MathInline"/>
          <ref name="Music"/>
          <ref name="Reference"/>
          <ref name="WWVariable"/>
        </choice>
      </zeroOrMore>
    </mixed>
  </define>
  <define name="Footnote">
    <element name="fn">
      <ref name="MetaDataTarget"/>
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="IdxHeading">
    <element name="h">
      <optional>
        <attribute name="sortby"/>
      </optional>
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="Index">
    <element name="idx">
      <ref name="MetaDataTarget"/>
      <optional>
        <attribute name="sortby"/>
      </optional>
      <optional>
        <attribute name="start"/>
      </optional>
      <optional>
        <attribute name="finish"/>
      </optional>
      <choice>
        <ref name="TextShort"/>
        <group>
          <ref name="IdxHeading"/>
          <optional>
            <ref name="IdxHeading"/>
          </optional>
          <optional>
            <ref name="IdxHeading"/>
          </optional>
          <optional>
            <choice>
              <element name="see">
                <ref name="TextShort"/>
              </element>
              <element name="seealso">
                <ref name="TextShort"/>
              </element>
            </choice>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="IndexList">
    <element name="index-list">
      <empty/>
    </element>
  </define>
  <define name="XrefTextStyle">
    <choice>
      <value>local</value>
      <value>global</value>
      <value>hybrid</value>
      <value>type-local</value>
      <value>type-global</value>
      <value>type-hybrid</value>
      <value>phrase-global</value>
      <value>phrase-hybrid</value>
      <value>title</value>
      <value>custom</value>
    </choice>
  </define>
  <define name="Reference">
    <choice>
      <ref name="Url"/>
      <ref name="Xref"/>
    </choice>
  </define>
  <define name="Url">
    <element name="url">
      <attribute name="href"/>
      <choice>
        <group>
          <attribute name="visual"/>
          <ref name="TextShort"/>
        </group>
        <optional>
          <attribute name="visual"/>
        </optional>
      </choice>
    </element>
  </define>
  <define name="Xref">
    <element name="xref">
      <choice>
        <attribute name="ref"/>
        <group>
          <attribute name="first"/>
          <attribute name="last"/>
        </group>
        <attribute name="provisional"/>
      </choice>
      <optional>
        <attribute name="text">
          <ref name="XrefTextStyle"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="detail"/>
      </optional>
      <ref name="TextShort"/>
    </element>
  </define>
  <define name="Notation">
    <element name="notation">
      <element name="usage">
        <ref name="MathInline"/>
      </element>
      <element name="description">
        <ref name="TextShort"/>
      </element>
    </element>
  </define>
  <define name="MathInline">
    <element name="m">
      <mixed>
        <zeroOrMore>
          <choice>
            <ref name="FillIn"/>
            <ref name="WWVariable"/>
          </choice>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="MathRow">
    <element name="mrow">
      <ref name="MetaDataTarget"/>
      <optional>
        <choice>
          <attribute name="number">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
          <attribute name="tag">
            <choice>
              <value>star</value>
              <value>dstar</value>
              <value>tstar</value>
              <value>dagger</value>
              <value>ddagger</value>
              <value>tdagger</value>
              <value>daggerdbl</value>
              <value>ddaggerdbl</value>
              <value>tdaggerdbl</value>
              <value>hash</value>
              <value>dhash</value>
              <value>thash</value>
              <value>maltese</value>
              <value>dmaltese</value>
              <value>tmaltese</value>
            </choice>
          </attribute>
        </choice>
      </optional>
      <optional>
        <attribute name="break">
          <choice>
            <value>yes</value>
            <value>no</value>
          </choice>
        </attribute>
      </optional>
      <mixed>
        <zeroOrMore>
          <choice>
            <ref name="Xref"/>
            <ref name="FillIn"/>
            <ref name="WWVariable"/>
          </choice>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="MathIntertext">
    <element name="intertext">
      <ref name="TextLong"/>
    </element>
  </define>
  <define name="MathDisplay">
    <choice>
      <element name="me">
        <mixed>
          <zeroOrMore>
            <choice>
              <ref name="FillIn"/>
              <ref name="WWVariable"/>
            </choice>
          </zeroOrMore>
        </mixed>
      </element>
      <element name="men">
        <ref name="MetaDataTarget"/>
        <mixed>
          <zeroOrMore>
            <choice>
              <ref name="FillIn"/>
              <ref name="WWVariable"/>
            </choice>
          </zeroOrMore>
        </mixed>
      </element>
      <element name="md">
        <optional>
          <attribute name="number">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="break">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="alignment"/>
        </optional>
        <optional>
          <attribute name="alignat-columns"/>
        </optional>
        <ref name="MathRow"/>
        <zeroOrMore>
          <choice>
            <ref name="MathRow"/>
            <ref name="MathIntertext"/>
          </choice>
        </zeroOrMore>
      </element>
      <element name="mdn">
        <optional>
          <attribute name="number">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="break">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="alignment"/>
        </optional>
        <optional>
          <attribute name="alignat-columns"/>
        </optional>
        <ref name="MathRow"/>
        <zeroOrMore>
          <choice>
            <ref name="MathRow"/>
            <ref name="MathIntertext"/>
          </choice>
        </zeroOrMore>
      </element>
    </choice>
  </define>
  <define name="Verbatim">
    <choice>
      <element name="c">
        <text/>
      </element>
      <element name="email">
        <text/>
      </element>
    </choice>
  </define>
  <define name="Group" combine="choice">
    <choice>
      <element name="abbr">
        <ref name="TextSimple"/>
      </element>
      <element name="acro">
        <ref name="TextSimple"/>
      </element>
      <element name="init">
        <ref name="TextSimple"/>
      </element>
    </choice>
  </define>
  <define name="Group" combine="choice">
    <choice>
      <element name="q">
        <ref name="TextLong"/>
      </element>
      <element name="sq">
        <ref name="TextLong"/>
      </element>
      <element name="angles">
        <ref name="TextLong"/>
      </element>
      <element name="dblbrackets">
        <ref name="TextLong"/>
      </element>
    </choice>
  </define>
  <define name="Group" combine="choice">
    <choice>
      <element name="em">
        <ref name="TextLong"/>
      </element>
      <element name="term">
        <ref name="TextLong"/>
      </element>
      <element name="alert">
        <ref name="TextLong"/>
      </element>
      <element name="pubtitle">
        <ref name="TextLong"/>
      </element>
      <element name="articletitle">
        <ref name="TextLong"/>
      </element>
      <element name="foreign">
        <optional>
          <ref name="XMLLang"/>
        </optional>
        <ref name="TextLong"/>
      </element>
    </choice>
  </define>
  <define name="Group" combine="choice">
    <choice>
      <element name="delete">
        <ref name="TextLong"/>
      </element>
      <element name="insert">
        <ref name="TextLong"/>
      </element>
      <element name="stale">
        <ref name="TextLong"/>
      </element>
    </choice>
  </define>
  <define name="Group" combine="choice">
    <choice>
      <element name="tag">
        <text/>
      </element>
      <element name="tage">
        <text/>
      </element>
      <element name="attr">
        <text/>
      </element>
    </choice>
  </define>
  <define name="Group" combine="choice">
    <element name="taxon">
      <optional>
        <attribute name="ncbi">
          <data type="integer"/>
        </attribute>
      </optional>
      <choice>
        <ref name="TextSimple"/>
        <group>
          <optional>
            <element name="genus">
              <ref name="TextSimple"/>
            </element>
          </optional>
          <optional>
            <element name="species">
              <ref name="TextSimple"/>
            </element>
          </optional>
        </group>
      </choice>
    </element>
  </define>
  <define name="Generator">
    <choice>
      <element name="today">
        <empty/>
      </element>
      <element name="timeofday">
        <empty/>
      </element>
      <element name="tex">
        <empty/>
      </element>
      <element name="latex">
        <empty/>
      </element>
      <element name="xetex">
        <empty/>
      </element>
      <element name="xelatex">
        <empty/>
      </element>
      <element name="pretext">
        <empty/>
      </element>
      <element name="webwork">
        <empty/>
      </element>
      <element name="ad">
        <empty/>
      </element>
      <element name="am">
        <empty/>
      </element>
      <element name="bc">
        <empty/>
      </element>
      <element name="ca">
        <empty/>
      </element>
      <element name="eg">
        <empty/>
      </element>
      <element name="etal">
        <empty/>
      </element>
      <element name="etc">
        <empty/>
      </element>
      <element name="ie">
        <empty/>
      </element>
      <element name="nb">
        <empty/>
      </element>
      <element name="pm">
        <empty/>
      </element>
      <element name="ps">
        <empty/>
      </element>
      <element name="vs">
        <empty/>
      </element>
      <element name="viz">
        <empty/>
      </element>
    </choice>
  </define>
  <define name="UnitSpecification">
    <optional>
      <attribute name="prefix"/>
    </optional>
    <attribute name="base"/>
    <optional>
      <attribute name="exp">
        <data type="integer"/>
      </attribute>
    </optional>
  </define>
  <define name="Generator" combine="choice">
    <element name="quantity">
      <optional>
        <element name="mag">
          <text/>
        </element>
      </optional>
      <zeroOrMore>
        <element name="unit">
          <ref name="UnitSpecification"/>
        </element>
      </zeroOrMore>
      <zeroOrMore>
        <element name="per">
          <ref name="UnitSpecification"/>
        </element>
      </zeroOrMore>
    </element>
  </define>
  <define name="Character" combine="choice">
    <choice>
      <element name="nbsp">
        <empty/>
      </element>
      <element name="ndash">
        <empty/>
      </element>
      <element name="mdash">
        <empty/>
      </element>
    </choice>
  </define>
  <define name="FillIn">
    <element name="fillin">
      <optional>
        <attribute name="characters">
          <data type="integer"/>
        </attribute>
      </optional>
      <empty/>
    </element>
  </define>
  <define name="Character" combine="choice">
    <ref name="FillIn"/>
  </define>
  <define name="Character">
    <choice>
      <element name="lsq">
        <empty/>
      </element>
      <element name="rsq">
        <empty/>
      </element>
      <element name="rq">
        <empty/>
      </element>
      <element name="lq">
        <empty/>
      </element>
      <element name="langle">
        <empty/>
      </element>
      <element name="rangle">
        <empty/>
      </element>
    </choice>
  </define>
  <define name="Character" combine="choice">
    <choice>
      <element name="minus">
        <empty/>
      </element>
      <element name="times">
        <empty/>
      </element>
      <element name="solidus">
        <empty/>
      </element>
      <element name="obelus">
        <empty/>
      </element>
      <element name="plusminus">
        <empty/>
      </element>
      <element name="degree">
        <empty/>
      </element>
      <element name="prime">
        <empty/>
      </element>
      <element name="dblprime">
        <empty/>
      </element>
    </choice>
  </define>
  <define name="Character" combine="choice">
    <choice>
      <element name="ellipsis">
        <empty/>
      </element>
      <element name="midpoint">
        <empty/>
      </element>
      <element name="swungdash">
        <empty/>
      </element>
      <element name="permille">
        <empty/>
      </element>
      <element name="pilcrow">
        <empty/>
      </element>
      <element name="section-mark">
        <empty/>
      </element>
      <element name="copyright">
        <empty/>
      </element>
      <element name="registered">
        <empty/>
      </element>
      <element name="trademark">
        <empty/>
      </element>
      <element name="phonomark">
        <empty/>
      </element>
      <element name="servicemark">
        <empty/>
      </element>
    </choice>
  </define>
  <define name="Character" combine="choice">
    <element name="icon">
      <attribute name="name"/>
    </element>
  </define>
  <define name="Character" combine="choice">
    <element name="kbd">
      <choice>
        <text/>
        <attribute name="name"/>
      </choice>
    </element>
  </define>
  <define name="Music">
    <choice>
      <element name="doublesharp">
        <empty/>
      </element>
      <element name="sharp">
        <empty/>
      </element>
      <element name="natural">
        <empty/>
      </element>
      <element name="flat">
        <empty/>
      </element>
      <element name="doubleflat">
        <empty/>
      </element>
      <element name="scaledeg">
        <choice>
          <value>0</value>
          <value>1</value>
          <value>2</value>
          <value>3</value>
          <value>4</value>
          <value>5</value>
          <value>6</value>
          <value>7</value>
          <value>8</value>
          <value>9</value>
          <value>10</value>
        </choice>
      </element>
      <element name="timesignature">
        <attribute name="top"/>
        <attribute name="bottom"/>
      </element>
      <element name="n">
        <attribute name="pc">
          <choice>
            <value>A</value>
            <value>B</value>
            <value>C</value>
            <value>D</value>
            <value>E</value>
            <value>F</value>
            <value>G</value>
            <value>a</value>
            <value>b</value>
            <value>c</value>
            <value>d</value>
            <value>e</value>
            <value>f</value>
            <value>g</value>
            <value>1</value>
            <value>2</value>
            <value>3</value>
            <value>4</value>
            <value>5</value>
            <value>6</value>
            <value>7</value>
            <value>8</value>
            <value>9</value>
            <value>10</value>
          </choice>
        </attribute>
        <optional>
          <attribute name="acc">
            <choice>
              <value>doublesharp</value>
              <value>sharp</value>
              <value>flat</value>
              <value>doubleflat</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="octave">
            <choice>
              <value>1</value>
              <value>2</value>
              <value>3</value>
              <value>4</value>
              <value>5</value>
            </choice>
          </attribute>
        </optional>
      </element>
      <element name="chord">
        <optional>
          <attribute name="root"/>
        </optional>
        <optional>
          <attribute name="mode"/>
        </optional>
        <optional>
          <attribute name="bps"/>
        </optional>
        <optional>
          <attribute name="bass"/>
        </optional>
        <optional>
          <attribute name="suspended">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
        </optional>
        <optional>
          <attribute name="parentheses">
            <choice>
              <value>yes</value>
              <value>no</value>
            </choice>
          </attribute>
        </optional>
        <zeroOrMore>
          <element name="alteration">
            <zeroOrMore>
              <choice>
                <ref name="TextSimple"/>
                <element name="sharp">
                  <empty/>
                </element>
                <element name="flat">
                  <empty/>
                </element>
              </choice>
            </zeroOrMore>
          </element>
        </zeroOrMore>
      </element>
    </choice>
  </define>
  <define name="ListGenerator">
    <element name="list-of">
      <attribute name="elements"/>
      <optional>
        <attribute name="scope"/>
      </optional>
      <optional>
        <attribute name="divisions"/>
      </optional>
      <optional>
        <attribute name="empty">
          <choice>
            <value>yes</value>
            <value>no</value>
          </choice>
        </attribute>
      </optional>
    </element>
  </define>
  <define name="NotationList">
    <element name="notation-list">
      <empty/>
    </element>
  </define>
  <define name="Demonstration">
    <element name="demonstration">
      <ref name="Title"/>
      <ref name="Paragraph"/>
      <ref name="Sage"/>
    </element>
  </define>
  <define name="DocInfo">
    <element name="docinfo">
      <optional>
        <ref name="XMLBase"/>
      </optional>
      <optional>
        <ref name="XMLLang"/>
      </optional>
      <oneOrMore>
        <ref name="Configuration"/>
      </oneOrMore>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="brandlogo">
      <optional>
        <attribute name="url"/>
      </optional>
      <attribute name="source"/>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="latex-preamble">
      <zeroOrMore>
        <element name="package">
          <text/>
        </element>
      </zeroOrMore>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="latex-image-preamble">
      <optional>
        <attribute name="syntax">
          <value>PGtikz</value>
        </attribute>
      </optional>
      <text/>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="asymptote-preamble">
      <text/>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="macros">
      <text/>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="cross-references">
      <attribute name="text">
        <ref name="XrefTextStyle"/>
      </attribute>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="initialism">
      <text/>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="feedback">
      <element name="url">
        <text/>
      </element>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="rename">
      <attribute name="element"/>
      <optional>
        <attribute name="xml:lang"/>
      </optional>
      <text/>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="images">
      <oneOrMore>
        <element name="archive">
          <optional>
            <attribute name="from"/>
          </optional>
          <text/>
        </element>
      </oneOrMore>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="author-biographies">
      <attribute name="length">
        <choice>
          <value>short</value>
          <value>long</value>
        </choice>
      </attribute>
    </element>
  </define>
  <define name="Configuration" combine="choice">
    <element name="numbering">
      <optional>
        <element name="division">
          <attribute name="part">
            <choice>
              <value>decorative</value>
              <value>structural</value>
            </choice>
          </attribute>
        </element>
      </optional>
    </element>
  </define>
</grammar>
