<?xml version="1.0" encoding="ISO-8859-15"?>
<!-- Copyright (c) 2008 HPA (http://www.hafen-hamburg.de) -->
<!-- XSD-Version 3.0 / 06-Nov-2008 -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xsd:include schemaLocation="MessageEnvelope.xsd"/>
	<xsd:include schemaLocation="TD04_core_Subj.xsd"/>
	<xsd:element name="Document">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="Metainfo" type="MetaInfoDef">
					<xsd:annotation>
						<xsd:documentation>In the TD04 interface only one recipient is used, i.e. only 2 or 3 participants can be specified for a transmission.</xsd:documentation>
						<xsd:documentation>The attribute Alias="DAK" is mandatory.</xsd:documentation>
						<xsd:documentation xml:lang="DE">In TD04 wird nur 1 Empfänger benutzt, d.h. es sind immer 2 oder 3 Beteiligte (participants) angegeben für eine Übertragung.</xsd:documentation>
						<xsd:documentation xml:lang="DE">In TD04 ist das Attribut Alias="DAK" Pflicht.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="Messages">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Message" type="MessageDef" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="MessageDef">
		<xsd:annotation>
			<xsd:documentation>General Message definition</xsd:documentation>
			<xsd:documentation>Describes the contents of a message (metainfo and data)</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="MessageMetaInfo" type="MessageMetaInfoDef" minOccurs="0"/>
			<xsd:element name="WagonSequence" type="WagonSequenceDef"/>
		</xsd:sequence>
		<xsd:attribute name="ReferenceNumber" use="required">
			<xsd:annotation>
				<xsd:documentation xml:lang="EN">uniqe reference number identifying a single message</xsd:documentation>
				<xsd:documentation xml:lang="DE">Nachrichten-Referenz</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:minLength value="1"/>
					<xsd:maxLength value="35"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="Status" type="xsd:string" use="optional">
			<xsd:annotation>
				<xsd:documentation xml:lang="EN">not used for TD04</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="WagonSequenceDef">
		<xsd:sequence>
			<xsd:element name="BusinessDocumentDetail" type="BusinessDocumentDef"/>
			<xsd:element name="Direction">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>Direction of the transport: I for Inbound (Incoming Train) and O for Outbound (outgoing train)</xsd:documentation>
						<xsd:documentation xml:lang="DE">Transportrichtung: I für Bahnempfang und O für Bahnversand</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="I"/>
						<xsd:enumeration value="O"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="TrainTime">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>planned departure time</xsd:documentation>
						<xsd:documentation xml:lang="DE">geplante Abfahrzeit</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:time"/>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="TimeDivergence" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>difference in minutes to planned departure time</xsd:documentation>
						<xsd:documentation xml:lang="DE">Relativlage: Abweichung von geplanter Abfahrzeit in Minuten</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-9999"/>
						<xsd:maxInclusive value="+9999"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="DepartureDate" type="xsd:date" minOccurs="0"/>
			<xsd:element name="DepartureTime" type="xsd:time" minOccurs="0"/>
			<xsd:element name="ArrivalDate" type="xsd:date" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>planned arrival</xsd:documentation>
					<xsd:documentation xml:lang="DE">geplantes Ankunftsdatum</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ArrivalTime" type="xsd:time" minOccurs="0"/>
			<xsd:element name="CurrentStation" type="RailStationDef"/>
			<xsd:element name="DepartureStation" type="RailStationDef"/>
			<xsd:element name="ArrivalStation" type="RailStationDef"/>
			<xsd:element name="TrainCategory" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation xml:lang="DE">Zuggattungsnummer</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:string">
						<xsd:length value="3"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="BrakeType" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>C = Cargo Train, P = Passenger Train, U = Unknown</xsd:documentation>
						<xsd:documentation xml:lang="DE">Bremsart: C = Güterzug, P = Personenzug, U = unbekannt</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="C"/>
						<xsd:enumeration value="P"/>
						<xsd:enumeration value="U"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="GrossLoadWeight" type="WeightDef" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>total weight of load including loading facilities</xsd:documentation>
					<xsd:documentation xml:lang="DE">Gesamtgewicht der Ladung inklusive Lademittel</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="GrossBrakingPower" type="WeightDef" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation xml:lang="DE">Wagenzugbremsgewicht</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="GrossTrailingLoad" type="WeightDef" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation xml:lang="DE">Wagenzuggewicht</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="AxlesEmpty" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>total number of axles of empty wagons</xsd:documentation>
						<xsd:documentation xml:lang="DE">Anzahl Achsen Leerwagen</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:integer"/>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="AxlesLoaded" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>total number of axles of wagons carrying load</xsd:documentation>
						<xsd:documentation xml:lang="DE">Anzahl Achsen beladene Wagen</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:integer"/>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="GrossWagonLength" type="LengthDef" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation xml:lang="DE">Wagenzuglänge</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Vehicle" maxOccurs="99">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Position">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>Sequence number of the wagon.</xsd:documentation>
									<xsd:documentation xml:lang="DE">Position des Wagens in der Reihung.</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:positiveInteger">
									<xsd:maxInclusive value="99"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="VehicleType">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>L=locomtive, W=wagon</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="L"/>
									<xsd:enumeration value="W"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="WagonNumber" type="WagonNumberDef" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>mandatory when VehicleType = W</xsd:documentation>
								<xsd:documentation xml:lang="DE">Pflicht bei VehicleType = W</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="EmptyFull" type="EmptyFullDef" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>mandatory when VehicleType = W</xsd:documentation>
								<xsd:documentation xml:lang="DE">Pflicht bei VehicleType = W</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="DestinationStation" type="RailStationDef" minOccurs="0"/>
						<xsd:element name="ModeOfTransport" minOccurs="0">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>according to HABIS code list A20</xsd:documentation>
									<xsd:documentation xml:lang="DE">Beförderungsart lt. HABIS-Schlüsselverzeichnis A20</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:string">
									<xsd:length value="1"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="OverloadLicenceNumber" minOccurs="0">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>licence number for the transport of heavy-weight load or goods exceeding the loading gauge</xsd:documentation>
									<xsd:documentation xml:lang="DE">Genehmigungsnummer für Schwerwagen bzw. Lademaß-Überschreitung</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:string">
									<xsd:maxLength value="6"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="ForwardingRestrictionCode" minOccurs="0" maxOccurs="unbounded">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>according to HABIS code list ???</xsd:documentation>
									<xsd:documentation>HABIS is limited to a number of 10 different codes</xsd:documentation>
									<xsd:documentation xml:lang="DE">Sonderbehandlungscodes lt. HABIS-Stammdatei ???</xsd:documentation>
									<xsd:documentation xml:lang="DE">in HABIS ist die Anzahl der Sonderbehandlungscodes auf 10 begrenzt</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:string">
									<xsd:maxLength value="2"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="Remarks" minOccurs="0">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>HABIS uses only 50 characters</xsd:documentation>
									<xsd:documentation xml:lang="DE">in HABIS ist die Bemerkung auf 50 Zeichen begrenzt</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:string">
									<xsd:maxLength value="140"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="WagonWeight" type="WeightDef" minOccurs="0"/>
						<xsd:element name="BrakingPower" type="WeightDef" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation xml:lang="DE">Bremsgewicht</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="BrakeConditionCode" minOccurs="0">
							<xsd:simpleType>
								<xsd:annotation>
									<xsd:documentation>not used in HABIS</xsd:documentation>
									<xsd:documentation xml:lang="DE">Bremszustand, codiert</xsd:documentation>
									<xsd:documentation xml:lang="DE">z.Zt. in HABIS nicht benutzt</xsd:documentation>
								</xsd:annotation>
								<xsd:restriction base="xsd:string">
									<xsd:length value="1"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:element>
						<xsd:element name="LoadWeight" type="WeightDef" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>weight of wagon load including loading facilities</xsd:documentation>
								<xsd:documentation xml:lang="DE">Gewicht der Ladung inklusive Lademittel</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="DangerousGoodsIndication" type="DanGoodsType" minOccurs="0" maxOccurs="99">
							<xsd:annotation>
								<xsd:documentation>HABIS is limited to a number of 4 UN-numbers</xsd:documentation>
								<xsd:documentation xml:lang="DE">HABIS ist begrenzt auf 4 UN-Nummern</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="ShippingUnitData" minOccurs="0" maxOccurs="9">
							<xsd:complexType>
								<xsd:annotation>
									<xsd:documentation>at least one unit has to be specified if the wagon is loaded (EmptyFull=F)</xsd:documentation>
									<xsd:documentation xml:lang="DE">mindestens eine LE muss angegeben sein bei beladenem Waggon</xsd:documentation>
								</xsd:annotation>
								<xsd:sequence>
									<xsd:element name="SequenceNumber">
										<xsd:simpleType>
											<xsd:restriction base="xsd:positiveInteger">
												<xsd:maxInclusive value="9"/>
											</xsd:restriction>
										</xsd:simpleType>
									</xsd:element>
									<xsd:element name="UnitID">
										<xsd:simpleType>
											<xsd:annotation>
												<xsd:documentation>for wagonload traffic the UnitID is the WagonNumber</xsd:documentation>
												<xsd:documentation>e.g. container number: byte 1 -  4 prefix, byte 5 - 12 number</xsd:documentation>
												<xsd:documentation xml:lang="DE">im WLV ist als UnitID die Wagennummer anzugeben</xsd:documentation>
											</xsd:annotation>
											<xsd:restriction base="xsd:string">
												<xsd:minLength value="1"/>
												<xsd:maxLength value="12"/>
											</xsd:restriction>
										</xsd:simpleType>
									</xsd:element>
									<xsd:element name="OrderReference" type="ReferenceDef" minOccurs="0" maxOccurs="3">
										<xsd:annotation>
											<xsd:documentation>the position of an order may be specified using type = TONR and/or CTOREF plus UNITNR</xsd:documentation>
											<xsd:documentation xml:lang="DE">eine Auftragsposition kann angegeben werden mittels TONR und/oder CTOREF plus UNITNR</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<!-- ......................... -->
	<xsd:complexType name="DanGoodsType">
		<xsd:sequence>
			<xsd:element name="SequenceNumber">
				<xsd:simpleType>
					<xsd:restriction base="xsd:positiveInteger">
						<xsd:maxInclusive value="99"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="UNNumber">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:length value="4"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="Class">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="4"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="PackingGroup" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>values I, II or III - corresponding to the dangerous goods class</xsd:documentation>
						<xsd:documentation xml:lang="DE">I, II oder III - entsprechend der Gefahrklasse</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:string">
						<xsd:minLength value="1"/>
						<xsd:maxLength value="3"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="HazardID" minOccurs="0">
				<xsd:simpleType>
					<xsd:annotation>
						<xsd:documentation>Hazard Identification: number shown on the orange-coloured plate</xsd:documentation>
						<xsd:documentation xml:lang="DE">Nummer zur Kennzeichnung der Gefahr (Kemler)</xsd:documentation>
					</xsd:annotation>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="4"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="ClassificationCode" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
