<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="https://www.metanorma.org/ns/iec" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <!-- default namespace = "https://www.metanorma.com/ns/iec" -->
  <include href="isostandard.rng">
    <start>
      <ref name="iec-standard"/>
    </start>
    <define name="DocumentType">
      <choice>
        <value>international-standard</value>
        <value>technical-specification</value>
        <value>technical-report</value>
        <value>publicly-available-specification</value>
        <value>international-workshop-agreement</value>
        <value>guide</value>
      </choice>
    </define>
    <define name="BibDataExtensionType">
      <ref name="doctype"/>
      <optional>
        <ref name="horizontal"/>
      </optional>
      <optional>
        <ref name="function"/>
      </optional>
      <ref name="editorialgroup"/>
      <zeroOrMore>
        <ref name="ics"/>
      </zeroOrMore>
      <ref name="structuredidentifier"/>
      <optional>
        <ref name="stagename"/>
      </optional>
      <optional>
        <ref name="updates_document_type"/>
      </optional>
      <optional>
        <ref name="accessibility-color-inside"/>
      </optional>
      <optional>
        <ref name="price-code"/>
      </optional>
      <optional>
        <ref name="cen-processing"/>
      </optional>
      <optional>
        <ref name="secretary"/>
      </optional>
      <optional>
        <ref name="interest-to-committees"/>
      </optional>
      <optional>
        <ref name="tc-sc-officers-note"/>
      </optional>
    </define>
  </include>
  <!-- end overrides -->
  <define name="function">
    <element name="function">
      <choice>
        <value>emc</value>
        <value>safety</value>
        <value>environment</value>
        <value>quality-assurance</value>
      </choice>
    </element>
  </define>
  <define name="accessibility-color-inside">
    <element name="accessibility-color-inside">
      <data type="boolean"/>
    </element>
  </define>
  <define name="price-code">
    <element name="price-code">
      <text/>
    </element>
  </define>
  <define name="cen-processing">
    <element name="cen-processing">
      <data type="boolean"/>
    </element>
  </define>
  <define name="secretary">
    <element name="secretary">
      <text/>
    </element>
  </define>
  <define name="interest-to-committees">
    <element name="interest-to-committees">
      <text/>
    </element>
  </define>
  <define name="tc-sc-officers-note">
    <element name="tc-sc-officers-note">
      <zeroOrMore>
        <ref name="BasicBlock"/>
      </zeroOrMore>
    </element>
  </define>
  <!--
    We display the Normative References between scope and terms; but to keep the
    grammar simple, we keep the references together
  -->
  <define name="iec-standard">
    <element name="iec-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>
  <define name="updates_document_type">
    <element name="updates-document-type">
      <ref name="DocumentType"/>
    </element>
  </define>
</grammar>