<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="SwissBordereau" type="SwissBordereauCHBDATyp">
    <xs:annotation>
      <xs:documentation>Version 002 - Release 002</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="AccountSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="accountNumber" type="n8" minOccurs="0"/>
      <xs:element name="accountName" type="an..50" 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..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..280">
    <xs:restriction base="xs:string">
      <xs:maxLength value="280"/>
    </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..30">
    <xs:restriction base="xs:string">
      <xs:maxLength value="30"/>
    </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..50">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </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:simpleType name="an..9">
    <xs:restriction base="xs:string">
      <xs:maxLength value="9"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ConsigneeSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="name" type="an..100" minOccurs="0"/>
      <xs:element name="addressLine1" type="an..100" minOccurs="0"/>
      <xs:element name="addressLine2" type="an..100" minOccurs="0"/>
      <xs:element name="addressLine3" type="an..100" minOccurs="0"/>
      <xs:element name="addressLine4" type="an..100" minOccurs="0"/>
      <xs:element name="addressLine5" type="an..100" 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="DocumentsPercustomsOfficeSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="customsOfficeName" type="an..35" minOccurs="0"/>
      <xs:element name="customsOfficeNumber" type="an..8" minOccurs="0"/>
      <xs:element name="document" type="DocumentSwissBordereauTyp" minOccurs="0" maxOccurs="9999"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DocumentSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="documentTypeAbbreviation" type="an..3" minOccurs="0"/>
      <xs:element name="documentTypeName" type="an..70" minOccurs="0"/>
      <xs:element name="traderReference" type="an..35" minOccurs="0"/>
      <xs:element name="customsReference" type="an..21" minOccurs="0"/>
      <xs:element name="amount" type="signo12.2" minOccurs="0"/>
      <xs:element name="printed" type="an..1" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DutyAndAdditionalTaxesSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="numberOfDocuments" type="n..10" minOccurs="0"/>
      <xs:element name="amount" type="signo12.2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EinzelSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="ObjektIdentifizierung" type="ObjektidentifizierungCHBDATyp" minOccurs="0"/>
      <xs:element name="Header" type="KopfSwissBordereauTyp" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="KopfSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="processingCenter" type="ProcessingCenterSwissBordereauTyp" minOccurs="0"/>
      <xs:element name="consignee" type="ConsigneeSwissBordereauTyp" minOccurs="0"/>
      <xs:element name="account" type="AccountSwissBordereauTyp" minOccurs="0"/>
      <xs:element name="dutyAndAdditionalTaxes" type="DutyAndAdditionalTaxesSwissBordereauTyp" minOccurs="0"/>
      <xs:element name="VAT" type="VATSwissBordereauTyp" minOccurs="0"/>
      <xs:element name="totals" type="TotalsSwissBordereauTyp" minOccurs="0"/>
      <xs:element name="comment" type="an..280" minOccurs="0"/>
      <xs:element name="documentsPercustomsOffice" type="DocumentsPercustomsOfficeSwissBordereauTyp" minOccurs="0" maxOccurs="999"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="n..10">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,10}([.,](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="n8">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{8}"/>
      <xs:totalDigits value="8"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ObjektidentifizierungCHBDATyp">
    <xs:sequence>
      <xs:element name="ObjektName" type="an..35" minOccurs="0"/>
      <xs:element name="documentNumber" type="an..30" minOccurs="0"/>
      <xs:element name="documentDate" type="xs:dateTime" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ProcessingCenterSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="name" type="an..35" minOccurs="0"/>
      <xs:element name="street" type="an..35" minOccurs="0"/>
      <xs:element name="postalCode" type="an..9" minOccurs="0"/>
      <xs:element name="city" type="an..35" minOccurs="0"/>
      <xs:element name="country" type="an..2" minOccurs="0"/>
      <xs:element name="phoneNumber" type="an..35" minOccurs="0"/>
      <xs:element name="customsOfficePostalAbbreviation" type="an..20" minOccurs="0"/>
      <xs:element name="processingCenterNumber" type="an..10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="signo12.2">
    <xs:restriction base="xs:decimal">
      <xs:pattern value="[+-]?\d{10}\.\d{2}"/>
      <xs:maxInclusive value="+9999999999.99"/>
      <xs:minInclusive value="-9999999999.99"/>
      <xs:totalDigits value="12"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SwissBordereauCHBDATyp">
    <xs:complexContent>
      <xs:extension base="DatenaustauschSCHWEIZTyp">
        <xs:sequence>
          <xs:element name="EinzelBordereau" type="EinzelSwissBordereauTyp" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TotalsSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="numberOfDocuments" type="n..10" minOccurs="0"/>
      <xs:element name="amount" type="signo12.2" minOccurs="0"/>
    </xs:sequence>
  </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:complexType name="VATSwissBordereauTyp">
    <xs:sequence>
      <xs:element name="numberOfDocuments" type="n..10" minOccurs="0"/>
      <xs:element name="amount" type="signo12.2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
