<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.williamslabs.com/sat/spl#"
    targetNamespace="http://www.williamslabs.com/sat/spl#">

    <xsd:complexType name="PositionType">
        <xsd:annotation>
            <xsd:documentation></xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element ref="Time"/>
            <xsd:element ref="Latitude"/>
            <xsd:element ref="Longitude"/>
            <xsd:element ref="Altitude"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:element name="Positions">
        <xsd:complexType>
            <xsd:sequence maxOccurs="unbounded">
                <xsd:element ref="Position"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    
    
    <xsd:element name="Position" type="PositionType"/>
    
    <xsd:complexType name="SatelliteType">
        <xsd:annotation>
            <xsd:documentation></xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element ref="SatelliteName"/>
            <xsd:element ref="SatelliteNumber"/>
            <xsd:element ref="IntlDesignator"/>
            <xsd:element ref="Epoch"/>
            <xsd:element ref="ndot_0div2"/>
            <xsd:element ref="ndotdot_0div6"/>
            <xsd:element ref="Bstar"/>
            <xsd:element ref="ElementNumber"/>
            <xsd:element ref="Inclination"/>
            <xsd:element ref="RightAscension"/>
            <xsd:element ref="Eccentricity"/>
            <xsd:element ref="ArguementOfPerigee"/>
            <xsd:element ref="MeanAnomaly"/>
            <xsd:element ref="MeanMotion"/>
            <xsd:element ref="EpochRev"/>
            <xsd:element ref="tle1"/>
            <xsd:element ref="tle2"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:element name="Satellite" type="SatelliteType"/>
    
    <xsd:complexType name="QueryDetailsType">
        <xsd:annotation>
            <xsd:documentation></xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element ref="SatelliteNumber"/>
            <xsd:element ref="StartTime"/>
            <xsd:element ref="EndTime"/>
            <xsd:element ref="SamplePeriod"/>
            <xsd:element ref="SampleCount"/>
            <xsd:element ref="ParseError"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:element name="QueryDetails" type="QueryDetailsType"/>

    <xsd:element name="SatellitePositionListing">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="QueryDetails"/>
                <xsd:element ref="Satellite"/>
                <xsd:element ref="Positions"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    
    <xsd:element name="SatelliteNumber" type="xsd:positiveInteger"/>
    <xsd:element name="StartTime" type="xsd:string"/>
    <xsd:element name="EndTime" type="xsd:string"/>
    <xsd:element name="SamplePeriod" type="xsd:int"/>
    <xsd:element name="SampleCount" type="xsd:int"/>
    <xsd:element name="ParseError" type="xsd:int"/>
    
    <xsd:element name="SatelliteName" type="xsd:string"/>
    <xsd:element name="IntlDesignator" type="xsd:string"/>
    <xsd:element name="Epoch" type="xsd:double"/>
    <xsd:element name="ndot_0div2" type="xsd:double"/>
    <xsd:element name="ndotdot_0div6" type="xsd:double"/>
    <xsd:element name="Bstar" type="xsd:double"/>
    <xsd:element name="ElementNumber" type="xsd:int"/>
    <xsd:element name="Inclination" type="xsd:double"/>
    <xsd:element name="RightAscension" type="xsd:double"/>
    <xsd:element name="Eccentricity" type="xsd:double"/>
    <xsd:element name="ArguementOfPerigee" type="xsd:double"/>
    <xsd:element name="MeanAnomaly" type="xsd:double"/>
    <xsd:element name="MeanMotion" type="xsd:double"/>
    <xsd:element name="EpochRev" type="xsd:int"/>
    <xsd:element name="tle1" type="xsd:string"/>
    <xsd:element name="tle2" type="xsd:string"/>
    
    <xsd:element name="Time" type="xsd:string"/>
    <xsd:element name="Latitude" type="xsd:double"/>
    <xsd:element name="Longitude" type="xsd:double"/>
    <xsd:element name="Altitude" type="xsd:double"/>

</xs:schema>