<!-- Copyright 2004 The Apache Software Foundation

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License. -->
<xs:schema
   elementFormDefault="qualified"
   attributeFormDefault="unqualified"
   targetNamespace="java:int.test"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:tns="java:int.test">

  <xs:simpleType name="LatitudeDegreesType">
    <xs:annotation>
      <xs:documentation>
        <definition>Degrees of Latitude</definition>
        <USMTFref>See USMTF field latitude.degrees.17.1</USMTFref>
        <DoDXMLref>TBD</DoDXMLref>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:short">
      <xs:minInclusive value="00"/>
      <xs:maxInclusive value="90"/>
      <xs:pattern value="[\d]{2}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="LongitudeDegreesType">
    <xs:annotation>
      <xs:documentation>
        <definition>Degrees of Longitude</definition>
        <USMTFref>See USMTF field longitude.degrees.18.1</USMTFref>
        <DoDXMLref>TBD</DoDXMLref>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:short">
      <xs:minInclusive value="000"/>
      <xs:maxInclusive value="180"/>
      <xs:pattern value="[\d]{3}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="position">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="lat" type="tns:LatitudeDegreesType"/>
        <xs:element name="lon" type="tns:LongitudeDegreesType"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>