<?xml version=“1.0” encoding=“UTF-8”?> <grammar ns=“www.metanorma.org/ns/nist” xmlns=“relaxng.org/ns/structure/1.0” datatypeLibrary=“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="nist-standard"/>
  </start>
  <define name="ol">
    <element name="ol">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <optional>
        <attribute name="class">
          <value>steps</value>
        </attribute>
      </optional>
      <oneOrMore>
        <ref name="li"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="DocumentType">
    <value>standard</value>
  </define>
  <!-- TitleType = ( "alternative" | "original" | "unofficial" | "subtitle" | "main" ) -->
  <define name="preface">
    <element name="preface">
      <optional>
        <ref name="abstract"/>
      </optional>
      <optional>
        <ref name="foreword"/>
      </optional>
      <zeroOrMore>
        <choice>
          <ref name="clause"/>
          <ref name="errata_clause"/>
          <ref name="acknowledgements"/>
        </choice>
      </zeroOrMore>
      <optional>
        <ref name="reviewernote"/>
      </optional>
      <optional>
        <ref name="executivesummary"/>
      </optional>
    </element>
  </define>
  <define name="editorialgroup">
    <element name="editorialgroup">
      <oneOrMore>
        <ref name="committee"/>
      </oneOrMore>
    </element>
  </define>
  <define name="BibDataExtensionType">
    <optional>
      <ref name="doctype"/>
    </optional>
    <optional>
      <ref name="editorialgroup"/>
    </optional>
    <zeroOrMore>
      <ref name="ics"/>
    </zeroOrMore>
    <optional>
      <ref name="commentperiod"/>
    </optional>
  </define>
</include>
<define name="DocRelationType" combine="choice">
  <choice>
    <value>obsoletedBy</value>
    <value>supersedes</value>
    <value>supersededBy</value>
  </choice>
</define>
<define name="BibliographicDateType" combine="choice">
  <choice>
    <value>abandoned</value>
    <value>superseded</value>
  </choice>
</define>
<define name="commentperiod">
  <element name="commentperiod">
    <element name="from">
      <ref name="ISO8601Date"/>
    </element>
    <optional>
      <element name="to">
        <ref name="ISO8601Date"/>
      </element>
    </optional>
    <optional>
      <element name="extended">
        <ref name="ISO8601Date"/>
      </element>
    </optional>
  </element>
</define>
<define name="reviewernote">
  <element name="reviewernote">
    <ref name="Basic-Section"/>
  </element>
</define>
<define name="executivesummary">
  <element name="executivesummary">
    <ref name="Basic-Section"/>
  </element>
</define>
<define name="committee">
  <element name="committee">
    <text/>
  </element>
</define>
<define name="errata">
  <element name="errata">
    <oneOrMore>
      <ref name="erratarow"/>
    </oneOrMore>
  </element>
</define>
<define name="erratarow">
  <element name="row">
    <element name="date">
      <ref name="ISO8601Date"/>
    </element>
    <element name="type">
      <text/>
    </element>
    <element name="change">
      <oneOrMore>
        <ref name="TextElement"/>
      </oneOrMore>
    </element>
    <element name="pages">
      <text/>
    </element>
  </element>
</define>
<define name="errata_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="obligation">
        <choice>
          <value>normative</value>
          <value>informative</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <ref name="section-title"/>
    </optional>
    <group>
      <zeroOrMore>
        <ref name="BasicBlock"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </group>
    <ref name="errata"/>
  </element>
</define>
<define name="nist-standard">
  <element name="nist-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>
    <optional>
      <ref name="bibliography"/>
    </optional>
    <zeroOrMore>
      <ref name="indexsect"/>
    </zeroOrMore>
  </element>
</define>

</grammar>