<?xml version=“1.0” encoding=“UTF-8”?> <grammar ns=“www.metanorma.org/ns/ietf” 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 ietf additions. And we do not want that.
-->
<include href="isodoc.rng">
  <start>
    <ref name="ietf-standard"/>
  </start>
  <define name="DocumentType">
    <choice>
      <value>rfc</value>
      <value>internet-draft</value>
    </choice>
  </define>
  <define name="BibDataExtensionType">
    <optional>
      <ref name="doctype"/>
    </optional>
    <optional>
      <ref name="docsubtype"/>
    </optional>
    <zeroOrMore>
      <ref name="editorialgroup"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="ics"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="area"/>
    </zeroOrMore>
    <optional>
      <ref name="ipr"/>
    </optional>
    <optional>
      <ref name="consensus"/>
    </optional>
    <optional>
      <ref name="index-include"/>
    </optional>
    <optional>
      <ref name="ipr-extract"/>
    </optional>
    <optional>
      <ref name="sort-refs"/>
    </optional>
    <optional>
      <ref name="sym-refs"/>
    </optional>
    <optional>
      <ref name="toc-include"/>
    </optional>
    <optional>
      <ref name="toc-depth"/>
    </optional>
    <optional>
      <ref name="show-on-front-page"/>
    </optional>
    <optional>
      <ref name="processing-instructions"/>
    </optional>
  </define>
  <define name="ParagraphType">
    <attribute name="id">
      <data type="ID"/>
    </attribute>
    <optional>
      <attribute name="align">
        <ref name="Alignments"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="keep-with-next">
        <data type="boolean"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="keep-with-previous">
        <data type="boolean"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="TextElement"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="note"/>
    </zeroOrMore>
  </define>
  <define name="paragraph-with-footnote">
    <element name="p">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <optional>
        <attribute name="align">
          <ref name="Alignments"/>
        </attribute>
      </optional>
      <zeroOrMore>
        <choice>
          <ref name="TextElement"/>
          <ref name="fn"/>
        </choice>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="ul">
    <element name="ul">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <optional>
        <attribute name="nobullet"/>
      </optional>
      <optional>
        <attribute name="spacing"/>
      </optional>
      <oneOrMore>
        <ref name="li"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="ol">
    <element name="ol">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <attribute name="type">
        <choice>
          <value>roman</value>
          <value>alphabet</value>
          <value>arabic</value>
          <value>roman_upper</value>
          <value>alphabet_upper</value>
          <value>text</value>
        </choice>
      </attribute>
      <optional>
        <attribute name="group"/>
      </optional>
      <optional>
        <attribute name="spacing"/>
      </optional>
      <optional>
        <attribute name="start"/>
      </optional>
      <oneOrMore>
        <ref name="li"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="dl">
    <element name="dl">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <optional>
        <attribute name="newline"/>
      </optional>
      <optional>
        <attribute name="indent"/>
      </optional>
      <optional>
        <attribute name="spacing"/>
      </optional>
      <oneOrMore>
        <ref name="dt"/>
        <ref name="dd"/>
      </oneOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="review">
    <element name="review">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <attribute name="reviewer"/>
      <optional>
        <attribute name="date">
          <data type="dateTime"/>
        </attribute>
      </optional>
      <attribute name="from">
        <data type="IDREF"/>
      </attribute>
      <optional>
        <attribute name="to">
          <data type="IDREF"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="display"/>
      </optional>
      <oneOrMore>
        <ref name="paragraph"/>
      </oneOrMore>
    </element>
  </define>
  <define name="note">
    <element name="note">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <optional>
        <attribute name="removeInRFC"/>
      </optional>
      <optional>
        <ref name="tname"/>
      </optional>
      <oneOrMore>
        <ref name="paragraph"/>
      </oneOrMore>
    </element>
  </define>
  <define name="pre">
    <element name="pre">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <optional>
        <attribute name="alt"/>
      </optional>
      <optional>
        <attribute name="align"/>
      </optional>
      <optional>
        <ref name="tname"/>
      </optional>
      <text/>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="image">
    <element name="image">
      <attribute name="id">
        <data type="ID"/>
      </attribute>
      <attribute name="src">
        <data type="anyURI"/>
      </attribute>
      <attribute name="mimetype"/>
      <optional>
        <attribute name="filename"/>
      </optional>
      <optional>
        <attribute name="width">
          <choice>
            <data type="int"/>
            <value>auto</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="height">
          <choice>
            <data type="int"/>
            <value>auto</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="alt"/>
      </optional>
      <optional>
        <attribute name="title"/>
      </optional>
      <optional>
        <attribute name="longdesc">
          <data type="anyURI"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="align"/>
      </optional>
    </element>
  </define>
  <define name="sourcecode">
    <element name="sourcecode">
      <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>
      <optional>
        <attribute name="lang"/>
      </optional>
      <optional>
        <attribute name="markers"/>
      </optional>
      <optional>
        <ref name="tname"/>
      </optional>
      <oneOrMore>
        <choice>
          <text/>
          <ref name="callout"/>
        </choice>
      </oneOrMore>
      <zeroOrMore>
        <ref name="annotation"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name="note"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="xref">
    <element name="xref">
      <attribute name="target">
        <data type="IDREF"/>
      </attribute>
      <optional>
        <attribute name="type">
          <ref name="ReferenceFormat"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="alt"/>
      </optional>
      <optional>
        <attribute name="format"/>
      </optional>
      <text/>
    </element>
  </define>
  <define name="erefType">
    <optional>
      <attribute name="normative">
        <data type="boolean"/>
      </attribute>
    </optional>
    <attribute name="citeas"/>
    <attribute name="type">
      <ref name="ReferenceFormat"/>
    </attribute>
    <optional>
      <attribute name="alt"/>
    </optional>
    <optional>
      <attribute name="displayFormat"/>
    </optional>
    <optional>
      <attribute name="relative"/>
    </optional>
    <ref name="CitationType"/>
    <text/>
  </define>
  <define name="quote-source">
    <element name="source">
      <ref name="erefTypeURI"/>
    </element>
  </define>
  <define name="table">
    <element name="table">
      <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>
      <optional>
        <attribute name="alt"/>
      </optional>
      <optional>
        <attribute name="summary"/>
      </optional>
      <optional>
        <attribute name="uri">
          <data type="anyURI"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="align"/>
      </optional>
      <optional>
        <ref name="tname"/>
      </optional>
      <optional>
        <ref name="thead"/>
      </optional>
      <ref name="tbody"/>
      <optional>
        <ref name="tfoot"/>
      </optional>
      <zeroOrMore>
        <ref name="table-note"/>
      </zeroOrMore>
      <optional>
        <ref name="dl"/>
      </optional>
    </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="numbered"/>
    </optional>
    <optional>
      <attribute name="removeInRFC"/>
    </optional>
    <optional>
      <attribute name="toc"/>
    </optional>
    <optional>
      <attribute name="inline-header">
        <data type="boolean"/>
      </attribute>
    </optional>
    <attribute name="obligation">
      <choice>
        <value>normative</value>
        <value>informative</value>
      </choice>
    </attribute>
    <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">
    <element name="annex">
      <optional>
        <attribute name="id">
          <data type="ID"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="language"/>
      </optional>
      <optional>
        <attribute name="script"/>
      </optional>
      <attribute name="obligation">
        <choice>
          <value>normative</value>
          <value>informative</value>
        </choice>
      </attribute>
      <optional>
        <attribute name="numbered"/>
      </optional>
      <optional>
        <attribute name="removeInRFC"/>
      </optional>
      <optional>
        <attribute name="toc"/>
      </optional>
      <optional>
        <ref name="section-title"/>
      </optional>
      <group>
        <group>
          <zeroOrMore>
            <ref name="BasicBlock"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="note"/>
          </zeroOrMore>
        </group>
        <zeroOrMore>
          <ref name="clause-subsection"/>
        </zeroOrMore>
      </group>
    </element>
  </define>
  <define name="Content-Section">
    <optional>
      <attribute name="id">
        <data type="ID"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="language"/>
    </optional>
    <optional>
      <attribute name="script"/>
    </optional>
    <optional>
      <attribute name="numbered"/>
    </optional>
    <optional>
      <attribute name="removeInRFC"/>
    </optional>
    <optional>
      <attribute name="toc"/>
    </optional>
    <optional>
      <ref name="section-title"/>
    </optional>
    <group>
      <group>
        <zeroOrMore>
          <ref name="BasicBlock"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="note"/>
        </zeroOrMore>
      </group>
      <zeroOrMore>
        <ref name="content-subsection"/>
      </zeroOrMore>
    </group>
  </define>
  <define name="editorialgroup">
    <element name="editorialgroup">
      <zeroOrMore>
        <ref name="committee"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="index">
    <element name="index">
      <optional>
        <attribute name="to">
          <data type="IDREF"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="primary">
          <data type="boolean"/>
        </attribute>
      </optional>
      <element name="primary">
        <oneOrMore>
          <ref name="PureTextElement"/>
        </oneOrMore>
      </element>
      <optional>
        <element name="secondary">
          <oneOrMore>
            <ref name="PureTextElement"/>
          </oneOrMore>
        </element>
      </optional>
      <optional>
        <element name="tertiary">
          <oneOrMore>
            <ref name="PureTextElement"/>
          </oneOrMore>
        </element>
      </optional>
    </element>
  </define>
</include>
<define name="TextElement" combine="choice">
  <ref name="bcp14"/>
</define>
<define name="bcp14">
  <element name="bcp14">
    <text/>
  </element>
</define>
<define name="committee">
  <element name="committee">
    <ref name="IsoWorkgroup"/>
  </element>
</define>
<define name="area">
  <element name="area">
    <choice>
      <value>art</value>
      <value>gen</value>
      <value>int</value>
      <value>ops</value>
      <value>rtg</value>
      <value>sec</value>
      <value>tsv</value>
      <value>Applications and Real-Time</value>
      <value>General</value>
      <value>Internet</value>
      <value>Operations and Management</value>
      <value>Routing</value>
      <value>Security</value>
      <value>Transport</value>
    </choice>
  </element>
</define>
<define name="comment">
  <element name="comment">
    <text/>
  </element>
</define>
<define name="ipr">
  <element name="ipr">
    <text/>
  </element>
</define>
<define name="consensus">
  <element name="consensus">
    <text/>
  </element>
</define>
<define name="index-include">
  <element name="indexInclude">
    <text/>
  </element>
</define>
<define name="ipr-extract">
  <element name="iprExtract">
    <text/>
  </element>
</define>
<define name="sort-refs">
  <element name="sortRefs">
    <text/>
  </element>
</define>
<define name="sym-refs">
  <element name="symRefs">
    <text/>
  </element>
</define>
<define name="toc-include">
  <element name="tocInclude">
    <text/>
  </element>
</define>
<define name="toc-depth">
  <element name="tocDepth">
    <text/>
  </element>
</define>
<define name="show-on-front-page">
  <element name="showOnFrontPage">
    <text/>
  </element>
</define>
<define name="processing-instructions">
  <element name="pi">
    <optional>
      <element name="artworkdelimiter">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="artworklines">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="authorship">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="autobreaks">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="background">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="colonspace">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="comments">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="docmapping">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="editing">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="emoticonic">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="footer">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="header">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="inline">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="iprnotified">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="linkmailto">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="linefile">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="notedraftinprogress">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="private">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="refparent">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="rfcedstyle">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="slides">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="text-list-symbols">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="tocappendix">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="tocindent">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="tocnarrow">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="tocompact">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="topblock">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="useobject">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="strict">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="compact">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="subcompact">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="tocinclude">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="tocdepth">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="symrefs">
        <text/>
      </element>
    </optional>
    <optional>
      <element name="sortrefs">
        <text/>
      </element>
    </optional>
  </element>
</define>
<define name="erefTypeURI">
  <optional>
    <attribute name="normative">
      <data type="boolean"/>
    </attribute>
  </optional>
  <optional>
    <attribute name="citeas"/>
  </optional>
  <attribute name="type">
    <ref name="ReferenceFormat"/>
  </attribute>
  <optional>
    <attribute name="alt"/>
  </optional>
  <optional>
    <attribute name="displayFormat"/>
  </optional>
  <optional>
    <attribute name="relative"/>
  </optional>
  <optional>
    <attribute name="bibitemid">
      <data type="IDREF"/>
    </attribute>
  </optional>
  <optional>
    <attribute name="uri">
      <data type="anyURI"/>
    </attribute>
  </optional>
  <zeroOrMore>
    <ref name="locality"/>
  </zeroOrMore>
  <optional>
    <ref name="date"/>
  </optional>
  <text/>
</define>
<define name="ietf-standard">
  <element name="ietf-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>