﻿<?xml version="1.0" encoding="UTF-8"?>
<!-- edecTariffMasterData XML Schema -->
<!-- Name of schema: edecTariffMasterDataSchema -->
<!-- Scope of schema: reference data (Stammdaten) for e-dec tariffs-->
<!-- Organization: Swiss Customs Administration -->
<!-- Author: René Rochat, Dr. Stefan Huesemann -->
<!-- Documentation: http://www.e-dec.ch/ -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
	<xs:element name="tariffMasterData">
		<xs:annotation>
			<xs:documentation>Root Element enthält Tarifdaten für e-dec. 

Die Elementnamen entsprechen jenen im XML Schema edec und edecResponse. Die Wertelisten für die Elemente befinden sich in den Attributen. 
Falls die Werte historisiert sind, wird die Zeitspanne angegeben, für die die Werte gelten. Falls Elemente oder deren Unterlemente nur für Import oder Export gelden, ist das mit Hilfe entsprechender Attribute gekennzeichnet.
Bei Texten sind die Werte jeweils auf Deutsch, Französisch und Italienisch aufgeführt.

Das Root Element enthält Angaben zur Schema Version des XML Dokuments sowie zur Versionsnummer und dem Erstellungsdatum der Stammdaten für Tarife.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="additionalTaxes">
					<xs:annotation>
						<xs:documentation>Zusatzabgaben</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="type" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="key" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="value" use="required">
													<xs:simpleType>
														<xs:restriction base="xs:string">
															<xs:length value="3"/>
														</xs:restriction>
													</xs:simpleType>
												</xs:attribute>
												<xs:attribute name="meaningDe" type="xs:string" use="required"/>
												<xs:attribute name="meaningFr" type="xs:string" use="required"/>
												<xs:attribute name="meaningIt" type="xs:string" use="required"/>
												<xs:attribute name="meaningEn" type="xs:string" use="required"/>
												<xs:attribute name="validFrom" type="xs:date" use="required"/>
												<xs:attribute name="validTo" type="xs:date" use="required"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="value" use="required">
										<xs:simpleType>
											<xs:restriction base="xs:integer">
												<xs:maxInclusive value="9999"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="meaningDe" type="xs:string" use="required"/>
									<xs:attribute name="meaningFr" type="xs:string" use="required"/>
									<xs:attribute name="meaningIt" type="xs:string" use="required"/>
									<xs:attribute name="meaningEn" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="validForImport" type="xs:boolean" use="required">
							<xs:annotation>
								<xs:documentation>Definiert ob dieser Eintrag für Import relevant ist (true oder false)</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="validForExport" type="xs:boolean" use="required">
							<xs:annotation>
								<xs:documentation>Definiert ob dieser Eintrag für Export relevant ist (true oder false)</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="fees">
					<xs:annotation>
						<xs:documentation>Gebühren</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="type" maxOccurs="unbounded">
								<xs:complexType>
									<xs:attribute name="value" use="required">
										<xs:simpleType>
											<xs:restriction base="xs:integer">
												<xs:maxInclusive value="9999"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="meaningDe" type="xs:string" use="required"/>
									<xs:attribute name="meaningFr" type="xs:string" use="required"/>
									<xs:attribute name="meaningIt" type="xs:string" use="required"/>
									<xs:attribute name="meaningEn" type="xs:string" use="required"/>
									<xs:attribute name="validFrom" type="xs:date" use="required"/>
									<xs:attribute name="validTo" type="xs:date" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="commodityCodes">
					<xs:annotation>
						<xs:documentation>Tarifnummern</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="commodityCode" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="rate" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>Zollansatz in CHF</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence>
													<xs:element name="text" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="language" type="xs:string" use="required"/>
															<xs:attribute name="value" type="xs:string" use="required"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
												<xs:attribute name="value" type="xs:string" use="required"/>
												<xs:attribute name="customsFavourCode" type="xs:byte" use="required"/>
												<xs:attribute name="type" type="xs:string" use="required"/>
												<xs:attribute name="assessmentCode" type="xs:byte" use="required"/>
												<xs:attribute name="countryGrpNr" type="xs:int" use="optional"/>
												<xs:attribute name="validFrom" type="xs:date" use="required"/>
												<xs:attribute name="validTo" type="xs:date" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="tareSupplement" minOccurs="0" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>Tarazuschlag für Nettoverzollungen (in %)</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="value" type="xs:string" use="required"/>
												<xs:attribute name="validFrom" type="xs:date" use="required"/>
												<xs:attribute name="validTo" type="xs:date" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="VATCode" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>MWST Code, z.B. 7,6% - Normalsatz (1), 2,4% - Reduzierter Satz (2) ...</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="value" type="xs:byte" use="required"/>
												<xs:attribute name="validFrom" type="xs:date" use="required"/>
												<xs:attribute name="validTo" type="xs:date" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="customsFavourHintCode" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation/>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="value" type="xs:byte" use="required"/>
												<xs:attribute name="validFrom" type="xs:date" use="required"/>
												<xs:attribute name="validTo" type="xs:date" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="statisticalCode" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>Schlüssel zur Warennummer; muss zur jeweiligen Tarifnummer in den Stammdaten existieren</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:sequence>
													<xs:element name="quantityCode" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="type" type="xs:byte" use="required"/>
															<xs:attribute name="value" type="xs:byte" use="required"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
													<xs:element name="meanValueLimit" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="lowerValue" type="xs:string" use="required"/>
															<xs:attribute name="upperValue" type="xs:string" use="required"/>
															<xs:attribute name="assessmentCode" type="xs:byte" use="optional"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
													<xs:element name="processingCode" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="value" type="xs:byte" use="required"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
													<xs:element name="permit" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:sequence>
																<xs:element ref="countryGroupAssignment" minOccurs="0" maxOccurs="unbounded"/>
															</xs:sequence>
															<xs:attribute name="permitAuthority" type="xs:byte" use="required"/>
															<xs:attribute name="toleranceCode" type="xs:byte" use="required"/>
															<xs:attribute name="optional" type="xs:boolean" use="required"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
													<xs:element name="nonCustomsLaw" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:sequence>
																<xs:element ref="countryGroupAssignment" minOccurs="0" maxOccurs="unbounded"/>
															</xs:sequence>
															<xs:attribute name="code" type="xs:short" use="required"/>
															<xs:attribute name="optional" type="xs:boolean" use="required"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
													<xs:element name="additionalTaxe" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:sequence>
																<xs:element ref="countryGroupAssignment" minOccurs="0" maxOccurs="unbounded"/>
															</xs:sequence>
															<xs:attribute name="type" type="xs:integer" use="required"/>
															<xs:attribute name="key" type="xs:string" use="required"/>
															<xs:attribute name="assessmentCode" type="xs:byte" use="optional"/>
															<xs:attribute name="optional" type="xs:string" use="required"/>
															<xs:attribute name="validFrom" type="xs:date" use="required"/>
															<xs:attribute name="validTo" type="xs:date" use="required"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
												<xs:attribute name="value" type="xs:short" use="required"/>
												<xs:attribute name="scaleWeightCode" type="xs:byte" use="required"/>
												<xs:attribute name="storageType" type="xs:string" use="required"/>
												<xs:attribute name="validFrom" type="xs:date" use="required"/>
												<xs:attribute name="validTo" type="xs:date" use="required"/>
												<xs:attribute name="lowerScaleWeight" type="xs:string" use="optional"/>
												<xs:attribute name="upperScaleWeight" type="xs:string" use="optional"/>
												<xs:attribute name="validForImport" type="xs:boolean" use="required">
													<xs:annotation>
														<xs:documentation>Definiert ob dieser Eintrag für Import relevant ist (true oder false)</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="validForExport" type="xs:boolean" use="required">
													<xs:annotation>
														<xs:documentation>Definiert ob dieser Eintrag für Export relevant ist (true oder false)</xs:documentation>
													</xs:annotation>
												</xs:attribute>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="value" type="xs:string" use="required"/>
									<xs:attribute name="validFrom" type="xs:date" use="required"/>
									<xs:attribute name="validTo" type="xs:date" use="required"/>
									<xs:attribute name="validForImport" type="xs:boolean" use="required">
										<xs:annotation>
											<xs:documentation>Definiert ob dieser Eintrag für Import relevant ist (true oder false)</xs:documentation>
										</xs:annotation>
									</xs:attribute>
									<xs:attribute name="validForExport" type="xs:boolean" use="required">
										<xs:annotation>
											<xs:documentation>Definiert ob dieser Eintrag für Export relevant ist (true oder false)</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="schemaVersion" use="required">
				<xs:annotation>
					<xs:documentation>Attribut zur Angabe der benutzten Schema Version. Die Liste der möglichen Versionen ist vorgegeben.</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="0.99"/>
						<xs:enumeration value="1.0"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="version" type="xs:integer" use="required">
				<xs:annotation>
					<xs:documentation>Die Versionierung der Stammdaten-XML’s ist eine fortlaufende fünfstellig Nummer</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="created" type="xs:dateTime" use="required">
				<xs:annotation>
					<xs:documentation>Erstellungszeitpunkt der Stammdaten XML-Datei</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="countryGroupAssignment">
		<xs:annotation>
			<xs:documentation>Zuweisung zu einer Ländergruppe</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="grpNr" type="xs:int" use="required">
				<xs:annotation>
					<xs:documentation>Nummer der Ländergruppe (Stammdaten: edecCountryCodes.xml/countryCodes/countryGroups/countryGroup/@grpNr)</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="type" use="required">
				<xs:annotation>
					<xs:documentation>Einschluss / Ausschluss der unter "grpNr" referenzierten Ländergruppe; das Attribut enthält die Werte "include" oder "exclude". "Include" bedeutet, dass das Element für die referenzierte Ländergruppe (Attribut "grpNr") gilt. "Exclude" bedeutet, dass die Länder in dieser Gruppe die entsprechenden statistischen Zusatzinformationen nicht angeben dürfen</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="include"/>
						<xs:enumeration value="exclude"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="validFrom" type="xs:date" use="required"/>
			<xs:attribute name="validTo" type="xs:date" use="required"/>
		</xs:complexType>
	</xs:element>
</xs:schema>