<?xml version=“1.0” encoding=“UTF-8”?>
<xs:schema xmlns:xs=“www.w3.org/2001/XMLSchema”>
<!– W3C specifications www.w3.org/TR/xmlschema-0 –>
<!– DATA DECLARATION –> <xs:element name=“data”>
<xs:complexType> <xs:sequence> <xs:element name="program" type="program" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="errors" type="errors" minOccurs="0"/> </xs:sequence> <xs:attribute name="version" type="xs:string"/> </xs:complexType>
</xs:element>
<!– PROGRAM DECLARATION –> <xs:complexType name=“program”>
<xs:sequence> <xs:element name="programNumber" type="xs:int" minOccurs="0"/> <xs:element name ="platform" type="platform" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
</xs:complexType>
<!– PLATFORM DECLARATION –> <xs:complexType name=“platform”>
<xs:sequence> <xs:element name="platformId" type="xs:int" minOccurs="0"/> <xs:element name="platformType" type="xs:string" minOccurs="0"/> <xs:element name="platformName" type="xs:string" minOccurs="0"/> <xs:element name="platformModel" type="xs:string" minOccurs="0"/> <xs:element name="platformHexId" type="xs:string" minOccurs="0"/> <xs:element name ="satellitePass" type="satellitePass" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
</xs:complexType>
<!– SATELLITE PASS DECLARATION –> <xs:complexType name=“satellitePass”>
<xs:sequence> <xs:element name="satellite" type="xs:string" minOccurs="0"/> <xs:element name="bestMsgDate" type="xs:dateTime" minOccurs="0"/> <!-- unit : second --> <xs:element name="duration" type="xs:int" minOccurs="0"/> <xs:element name="nbMessage" type="xs:int" minOccurs="0"/> <xs:element name="message120" type="xs:int" minOccurs="0"/> <!-- unit : dBm --> <xs:element name="bestLevel" type="xs:int" minOccurs="0"/> <!-- unit : Hertz --> <xs:element name="frequency" type="xs:double" minOccurs="0"/> <xs:element name="location" type="location" minOccurs="0"/> <xs:element name ="message" type="message" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
</xs:complexType>
<!– LOCATION DECLARATION –> <xs:complexType name=“location”>
<xs:sequence> <!-- GMT --> <xs:element name="locationDate" type="xs:dateTime" minOccurs="0"/> <!-- range : -90°..+90° --> <xs:element name="latitude" type="xs:double" minOccurs="0"/> <!-- range : -180°..+180° --> <xs:element name="longitude" type="xs:double" minOccurs="0"/> <!-- unit : meter --> <xs:element name="altitude" type="xs:double" minOccurs="0"/> <xs:element name="locationClass" type="xs:string" minOccurs="0"/> <!-- unit : meter/second --> <xs:element name="gpsSpeed" type="xs:float" minOccurs="0"/> <!-- range : 0°..+360°, clockwise --> <xs:element name="gpsHeading" type="xs:float" minOccurs="0"/> <xs:element name="diagnostic" type="diagnostic" minOccurs="0"/> </xs:sequence>
</xs:complexType>
<!– DIAGNOSTIC DECLARATION –> <xs:complexType name=“diagnostic”>
<xs:sequence> <!-- range : -90°..+90° --> <xs:element name="latitude2" type="xs:float" minOccurs="0"/> <!-- range : -180°..+180° --> <xs:element name="longitude2" type="xs:float" minOccurs="0"/> <!-- unit : meter --> <xs:element name="altitude2" type="xs:float" minOccurs="0"/> <xs:element name="index" type="xs:int" minOccurs="0"/> <xs:element name="nopc" type="xs:int" minOccurs="0"/> <!-- unit : meter --> <xs:element name="errorRadius" type="xs:float" minOccurs="0"/> <!-- unit : meter --> <xs:element name="semiMajor" type="xs:float" minOccurs="0"/> <!-- unit : meter --> <xs:element name="semiMinor" type="xs:float" minOccurs="0"/> <!-- range 0°..180°, clockwise --> <xs:element name="orientation" type="xs:float" minOccurs="0"/> <xs:element name="hdop" type="xs:string" minOccurs="0"/> </xs:sequence>
</xs:complexType>
<!– MESSAGE DECLARATION –> <xs:complexType name=“message”>
<xs:sequence> <!-- GMT --> <xs:element name="bestDate" type="xs:dateTime" minOccurs="0"/> <xs:element name="compression" type="xs:int" minOccurs="0"/> <xs:element name ="collect" type="collect" minOccurs="0" maxOccurs="unbounded"/> <xs:element name ="format" type="format" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
</xs:complexType>
<!– COLLECT DECLARATION –> <xs:complexType name=“collect”>
<xs:sequence> <xs:element name="type" type="xs:string" minOccurs="0"/> <xs:element name="alarm" type="xs:string" minOccurs="0"/> <xs:element name="concatenated" type="xs:string" minOccurs="0"/> <!-- GMT --> <xs:element name="date" type="xs:dateTime" minOccurs="0"/> <!-- unit : dBm --> <xs:element name="level" type="xs:float" minOccurs="0"/> <!-- unit : Hertz --> <xs:element name="doppler" type="xs:double" minOccurs="0"/> <xs:element name="rawData" type="xs:string" minOccurs="0"/> </xs:sequence>
</xs:complexType>
<!– FORMAT DECLARATION –> <xs:complexType name=“format”>
<xs:sequence> <xs:element name="formatOrder" type="xs:int" minOccurs="0"/> <xs:element name="formatName" type="xs:string" minOccurs="0"/> <xs:element name ="sensor" type="sensor" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
</xs:complexType>
<!– SENSOR DECLARATION –> <xs:complexType name=“sensor”>
<xs:sequence> <xs:element name="order" type="xs:int" minOccurs="0"/> <xs:element name="name" type="xs:string" minOccurs="0"/> <xs:element name="valueType" type="xs:string" minOccurs="0"/> <xs:element name="value" type="xs:string" minOccurs="0"/> <xs:element name="valueStr" type="xs:string" minOccurs="0"/> </xs:sequence>
</xs:complexType>
<!– ERRORS DECLARATION –> <xs:complexType name=“errors”>
<xs:sequence> <xs:element name ="error" type="xs:string" minOccurs="0" maxOccurs="unbounded"> </xs:element> </xs:sequence>
</xs:complexType>
</xs:schema>