<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="https://www.metanorma.org/ns/ogc" xmlns="http://relaxng.org/ns/structure/1.0">
  <!--
    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="ogc-standard"/>
    </start>
    <define name="DocumentType">
      <choice>
        <value>abstract-specification-topic</value>
        <value>best-practice</value>
        <value>change-request-supporting-document</value>
        <value>community-practice</value>
        <value>community-standard</value>
        <value>discussion-paper</value>
        <value>engineering-report</value>
        <value>other</value>
        <value>policy</value>
        <value>reference-model</value>
        <value>release-notes</value>
        <value>standard</value>
        <value>user-guide</value>
        <value>white-paper</value>
        <value>test-suite</value>
      </choice>
    </define>
    <define name="editorialgroup">
      <element name="editorialgroup">
        <ref name="committee"/>
        <optional>
          <ref name="subcommittee"/>
        </optional>
        <optional>
          <ref name="workgroup"/>
        </optional>
      </element>
    </define>
    <define name="BibDataExtensionType">
      <optional>
        <ref name="doctype"/>
      </optional>
      <optional>
        <ref name="docsubtype"/>
      </optional>
      <ref name="editorialgroup"/>
      <zeroOrMore>
        <ref name="ics"/>
      </zeroOrMore>
    </define>
    <define name="preface">
      <element name="preface">
        <optional>
          <ref name="abstract"/>
        </optional>
        <ref name="foreword"/>
        <optional>
          <ref name="submitters"/>
        </optional>
      </element>
    </define>
  </include>
  <define name="TextElement" combine="choice">
    <ref name="hi"/>
  </define>
  <define name="PureTextElement" combine="choice">
    <ref name="hi"/>
  </define>
  <define name="hi">
    <element name="hi">
      <zeroOrMore>
        <choice>
          <ref name="PureTextElement"/>
          <ref name="stem"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <define name="DocumentSubtype">
    <choice>
      <value>conceptual-model</value>
      <value>conceptual-model-and-encoding</value>
      <value>conceptual-model-and-implementation</value>
      <value>encoding</value>
      <value>extension</value>
      <value>implementation</value>
      <value>profile</value>
      <value>profile-with-extension</value>
      <value>general</value>
    </choice>
  </define>
  <define name="submitters">
    <element name="submitters">
      <ref name="Basic-Section"/>
    </element>
  </define>
  <define name="committee">
    <element name="committee">
      <choice>
        <value>technical</value>
        <value>planning</value>
        <value>strategic-member-advisory</value>
      </choice>
    </element>
  </define>
  <define name="subcommittee">
    <element name="subcommittee">
      <ref name="IsoWorkgroup"/>
    </element>
  </define>
  <define name="workgroup">
    <element name="workgroup">
      <ref name="IsoWorkgroup"/>
    </element>
  </define>
  <define name="ogc-standard">
    <element name="ogc-standard">
      <attribute name="version"/>
      <attribute name="type">
        <choice>
          <value>semantic</value>
          <value>presentation</value>
        </choice>
      </attribute>
      <ref name="bibdata"/>
      <zeroOrMore>
        <ref name="termdocsource"/>
      </zeroOrMore>
      <optional>
        <ref name="misccontainer"/>
      </optional>
      <optional>
        <ref name="boilerplate"/>
      </optional>
      <ref name="preface"/>
      <oneOrMore>
        <ref name="sections"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="annex"/>
      </zeroOrMore>
      <ref name="bibliography"/>
      <zeroOrMore>
        <ref name="indexsect"/>
      </zeroOrMore>
    </element>
  </define>
</grammar>