<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="airport">
        <xs:annotation>
            <xs:documentation xml:lang="en">Root element</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="flights">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="flight" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="airline" type="airlineIDType"/>
                                        <xs:element name="flight_id" type="flightIDType"/>
                                        <xs:element name="dom_int" type="dom_intType"/>
                                        <xs:element name="schedule_time" type="xs:dateTime"/>
                                        <xs:element name="arr_dep" type="arr_depType"/>
                                        <xs:element name="airport" type="airportIDType">
                                            <xs:annotation>
                                                <xs:documentation xml:lang="en">To retrieve full airport name separate service has to be used.</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                        <xs:element name="via_airport" type="via_airportType" minOccurs="0"/>
                                        <xs:element name="check_in" type="check_inType" minOccurs="0"/>
                                        <xs:element name="gate" type="gateType" minOccurs="0"/>
                                        <xs:element name="status" type="statusType" minOccurs="0"/>
                                        <xs:element name="belt" type="beltType" minOccurs="0"/>
                                    </xs:sequence>
                                    <xs:attribute name="uniqueID" type="uniqueIDType" use="required"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="lastUpdate" type="xs:dateTime" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="name" type="airportIDType" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="airportIDType">
        <xs:restriction base="xs:NMTOKEN">
            <xs:pattern value="([0-9A-Z]){3}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="airlineIDType">
        <xs:restriction base="xs:NMTOKEN">
            <xs:pattern value="([A-Z0-9]){2}([A-Z]){0,1}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="flightIDType">
        <xs:annotation>
            <xs:documentation xml:lang="en">
                Consists of 3 parts:
                - Airline code (which can be 2-signs IATA code or 3-signs ICAO code)
                - Flight number (maximum 4 signs)
                - Suffix (maximum 1 sign)
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:pattern value="([A-Z0-9]){2}([A-Z]){0,1}([0-9]){3,4}([A-Z]){0,1}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="uniqueIDType">
        <xs:restriction base="xs:nonNegativeInteger">
            <xs:totalDigits value="12"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="dom_intType">
        <xs:annotation>
            <xs:documentation xml:lang="en">
                D - domestic
                I - international
                S - Schengen area
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:length value="1"/>
            <xs:pattern value="[DIS]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="arr_depType">
        <xs:annotation>
            <xs:documentation xml:lang="en">
                A - arrival
                D - departure
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:length value="1"/>
            <xs:pattern value="[AD]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="via_airportType">
        <xs:annotation>
            <xs:documentation xml:lang="en">
                At least one airport code. Separated with comma. Maximum 6 IATA codes.
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:maxLength value="25"/>
            <xs:pattern value="([0-9A-Z]){3}(,([0-9A-Z]){3}){0,5}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="check_inType">
        <xs:restriction base="xs:string">
            <xs:maxLength value="10"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="gateType">
        <xs:restriction base="xs:NMTOKEN">
            <xs:pattern value="([0-9a-zA-Z]){1,5}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="statusType">
        <xs:attribute name="code" type="statusCodeType" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="en">To retrieve text description of the code separate service has to be used</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="time" type="xs:dateTime"/>
    </xs:complexType>
    <xs:simpleType name="statusCodeType">
        <xs:annotation>
            <xs:documentation xml:lang="en">
                N - New info
                E - Estimated time
                A - Landed
                C - Cancelled
                D - Departured
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:pattern value="[NEACD]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="beltType">
        <xs:restriction base="xs:string">
            <xs:maxLength value="5"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
