<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="AmsatList">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Satellites"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Satellites">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Name"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="NasaID"/>
          <xs:element ref="Status"/>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="LaunchData"/>
          <xs:element ref="OSCARNumber"/>
          <xs:element ref="SatelliteInformationStatus"/>
          <xs:element ref="UpdateDate"/>
        </xs:choice>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="Information"/>
          <xs:element ref="RadioData"/>
        </xs:choice>
        <xs:element minOccurs="0" ref="TelemetryData"/>
        <xs:element minOccurs="0" ref="Description"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NasaID" type="xs:string"/>
  <xs:element name="Status" type="xs:string"/>
  <xs:element name="LaunchData">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="LaunchDate"/>
        <xs:element ref="LaunchingSite"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="LaunchDate" type="xs:string"/>
  <xs:element name="LaunchingSite" type="xs:string"/>
  <xs:element name="OSCARNumber" type="xs:string"/>
  <xs:element name="SatelliteInformationStatus" type="xs:NCName"/>
  <xs:element name="UpdateDate" type="xs:NMTOKEN"/>
  <xs:element name="Information">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Description"/>
        <xs:element ref="Title"/>
        <xs:element ref="Value"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="RadioData">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Beacons"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Transponders"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Beacons">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Name"/>
        <xs:element ref="Frequency"/>
        <xs:element maxOccurs="unbounded" ref="Modes"/>
        <xs:element minOccurs="0" ref="Speed"/>
        <xs:element minOccurs="0" ref="CallSign"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Frequency" type="xs:string"/>
  <xs:element name="Modes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Mode"/>
        <xs:element minOccurs="0" ref="Speed"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CallSign" type="xs:string"/>
  <xs:element name="Transponders">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Name"/>
        <xs:element ref="FrequencyUplink"/>
        <xs:element ref="FrequencyDownlink"/>
        <xs:element minOccurs="0" ref="Mode"/>
        <xs:choice minOccurs="0">
          <xs:element ref="Inverted"/>
          <xs:element ref="Tone"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="FrequencyUplink">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="FrequencyBegin"/>
        <xs:element minOccurs="0" ref="FrequencyEnd"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="FrequencyDownlink">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="FrequencyBegin"/>
        <xs:element minOccurs="0" ref="FrequencyEnd"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Inverted" type="xs:string"/>
  <xs:element name="Tone" type="xs:decimal"/>
  <xs:element name="TelemetryData">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="DescriptionURL"/>
        <xs:element minOccurs="0" ref="ReportURL"/>
        <xs:element minOccurs="0" ref="ReportEmail"/>
        <xs:element minOccurs="0" ref="SoftwareURL"/>
        <xs:element minOccurs="0" ref="Description"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DescriptionURL">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Title"/>
        <xs:element ref="Value"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReportURL">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Title"/>
        <xs:element ref="Value"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReportEmail" type="xs:string"/>
  <xs:element name="SoftwareURL">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Title"/>
        <xs:element ref="Value"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="Name" type="xs:string"/>
  <xs:element name="Mode" type="xs:string"/>
  <xs:element name="Speed" type="xs:string"/>
  <xs:element name="FrequencyBegin" type="xs:integer"/>
  <xs:element name="FrequencyEnd" type="xs:integer"/>
  <xs:element name="Description">
    <xs:complexType mixed="true">
      <xs:attribute name="lang" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Value" type="xs:anyURI"/>
  <xs:element name="Title" type="xs:string"/>
</xs:schema>
