<?xml version="1.0" encoding="UTF-8"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <define name="document"> <element name="document"> <optional> <attribute name="identifier"/> </optional> <ref name="bibdata"/> <ref name="sections"/> <zeroOrMore> <ref name="references"/> </zeroOrMore> </element> </define> <define name="bibdata"> <element name="bibdata"> <ref name="BibData"/> </element> </define> <define name="sections"> <element name="sections"> <oneOrMore> <ref name="section"/> </oneOrMore> </element> </define> <define name="section"> <element name="section"> <ref name="Basic-Section"/> <zeroOrMore> <ref name="section"/> </zeroOrMore> </element> </define> <define name="Basic-Section"> <optional> <attribute name="id"> <data type="ID"/> </attribute> </optional> <optional> <attribute name="language"/> </optional> <optional> <attribute name="script"/> </optional> <optional> <ref name="section-title"/> </optional> <zeroOrMore> <ref name="BasicBlock"/> </zeroOrMore> </define> <define name="references"> <element name="references"> <optional> <attribute name="id"> <data type="ID"/> </attribute> </optional> <optional> <ref name="section-title"/> </optional> <zeroOrMore> <ref name="BasicBlock"/> </zeroOrMore> <zeroOrMore> <ref name="bibitem"/> </zeroOrMore> </element> </define> <define name="section-title"> <element name="title"> <zeroOrMore> <ref name="TextElement"/> </zeroOrMore> </element> </define> <define name="BasicBlock"> <choice> <ref name="paragraph-with-footnote"/> <ref name="table"/> <ref name="formula"/> <ref name="admonition"/> <ref name="ol"/> <ref name="ul"/> <ref name="dl"/> <ref name="figure"/> <ref name="quote"/> <ref name="sourcecode"/> <ref name="example"/> <ref name="review"/> <ref name="pre"/> <ref name="note"/> <ref name="pagebreak"/> <ref name="hr"/> <ref name="bookmark"/> <ref name="amend"/> </choice> </define> <define name="BasicBlockNoId"> <choice> <ref name="paragraph-with-footnote-no-id"/> <ref name="table-no-id"/> <ref name="formula-no-id"/> <ref name="admonition-no-id"/> <ref name="ol-no-id"/> <ref name="ul-no-id"/> <ref name="dl-no-id"/> <ref name="figure-no-id"/> <ref name="quote-no-id"/> <ref name="sourcecode-no-id"/> <ref name="example-no-id"/> <ref name="review"/> <ref name="pre-no-id"/> <ref name="note-no-id"/> <ref name="pagebreak"/> <ref name="hr"/> <ref name="bookmark"/> <ref name="amend"/> </choice> </define> <define name="amend"> <element name="amend"> <ref name="AmendType"/> </element> </define> <define name="AmendType"> <optional> <attribute name="id"> <data type="ID"/> </attribute> </optional> <attribute name="change"> <choice> <value>add</value> <value>modify</value> <value>delete</value> <value>replace</value> </choice> </attribute> <optional> <attribute name="path"/> </optional> <optional> <attribute name="path_end"/> </optional> <optional> <attribute name="title"/> </optional> <optional> <element name="location"> <zeroOrMore> <choice> <ref name="locality"/> <ref name="localityStack"/> </choice> </zeroOrMore> </element> </optional> <optional> <element name="description"> <zeroOrMore> <ref name="BasicBlock"/> </zeroOrMore> </element> </optional> <optional> <element name="newcontent"> <optional> <attribute name="id"> <data type="ID"/> </attribute> </optional> <zeroOrMore> <ref name="BasicBlock"/> </zeroOrMore> </element> </optional> <zeroOrMore> <ref name="classification"/> </zeroOrMore> <zeroOrMore> <ref name="contributor"/> </zeroOrMore> </define> <define name="classification"> <element name="classification"> <ref name="classification_tag"/> <ref name="classification_value"/> </element> </define> <define name="classification_tag"> <element name="tag"> <text/> </element> </define> <define name="classification_value"> <element name="value"> <text/> </element> </define> <define name="paragraph"> <element name="p"> <ref name="ParagraphType"/> </element> </define> <define name="Alignments"> <choice> <value>left</value> <value>right</value> <value>center</value> <value>justified</value> </choice> </define> <define name="RequiredId"> <attribute name="id"> <data type="ID"/> </attribute> </define> <define name="OptionalId"> <optional> <attribute name="id"> <data type="ID"/> </attribute> </optional> </define> <define name="ParagraphAttrs"> <optional> <attribute name="align"> <ref name="Alignments"/> </attribute> </optional> </define> <define name="ParagraphType"> <ref name="RequiredId"/> <ref name="ParagraphAttrs"/> <ref name="ParagraphBody"/> </define> <define name="ParagraphBody"> <zeroOrMore> <ref name="TextElement"/> </zeroOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="ParagraphFnBody"> <zeroOrMore> <choice> <ref name="TextElement"/> <ref name="fn"/> </choice> </zeroOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="paragraph-no-id"> <element name="p"> <ref name="OptionalId"/> <ref name="ParagraphAttrs"/> <ref name="ParagraphBody"/> </element> </define> <define name="paragraph-with-footnote"> <element name="p"> <ref name="RequiredId"/> <ref name="ParagraphAttrs"/> <ref name="ParagraphFnBody"/> </element> </define> <define name="paragraph-with-footnote-no-id"> <element name="p"> <ref name="OptionalId"/> <ref name="ParagraphAttrs"/> <ref name="ParagraphFnBody"/> </element> </define> <define name="note"> <element name="note"> <ref name="RequiredId"/> <ref name="NoteAttr"/> <ref name="NoteBody"/> </element> </define> <define name="note-no-id"> <element name="note"> <ref name="OptionalId"/> <ref name="NoteAttr"/> <ref name="NoteNoIdBody"/> </element> </define> <define name="NoteAttr"> <empty/> </define> <define name="NoteBody"> <oneOrMore> <ref name="paragraph"/> </oneOrMore> </define> <define name="NoteNoIdBody"> <oneOrMore> <ref name="paragraph-no-id"/> </oneOrMore> </define> <define name="review"> <element name="review"> <ref name="RequiredId"/> <attribute name="reviewer"/> <optional> <attribute name="type"/> </optional> <optional> <attribute name="date"> <data type="dateTime"/> </attribute> </optional> <optional> <attribute name="from"> <data type="IDREF"/> </attribute> </optional> <optional> <attribute name="to"> <data type="IDREF"/> </attribute> </optional> <oneOrMore> <ref name="paragraph"/> </oneOrMore> </element> </define> <define name="formula"> <element name="formula"> <ref name="RequiredId"/> <ref name="FormulaAttr"/> <ref name="FormulaBody"/> </element> </define> <define name="formula-no-id"> <element name="formula"> <ref name="OptionalId"/> <ref name="FormulaAttr"/> <ref name="FormulaNoIdBody"/> </element> </define> <define name="FormulaAttr"> <optional> <attribute name="unnumbered"> <data type="boolean"/> </attribute> </optional> <optional> <attribute name="subsequence"/> </optional> <optional> <attribute name="inequality"> <data type="boolean"/> </attribute> </optional> </define> <define name="FormulaBody"> <ref name="stem"/> <optional> <ref name="dl"/> </optional> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="FormulaNoIdBody"> <ref name="stem"/> <optional> <ref name="dl-no-id"/> </optional> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="quote"> <element name="quote"> <ref name="RequiredId"/> <ref name="QuoteAttr"/> <ref name="QuoteBody"/> </element> </define> <define name="quote-no-id"> <element name="quote"> <ref name="OptionalId"/> <ref name="QuoteAttr"/> <ref name="QuoteNoIdBody"/> </element> </define> <define name="QuoteAttr"> <optional> <attribute name="alignment"> <ref name="Alignments"/> </attribute> </optional> </define> <define name="QuoteBody"> <optional> <ref name="quote-source"/> </optional> <optional> <ref name="quote-author"/> </optional> <oneOrMore> <ref name="paragraph-with-footnote"/> </oneOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="QuoteNoIdBody"> <optional> <ref name="quote-source"/> </optional> <optional> <ref name="quote-author"/> </optional> <oneOrMore> <ref name="paragraph-with-footnote-no-id"/> </oneOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="quote-source"> <element name="source"> <ref name="erefType"/> </element> </define> <define name="quote-author"> <element name="author"> <text/> </element> </define> <define name="sourcecode"> <element name="sourcecode"> <ref name="RequiredId"/> <ref name="SourceAttr"/> <ref name="SourceBody"/> </element> </define> <define name="sourcecode-no-id"> <element name="sourcecode"> <ref name="OptionalId"/> <ref name="SourceAttr"/> <ref name="SourceNoIdBody"/> </element> </define> <define name="SourceAttr"> <optional> <attribute name="unnumbered"> <data type="boolean"/> </attribute> </optional> <optional> <attribute name="subsequence"/> </optional> <optional> <attribute name="lang"/> </optional> </define> <define name="SourceBody"> <optional> <ref name="tname"/> </optional> <oneOrMore> <choice> <text/> <ref name="callout"/> </choice> </oneOrMore> <zeroOrMore> <ref name="annotation"/> </zeroOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="SourceNoIdBody"> <optional> <ref name="tname"/> </optional> <oneOrMore> <choice> <text/> <ref name="callout"/> </choice> </oneOrMore> <zeroOrMore> <ref name="annotation"/> </zeroOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="pre"> <element name="pre"> <ref name="RequiredId"/> <ref name="PreAttr"/> <ref name="PreBody"/> </element> </define> <define name="pre-no-id"> <element name="pre"> <ref name="OptionalId"/> <ref name="PreAttr"/> <ref name="PreNoIdBody"/> </element> </define> <define name="PreAttr"> <optional> <attribute name="alt"/> </optional> </define> <define name="PreBody"> <optional> <ref name="tname"/> </optional> <text/> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="PreNoIdBody"> <optional> <ref name="tname"/> </optional> <text/> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="table"> <element name="table"> <ref name="RequiredId"/> <ref name="TableAttr"/> <ref name="TableBody"/> </element> </define> <define name="table-no-id"> <element name="table"> <ref name="OptionalId"/> <ref name="TableAttr"/> <ref name="TableNoIdBody"/> </element> </define> <define name="TableAttr"> <optional> <attribute name="unnumbered"> <data type="boolean"/> </attribute> </optional> <optional> <attribute name="subsequence"/> </optional> <optional> <attribute name="alt"/> </optional> <optional> <attribute name="summary"/> </optional> <optional> <attribute name="uri"> <data type="anyURI"/> </attribute> </optional> </define> <define name="TableBody"> <optional> <ref name="tname"/> </optional> <optional> <ref name="thead"/> </optional> <ref name="tbody"/> <optional> <ref name="tfoot"/> </optional> <optional> <ref name="dl"/> </optional> <zeroOrMore> <ref name="table-note"/> </zeroOrMore> </define> <define name="TableNoIdBody"> <optional> <ref name="tname"/> </optional> <optional> <ref name="thead-no-id"/> </optional> <ref name="tbody-no-id"/> <optional> <ref name="tfoot-no-id"/> </optional> <optional> <ref name="dl-no-id"/> </optional> <zeroOrMore> <ref name="table-note-no-id"/> </zeroOrMore> </define> <define name="tname"> <element name="name"> <oneOrMore> <choice> <ref name="PureTextElement"/> <ref name="eref"/> <ref name="stem"/> <ref name="keyword"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </oneOrMore> </element> </define> <define name="thead"> <element name="thead"> <ref name="tr"/> </element> </define> <define name="thead-no-id"> <element name="thead"> <ref name="tr-no-id"/> </element> </define> <define name="tfoot"> <element name="tfoot"> <ref name="tr"/> </element> </define> <define name="tfoot-no-id"> <element name="tfoot"> <ref name="tr-no-id"/> </element> </define> <define name="tbody"> <element name="tbody"> <oneOrMore> <ref name="tr"/> </oneOrMore> </element> </define> <define name="tbody-no-id"> <element name="tbody"> <oneOrMore> <ref name="tr-no-id"/> </oneOrMore> </element> </define> <define name="table-note"> <element name="note"> <ref name="paragraph"/> </element> </define> <define name="table-note-no-id"> <element name="note"> <ref name="paragraph-no-id"/> </element> </define> <define name="tr"> <element name="tr"> <oneOrMore> <choice> <ref name="td"/> <ref name="th"/> </choice> </oneOrMore> </element> </define> <define name="tr-no-id"> <element name="tr"> <oneOrMore> <choice> <ref name="td-no-id"/> <ref name="th-no-id"/> </choice> </oneOrMore> </element> </define> <define name="td"> <element name="td"> <ref name="TdAttr"/> <ref name="TdBody"/> </element> </define> <define name="td-no-id"> <element name="td"> <ref name="TdAttr"/> <ref name="TdNoIdBody"/> </element> </define> <define name="TdAttr"> <optional> <attribute name="colspan"/> </optional> <optional> <attribute name="rowspan"/> </optional> <optional> <attribute name="align"> <choice> <value>left</value> <value>right</value> <value>center</value> </choice> </attribute> </optional> <optional> <attribute name="valign"> <choice> <value>top</value> <value>middle</value> <value>bottom</value> <value>baseline</value> </choice> </attribute> </optional> </define> <define name="TdBody"> <choice> <zeroOrMore> <ref name="TextElement"/> </zeroOrMore> <oneOrMore> <ref name="paragraph-with-footnote"/> </oneOrMore> </choice> </define> <define name="TdNoIdBody"> <choice> <zeroOrMore> <ref name="TextElement"/> </zeroOrMore> <oneOrMore> <ref name="paragraph-with-footnote-no-id"/> </oneOrMore> </choice> </define> <define name="th"> <element name="th"> <ref name="ThAttr"/> <ref name="ThBody"/> </element> </define> <define name="th-no-id"> <element name="th"> <ref name="ThAttr"/> <ref name="ThNoIdBody"/> </element> </define> <define name="ThAttr"> <ref name="TdAttr"/> </define> <define name="ThBody"> <ref name="TdBody"/> </define> <define name="ThNoIdBody"> <ref name="TdNoIdBody"/> </define> <define name="example"> <element name="example"> <ref name="RequiredId"/> <ref name="ExampleAttr"/> <ref name="ExampleBody"/> </element> </define> <define name="example-no-id"> <element name="example"> <ref name="OptionalId"/> <ref name="ExampleAttr"/> <ref name="ExampleNoIdBody"/> </element> </define> <define name="ExampleAttr"> <optional> <attribute name="unnumbered"> <data type="boolean"/> </attribute> </optional> <optional> <attribute name="subsequence"/> </optional> </define> <define name="ExampleBody"> <optional> <ref name="tname"/> </optional> <oneOrMore> <choice> <ref name="formula"/> <ref name="ul"/> <ref name="ol"/> <ref name="dl"/> <ref name="quote"/> <ref name="sourcecode"/> <ref name="paragraph-with-footnote"/> </choice> </oneOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="ExampleNoIdBody"> <optional> <ref name="tname"/> </optional> <oneOrMore> <choice> <ref name="formula-no-id"/> <ref name="ul-no-id"/> <ref name="ol-no-id"/> <ref name="dl-no-id"/> <ref name="quote-no-id"/> <ref name="sourcecode-no-id"/> <ref name="paragraph-with-footnote-no-id"/> </choice> </oneOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="admonition"> <element name="admonition"> <ref name="RequiredId"/> <ref name="AdmonitionAttr"/> <ref name="AdmonitionBody"/> </element> </define> <define name="admonition-no-id"> <element name="admonition"> <ref name="OptionalId"/> <ref name="AdmonitionAttr"/> <ref name="AdmonitionNoIdBody"/> </element> </define> <define name="AdmonitionAttr"> <attribute name="type"> <ref name="AdmonitionType"/> </attribute> <optional> <attribute name="class"/> </optional> <optional> <attribute name="uri"> <data type="anyURI"/> </attribute> </optional> </define> <define name="AdmonitionBody"> <optional> <ref name="tname"/> </optional> <zeroOrMore> <ref name="paragraph-with-footnote"/> </zeroOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="AdmonitionNoIdBody"> <optional> <ref name="tname"/> </optional> <zeroOrMore> <ref name="paragraph-with-footnote-no-id"/> </zeroOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="AdmonitionType"> <choice> <value>warning</value> <value>note</value> <value>tip</value> <value>important</value> <value>caution</value> </choice> </define> <define name="figure"> <element name="figure"> <ref name="RequiredId"/> <ref name="FigureAttr"/> <ref name="FigureBody"/> </element> </define> <define name="figure-no-id"> <element name="figure"> <ref name="OptionalId"/> <ref name="FigureAttr"/> <ref name="FigureNoIdBody"/> </element> </define> <define name="FigureAttr"> <optional> <attribute name="unnumbered"> <data type="boolean"/> </attribute> </optional> <optional> <attribute name="subsequence"/> </optional> <optional> <attribute name="class"/> </optional> </define> <define name="FigureBody"> <optional> <ref name="source"/> </optional> <optional> <ref name="tname"/> </optional> <choice> <ref name="image"/> <ref name="video"/> <ref name="audio"/> <ref name="pre"/> <oneOrMore> <ref name="paragraph-with-footnote"/> </oneOrMore> <zeroOrMore> <ref name="figure"/> </zeroOrMore> </choice> <zeroOrMore> <ref name="fn"/> </zeroOrMore> <optional> <ref name="dl"/> </optional> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="FigureNoIdBody"> <optional> <ref name="source"/> </optional> <optional> <ref name="tname"/> </optional> <choice> <ref name="image-no-id"/> <ref name="video-no-id"/> <ref name="audio-no-id"/> <ref name="pre-no-id"/> <oneOrMore> <ref name="paragraph-with-footnote-no-id"/> </oneOrMore> <zeroOrMore> <ref name="figure-no-id"/> </zeroOrMore> </choice> <zeroOrMore> <ref name="fn"/> </zeroOrMore> <optional> <ref name="dl-no-id"/> </optional> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="TextElement"> <choice> <text/> <ref name="em"/> <ref name="eref"/> <ref name="strong"/> <ref name="stem"/> <ref name="sub"/> <ref name="sup"/> <ref name="tt"/> <ref name="underline"/> <ref name="keyword"/> <ref name="ruby"/> <ref name="strike"/> <ref name="smallcap"/> <ref name="xref"/> <ref name="br"/> <ref name="hyperlink"/> <ref name="hr"/> <ref name="pagebreak"/> <ref name="bookmark"/> <ref name="image"/> <ref name="index"/> <ref name="index-xref"/> </choice> </define> <define name="PureTextElement"> <choice> <text/> <ref name="pure_em"/> <ref name="pure_strong"/> <ref name="sub"/> <ref name="sup"/> <ref name="pure_tt"/> <ref name="pure_underline"/> <ref name="pure_strike"/> <ref name="pure_smallcap"/> <ref name="br"/> </choice> </define> <define name="source"> <element name="source"> <ref name="TypedUri"/> </element> </define> <define name="em"> <element name="em"> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="stem"/> <ref name="eref"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="pure_em"> <element name="em"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="strong"> <element name="strong"> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="stem"/> <ref name="eref"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="pure_strong"> <element name="strong"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="tt"> <element name="tt"> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="eref"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="pure_tt"> <element name="tt"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="keyword"> <element name="keyword"> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="sub"> <element name="sub"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="sup"> <element name="sup"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="strike"> <element name="strike"> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="stem"/> <ref name="eref"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="pure_strike"> <element name="strike"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="underline"> <element name="underline"> <optional> <attribute name="style"/> </optional> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="stem"/> <ref name="eref"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="pure_underline"> <element name="underline"> <optional> <attribute name="style"/> </optional> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="smallcap"> <element name="smallcap"> <zeroOrMore> <choice> <ref name="PureTextElement"/> <ref name="stem"/> <ref name="eref"/> <ref name="xref"/> <ref name="hyperlink"/> <ref name="index"/> <ref name="index-xref"/> </choice> </zeroOrMore> </element> </define> <define name="pure_smallcap"> <element name="smallcap"> <zeroOrMore> <ref name="PureTextElement"/> </zeroOrMore> </element> </define> <define name="ruby"> <element name="ruby"> <choice> <ref name="ruby_pronunciation"/> <ref name="ruby_annotation"/> </choice> <choice> <text/> <ref name="ruby"/> </choice> </element> </define> <define name="ruby_pronunciation"> <element name="pronunciation"> <attribute name="value"/> <optional> <attribute name="script"/> </optional> <optional> <attribute name="lang"/> </optional> </element> </define> <define name="ruby_annotation"> <element name="annotation"> <attribute name="value"/> <optional> <attribute name="script"/> </optional> <optional> <attribute name="lang"/> </optional> </element> </define> <define name="br"> <element name="br"> <empty/> </element> </define> <define name="hr"> <element name="hr"> <empty/> </element> </define> <define name="pagebreak"> <element name="pagebreak"> <empty/> </element> </define> <define name="index"> <element name="index"> <optional> <attribute name="to"> <data type="IDREF"/> </attribute> </optional> <element name="primary"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> <optional> <element name="secondary"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </optional> <optional> <element name="tertiary"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </optional> </element> </define> <define name="index-xref"> <element name="index-xref"> <attribute name="also"> <data type="boolean"/> </attribute> <element name="primary"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> <optional> <element name="secondary"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </optional> <optional> <element name="tertiary"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </optional> <element name="target"> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </element> </define> <!-- bare ID element, used for referencing arbitrary spans of text --> <define name="bookmark"> <element name="bookmark"> <attribute name="id"> <data type="ID"/> </attribute> <empty/> </element> </define> <define name="ReferenceFormat"> <choice> <value>external</value> <value>inline</value> <value>footnote</value> <value>callout</value> </choice> </define> <define name="eref"> <element name="eref"> <ref name="erefType"/> </element> </define> <define name="erefType"> <optional> <attribute name="normative"> <data type="boolean"/> </attribute> </optional> <attribute name="citeas"/> <attribute name="type"> <ref name="ReferenceFormat"/> </attribute> <optional> <attribute name="alt"/> </optional> <ref name="CitationType"/> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </define> <define name="hyperlink"> <element name="link"> <attribute name="target"> <data type="anyURI"/> </attribute> <attribute name="type"> <ref name="ReferenceFormat"/> </attribute> <optional> <attribute name="alt"/> </optional> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </define> <define name="xref"> <element name="xref"> <attribute name="target"> <data type="IDREF"/> </attribute> <attribute name="type"> <ref name="ReferenceFormat"/> </attribute> <optional> <attribute name="alt"/> </optional> <oneOrMore> <ref name="PureTextElement"/> </oneOrMore> </element> </define> <define name="fn"> <element name="fn"> <attribute name="reference"/> <oneOrMore> <ref name="paragraph"/> </oneOrMore> </element> </define> <!-- This is xref with fixed @type="footnote", and @target built in as paragraph+ @reference replaces ReferenceElement/text so <fn reference="2"><p>This is a footnote</p></fn> corresponds to <eref type="footnote" target="fn2">2</xref> <p id="fn2">This is a footnote</p> --> <define name="callout"> <element name="callout"> <attribute name="target"> <data type="IDREF"/> </attribute> <text/> </element> </define> <!-- This is xref with fixed @type="callout"; the target by convention is in an annotation in the same source code snippet so <callout target="xyz">1</callout> corresponds to <xref type="callout" target="xyz">1</xref> --> <define name="image"> <element name="image"> <ref name="RequiredId"/> <ref name="ImageAttr"/> </element> </define> <define name="image-no-id"> <element name="image"> <ref name="OptionalId"/> <ref name="ImageAttr"/> </element> </define> <define name="ImageAttr"> <attribute name="src"> <data type="anyURI"/> </attribute> <attribute name="mimetype"/> <optional> <attribute name="filename"/> </optional> <optional> <attribute name="width"> <ref name="ImageSize"/> </attribute> </optional> <optional> <attribute name="height"> <ref name="ImageSize"/> </attribute> </optional> <optional> <attribute name="alt"/> </optional> <optional> <attribute name="title"/> </optional> <optional> <attribute name="longdesc"> <data type="anyURI"/> </attribute> </optional> </define> <define name="ImageSize"> <choice> <data type="string"> <param name="pattern">\d+([.]\d+)?(%?)</param> </data> <value>auto</value> </choice> </define> <define name="video"> <element name="video"> <ref name="RequiredId"/> <ref name="VideoAttr"/> <ref name="VideoBody"/> </element> </define> <define name="video-no-id"> <element name="video"> <ref name="OptionalId"/> <ref name="VideoAttr"/> <ref name="VideoBody"/> </element> </define> <define name="VideoAttr"> <attribute name="src"> <data type="anyURI"/> </attribute> <attribute name="mimetype"/> <optional> <attribute name="filename"/> </optional> <optional> <attribute name="width"> <choice> <data type="int"/> <value>auto</value> </choice> </attribute> </optional> <optional> <attribute name="height"> <choice> <data type="int"/> <value>auto</value> </choice> </attribute> </optional> <optional> <attribute name="alt"/> </optional> <optional> <attribute name="title"/> </optional> <optional> <attribute name="longdesc"> <data type="anyURI"/> </attribute> </optional> </define> <define name="VideoBody"> <zeroOrMore> <ref name="altsource"/> </zeroOrMore> </define> <define name="audio"> <element name="audio"> <ref name="RequiredId"/> <ref name="AudioAttr"/> <ref name="AudioBody"/> </element> </define> <define name="audio-no-id"> <element name="audio"> <ref name="OptionalId"/> <ref name="AudioAttr"/> <ref name="AudioBody"/> </element> </define> <define name="AudioAttr"> <attribute name="src"> <data type="anyURI"/> </attribute> <attribute name="mimetype"/> <optional> <attribute name="filename"/> </optional> <optional> <attribute name="alt"/> </optional> <optional> <attribute name="title"/> </optional> <optional> <attribute name="longdesc"> <data type="anyURI"/> </attribute> </optional> </define> <define name="AudioBody"> <zeroOrMore> <ref name="altsource"/> </zeroOrMore> </define> <define name="altsource"> <element name="altsource"> <attribute name="src"> <data type="anyURI"/> </attribute> <attribute name="mimetype"/> <optional> <attribute name="filename"/> </optional> </element> </define> <define name="stem"> <element name="stem"> <attribute name="type"> <choice> <value>MathML</value> <value>AsciiMath</value> </choice> </attribute> <oneOrMore> <choice> <text/> <ref name="AnyElement"/> </choice> </oneOrMore> </element> </define> <define name="annotation"> <element name="annotation"> <ref name="RequiredId"/> <ref name="paragraph"/> </element> </define> <define name="ul"> <element name="ul"> <ref name="RequiredId"/> <ref name="UlAttr"/> <ref name="UlBody"/> </element> </define> <define name="ul-no-id"> <element name="ul"> <ref name="OptionalId"/> <ref name="UlAttr"/> <ref name="UlNoIdBody"/> </element> </define> <define name="UlAttr"> <empty/> </define> <define name="UlBody"> <oneOrMore> <ref name="li"/> </oneOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="UlNoIdBody"> <oneOrMore> <ref name="li-no-id"/> </oneOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="li"> <element name="li"> <ref name="OptionalId"/> <ref name="LiAttr"/> <ref name="LiBody"/> </element> </define> <define name="li-no-id"> <element name="li"> <ref name="OptionalId"/> <ref name="LiAttr"/> <ref name="LiNoIdBody"/> </element> </define> <define name="LiAttr"> <empty/> </define> <define name="LiBody"> <oneOrMore> <ref name="paragraph-with-footnote"/> </oneOrMore> </define> <define name="LiNoIdBody"> <oneOrMore> <ref name="paragraph-with-footnote-no-id"/> </oneOrMore> </define> <define name="ol"> <element name="ol"> <ref name="RequiredId"/> <ref name="OlAttr"/> <ref name="OlBody"/> </element> </define> <define name="ol-no-id"> <element name="ol"> <ref name="OptionalId"/> <ref name="OlAttr"/> <ref name="OlNoIdBody"/> </element> </define> <define name="OlAttr"> <attribute name="type"> <choice> <value>roman</value> <value>alphabet</value> <value>arabic</value> <value>roman_upper</value> <value>alphabet_upper</value> </choice> </attribute> <optional> <attribute name="start"/> </optional> </define> <define name="OlBody"> <oneOrMore> <ref name="li"/> </oneOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="OlNoIdBody"> <oneOrMore> <ref name="li-no-id"/> </oneOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="dl"> <element name="dl"> <ref name="RequiredId"/> <ref name="DlAttr"/> <ref name="DlBody"/> </element> </define> <define name="dl-no-id"> <element name="dl"> <ref name="OptionalId"/> <ref name="DlNoIdBody"/> </element> </define> <define name="DlAttr"> <empty/> </define> <define name="DlBody"> <oneOrMore> <ref name="dt"/> <ref name="dd"/> </oneOrMore> <zeroOrMore> <ref name="note"/> </zeroOrMore> </define> <define name="DlNoIdBody"> <oneOrMore> <ref name="dt"/> <ref name="dd-no-id"/> </oneOrMore> <zeroOrMore> <ref name="note-no-id"/> </zeroOrMore> </define> <define name="dt"> <element name="dt"> <zeroOrMore> <ref name="TextElement"/> </zeroOrMore> </element> </define> <define name="dd"> <element name="dd"> <zeroOrMore> <ref name="paragraph-with-footnote"/> </zeroOrMore> </element> </define> <define name="dd-no-id"> <element name="dd"> <zeroOrMore> <ref name="paragraph-with-footnote-no-id"/> </zeroOrMore> </element> </define> </grammar>