<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:fl="http://xsd.dakosy.de/fairatlink/messages20.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://xsd.dakosy.de/fairatlink/messages20.xsd">
  <xs:element name="FL_STATUS_MSG" type="fl:FL_STATUS_MSG"/>
  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="CC_BuildingID" type="fl:string_6" minOccurs="0"/>
      <xs:element name="Street" type="fl:string_100" minOccurs="0"/>
      <xs:element name="StreetNumber" type="fl:string_6" minOccurs="0"/>
      <xs:element name="ISO_CountryCode" type="fl:ISO3166_2LC" minOccurs="0"/>
      <xs:element name="Postcode" type="fl:string_12" minOccurs="0"/>
      <xs:element name="City" type="fl:string_35"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Attachment">
    <xs:sequence>
      <xs:element name="AttachmentId" type="fl:string_35"/>
      <xs:element name="OriginalFileName" type="fl:string_350" minOccurs="0"/>
      <xs:element name="AttachmentMIMEType" type="fl:string_35"/>
      <xs:choice>
        <xs:element name="AttachmentURL" type="xs:string"/>
        <xs:element name="AttachmentContent" type="xs:base64Binary"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AttachmentList">
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="Attachment" type="fl:Attachment"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AttachmentRef">
    <xs:sequence>
      <xs:element name="AttachmentId" type="fl:string_35"/>
      <xs:element name="AttachmentType" type="fl:AttachmentType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AttachmentRefList">
    <xs:sequence>
      <xs:element name="AttachmentRef" type="fl:AttachmentRef" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="AttachmentType">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <xs:simpleType name="AWB_Reference">
    <xs:restriction base="xs:string">
      <xs:length value="12"/>
      <xs:pattern value="\d{3}-\d{8}"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Consignment_Status">
    <xs:sequence>
      <xs:choice>
        <xs:element name="AWB_Reference" type="fl:AWB_Reference"/>
        <xs:element name="HAWB_Reference" type="fl:HAWB_Reference"/>
      </xs:choice>
      <xs:element name="Forwarder" type="fl:Participant"/>
      <xs:element name="TPA_Recipient" type="fl:Participant" minOccurs="0"/>
      <xs:element name="TPA_Issuer" type="fl:Participant" minOccurs="0"/>
      <xs:element name="Haulier" type="fl:Haulier" minOccurs="0"/>
      <xs:element name="Status_Timestamp" type="xs:dateTime"/>
      <xs:element name="Status" type="fl:string_35"/>
      <xs:element name="StatusQualifier" type="fl:string_35" minOccurs="0"/>
      <xs:element name="Remarks" type="fl:string_350" minOccurs="0"/>
      <xs:element name="Flight_Info" type="fl:Flight_Info" minOccurs="0"/>
      <xs:element name="HAWBs" type="fl:HAWBList" minOccurs="0"/>
      <xs:element name="LocationOfGoods" type="fl:Participant" minOccurs="0"/>
      <xs:element name="CustomsReferences" type="fl:CustomsReferences" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Measurements" type="fl:PhysicalCharacteristics" minOccurs="0"/>
      <xs:element name="MeasurementsActual" type="fl:PhysicalCharacteristics" minOccurs="0"/>
      <xs:element name="AttachmentRefs" type="fl:AttachmentRefList" minOccurs="0"/>
      <xs:element name="InitialSecurityRecord" type="fl:InitialSecurityRecord" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="DamageIndicator" type="xs:boolean" minOccurs="0"/>
      <xs:element name="SubmitInternal" type="xs:boolean" default="true" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="Counter_8">
    <xs:restriction base="xs:positiveInteger">
      <xs:maxInclusive value="99999999"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="CustomsReferences">
    <xs:sequence>
      <xs:element name="CustomsProcedure" type="fl:string_12" minOccurs="0"/>
      <xs:element name="RefCode" type="fl:string_35" minOccurs="0"/>
      <xs:element name="RefCodeType" type="fl:string_3" default="REG" minOccurs="0"/>
      <xs:element name="Position" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="SpecificKey" type="fl:string_44" minOccurs="0"/>
      <xs:element name="EndOfStoragePeriod" type="xs:date" minOccurs="0"/>
      <xs:element name="Origin" type="fl:IATA_3LC" minOccurs="0"/>
      <xs:element name="GoodsDescription" type="fl:string_140" minOccurs="0"/>
      <xs:element name="Measurements" type="fl:PhysicalCharacteristics" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="dimension">
    <xs:restriction base="xs:positiveInteger">
      <xs:maxInclusive value="99999"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Duration_as_string_7">
    <xs:restriction base="xs:string">
      <xs:maxLength value="7"/>
      <xs:pattern value="PT(\dH\d{1,2}M)|PT(\dH)|PT(\d{1,2}M)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="EORI">
    <xs:sequence>
      <xs:element name="EORINumber" type="xs:string" minOccurs="0"/>
      <xs:element name="BranchOfficeId" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ExemptionCodeList">
    <xs:sequence>
      <xs:element name="ExemptionCode" type="xs:string" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="E_Mail_Address">
    <xs:restriction base="xs:string">
      <xs:maxLength value="254"/>
      <xs:pattern value="([_A-Za-z0-9-])+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Flight_Info">
    <xs:sequence>
      <xs:element name="FlightDate" type="xs:date"/>
      <xs:element name="FlightNumber" type="fl:IATA_AIRLINE_DESIGNATOR"/>
      <xs:element name="DepartureAirport" type="fl:IATA_3LC"/>
      <xs:element name="ArrivalAirport" type="fl:IATA_3LC"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="FL_Message_Header">
    <xs:sequence>
      <xs:element name="Version" type="fl:msg_version" default="2.0"/>
      <xs:element name="FL_MSG_ID" type="fl:ID35"/>
      <xs:element name="FL_Sender_ID" type="fl:ID07"/>
      <xs:element name="FL_Recipient_ID" type="fl:ID07"/>
      <xs:element name="CreationTime" type="xs:dateTime"/>
      <xs:element name="Testindicator" type="xs:boolean" default="false"/>
      <xs:element name="SentInternal" type="fl:string_35" default="false" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="FL_Status">
    <xs:sequence>
      <xs:choice>
        <xs:element name="SPORD_Status" type="fl:SPORD_Status"/>
        <xs:element name="Tour_Status" type="fl:Tour_Status"/>
        <xs:element name="TPA_Status" type="fl:TPA_Status"/>
        <xs:element name="Consignment_Status" type="fl:Consignment_Status"/>
      </xs:choice>
      <xs:element name="IssuingPerson" type="fl:Person" minOccurs="0"/>
      <xs:element name="Attachments" type="fl:AttachmentList" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="FL_STATUS_MSG">
    <xs:sequence>
      <xs:element name="FL_Message_Header" type="fl:FL_Message_Header"/>
      <xs:element name="FL_Status" type="fl:FL_Status"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Haulier">
    <xs:complexContent>
      <xs:extension base="fl:Participant"/>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="HAWBList">
    <xs:sequence>
      <xs:element name="HAWB" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="HAWB_Reference">
    <xs:restriction base="xs:string">
      <xs:maxLength value="12"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="IATA_3LC">
    <xs:restriction base="xs:string">
      <xs:length value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="IATA_AIRLINE_DESIGNATOR">
    <xs:restriction base="xs:string">
      <xs:minLength value="3"/>
      <xs:maxLength value="7"/>
      <xs:pattern value="([A-Z0-9]{2}RFS)|([A-Z]{2}|\d[A-Z]|[A-Z]\d)\d{1,4}([A-Z]?)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ID07">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="7"/>
      <xs:pattern value="[a-zA-Z0-9_/=-]*"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ID35">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="35"/>
      <xs:pattern value="[a-zA-Z0-9_/=-]*"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="InitialSecurityRecord">
    <xs:sequence>
      <xs:element name="SecurityStatus" type="fl:SecurityStatus"/>
      <xs:element name="SecurityStatusReason" type="fl:SecurityStatusReason" maxOccurs="9"/>
      <xs:element name="IssuingRA" type="fl:RAKC" minOccurs="0"/>
      <xs:element name="IssuingRAExpiryDate" type="xs:date" minOccurs="0"/>
      <xs:element name="IssuerName" type="fl:string_35" minOccurs="0"/>
      <xs:element name="IssuerLocalID" type="fl:string_35" minOccurs="0"/>
      <xs:element name="KC_ID" type="fl:RAKC" minOccurs="0"/>
      <xs:element name="KC_ID_ExpiryDate" type="xs:date" minOccurs="0"/>
      <xs:element name="CreationDT" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="NumberOfPiecesSecured" type="fl:Counter_8" minOccurs="0"/>
      <xs:element name="ExemptionCodes" type="fl:ExemptionCodeList" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="InstructionCode">
    <xs:restriction base="xs:string">
      <xs:maxLength value="8"/>
      <xs:pattern value="[A-Z]*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ISO3166_2LC">
    <xs:restriction base="xs:string">
      <xs:minLength value="2"/>
      <xs:maxLength value="2"/>
      <xs:pattern value="[A-Z]{2}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="msg_version">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="7"/>
      <xs:pattern value="[0-9]+\.?[0-9]+"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Participant">
    <xs:sequence minOccurs="0">
      <xs:element name="FL_ID" type="fl:ID07" minOccurs="0"/>
      <xs:element name="CompanyName" type="fl:string_35" minOccurs="0"/>
      <xs:element name="Address" type="fl:Address" minOccurs="0"/>
      <xs:element name="EORI" type="fl:EORI" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Person">
    <xs:sequence>
      <xs:element name="Name" type="fl:string_35"/>
      <xs:element name="TelephoneNumber" type="fl:string_35" minOccurs="0"/>
      <xs:element name="eMailAddress" type="fl:E_Mail_Address" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PhysicalCharacteristics">
    <xs:sequence minOccurs="0">
      <xs:element name="NumberOfPieces" type="fl:Counter_8" minOccurs="0"/>
      <xs:element name="NumberOfPiecesDGR" type="fl:Counter_8" minOccurs="0"/>
      <xs:element name="Length" type="fl:dimension" minOccurs="0"/>
      <xs:element name="Width" type="fl:dimension" minOccurs="0"/>
      <xs:element name="Height" type="fl:dimension" minOccurs="0"/>
      <xs:element name="DimensionUnitCode" type="fl:string_2_fix" minOccurs="0"/>
      <xs:element name="VolumeAmount" type="fl:volume" minOccurs="0"/>
      <xs:element name="VolumeCode" type="fl:string_2_fix" minOccurs="0"/>
      <xs:element name="Weight" type="fl:weight" minOccurs="0"/>
      <xs:element name="WeightCode" type="fl:string_2_fix" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="RAKC">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="19"/>
      <xs:pattern value="[A-Z]{2}/[RA|KC]{2}/[0-9]{5}-[0-9]{2}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="RCRemarks">
    <xs:sequence>
      <xs:element name="RCRemark" type="xs:string" minOccurs="0" maxOccurs="3"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="SecurityStatus">
    <xs:restriction base="xs:string">
      <xs:minLength value="3"/>
      <xs:maxLength value="4"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SecurityStatusReason">
    <xs:restriction base="xs:string">
      <xs:length value="4"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SPORD_Status">
    <xs:sequence>
      <xs:element name="TPA_ID" type="fl:ID35"/>
      <xs:element name="TPA_Recipient" type="fl:Participant"/>
      <xs:element name="TPA_Issuer" type="fl:Participant"/>
      <xs:element name="Status_Timestamp" type="xs:dateTime"/>
      <xs:element name="Status" type="fl:string_35"/>
      <xs:element name="InstructionCode" type="fl:InstructionCode" minOccurs="0"/>
      <xs:element name="AWB" type="fl:AWB_Reference" minOccurs="0"/>
      <xs:element name="HAWB" type="fl:HAWB_Reference" minOccurs="0"/>
      <xs:element name="Remarks" type="fl:string_350" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="string_100">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_12">
    <xs:restriction base="xs:string">
      <xs:maxLength value="12"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_140">
    <xs:restriction base="xs:string">
      <xs:maxLength value="140"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_2_fix">
    <xs:restriction base="xs:string">
      <xs:length value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_3">
    <xs:restriction base="xs:string">
      <xs:maxLength value="3"/>
      <xs:minLength value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_35">
    <xs:restriction base="xs:string">
      <xs:maxLength value="35"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_350">
    <xs:restriction base="xs:string">
      <xs:maxLength value="350"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_44">
    <xs:restriction base="xs:string">
      <xs:maxLength value="44"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string_6">
    <xs:restriction base="xs:string">
      <xs:maxLength value="6"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Tour_Status">
    <xs:sequence>
      <xs:element name="TourID" type="fl:ID35"/>
      <xs:element name="Haulier" type="fl:Haulier"/>
      <xs:element name="Status_Timestamp" type="xs:dateTime"/>
      <xs:element name="Status" type="fl:string_35"/>
      <xs:element name="LocationOfGoods" type="fl:Participant" minOccurs="0"/>
      <xs:element name="Duration" type="fl:Duration_as_string_7" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TPA_Status">
    <xs:sequence>
      <xs:element name="TPA_ID" type="fl:ID35"/>
      <xs:element name="TPA_Recipient" type="fl:Participant"/>
      <xs:element name="TPA_Issuer" type="fl:Participant"/>
      <xs:element name="Haulier" type="fl:Haulier" minOccurs="0"/>
      <xs:element name="Status_Timestamp" type="xs:dateTime"/>
      <xs:element name="Status" type="fl:string_35"/>
      <xs:element name="VehicleID" type="xs:string" minOccurs="0"/>
      <xs:element name="CFSID" type="xs:string" minOccurs="0"/>
      <xs:element name="RCRemarks" type="fl:RCRemarks" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="volume">
    <xs:restriction base="xs:decimal">
      <xs:maxInclusive value="999999999"/>
      <xs:minInclusive value="0.01"/>
      <xs:totalDigits value="9"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="weight">
    <xs:restriction base="xs:decimal">
      <xs:maxInclusive value="9999999"/>
      <xs:minInclusive value="0.001"/>
      <xs:totalDigits value="7"/>
      <xs:fractionDigits value="3"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
