<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <start>
    <element name="bmd">
      <element name="dateStamp">
        <data type="dateTime"/>
      </element>
      <element name="dataset">
        <optional>
          <element name="p">
            <element name="k">
              <value>RTH</value>
            </element>
            <element name="v">
              <data type="token"/>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>Country</value>
            </element>
            <element name="v">
              <data type="token"/>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>Centre</value>
            </element>
            <element name="v">
              <data type="token"/>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>Date</value>
            </element>
            <element name="v">
              <data type="token">
                <param name="pattern">\d\d\d\d/\d\d/\d\d</param>
              </data>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>Category</value>
            </element>
            <element name="v">
              <choice>
                <value>Essential</value>
                <value>Additional</value>
                <value>ICAO</value>
                <value>Other</value>
              </choice>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>TTAAii</value>
            </element>
            <element name="v">
              <data type="token">
                <param name="pattern">[A-Z][A-Z][A-Z][A-Z]([0-9][0-9])?</param>
              </data>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>CCCC</value>
            </element>
            <element name="v">
              <data type="token">
                <param name="pattern">[A-Z][A-Z][A-Z][A-Z]</param>
              </data>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>CodeForm</value>
            </element>
            <element name="v">
              <data type="token"/>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>TimeGroup</value>
            </element>
            <element name="v">
              <data type="token"/>
            </element>
          </element>
        </optional>
        <optional>
          <element name="p">
            <element name="k">
              <value>AsNeeded</value>
            </element>
            <element name="v">
              <value>as needed</value>
            </element>
          </element>
        </optional>
        <choice>
          <optional>
            <element name="p">
              <element name="k">
                <value>Stations</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
              <zeroOrMore>
                <element name="item">
                  <optional>
                    <attribute name="error">
                      <value>unresolved</value>
                    </attribute>
                  </optional>
                  <element name="stnid">
                    <data type="NMTOKEN"/>
                  </element>
                  <optional>
                    <element name="table">
                      <choice>
                        <value>VOLA</value>
                        <value>CCCC</value>
                      </choice>
                    </element>
                  </optional>
                  <optional>
                    <element name="lat">
                      <data type="token"/>
                    </element>
                  </optional>
                  <optional>
                    <element name="lon">
                      <data type="token"/>
                    </element>
                  </optional>
                  <optional>
                    <element name="h">
                      <data type="token"/>
                    </element>
                  </optional>
                  <optional>
                    <element name="name">
                      <data type="token"/>
                    </element>
                  </optional>
                </element>
              </zeroOrMore>
            </element>
          </optional>
          <group>
            <optional>
              <optional>
                <element name="p">
                  <element name="k">
                    <value>Resolution</value>
                  </element>
                  <element name="v">
                    <data type="decimal"/>
                  </element>
                </element>
              </optional>
              <optional>
                <element name="p">
                  <element name="k">
                    <value>Param</value>
                  </element>
                  <element name="v">
                    <data type="token"/>
                  </element>
                </element>
              </optional>
              <optional>
                <element name="p">
                  <element name="k">
                    <value>Level</value>
                  </element>
                  <element name="v">
                    <data type="token"/>
                  </element>
                </element>
              </optional>
              <optional>
                <element name="p">
                  <element name="k">
                    <value>FT</value>
                  </element>
                  <element name="v">
                    <data type="decimal"/>
                  </element>
                </element>
              </optional>
            </optional>
            <optional>
              <element name="p">
                <element name="k">
                  <value>West</value>
                </element>
                <element name="v">
                  <data type="decimal"/>
                </element>
              </element>
            </optional>
            <optional>
              <element name="p">
                <element name="k">
                  <value>East</value>
                </element>
                <element name="v">
                  <data type="decimal"/>
                </element>
              </element>
            </optional>
            <optional>
              <element name="p">
                <element name="k">
                  <value>South</value>
                </element>
                <element name="v">
                  <data type="decimal"/>
                </element>
              </element>
            </optional>
            <optional>
              <element name="p">
                <element name="k">
                  <value>North</value>
                </element>
                <element name="v">
                  <data type="decimal"/>
                </element>
              </element>
            </optional>
            <optional>
              <element name="p">
                <element name="k">
                  <value>Parent</value>
                </element>
                <element name="v">
                  <data type="anyURI"/>
                </element>
              </element>
            </optional>
          </group>
        </choice>
        <optional>
          <element name="p">
            <element name="k">
              <value>Remarks</value>
            </element>
            <element name="v">
              <data type="token"/>
            </element>
          </element>
        </optional>
      </element>
      <oneOrMore>
        <element name="contact">
          <attribute name="role">
            <choice>
              <value>MetadataContact</value>
              <value>DataContact</value>
              <value>RTH</value>
            </choice>
          </attribute>
          <optional>
            <element name="p">
              <element name="k">
                <value>Key</value>
              </element>
              <element name="v">
                <data type="NMTOKEN"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Role</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Organization</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Telephone</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Facsimile</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Address</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>City</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Area</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Country</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>Postcode</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>email</value>
              </element>
              <element name="v">
                <data type="token"/>
              </element>
            </element>
          </optional>
          <optional>
            <element name="p">
              <element name="k">
                <value>web</value>
              </element>
              <element name="v">
                <data type="anyURI"/>
              </element>
            </element>
          </optional>
        </element>
      </oneOrMore>
    </element>
  </start>
</grammar>
