<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="IMPOSTdeclaration" type="IMPOSTdeclarationType">
    <xs:annotation>
      <xs:documentation>Version 001 - Release 003</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:simpleType name="an..1">
    <xs:restriction base="xs:string">
      <xs:maxLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..10">
    <xs:restriction base="xs:string">
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..100">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..17">
    <xs:restriction base="xs:string">
      <xs:maxLength value="17"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..2">
    <xs:restriction base="xs:string">
      <xs:maxLength value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..20">
    <xs:restriction base="xs:string">
      <xs:maxLength value="20"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..21">
    <xs:restriction base="xs:string">
      <xs:maxLength value="21"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..22">
    <xs:restriction base="xs:string">
      <xs:maxLength value="22"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..25">
    <xs:restriction base="xs:string">
      <xs:maxLength value="25"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..256">
    <xs:restriction base="xs:string">
      <xs:maxLength value="256"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..3">
    <xs:restriction base="xs:string">
      <xs:maxLength value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..35">
    <xs:restriction base="xs:string">
      <xs:maxLength value="35"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..4">
    <xs:restriction base="xs:string">
      <xs:maxLength value="4"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..44">
    <xs:restriction base="xs:string">
      <xs:maxLength value="44"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..50">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..512">
    <xs:restriction base="xs:string">
      <xs:maxLength value="512"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..6">
    <xs:restriction base="xs:string">
      <xs:maxLength value="6"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..70">
    <xs:restriction base="xs:string">
      <xs:maxLength value="70"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..8">
    <xs:restriction base="xs:string">
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ApplicationInternalDataAdditionalDetailsDataType">
    <xs:sequence>
      <xs:element name="Key" type="an..35" minOccurs="0"/>
      <xs:element name="Value" type="an..100" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ApplicationInternalDataAdditionalDetailsType">
    <xs:sequence>
      <xs:element name="Data" type="ApplicationInternalDataAdditionalDetailsDataType" minOccurs="0" maxOccurs="999"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ApplicationInternalDataType">
    <xs:sequence>
      <xs:element name="AdditionalDetails" type="ApplicationInternalDataAdditionalDetailsType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationContactPersonType">
    <xs:sequence>
      <xs:element name="Name" type="an..35" minOccurs="0"/>
      <xs:element name="PhoneNumber" type="an..35" minOccurs="0"/>
      <xs:element name="MailAddress" type="an..256" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationDataType">
    <xs:sequence>
      <xs:element name="ObjektIdentifizierung" type="IMPOSTdeclarationObjektIdentifizierungType" minOccurs="0"/>
      <xs:element name="Header" type="IMPOSTdeclarationHeaderType" minOccurs="0"/>
      <xs:element name="GoodsItem" type="IMPOSTdeclarationGoodsItemType" minOccurs="0" maxOccurs="99999"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationDeclarantType">
    <xs:sequence>
      <xs:element name="AdressCode" type="an..50" minOccurs="0"/>
      <xs:element name="TIN" type="an..17" minOccurs="0"/>
      <xs:element name="SubsidiaryNumber" type="n4" minOccurs="0"/>
      <xs:element name="Name" type="an..70" minOccurs="0"/>
      <xs:element name="AddressLine" type="an..70" minOccurs="0"/>
      <xs:element name="Postcode" type="an..17" minOccurs="0"/>
      <xs:element name="City" type="an..35" minOccurs="0"/>
      <xs:element name="District" type="an..35" minOccurs="0"/>
      <xs:element name="Country" type="an..2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationDocumentType">
    <xs:sequence>
      <xs:element name="DocumentDivision" type="an..1" minOccurs="0"/>
      <xs:element name="DocumentType" type="an..4" minOccurs="0"/>
      <xs:element name="DocumentReferenceNumber" type="an..35" minOccurs="0"/>
      <xs:element name="DocumentIssuingDate" type="xs:date" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationDutyDefermentApprovalType">
    <xs:sequence>
      <xs:element name="DutyDefermentApprovalType" type="an..2" minOccurs="0"/>
      <xs:element name="ApplicationType" type="an..1" minOccurs="0"/>
      <xs:element name="AccountPrefix" type="an..2" minOccurs="0"/>
      <xs:element name="AccountNumber" type="an..6" minOccurs="0"/>
      <xs:element name="AuthorisationNumber" type="an..25" minOccurs="0"/>
      <xs:element name="DutyDefermentApplicantEORI" type="an..17" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationExporterType">
    <xs:sequence>
      <xs:element name="AdressCode" type="an..50" minOccurs="0"/>
      <xs:element name="Name" type="an..70" minOccurs="0"/>
      <xs:element name="AddressLine" type="an..70" minOccurs="0"/>
      <xs:element name="Postcode" type="an..17" minOccurs="0"/>
      <xs:element name="City" type="an..35" minOccurs="0"/>
      <xs:element name="District" type="an..35" minOccurs="0"/>
      <xs:element name="Country" type="an..2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationGoodsItemType">
    <xs:sequence>
      <xs:element name="SequenceNumber" type="seq5" minOccurs="0"/>
      <xs:element name="CommodityCode" type="an..6" minOccurs="0"/>
      <xs:element name="ArticleCode" type="an..50" minOccurs="0"/>
      <xs:element name="GoodsDescription" type="an..512" minOccurs="0"/>
      <xs:element name="PackageQuantity" type="n..8" minOccurs="0"/>
      <xs:element name="GrossMassMeasureItem" type="n..16.6" minOccurs="0"/>
      <xs:element name="TaxReduction" type="an..1" minOccurs="0"/>
      <xs:element name="SpecialQuantity" type="n..16.6" minOccurs="0"/>
      <xs:element name="TransportChargesItem" type="IMPOSTdeclarationTransportChargesItemType" minOccurs="0"/>
      <xs:element name="Value" type="n..16.2" minOccurs="0"/>
      <xs:element name="CurrencyCode" type="an..3" minOccurs="0"/>
      <xs:element name="CommercialReferenceNumberItem" type="an..35" minOccurs="0"/>
      <xs:element name="AdditionalInformationItem" type="an..512" minOccurs="0"/>
      <xs:element name="AdditionalProcedureCode" type="an..3" minOccurs="0" maxOccurs="99"/>
      <xs:element name="ApplicationInternalData" type="ApplicationInternalDataType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationHeaderType">
    <xs:sequence>
      <xs:element name="TotalGrossMassMeasure" type="n..16.6" minOccurs="0"/>
      <xs:element name="CustomsOffice" type="an..8" minOccurs="0"/>
      <xs:element name="RepresentativeRelationshipFlag" type="an..1" minOccurs="0"/>
      <xs:element name="Exporter" type="IMPOSTdeclarationExporterType" minOccurs="0"/>
      <xs:element name="Importer" type="IMPOSTdeclarationImporterType" minOccurs="0"/>
      <xs:element name="Declarant" type="IMPOSTdeclarationDeclarantType" minOccurs="0"/>
      <xs:element name="Representative" type="IMPOSTdeclarationRepresentativeType" minOccurs="0"/>
      <xs:element name="ContactPerson" type="IMPOSTdeclarationContactPersonType" minOccurs="0"/>
      <xs:element name="TransportChargesHeader" type="IMPOSTdeclarationTransportChargesHeaderType" minOccurs="0"/>
      <xs:element name="InputTaxDeductionFlag" type="indicator" minOccurs="0"/>
      <xs:element name="PaymentMethod" type="an..1" minOccurs="0"/>
      <xs:element name="CommercialReferenceNumberHeader" type="an..35" minOccurs="0"/>
      <xs:element name="DutyDefermentApproval" type="IMPOSTdeclarationDutyDefermentApprovalType" minOccurs="0"/>
      <xs:element name="AdditionalInformationHeader" type="an..512" minOccurs="0"/>
      <xs:element name="AdditionalDutyReferenceNumber" type="an..20" minOccurs="0" maxOccurs="99"/>
      <xs:element name="Document" type="IMPOSTdeclarationDocumentType" minOccurs="0" maxOccurs="99"/>
      <xs:element name="PreviousAdministrativeReferences" type="IMPOSTdeclarationPreviousAdministrativeReferencesType" minOccurs="0"/>
      <xs:element name="SummaryDeclaration" type="IMPOSTdeclarationSummaryDeclarationType" minOccurs="0"/>
      <xs:element name="ApplicationInternalData" type="ApplicationInternalDataType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationImporterType">
    <xs:sequence>
      <xs:element name="AdressCode" type="an..50" minOccurs="0"/>
      <xs:element name="TIN" type="an..17" minOccurs="0"/>
      <xs:element name="SubsidiaryNumber" type="n4" minOccurs="0"/>
      <xs:element name="Name" type="an..70" minOccurs="0"/>
      <xs:element name="AddressLine" type="an..70" minOccurs="0"/>
      <xs:element name="Postcode" type="an..17" minOccurs="0"/>
      <xs:element name="City" type="an..35" minOccurs="0"/>
      <xs:element name="District" type="an..35" minOccurs="0"/>
      <xs:element name="Country" type="an..2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationObjektIdentifizierungType">
    <xs:sequence>
      <xs:element name="ObjektName" type="an..22"/>
      <xs:element name="Zollanmeldeart" type="an..4" minOccurs="0"/>
      <xs:element name="BezugsnummerVorblendung" type="an..35" minOccurs="0"/>
      <xs:element name="KopieVon" type="an..35" minOccurs="0"/>
      <xs:element name="ObjektAktion" type="an..10" minOccurs="0" maxOccurs="10"/>
      <xs:element name="CompliancePruefung" type="an..3" minOccurs="0"/>
      <xs:element name="Bearbeiter" type="an..70" minOccurs="0"/>
      <xs:element name="ShipmentReferenz" type="an..35" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationPreviousAdministrativeReferencesType">
    <xs:sequence>
      <xs:element name="PreviousAdministrativeReferencesType" type="an..3" minOccurs="0"/>
      <xs:element name="PreviousAdministrativeReferenceNumber" type="an..35" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationRepresentativeType">
    <xs:sequence>
      <xs:element name="AdressCode" type="an..50" minOccurs="0"/>
      <xs:element name="TIN" type="an..17" minOccurs="0"/>
      <xs:element name="SubsidiaryNumber" type="n4" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationSummaryDeclarationGoodsItemIdentificationByKeyType">
    <xs:sequence>
      <xs:element name="IdentificationByKeyKind" type="an..3" minOccurs="0"/>
      <xs:element name="IdentificationByKeyNumber" type="an..44" minOccurs="0"/>
      <xs:element name="IdentificationByKeyCustodianEORI" type="an..17" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationSummaryDeclarationGoodsItemIdentificationByRegistrationType">
    <xs:sequence>
      <xs:element name="IdentificationByRegistrationNumber" type="an..21" minOccurs="0"/>
      <xs:element name="IdentificationByRegistrationSeq" type="n..4" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationSummaryDeclarationGoodsItemType">
    <xs:sequence>
      <xs:element name="SummaryDeclarationQuantity" type="n..5" minOccurs="0"/>
      <xs:element name="IdentificationByKey" type="IMPOSTdeclarationSummaryDeclarationGoodsItemIdentificationByKeyType" minOccurs="0"/>
      <xs:element name="IdentificationByRegistration" type="IMPOSTdeclarationSummaryDeclarationGoodsItemIdentificationByRegistrationType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationSummaryDeclarationType">
    <xs:sequence>
      <xs:element name="SummaryDeclarationIdentification" type="an..3" minOccurs="0"/>
      <xs:element name="SummaryDeclarationGoodsItem" type="IMPOSTdeclarationSummaryDeclarationGoodsItemType" minOccurs="0" maxOccurs="999"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationTransactionType">
    <xs:sequence>
      <xs:element name="IOPartner" type="an..100"/>
      <xs:element name="IODivision1" type="an..10" minOccurs="0"/>
      <xs:element name="IODivision2" type="an..10" minOccurs="0"/>
      <xs:element name="IODivision3" type="an..10" minOccurs="0"/>
      <xs:element name="IOReferenz" type="an..35"/>
      <xs:element name="IODatumZeit" type="xs:dateTime"/>
      <xs:element name="Version" type="n3" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationTransportChargesHeaderType">
    <xs:sequence>
      <xs:element name="TransportChargesValue" type="n..16.2" minOccurs="0"/>
      <xs:element name="TransportChargesCurrencyCode" type="an..3" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationTransportChargesItemType">
    <xs:sequence>
      <xs:element name="TransportChargesValue" type="n..16.2" minOccurs="0"/>
      <xs:element name="TransportChargesCurrencyCode" type="an..3" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="IMPOSTdeclarationType">
    <xs:sequence>
      <xs:element name="Transaktion" type="IMPOSTdeclarationTransactionType" minOccurs="0"/>
      <xs:element name="DeclarationData" type="IMPOSTdeclarationDataType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="indicator">
    <xs:restriction base="xs:string">
      <xs:maxLength value="1"/>
      <xs:pattern value="[ 0N1JY]"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..16.2">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,14}([.,]\d{0,2}(0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..16.6">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,10}([.,]\d{0,6}(0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..4">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,4}([.,](0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..5">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,5}([.,](0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..8">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,8}([.,](0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n3">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{3}"/>
      <xs:totalDigits value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n4">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{4}"/>
      <xs:totalDigits value="4"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="seq5">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)[1-9]\d{0,4}([.,](0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
