<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="SwissGoodsDeclarationResponse" type="SwissGoodsDeclarationResponseCHZRSPTyp">
    <xs:annotation>
      <xs:documentation>Version 004 - Release 001</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AdditionalTaxDetailSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="type" type="an..4" minOccurs="0"/>
      <xs:element name="amount" type="n12.2" minOccurs="0"/>
      <xs:element name="key" type="an..3" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AdditionalTaxSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="type" type="an..4" minOccurs="0"/>
      <xs:element name="amount" type="n12.2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <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..150">
    <xs:restriction base="xs:string">
      <xs:maxLength value="150"/>
    </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..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..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..350">
    <xs:restriction base="xs:string">
      <xs:maxLength value="350"/>
    </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..50">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..500">
    <xs:restriction base="xs:string">
      <xs:maxLength value="500"/>
    </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="DatenaustauschSCHWEIZTyp">
    <xs:sequence>
      <xs:element name="Transaktion" type="TransaktionSCHWEIZTyp" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EinzelSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="ObjektIdentifizierung" type="ObjektidentifizierungCHZRSPTyp" minOccurs="0"/>
      <xs:element name="Header" type="KopfSwissGoodsDeclarationResponseTyp" minOccurs="0"/>
      <xs:element name="Item" type="ItemSwissGoodsDeclarationResponseTyp" minOccurs="0" maxOccurs="99999"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="FeeDetailSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="type" type="an..4" minOccurs="0"/>
      <xs:element name="amount" type="n12.2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="FeeSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="type" type="an..4" minOccurs="0"/>
      <xs:element name="amount" type="n12.2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ItemSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="ItemNumber" type="n5" minOccurs="0"/>
      <xs:element name="selectionResult" type="n1" minOccurs="0"/>
      <xs:element name="valuationRate" type="n9.2" minOccurs="0"/>
      <xs:element name="additionalTaxDetail" type="AdditionalTaxDetailSwissGoodsDeclarationResponseTyp" minOccurs="0" maxOccurs="99"/>
      <xs:element name="feeDetail" type="FeeDetailSwissGoodsDeclarationResponseTyp" minOccurs="0" maxOccurs="99"/>
      <xs:element name="ApplicationInternalData" type="ApplicationInternalDataType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="KopfSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="ruleError" type="RuleErrorSwissGoodsDeclarationResponseTyp" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Date" type="xs:date" minOccurs="0"/>
      <xs:element name="Time" type="xs:time" minOccurs="0"/>
      <xs:element name="status" type="n3" minOccurs="0"/>
      <xs:element name="Security" type="an..1" minOccurs="0"/>
      <xs:element name="specificCircumstanceIndicator" type="an..1" minOccurs="0"/>
      <xs:element name="uniqueConsignmentReferenceNumber" type="an..70" minOccurs="0"/>
      <xs:element name="materialCheck" type="n1" minOccurs="0"/>
      <xs:element name="release" type="n1" minOccurs="0"/>
      <xs:element name="traderNumber" type="an..17" minOccurs="0"/>
      <xs:element name="declarantNumber" type="n6" minOccurs="0"/>
      <xs:element name="requestorTraderIdentificationNumber" type="an..17" minOccurs="0"/>
      <xs:element name="traderReference" type="an..35" minOccurs="0"/>
      <xs:element name="customsDeclarationNumber" type="an..21" minOccurs="0"/>
      <xs:element name="customsDeclarationVersion" type="n2" minOccurs="0"/>
      <xs:element name="customsOfficeNumber" type="an..8" minOccurs="0"/>
      <xs:element name="provisionalDeclarationExpirationDate" type="xs:date" minOccurs="0"/>
      <xs:element name="initiator" type="n1" minOccurs="0"/>
      <xs:element name="correctionCode" type="n1" minOccurs="0"/>
      <xs:element name="duty" type="n12.2" minOccurs="0"/>
      <xs:element name="VAT" type="n12.2" minOccurs="0"/>
      <xs:element name="additionalTax" type="AdditionalTaxSwissGoodsDeclarationResponseTyp" minOccurs="0" maxOccurs="99"/>
      <xs:element name="fee" type="FeeSwissGoodsDeclarationResponseTyp" minOccurs="0" maxOccurs="99"/>
      <xs:element name="accessCode" type="an..20" minOccurs="0"/>
      <xs:element name="transferToTransitSystem" type="an..1" minOccurs="0"/>
      <xs:element name="ApplicationInternalData" type="ApplicationInternalDataType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="n1">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{1}"/>
      <xs:totalDigits value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n12.2">
    <xs:restriction base="xs:decimal">
      <xs:pattern value="\d{10}\.\d{2}"/>
      <xs:maxInclusive value="9999999999.99"/>
      <xs:minInclusive value="0"/>
      <xs:totalDigits value="12"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n2">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{2}"/>
      <xs:totalDigits value="2"/>
    </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="n5">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{5}"/>
      <xs:totalDigits value="5"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n6">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{6}"/>
      <xs:totalDigits value="6"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n9.2">
    <xs:restriction base="xs:decimal">
      <xs:pattern value="\d{7}\.\d{2}"/>
      <xs:maxInclusive value="9999999.99"/>
      <xs:minInclusive value="0"/>
      <xs:totalDigits value="9"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ObjektidentifizierungCHZRSPTyp">
    <xs:sequence>
      <xs:element name="ObjektName" type="an..35" minOccurs="0"/>
      <xs:element name="ArtDerAnmeldung" type="an..10" minOccurs="0"/>
      <xs:element name="ArtDerMeldung" type="an..10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="RuleErrorSwissGoodsDeclarationResponseTyp">
    <xs:sequence>
      <xs:element name="ruleName" type="an..50" minOccurs="0"/>
      <xs:element name="errorCode" type="an..21" minOccurs="0"/>
      <xs:element name="checkType" type="an..150" minOccurs="0"/>
      <xs:element name="reference" type="an..50" minOccurs="0"/>
      <xs:element name="description" type="an..500" minOccurs="0" maxOccurs="3"/>
      <xs:element name="referencedElement" type="an..350" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SwissGoodsDeclarationResponseCHZRSPTyp">
    <xs:complexContent>
      <xs:extension base="DatenaustauschSCHWEIZTyp">
        <xs:sequence>
          <xs:element name="EinzelResponse" type="EinzelSwissGoodsDeclarationResponseTyp" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TransaktionSCHWEIZTyp">
    <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:schema>
