<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ArtikelstammZL" type="ArtikelstammZLARTTyp">
    <xs:annotation>
      <xs:documentation>Version 001 - Release 005</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..11">
    <xs:restriction base="xs:string">
      <xs:maxLength value="11"/>
    </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..240">
    <xs:restriction base="xs:string">
      <xs:maxLength value="240"/>
    </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..300">
    <xs:restriction base="xs:string">
      <xs:maxLength value="300"/>
    </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..7">
    <xs:restriction base="xs:string">
      <xs:maxLength value="7"/>
    </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="ArtikelEinzelArtikelstammZLTyp">
    <xs:sequence>
      <xs:element name="Artikelnummer" type="an..35" minOccurs="0"/>
      <xs:element name="EZTPruefungKz" type="an..1" minOccurs="0"/>
      <xs:element name="MatchcodeArtikel" type="an..20" minOccurs="0"/>
      <xs:element name="Artikelbezeichnung" type="an..240" minOccurs="0"/>
      <xs:element name="ArtikelnummerKunde" type="an..35" minOccurs="0"/>
      <xs:element name="Tarifnummer" type="an..11" minOccurs="0"/>
      <xs:element name="Zusatzcode" type="an..4" minOccurs="0" maxOccurs="10"/>
      <xs:element name="Zusatzcode1" type="an..4" minOccurs="0"/>
      <xs:element name="Zusatzcode2" type="an..4" minOccurs="0"/>
      <xs:element name="Bruttogewicht" type="n..13.7" minOccurs="0"/>
      <xs:element name="Nettogewicht" type="n..13.7" minOccurs="0"/>
      <xs:element name="Mengeneinheit" type="an..4" minOccurs="0"/>
      <xs:element name="MengeneinheitDesUmrechnungsfaktors" type="an..8" minOccurs="0"/>
      <xs:element name="MengeneinheitUmrechnungsfaktor" type="n..12.7" minOccurs="0"/>
      <xs:element name="BesondereMasseinheitAHST" type="an..4" minOccurs="0"/>
      <xs:element name="UmrechnungsfaktorBesondereMengeneinheit" type="n..12.7" minOccurs="0"/>
      <xs:element name="Praeferenzcode" type="an..3" minOccurs="0"/>
      <xs:element name="PraeferenzcodeWA" type="an..3" minOccurs="0"/>
      <xs:element name="Ursprungsland" type="an..2" minOccurs="0"/>
      <xs:element name="Praeferenzursprungsland" type="an..4" minOccurs="0"/>
      <xs:element name="Ursprungsbundesland" type="an..2" minOccurs="0"/>
      <xs:element name="Einkaufsland" type="an..2" minOccurs="0"/>
      <xs:element name="Einstandspreis" type="n..9.2" minOccurs="0"/>
      <xs:element name="Verkaufspreis" type="n..9.2" minOccurs="0"/>
      <xs:element name="Abgabenrisiko" type="n..9.2" minOccurs="0"/>
      <xs:element name="AlternativeTarifnummer" type="an..11" minOccurs="0"/>
      <xs:element name="ZusatzcodeAlternativeTarifnummer" type="an..4" minOccurs="0" maxOccurs="10"/>
      <xs:element name="CodeSensibleWaren" type="an..2" minOccurs="0"/>
      <xs:element name="LiterProFlasche" type="n..4.2" minOccurs="0"/>
      <xs:element name="AlkoholProzent" type="n..4.2" minOccurs="0"/>
      <xs:element name="SchaumBranntweinKz" type="an..1" minOccurs="0"/>
      <xs:element name="Chargenpflichtig" type="n..1" minOccurs="0"/>
      <xs:element name="Produktgruppe" type="an..20" minOccurs="0"/>
      <xs:element name="Accountgruppe" type="an..20" minOccurs="0"/>
      <xs:element name="KzAbgabensteuerung" type="an..2" minOccurs="0"/>
      <xs:element name="KzMassnahmeEndverwendung" type="an..1" minOccurs="0"/>
      <xs:element name="Verbrauchsteuer" type="VerbrauchsteuerEinzelArtikelstammZLTyp" minOccurs="0" maxOccurs="3"/>
      <xs:element name="Tarifcodestamm" type="TarifcodestammEinzelArtikelstammZLTyp" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArtikelstammZLARTTyp">
    <xs:complexContent>
      <xs:extension base="DatenaustauschZLTyp">
        <xs:sequence>
          <xs:element name="EinzelArtikelstammZL" type="EinzelArtikelstammZLTyp" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DatenaustauschZLTyp">
    <xs:sequence>
      <xs:element name="Transaktion" type="TransaktionZLTyp"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EinzelArtikelstammZLTyp">
    <xs:sequence>
      <xs:element name="ObjektIdentifizierung" type="ObjektIdentifizierungZLARTTyp"/>
      <xs:element name="KopfDaten" type="KopfDatenEinzelArtikelstammZLTyp" minOccurs="0"/>
      <xs:element name="Artikel" type="ArtikelEinzelArtikelstammZLTyp" minOccurs="0" maxOccurs="2000"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="KopfDatenEinzelArtikelstammZLTyp">
    <xs:sequence>
      <xs:element name="Firma" type="an..3" minOccurs="0"/>
      <xs:element name="Werk" type="an..4" minOccurs="0"/>
      <xs:element name="Beteiligter" type="an..7" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="n..1">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,1}([.,](0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..12.7">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,5}([.,]\d{0,7}(0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..13.7">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,6}([.,]\d{0,7}(0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..4.2">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,2}([.,]\d{0,2}(0*))?( *)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="n..9.2">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
      <xs:pattern value="( *)(0*)\d{0,7}([.,]\d{0,2}(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:complexType name="ObjektIdentifizierungZLARTTyp">
    <xs:sequence>
      <xs:element name="ObjektName" type="an..35" minOccurs="0"/>
      <xs:element name="ObjektAktion" type="an..10" minOccurs="0" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TarifcodestammEinzelArtikelstammZLTyp">
    <xs:sequence>
      <xs:element name="DatumGueltigkeitsbeginn" type="xs:date" minOccurs="0"/>
      <xs:element name="MatchcodeZolltarifstamm" type="an..20" minOccurs="0"/>
      <xs:element name="Warenbezeichnung" type="an..300" minOccurs="0"/>
      <xs:element name="BesondereMasseinheit" type="an..4" minOccurs="0"/>
      <xs:element name="Verbrauchsteuerpflichtig" type="an..1" minOccurs="0"/>
      <xs:element name="Zusatzverfahren" type="an..2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TransaktionZLTyp">
    <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="VerbrauchsteuerEinzelArtikelstammZLTyp">
    <xs:sequence>
      <xs:element name="Code" type="an..4" minOccurs="0"/>
      <xs:element name="Mengeneinheit" type="an..4" minOccurs="0"/>
      <xs:element name="Umrechnungsfaktor" type="n..12.7" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
