lib/asciidoctor/gb/isodoc.rng
<?xml version="1.0" encoding="UTF-8"?>
<!--
instantiations of this grammar may replace leaf strings
with more elaborated types; e.g. title (text) replaced with
title-main, title-intro, title-part; type replaced with
enum.
some renaming at leaf nodes is permissible
obligations can change both from optional to mandatory,
and from mandatory to optional; optional elements may
be omitted; freely positioned alternatives may be replaced
with strict ordering
DO NOT introduce a namespace here. We do not want a distinct namespace
for these elements, and a distinct namespace for any grammar inheriting
these elements; we just want one namespace for any child grammars
of this.
-->
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<include href="reqt.rng"/>
<!-- include "biblio.rnc" { } -->
<include href="basicdoc.rng">
<start>
<ref name="standard-document"/>
</start>
<define name="hyperlink">
<element name="link">
<attribute name="target">
<data type="anyURI"/>
</attribute>
<optional>
<attribute name="type">
<ref name="ReferenceFormat"/>
</attribute>
</optional>
<optional>
<attribute name="alt"/>
</optional>
<text/>
</element>
</define>
<define name="xref">
<element name="xref">
<attribute name="target">
<data type="string">
<param name="pattern">\i\c*|\c+#\c+</param>
</data>
</attribute>
<optional>
<attribute name="type">
<ref name="ReferenceFormat"/>
</attribute>
</optional>
<optional>
<attribute name="alt"/>
</optional>
<optional>
<attribute name="case">
<choice>
<value>capital</value>
<value>lowercase</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="droploc">
<data type="boolean"/>
</attribute>
</optional>
<text/>
</element>
</define>
<define name="ul">
<element name="ul">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<oneOrMore>
<ref name="li"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="ol">
<element name="ol">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<attribute name="type">
<choice>
<value>roman</value>
<value>alphabet</value>
<value>arabic</value>
<value>roman_upper</value>
<value>alphabet_upper</value>
</choice>
</attribute>
<oneOrMore>
<ref name="li"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="dl">
<element name="dl">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<oneOrMore>
<ref name="dt"/>
<ref name="dd"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="example">
<element name="example">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<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"/>
<ref name="figure"/>
</choice>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="table">
<element name="table">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</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>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<ref name="tname"/>
</optional>
<optional>
<ref name="thead"/>
</optional>
<ref name="tbody"/>
<optional>
<ref name="tfoot"/>
</optional>
<zeroOrMore>
<ref name="table-note"/>
</zeroOrMore>
<optional>
<ref name="dl"/>
</optional>
</element>
</define>
<define name="figure">
<element name="figure">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="class"/>
</optional>
<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>
</element>
</define>
<define name="sourcecode">
<element name="sourcecode">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="lang"/>
</optional>
<optional>
<ref name="tname"/>
</optional>
<oneOrMore>
<choice>
<text/>
<ref name="callout"/>
</choice>
</oneOrMore>
<zeroOrMore>
<ref name="annotation"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="formula">
<element name="formula">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="inequality">
<data type="boolean"/>
</attribute>
</optional>
<ref name="stem"/>
<optional>
<ref name="dl"/>
</optional>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="ParagraphType">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="align">
<ref name="Alignments"/>
</attribute>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<zeroOrMore>
<ref name="TextElement"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</define>
<define name="paragraph-with-footnote">
<element name="p">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="align">
<ref name="Alignments"/>
</attribute>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<zeroOrMore>
<choice>
<ref name="TextElement"/>
<ref name="fn"/>
</choice>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="quote">
<element name="quote">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="alignment">
<ref name="Alignments"/>
</attribute>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<ref name="quote-source"/>
</optional>
<optional>
<ref name="quote-author"/>
</optional>
<oneOrMore>
<ref name="paragraph-with-footnote"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</element>
</define>
<define name="BibDataExtensionType">
<ref name="doctype"/>
<optional>
<ref name="editorialgroup"/>
</optional>
<zeroOrMore>
<ref name="ics"/>
</zeroOrMore>
<zeroOrMore>
<ref name="structuredidentifier"/>
</zeroOrMore>
</define>
<!-- TitleType = text -->
<define name="sections">
<element name="sections">
<oneOrMore>
<choice>
<ref name="clause"/>
<ref name="terms"/>
<ref name="term-clause"/>
<ref name="definitions"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="references">
<element name="references">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<attribute name="normative">
<data type="boolean"/>
</attribute>
<optional>
<ref name="section-title"/>
</optional>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
<zeroOrMore>
<ref name="bibitem"/>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</zeroOrMore>
<zeroOrMore>
<ref name="references"/>
</zeroOrMore>
</element>
</define>
<define name="note">
<element name="note">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="type"/>
</optional>
<oneOrMore>
<choice>
<ref name="paragraph"/>
<ref name="ul"/>
<ref name="ol"/>
<ref name="dl"/>
<ref name="formula"/>
<ref name="quote"/>
<ref name="sourcecode"/>
</choice>
</oneOrMore>
</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>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<group>
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</group>
</define>
<define name="li">
<element name="li">
<group>
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
</group>
<!-- exclude figures? -->
</element>
</define>
<define name="dd">
<element name="dd">
<zeroOrMore>
<!-- exclude figures? -->
<ref name="BasicBlock"/>
</zeroOrMore>
</element>
</define>
<define name="thead">
<element name="thead">
<oneOrMore>
<ref name="tr"/>
</oneOrMore>
</element>
</define>
<define name="td">
<element name="td">
<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>
<choice>
<zeroOrMore>
<choice>
<ref name="TextElement"/>
<ref name="fn"/>
</choice>
</zeroOrMore>
<oneOrMore>
<choice>
<ref name="paragraph-with-footnote"/>
<ref name="dl"/>
<ref name="ul"/>
<ref name="ol"/>
<ref name="figure"/>
</choice>
</oneOrMore>
</choice>
</element>
</define>
<define name="th">
<element name="th">
<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>
<choice>
<zeroOrMore>
<choice>
<ref name="TextElement"/>
<ref name="fn"/>
</choice>
</zeroOrMore>
<oneOrMore>
<ref name="paragraph-with-footnote"/>
</oneOrMore>
</choice>
</element>
</define>
<define name="table-note">
<element name="note">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<ref name="paragraph"/>
</element>
</define>
</include>
<!-- end overrides -->
<define name="TextElement" combine="choice">
<ref name="concept"/>
</define>
<define name="concept">
<element name="concept">
<optional>
<attribute name="term"/>
</optional>
<choice>
<ref name="eref"/>
<ref name="xref"/>
<ref name="termref"/>
</choice>
</element>
</define>
<define name="BasicBlock" combine="choice">
<choice>
<ref name="requirement"/>
<ref name="recommendation"/>
<ref name="permission"/>
</choice>
</define>
<define name="bibliography">
<element name="bibliography">
<oneOrMore>
<choice>
<ref name="references"/>
<ref name="reference-clause"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="reference-clause">
<element name="clause">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="inline-header">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
<choice>
<oneOrMore>
<ref name="reference-clause"/>
</oneOrMore>
<zeroOrMore>
<ref name="references"/>
</zeroOrMore>
</choice>
</element>
</define>
<define name="editorialgroup">
<element name="editorialgroup">
<oneOrMore>
<ref name="technical-committee"/>
</oneOrMore>
</element>
</define>
<define name="technical-committee">
<element name="technical-committee">
<ref name="IsoWorkgroup"/>
</element>
</define>
<define name="IsoWorkgroup">
<optional>
<attribute name="number">
<data type="int"/>
</attribute>
</optional>
<optional>
<attribute name="type"/>
</optional>
<text/>
</define>
<define name="ics">
<element name="ics">
<element name="code">
<text/>
</element>
<element name="text">
<text/>
</element>
</element>
</define>
<define name="standard-document">
<element name="standard-document">
<attribute name="version"/>
<attribute name="type">
<choice>
<value>semantic</value>
<value>presentation</value>
</choice>
</attribute>
<ref name="bibdata"/>
<optional>
<ref name="boilerplate"/>
</optional>
<optional>
<ref name="preface"/>
</optional>
<ref name="sections"/>
<zeroOrMore>
<ref name="annex"/>
</zeroOrMore>
<zeroOrMore>
<ref name="references"/>
</zeroOrMore>
</element>
</define>
<define name="preface">
<element name="preface">
<oneOrMore>
<choice>
<ref name="content"/>
<ref name="abstract"/>
<ref name="foreword"/>
<ref name="introduction"/>
<ref name="acknowledgements"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="foreword">
<element name="foreword">
<ref name="Content-Section"/>
</element>
</define>
<define name="introduction">
<element name="introduction">
<ref name="Content-Section"/>
</element>
</define>
<define name="boilerplate">
<element name="boilerplate">
<optional>
<ref name="copyright-statement"/>
</optional>
<optional>
<ref name="license-statement"/>
</optional>
<optional>
<ref name="legal-statement"/>
</optional>
<optional>
<ref name="feedback-statement"/>
</optional>
</element>
</define>
<define name="copyright-statement">
<element name="copyright-statement">
<ref name="Content-Section"/>
</element>
</define>
<define name="license-statement">
<element name="license-statement">
<ref name="Content-Section"/>
</element>
</define>
<define name="legal-statement">
<element name="legal-statement">
<ref name="Content-Section"/>
</element>
</define>
<define name="feedback-statement">
<element name="feedback-statement">
<ref name="Content-Section"/>
</element>
</define>
<define name="definitions">
<element name="definitions">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<oneOrMore>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
<ref name="dl"/>
</oneOrMore>
</element>
</define>
<define name="content">
<element name="clause">
<ref name="Content-Section"/>
</element>
</define>
<define name="abstract">
<element name="abstract">
<ref name="Content-Section"/>
</element>
</define>
<define name="acknowledgements">
<element name="acknowledgements">
<ref name="Content-Section"/>
</element>
</define>
<define name="content-subsection">
<element name="clause">
<ref name="Content-Section"/>
</element>
</define>
<define name="Content-Section">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="inline-header">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="type"/>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<group>
<group>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</group>
<zeroOrMore>
<ref name="content-subsection"/>
</zeroOrMore>
</group>
</define>
<define name="clause">
<element name="clause">
<ref name="Clause-Section"/>
</element>
</define>
<define name="Clause-Section">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="inline-header">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="type"/>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<group>
<choice>
<group>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</group>
<ref name="amend"/>
</choice>
<zeroOrMore>
<choice>
<ref name="clause-subsection"/>
<ref name="terms"/>
<ref name="definitions"/>
</choice>
</zeroOrMore>
</group>
</define>
<define name="Annex-Section">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="inline-header">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<group>
<group>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</group>
<zeroOrMore>
<choice>
<ref name="annex-subsection"/>
<ref name="terms"/>
<ref name="definitions"/>
<ref name="references"/>
</choice>
</zeroOrMore>
</group>
</define>
<define name="clause-subsection">
<element name="clause">
<ref name="Clause-Section"/>
</element>
</define>
<define name="annex-subsection">
<element name="clause">
<ref name="Annex-Section"/>
</element>
</define>
<define name="annex">
<element name="annex">
<ref name="Annex-Section"/>
</element>
</define>
<define name="terms">
<element name="terms">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
<choice>
<oneOrMore>
<ref name="term"/>
</oneOrMore>
<group>
<zeroOrMore>
<ref name="terms"/>
</zeroOrMore>
<optional>
<ref name="definitions"/>
</optional>
</group>
</choice>
</element>
</define>
<define name="term">
<element name="term">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<oneOrMore>
<ref name="preferred"/>
</oneOrMore>
<zeroOrMore>
<ref name="admitted"/>
</zeroOrMore>
<zeroOrMore>
<ref name="related"/>
</zeroOrMore>
<zeroOrMore>
<ref name="deprecates"/>
</zeroOrMore>
<optional>
<ref name="termdomain"/>
</optional>
<zeroOrMore>
<ref name="termgrammar"/>
</zeroOrMore>
<ref name="definition"/>
<zeroOrMore>
<ref name="termnote"/>
</zeroOrMore>
<zeroOrMore>
<ref name="termexample"/>
</zeroOrMore>
<zeroOrMore>
<ref name="termsource"/>
</zeroOrMore>
</element>
</define>
<define name="preferred">
<element name="preferred">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="admitted">
<element name="admitted">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="related">
<element name="related">
<optional>
<attribute name="type">
<choice>
<value>compare</value>
<value>contrast</value>
<value>see</value>
</choice>
</attribute>
</optional>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="deprecates">
<element name="deprecates">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="termdomain">
<element name="domain">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="termgrammar">
<element name="grammar">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="definition">
<element name="definition">
<oneOrMore>
<choice>
<ref name="paragraph"/>
<ref name="figure"/>
<ref name="formula"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="termnote">
<element name="termnote">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="keep-with-next">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="keep-lines-together">
<data type="boolean"/>
</attribute>
</optional>
<oneOrMore>
<choice>
<ref name="paragraph"/>
<ref name="ul"/>
<ref name="ol"/>
<ref name="dl"/>
<ref name="formula"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="termexample">
<element name="termexample">
<attribute name="id">
<data type="ID"/>
</attribute>
<ref name="paragraph"/>
</element>
</define>
<define name="termsource">
<element name="termsource">
<attribute name="status">
<choice>
<value>identical</value>
<value>modified</value>
</choice>
</attribute>
<ref name="origin"/>
<optional>
<ref name="modification"/>
</optional>
</element>
</define>
<define name="origin">
<element name="origin">
<choice>
<ref name="erefType"/>
<ref name="termref"/>
</choice>
</element>
</define>
<define name="modification">
<element name="modification">
<ref name="paragraph"/>
</element>
</define>
<define name="termref">
<element name="termref">
<attribute name="base"/>
<attribute name="target"/>
<optional>
<text/>
</optional>
</element>
</define>
<define name="structuredidentifier">
<element name="structuredidentifier">
<optional>
<attribute name="type"/>
</optional>
<oneOrMore>
<element name="agency">
<text/>
</element>
</oneOrMore>
<optional>
<element name="class">
<text/>
</element>
</optional>
<element name="docnumber">
<text/>
</element>
<optional>
<element name="partnumber">
<text/>
</element>
</optional>
<optional>
<element name="edition">
<text/>
</element>
</optional>
<optional>
<element name="version">
<text/>
</element>
</optional>
<optional>
<element name="supplementtype">
<text/>
</element>
</optional>
<optional>
<element name="supplementnumber">
<text/>
</element>
</optional>
<optional>
<element name="language">
<text/>
</element>
</optional>
<optional>
<element name="year">
<text/>
</element>
</optional>
</element>
</define>
<define name="term-clause">
<element name="clause">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="inline-header">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
<zeroOrMore>
<choice>
<ref name="term-clause"/>
<ref name="terms"/>
<ref name="definitions"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="termdocsource">
<element name="termdocsource">
<ref name="CitationType"/>
</element>
</define>
<define name="amend">
<element name="amend">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<attribute name="change">
<choice>
<value>add</value>
<value>modify</value>
<value>delete</value>
</choice>
</attribute>
<optional>
<attribute name="path"/>
</optional>
<optional>
<attribute name="path_end"/>
</optional>
<optional>
<attribute name="title"/>
</optional>
<optional>
<element name="location">
<zeroOrMore>
<ref name="locality"/>
</zeroOrMore>
</element>
</optional>
<zeroOrMore>
<ref name="autonumber"/>
</zeroOrMore>
<optional>
<element name="description">
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="newcontent">
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="description">
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
</element>
</optional>
</element>
</define>
<define name="autonumber">
<element name="autonumber">
<attribute name="type">
<choice>
<value>requirement</value>
<value>recommendation</value>
<value>permission</value>
<value>table</value>
<value>figure</value>
<value>admonition</value>
<value>formula</value>
<value>sourcecode</value>
<value>example</value>
<value>note</value>
</choice>
</attribute>
<text/>
</element>
</define>
</grammar>