<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="https://www.metanorma.org/ns/un" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!--
    Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
    we cannot have a new default namespace: we will end up with a grammar with two different
    namespaces, one for isostandard and one for csand additions. And we do not want that.
  -->
  <include href="isodoc.rng">
    <start>
      <ref name="un-standard"/>
    </start>
    <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="strike"/>
        <ref name="smallcap"/>
        <ref name="xref"/>
        <ref name="br"/>
        <ref name="hyperlink"/>
        <ref name="hr"/>
        <ref name="pagebreak"/>
        <ref name="bookmark"/>
      </choice>
    </define>
    <define name="admonition">
      <element name="admonition">
        <attribute name="id">
          <data type="ID"/>
        </attribute>
        <optional>
          <attribute name="unnumbered">
            <data type="boolean"/>
          </attribute>
        </optional>
        <attribute name="type">
          <choice>
            <value>danger</value>
            <value>caution</value>
            <value>warning</value>
            <value>important</value>
            <value>safety precautions</value>
          </choice>
        </attribute>
        <optional>
          <ref name="tname"/>
        </optional>
        <oneOrMore>
          <choice>
            <ref name="paragraph-with-footnote"/>
            <ref name="table"/>
            <ref name="formula"/>
            <ref name="ol"/>
            <ref name="ul"/>
            <ref name="dl"/>
            <ref name="figure"/>
            <ref name="quote"/>
            <ref name="sourcecode"/>
            <ref name="example"/>
            <ref name="review"/>
          </choice>
        </oneOrMore>
        <zeroOrMore>
          <ref name="note"/>
        </zeroOrMore>
      </element>
    </define>
    <define name="DocumentType">
      <choice>
        <value>recommendation</value>
        <value>plenary</value>
        <value>addendum</value>
        <value>communication</value>
        <value>corrigendum</value>
        <value>reissue</value>
        <value>agenda</value>
        <value>budgetary</value>
        <value>sec-gen-notes</value>
        <value>expert-report</value>
        <value>resolution</value>
      </choice>
    </define>
    <define name="editorialgroup">
      <element name="editorialgroup">
        <oneOrMore>
          <ref name="committee"/>
        </oneOrMore>
      </element>
    </define>
    <define name="sections">
      <element name="sections">
        <oneOrMore>
          <ref name="clause"/>
        </oneOrMore>
      </element>
    </define>
    <define name="BibDataExtensionType">
      <optional>
        <ref name="doctype"/>
      </optional>
      <zeroOrMore>
        <ref name="submissionlanguage"/>
      </zeroOrMore>
      <optional>
        <ref name="editorialgroup"/>
      </optional>
      <zeroOrMore>
        <ref name="ics"/>
      </zeroOrMore>
      <optional>
        <ref name="distribution"/>
      </optional>
      <optional>
        <ref name="session"/>
      </optional>
      <optional>
        <ref name="job_number"/>
      </optional>
    </define>
    <define name="preface">
      <element name="preface">
        <optional>
          <ref name="abstract"/>
        </optional>
        <optional>
          <ref name="foreword"/>
        </optional>
        <optional>
          <ref name="introduction"/>
        </optional>
      </element>
    </define>
    <define name="abstract">
      <element name="abstract">
        <ref name="Basic-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="unnumbered">
          <data type="boolean"/>
        </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="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>
        <attribute name="unnumbered">
          <data type="boolean"/>
        </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>
  </include>
  <define name="session">
    <element name="session">
      <optional>
        <ref name="session-number"/>
      </optional>
      <optional>
        <ref name="session-date"/>
      </optional>
      <zeroOrMore>
        <ref name="item-number"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="item-name"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="subitem-name"/>
      </zeroOrMore>
      <optional>
        <ref name="collaborator"/>
      </optional>
      <optional>
        <ref name="agenda-id"/>
      </optional>
      <optional>
        <ref name="item-footnote"/>
      </optional>
    </element>
  </define>
  <define name="committee">
    <element name="committee">
      <text/>
    </element>
  </define>
  <define name="session-number">
    <element name="number">
      <text/>
    </element>
  </define>
  <define name="session-date">
    <element name="session-date">
      <data type="date"/>
    </element>
  </define>
  <define name="item-number">
    <element name="item-number">
      <text/>
    </element>
  </define>
  <define name="collaborator">
    <element name="collaborator">
      <text/>
    </element>
  </define>
  <define name="agenda-id">
    <element name="agenda-id">
      <text/>
    </element>
  </define>
  <define name="item-name">
    <element name="item-name">
      <text/>
    </element>
  </define>
  <define name="subitem-name">
    <element name="subitem-name">
      <text/>
    </element>
  </define>
  <define name="item-footnote">
    <element name="item-footnote">
      <text/>
    </element>
  </define>
  <define name="submissionlanguage">
    <element name="submissionlanguage">
      <text/>
    </element>
  </define>
  <define name="distribution">
    <element name="distribution">
      <choice>
        <value>general</value>
        <value>limited</value>
        <value>restricted</value>
        <value>provisional</value>
      </choice>
    </element>
  </define>
  <define name="job_number">
    <element name="job_number">
      <text/>
    </element>
  </define>
  <define name="un-standard">
    <element name="un-standard">
      <attribute name="version"/>
      <attribute name="type">
        <choice>
          <value>semantic</value>
          <value>presentation</value>
        </choice>
      </attribute>
      <ref name="bibdata"/>
      <optional>
        <ref name="misccontainer"/>
      </optional>
      <optional>
        <ref name="boilerplate"/>
      </optional>
      <ref name="preface"/>
      <oneOrMore>
        <ref name="sections"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="annex"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="indexsect"/>
      </zeroOrMore>
    </element>
  </define>
</grammar>