<?xml version='1.0'?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
  ns="http://www.iana.org/assignments">

  <include href="../_support/iana-registry.rng"/>

  <define name="value_description_xref">
    <element name="registry">
      <ref name="registryMeta"/>
      <zeroOrMore>
        <element name="record">
          <optional>
            <attribute name="date"><ref name="genericDate"/></attribute>
          </optional>
          <element name="value"><ref name="genericRange"/></element>
          <element name="description"><text/></element>
          <ref name="references"/>
        </element>
      </zeroOrMore>
    </element>
  </define>

  <start>
    <element name="registry">
      <ref name="registryMeta"/>
      <ref name="value_description_xref"/>
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional>
              <attribute name="date"><ref name="genericDate"/></attribute>
            </optional>
            <element name="value"><ref name="genericRange"/></element>
            <element name="description"><text/></element>
            <optional><element name="notation"><text/></element></optional>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional>
              <attribute name="date"><ref name="genericDate"/></attribute>
            </optional>
            <element name="value"><ref name="genericRange"/></element>
            <element name="description"><text/></element>
            <optional><element name="used_in"><text/></element></optional>
            <ref name="references"/>
          </element>
        </zeroOrMore>
        <element name="registry">
          <ref name="registryMeta"/>
          <zeroOrMore>
            <element name="record">
              <optional>
                <attribute name="date"><ref name="genericDate"/></attribute>
              </optional>
              <element name="value"><ref name="genericRange"/></element>
              <element name="description"><text/></element>
              <optional><element name="format"><text/></element></optional>
              <ref name="references"/>
            </element>
          </zeroOrMore>
        </element>
        <element name="registry">
          <ref name="registryMeta"/>
          <zeroOrMore>
            <element name="record">
              <optional>
                <attribute name="date"><ref name="genericDate"/></attribute>
              </optional>
              <element name="value"><ref name="genericRange"/></element>
              <element name="description"><text/></element>
	      <optional>
	        <element name="esp"><ref name="text_with_references"/></element>
	      </optional>
	      <optional>
		      <element name="ikev2"><ref name="text_with_references"/>
		      </element>
	      </optional>
            </element>
          </zeroOrMore>
        </element>
        <ref name="value_description_xref"/>
        <ref name="value_description_xref"/>
        <ref name="value_description_xref"/>
        <ref name="value_description_xref"/>
      </element>
      <ref name="value_description_xref"/>
      <ref name="value_description_xref"/>
      <ref name="value_description_xref"/>
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional>
              <attribute name="date"><ref name="genericDate"/></attribute>
            </optional>
            <element name="value"><ref name="genericRange"/></element>
            <element name="registration_rule"><text/></element>
            <optional><element name="note"><text/></element></optional>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      <ref name="value_description_xref"/>
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional>
              <attribute name="date"><ref name="genericDate"/></attribute>
            </optional>
            <element name="value"><ref name="genericRange"/></element>
            <element name="registration_rule"><text/></element>
            <optional><element name="note"><text/></element></optional>
            <ref name="references"/>
          </element>
        </zeroOrMore>
        <ref name="value_description_xref"/>
      </element>
      <ref name="value_description_xref"/>
      <ref name="value_description_xref"/>
      <ref name="value_description_xref"/>
      <ref name="value_description_xref"/>
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional>
              <attribute name="date"><ref name="genericDate"/></attribute>
            </optional>
            <element name="value"><ref name="genericRange"/></element>
            <element name="description"><text/></element>
            <optional>
              <element name="multi_valued">
                <choice>
                  <value>YES*</value>
                  <value>YES</value>
                  <value>NO</value>
                </choice>
              </element>
            </optional>
            <optional><element name="length"><text/></element></optional>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      <ref name="value_description_xref"/>
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional>
              <attribute name="date"><ref name="genericDate"/></attribute>
            </optional>
            <element name="value"><ref name="genericRange"/></element>
            <element name="description"><text/></element>
            <optional><element name="format"><text/></element></optional>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      <ref name="value_description_xref"/>
      <ref name="people"/>
    </element>
  </start>

</grammar>
