lib/metanorma/ietf/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.
-->
<!-- VERSION v1.3.2 -->
<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">
<include href="reqt.rng"/>
<include href="basicdoc.rng">
<define name="amend">
<element name="amend">
<ref name="BlockAttributes"/>
<ref name="AmendType"/>
<zeroOrMore>
<ref name="autonumber"/>
</zeroOrMore>
</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>
<optional>
<attribute name="coverpage">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="notag">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="AdmonitionType">
<choice>
<value>warning</value>
<value>note</value>
<value>tip</value>
<value>important</value>
<value>caution</value>
<value>statement</value>
<value>editorial</value>
<value>box</value>
</choice>
</define>
<define name="index">
<element name="index">
<optional>
<attribute name="to">
<data type="IDREF"/>
</attribute>
</optional>
<element name="primary">
<oneOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
</choice>
</oneOrMore>
</element>
<optional>
<element name="secondary">
<oneOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
</choice>
</oneOrMore>
</element>
</optional>
<optional>
<element name="tertiary">
<oneOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
</choice>
</oneOrMore>
</element>
</optional>
</element>
</define>
<define name="section-title">
<element name="title">
<zeroOrMore>
<ref name="TextElement"/>
</zeroOrMore>
</element>
<zeroOrMore>
<element name="variant-title">
<ref name="TypedTitleString"/>
</element>
</zeroOrMore>
</define>
<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>
<optional>
<attribute name="update-type">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="style"/>
</optional>
<oneOrMore>
<ref name="PureTextElement"/>
</oneOrMore>
</element>
</define>
<define name="xref">
<element name="xref">
<ref name="XrefAttributes"/>
<ref name="XrefBody"/>
</element>
</define>
<define name="erefType">
<optional>
<attribute name="normative">
<data type="boolean"/>
</attribute>
</optional>
<attribute name="citeas"/>
<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>
<optional>
<attribute name="style"/>
</optional>
<ref name="CitationType"/>
<oneOrMore>
<ref name="PureTextElement"/>
</oneOrMore>
</define>
<define name="UlAttr">
<ref name="BlockAttributes"/>
</define>
<define name="UlBody">
<optional>
<ref name="tname"/>
</optional>
<oneOrMore>
<ref name="ul_li"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</define>
<define name="OlBody">
<optional>
<ref name="tname"/>
</optional>
<oneOrMore>
<ref name="li"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</define>
<define name="OlAttr">
<ref name="BlockAttributes"/>
<optional>
<attribute name="type">
<choice>
<value>roman</value>
<value>alphabet</value>
<value>arabic</value>
<value>roman_upper</value>
<value>alphabet_upper</value>
</choice>
</attribute>
</optional>
</define>
<define name="DlAttr">
<ref name="BlockAttributes"/>
<optional>
<attribute name="key">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="DlBody">
<optional>
<ref name="tname"/>
</optional>
<oneOrMore>
<ref name="dt"/>
<ref name="dd"/>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</define>
<define name="dt">
<element name="dt">
<ref name="OptionalId"/>
<zeroOrMore>
<ref name="TextElement"/>
</zeroOrMore>
</element>
</define>
<define name="ExampleAttr">
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="number"/>
</optional>
<ref name="BlockAttributes"/>
</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"/>
<ref name="figure"/>
</choice>
</oneOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</define>
<define name="TableAttr">
<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="width"/>
</optional>
<ref name="BlockAttributes"/>
</define>
<define name="TableBody">
<optional>
<ref name="colgroup"/>
</optional>
<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>
<optional>
<ref name="source"/>
</optional>
</define>
<define name="FigureAttr">
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="class"/>
</optional>
<optional>
<attribute name="width"/>
</optional>
<ref name="BlockAttributes"/>
</define>
<define name="FigureBody">
<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>
<optional>
<ref name="source"/>
</optional>
</define>
<define name="source">
<element name="source">
<attribute name="status">
<ref name="SourceStatusType"/>
</attribute>
<ref name="origin"/>
<optional>
<ref name="modification"/>
</optional>
</element>
</define>
<define name="SourceAttr">
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="lang"/>
</optional>
<ref name="BlockAttributes"/>
<optional>
<attribute name="linenums">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="SourceBody">
<optional>
<ref name="tname"/>
</optional>
<oneOrMore>
<choice>
<text/>
<ref name="callout"/>
<ref name="xref"/>
<ref name="eref"/>
</choice>
</oneOrMore>
<zeroOrMore>
<ref name="annotation"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</define>
<define name="FormulaAttr">
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="inequality">
<data type="boolean"/>
</attribute>
</optional>
<ref name="BlockAttributes"/>
</define>
<define name="ParagraphAttrs">
<optional>
<attribute name="align">
<ref name="Alignments"/>
</attribute>
</optional>
<optional>
<attribute name="type"/>
</optional>
<ref name="BlockAttributes"/>
</define>
<define name="QuoteAttr">
<optional>
<attribute name="alignment">
<ref name="Alignments"/>
</attribute>
</optional>
<ref name="BlockAttributes"/>
</define>
<!-- TitleType = text -->
<define name="sections">
<element name="sections">
<oneOrMore>
<choice>
<ref name="clause"/>
<ref name="terms"/>
<ref name="term-clause"/>
<ref name="definitions"/>
<ref name="floating-title"/>
</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="doc_bibitem"/>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
</zeroOrMore>
<zeroOrMore>
<ref name="references"/>
</zeroOrMore>
</element>
</define>
<define name="NoteAttr">
<optional>
<attribute name="unnumbered">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="number"/>
</optional>
<optional>
<attribute name="subsequence"/>
</optional>
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="coverpage">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="notag">
<data type="boolean"/>
</attribute>
</optional>
<ref name="BlockAttributes"/>
</define>
<define name="NoteBody">
<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>
</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>
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
</define>
<define name="LiBody">
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
</define>
<!-- exclude figures? -->
<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="TdBody">
<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>
</define>
<define name="ThBody">
<choice>
<zeroOrMore>
<choice>
<ref name="TextElement"/>
<ref name="fn"/>
</choice>
</zeroOrMore>
<oneOrMore>
<ref name="paragraph-with-footnote"/>
</oneOrMore>
</choice>
</define>
<define name="table-note">
<element name="note">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<ref name="paragraph"/>
</element>
</define>
<define name="stem">
<element name="stem">
<attribute name="type">
<choice>
<value>MathML</value>
<value>AsciiMath</value>
<value>LatexMath</value>
</choice>
</attribute>
<attribute name="block">
<data type="boolean"/>
</attribute>
<oneOrMore>
<choice>
<text/>
<ref name="AnyElement"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="em">
<element name="em">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
<ref name="index"/>
<ref name="index-xref"/>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="xref"/>
<ref name="hyperlink"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="strong">
<element name="strong">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
<ref name="index"/>
<ref name="index-xref"/>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="xref"/>
<ref name="hyperlink"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="tt">
<element name="tt">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="index"/>
<ref name="index-xref"/>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="xref"/>
<ref name="hyperlink"/>
</choice>
</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="strike">
<element name="strike">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="underline">
<element name="underline">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="smallcap">
<element name="smallcap">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="sub">
<element name="sub">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="sup">
<element name="sup">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="pagebreak">
<element name="pagebreak">
<optional>
<attribute name="orientation">
<choice>
<value>landscape</value>
<value>portrait</value>
</choice>
</attribute>
</optional>
</element>
</define>
</include>
<!-- end overrides -->
<define name="doc_bibitem">
<element name="bibitem">
<attribute name="id">
<data type="ID"/>
</attribute>
<optional>
<attribute name="hidden">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="suppress_identifier">
<data type="boolean"/>
</attribute>
</optional>
<ref name="ReducedBibliographicItem"/>
</element>
</define>
<define name="image" combine="choice">
<element name="svg">
<oneOrMore>
<choice>
<text/>
<ref name="AnyElement"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="BasicBlock" combine="choice">
<ref name="columnbreak"/>
</define>
<define name="columnbreak">
<element name="columnbreak">
<empty/>
</element>
</define>
<define name="MultilingualRenderingType">
<choice>
<value>common</value>
<value>all-columns</value>
<value>parallel</value>
<value>tag</value>
</choice>
</define>
<define name="colgroup">
<element name="colgroup">
<oneOrMore>
<ref name="col"/>
</oneOrMore>
</element>
</define>
<define name="col">
<element name="col">
<attribute name="width"/>
</element>
</define>
<define name="BibItemType" combine="choice">
<value>internal</value>
</define>
<define name="TextElement" combine="choice">
<choice>
<ref name="concept"/>
<ref name="add"/>
<ref name="del"/>
<ref name="span"/>
<ref name="erefstack"/>
<ref name="date_inline"/>
</choice>
</define>
<define name="PureTextElement" combine="choice">
<ref name="passthrough_inline"/>
</define>
<define name="passthrough_inline">
<element name="passthrough">
<optional>
<attribute name="formats"/>
</optional>
<text/>
</element>
</define>
<define name="add">
<element name="add">
<choice>
<ref name="PureTextElement"/>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="stem"/>
<ref name="keyword"/>
<ref name="xref"/>
<ref name="hyperlink"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</element>
</define>
<define name="del">
<element name="del">
<choice>
<ref name="PureTextElement"/>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="stem"/>
<ref name="keyword"/>
<ref name="xref"/>
<ref name="hyperlink"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</element>
</define>
<define name="span">
<element name="span">
<optional>
<attribute name="class"/>
</optional>
<optional>
<attribute name="style"/>
</optional>
<optional>
<attribute name="custom-charset"/>
</optional>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="date_inline">
<element name="date">
<attribute name="value"/>
<optional>
<attribute name="format"/>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<optional>
<attribute name="locale"/>
</optional>
</element>
</define>
<define name="concept">
<element name="concept">
<optional>
<attribute name="bold">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="ital">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="ref">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="linkmention">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="linkref">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<element name="refterm">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="renderterm">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
<ref name="index"/>
<ref name="index-xref"/>
</choice>
</zeroOrMore>
</element>
</optional>
<choice>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="xref"/>
<ref name="termref"/>
</choice>
</element>
</define>
<define name="BasicBlock" combine="choice">
<choice>
<ref name="requirement"/>
<ref name="recommendation"/>
<ref name="permission"/>
<ref name="imagemap"/>
<ref name="svgmap"/>
<ref name="inputform"/>
<ref name="toc"/>
<ref name="passthrough"/>
</choice>
</define>
<define name="toc">
<element name="toc">
<ref name="ul"/>
</element>
</define>
<define name="passthrough">
<element name="passthrough">
<optional>
<attribute name="formats"/>
</optional>
<text/>
</element>
</define>
<define name="inputform">
<element name="form">
<attribute name="id">
<data type="ID"/>
</attribute>
<attribute name="name"/>
<attribute name="action"/>
<optional>
<attribute name="class"/>
</optional>
<ref name="BlockAttributes"/>
<zeroOrMore>
<choice>
<ref name="TextElement"/>
<ref name="FormInput"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="FormInput">
<choice>
<ref name="input"/>
<ref name="formlabel"/>
<ref name="select"/>
<ref name="textarea"/>
</choice>
</define>
<define name="InputType">
<choice>
<value>button</value>
<value>checkbox</value>
<value>date</value>
<value>file</value>
<value>password</value>
<value>radio</value>
<value>submit</value>
<value>text</value>
</choice>
</define>
<define name="input">
<element name="input">
<attribute name="type">
<ref name="InputType"/>
</attribute>
<optional>
<attribute name="checked">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="disabled">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="readonly">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="maxlength">
<data type="int"/>
</attribute>
</optional>
<optional>
<attribute name="minlength">
<data type="int"/>
</attribute>
</optional>
<optional>
<attribute name="name"/>
</optional>
<optional>
<attribute name="value"/>
</optional>
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
</element>
</define>
<define name="formlabel">
<element name="label">
<attribute name="for">
<data type="IDREF"/>
</attribute>
<zeroOrMore>
<ref name="PureTextElement"/>
</zeroOrMore>
</element>
</define>
<define name="select">
<element name="select">
<optional>
<attribute name="name"/>
</optional>
<optional>
<attribute name="value"/>
</optional>
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="disabled">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="multiple">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="size">
<data type="int"/>
</attribute>
</optional>
<oneOrMore>
<ref name="option"/>
</oneOrMore>
</element>
</define>
<define name="option">
<element name="option">
<optional>
<attribute name="disabled">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="value"/>
</optional>
<zeroOrMore>
<ref name="PureTextElement"/>
</zeroOrMore>
</element>
</define>
<define name="textarea">
<element name="textarea">
<optional>
<attribute name="name"/>
</optional>
<optional>
<attribute name="value"/>
</optional>
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="rows">
<data type="int"/>
</attribute>
</optional>
<optional>
<attribute name="cols">
<data type="int"/>
</attribute>
</optional>
</element>
</define>
<define name="bibliography">
<element name="bibliography">
<oneOrMore>
<choice>
<ref name="references"/>
<ref name="reference-clause"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="Section-Attributes">
<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="number"/>
</optional>
<optional>
<attribute name="branch-number"/>
</optional>
<optional>
<attribute name="obligation">
<choice>
<value>normative</value>
<value>informative</value>
</choice>
</attribute>
</optional>
</define>
<define name="reference-clause">
<element name="clause">
<ref name="Section-Attributes"/>
<optional>
<ref name="section-title"/>
</optional>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<choice>
<oneOrMore>
<ref name="reference-clause"/>
</oneOrMore>
<zeroOrMore>
<ref name="references"/>
</zeroOrMore>
</choice>
</element>
</define>
<define name="Root-Attributes">
<attribute name="version"/>
<attribute name="schema-version"/>
<attribute name="type">
<choice>
<value>semantic</value>
<value>presentation</value>
</choice>
</attribute>
</define>
<define name="standard-document">
<element name="standard-document">
<ref name="Root-Attributes"/>
<ref name="bibdata"/>
<optional>
<ref name="misccontainer"/>
</optional>
<optional>
<ref name="boilerplate"/>
</optional>
<optional>
<ref name="preface"/>
</optional>
<ref name="sections"/>
<zeroOrMore>
<ref name="annex"/>
</zeroOrMore>
<optional>
<ref name="bibliography"/>
</optional>
<zeroOrMore>
<ref name="indexsect"/>
</zeroOrMore>
<optional>
<ref name="colophon"/>
</optional>
</element>
</define>
<define name="misccontainer">
<element name="metanorma-extension">
<oneOrMore>
<ref name="AnyElement"/>
</oneOrMore>
</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="colophon">
<element name="colophon">
<oneOrMore>
<ref name="content"/>
</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="indexsect">
<element name="indexsect">
<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>
<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">
<ref name="Section-Attributes"/>
<optional>
<attribute name="type"/>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<group>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<ref name="content-subsection"/>
</zeroOrMore>
</group>
</define>
<define name="clause">
<element name="clause">
<ref name="Clause-Section"/>
</element>
</define>
<define name="Clause-Section">
<ref name="Section-Attributes"/>
<optional>
<attribute name="type"/>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<choice>
<choice>
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
<ref name="amend"/>
</choice>
<oneOrMore>
<choice>
<ref name="clause-subsection"/>
<ref name="terms"/>
<ref name="definitions"/>
<ref name="floating-title"/>
</choice>
</oneOrMore>
</choice>
</define>
<define name="Annex-Section">
<ref name="Annex-Section-Attr"/>
<ref name="Annex-Section-Body"/>
</define>
<define name="Annex-Section-Attr">
<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>
</define>
<define name="Annex-Section-Body">
<optional>
<ref name="section-title"/>
</optional>
<group>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<zeroOrMore>
<choice>
<ref name="annex-subsection"/>
<ref name="terms"/>
<ref name="definitions"/>
<ref name="references"/>
<ref name="floating-title"/>
</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">
<ref name="Section-Attributes"/>
<optional>
<attribute name="type"/>
</optional>
<optional>
<ref name="section-title"/>
</optional>
<zeroOrMore>
<ref name="BasicBlock"/>
</zeroOrMore>
<choice>
<oneOrMore>
<choice>
<ref name="term"/>
<ref name="terms"/>
</choice>
</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>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<ref name="BlockAttributes"/>
<oneOrMore>
<ref name="preferred"/>
</oneOrMore>
<zeroOrMore>
<ref name="admitted"/>
</zeroOrMore>
<zeroOrMore>
<ref name="deprecates"/>
</zeroOrMore>
<zeroOrMore>
<ref name="related"/>
</zeroOrMore>
<optional>
<ref name="termdomain"/>
</optional>
<optional>
<ref name="termsubject"/>
</optional>
<oneOrMore>
<ref name="termdefinition"/>
</oneOrMore>
<zeroOrMore>
<ref name="termnote"/>
</zeroOrMore>
<zeroOrMore>
<ref name="termexample"/>
</zeroOrMore>
<zeroOrMore>
<ref name="termsource"/>
</zeroOrMore>
</element>
</define>
<define name="preferred">
<element name="preferred">
<ref name="Designation"/>
</element>
</define>
<define name="admitted">
<element name="admitted">
<ref name="Designation"/>
</element>
</define>
<define name="related">
<element name="related">
<attribute name="type">
<ref name="RelatedTermType"/>
</attribute>
<element name="preferred">
<ref name="Designation"/>
</element>
<choice>
<ref name="eref"/>
<ref name="erefstack"/>
<ref name="xref"/>
<ref name="termref"/>
</choice>
</element>
</define>
<define name="RelatedTermType">
<choice>
<value>deprecates</value>
<value>supersedes</value>
<value>narrower</value>
<value>broader</value>
<value>equivalent</value>
<value>compare</value>
<value>contrast</value>
<value>see</value>
<value>seealso</value>
</choice>
</define>
<define name="deprecates">
<element name="deprecates">
<ref name="Designation"/>
</element>
</define>
<define name="Designation">
<optional>
<attribute name="absent">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="geographic-area"/>
</optional>
<choice>
<ref name="expression_designation"/>
<ref name="letter_symbol_designation"/>
<ref name="graphical_symbol_designation"/>
</choice>
<optional>
<ref name="fieldofapplication"/>
</optional>
<optional>
<ref name="usageinfo"/>
</optional>
<zeroOrMore>
<ref name="termsource"/>
</zeroOrMore>
</define>
<define name="fieldofapplication">
<element name="field-of-application">
<oneOrMore>
<ref name="PureTextElement"/>
</oneOrMore>
</element>
</define>
<define name="usageinfo">
<element name="usage-info">
<oneOrMore>
<ref name="PureTextElement"/>
</oneOrMore>
</element>
</define>
<define name="letter_symbol_designation">
<element name="letter-symbol">
<optional>
<attribute name="isInternational">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="type">
<choice>
<value>letter</value>
<value>symbol</value>
<value>formula</value>
<value>equation</value>
</choice>
</attribute>
</optional>
<element name="name">
<oneOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
</choice>
</oneOrMore>
</element>
</element>
</define>
<define name="graphical_symbol_designation">
<element name="graphical-symbol">
<optional>
<attribute name="isInternational">
<data type="boolean"/>
</attribute>
</optional>
<ref name="figure"/>
</element>
</define>
<define name="expression_designation">
<element name="expression">
<optional>
<attribute name="language">
<a:documentation>ISO-639</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="script">
<a:documentation>ISO-15924</a:documentation>
</attribute>
</optional>
<optional>
<attribute name="type">
<ref name="ExpressionDesignationType"/>
</attribute>
</optional>
<optional>
<attribute name="isInternational">
<data type="boolean"/>
</attribute>
</optional>
<element name="name">
<zeroOrMore>
<choice>
<ref name="PureTextElement"/>
<ref name="stem"/>
<ref name="index"/>
</choice>
</zeroOrMore>
</element>
<optional>
<element name="abbreviation-type">
<ref name="AbbreviationType"/>
</element>
</optional>
<optional>
<element name="pronunciation">
<ref name="LocalizedString"/>
</element>
</optional>
<optional>
<element name="grammar">
<ref name="Grammar"/>
</element>
</optional>
</element>
</define>
<define name="ExpressionDesignationType">
<choice>
<value>prefix</value>
<value>suffix</value>
<value>abbreviation</value>
<value>full</value>
</choice>
</define>
<define name="AbbreviationType">
<choice>
<value>truncation</value>
<value>acronym</value>
<value>initialism</value>
</choice>
</define>
<define name="Grammar">
<zeroOrMore>
<element name="gender">
<ref name="GrammarGender"/>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="number">
<ref name="GrammarNumber"/>
</element>
</zeroOrMore>
<optional>
<element name="isPreposition">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="isParticiple">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="isAdjective">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="isVerb">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="isAdverb">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="isNoun">
<data type="boolean"/>
</element>
</optional>
<zeroOrMore>
<element name="grammar-value">
<text/>
</element>
</zeroOrMore>
</define>
<define name="GrammarGender">
<choice>
<value>masculine</value>
<value>feminine</value>
<value>neuter</value>
<value>common</value>
</choice>
</define>
<define name="GrammarNumber">
<choice>
<value>singular</value>
<value>dual</value>
<value>plural</value>
</choice>
</define>
<define name="termdomain">
<element name="domain">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="termsubject">
<element name="subject">
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="termdefinition">
<element name="definition">
<optional>
<attribute name="type"/>
</optional>
<choice>
<ref name="verbaldefinition"/>
<ref name="nonverbalrep"/>
<group>
<ref name="verbaldefinition"/>
<ref name="nonverbalrep"/>
</group>
</choice>
</element>
</define>
<define name="verbaldefinition">
<element name="verbal-definition">
<oneOrMore>
<choice>
<ref name="paragraph"/>
<ref name="dl"/>
<ref name="ol"/>
<ref name="ul"/>
<ref name="table"/>
<ref name="figure"/>
<ref name="formula"/>
</choice>
</oneOrMore>
<zeroOrMore>
<ref name="termsource"/>
</zeroOrMore>
</element>
</define>
<define name="nonverbalrep">
<element name="non-verbal-representation">
<oneOrMore>
<choice>
<ref name="table"/>
<ref name="figure"/>
<ref name="formula"/>
</choice>
</oneOrMore>
<zeroOrMore>
<ref name="termsource"/>
</zeroOrMore>
</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>
<ref name="BlockAttributes"/>
<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="BlockAttributes"/>
<oneOrMore>
<choice>
<ref name="formula"/>
<ref name="ul"/>
<ref name="ol"/>
<ref name="dl"/>
<ref name="quote"/>
<ref name="sourcecode"/>
<ref name="paragraph"/>
<ref name="figure"/>
</choice>
</oneOrMore>
</element>
</define>
<define name="termsource">
<element name="termsource">
<attribute name="status">
<ref name="SourceStatusType"/>
</attribute>
<attribute name="type">
<choice>
<value>authoritative</value>
<value>lineage</value>
</choice>
</attribute>
<ref name="origin"/>
<optional>
<ref name="modification"/>
</optional>
</element>
</define>
<define name="SourceStatusType">
<choice>
<value>identical</value>
<value>modified</value>
<value>adapted</value>
<value>restyled</value>
<value>context-added</value>
<value>generalisation</value>
<value>specialisation</value>
<value>unspecified</value>
</choice>
</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="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>
<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="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>
<define name="imagemap">
<element name="imagemap">
<ref name="BlockAttributes"/>
<ref name="figure"/>
<zeroOrMore>
<element name="area">
<attribute name="type">
<choice>
<value>rect</value>
<value>circle</value>
<value>ellipse</value>
<value>poly</value>
</choice>
</attribute>
<choice>
<ref name="xref"/>
<ref name="hyperlink"/>
<ref name="eref"/>
<ref name="erefstack"/>
</choice>
<oneOrMore>
<element name="coords">
<attribute name="x">
<data type="float"/>
</attribute>
<attribute name="y">
<data type="float"/>
</attribute>
</element>
</oneOrMore>
<optional>
<element name="radius">
<attribute name="x">
<data type="float"/>
</attribute>
<optional>
<attribute name="y">
<data type="float"/>
</attribute>
</optional>
</element>
</optional>
</element>
</zeroOrMore>
</element>
</define>
<define name="svgmap">
<element name="svgmap">
<ref name="BlockAttributes"/>
<ref name="figure"/>
<zeroOrMore>
<element name="target">
<attribute name="href">
<data type="anyURI"/>
</attribute>
<choice>
<ref name="xref"/>
<ref name="hyperlink"/>
<ref name="eref"/>
<ref name="erefstack"/>
</choice>
</element>
</zeroOrMore>
</element>
</define>
<define name="ul_li">
<element name="li">
<optional>
<attribute name="id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="uncheckedcheckbox">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="checkedcheckbox">
<data type="boolean"/>
</attribute>
</optional>
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
</element>
</define>
<define name="floating-title">
<element name="floating-title">
<attribute name="id">
<data type="ID"/>
</attribute>
<attribute name="depth">
<data type="int"/>
</attribute>
<zeroOrMore>
<ref name="TextElement"/>
</zeroOrMore>
</element>
</define>
<define name="XrefAttributes">
<attribute name="target">
<data type="string">
<param name="pattern">\i\c*|\c+#\c+</param>
</data>
</attribute>
<optional>
<attribute name="to">
<data type="string">
<param name="pattern">\i\c*|\c+#\c+</param>
</data>
</attribute>
</optional>
<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>
<optional>
<attribute name="style">
<ref name="XrefStyleType"/>
</attribute>
</optional>
<optional>
<attribute name="label"/>
</optional>
</define>
<define name="XrefBody">
<zeroOrMore>
<ref name="XrefTarget"/>
</zeroOrMore>
<oneOrMore>
<ref name="PureTextElement"/>
</oneOrMore>
</define>
<define name="XrefConnectiveType">
<choice>
<value>and</value>
<value>or</value>
<value>from</value>
<value>to</value>
<value/>
</choice>
</define>
<define name="XrefTarget">
<element name="location">
<attribute name="target">
<data type="string">
<param name="pattern">\i\c*|\c+#\c+</param>
</data>
</attribute>
<attribute name="connective">
<ref name="XrefConnectiveType"/>
</attribute>
</element>
</define>
<define name="XrefStyleType">
<choice>
<value>basic</value>
<value>full</value>
<value>short</value>
<value>id</value>
<text/>
</choice>
</define>
<define name="erefTypeWithConnective">
<optional>
<attribute name="connective">
<ref name="XrefConnectiveType"/>
</attribute>
</optional>
<ref name="erefType"/>
</define>
<define name="erefstack">
<element name="erefstack">
<oneOrMore>
<element name="eref">
<ref name="erefTypeWithConnective"/>
</element>
</oneOrMore>
</element>
</define>
<define name="BlockAttributes">
<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="tag"/>
</optional>
<optional>
<attribute name="multilingual-rendering">
<ref name="MultilingualRenderingType"/>
</attribute>
</optional>
<optional>
<attribute name="columns"/>
</optional>
</define>
<start>
<ref name="standard-document"/>
</start>
</grammar>