From fc10707de6ffaf35c0a2fa83e20323ef00aba42e Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 17 Apr 2020 14:11:27 +0200
Subject: [PATCH] update CIF and MRF xsd to match new draft of technical annex

---
 .../Resources/XSD/VectoOutputCustomer.0.8.xsd | 439 ++++++++++++++++--
 .../XSD/VectoOutputManufacturer.0.8.xsd       | 370 ++++++++++-----
 2 files changed, 629 insertions(+), 180 deletions(-)

diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd
index 913fd65484..2910ced337 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd
@@ -4,6 +4,7 @@
 <xs:schema xmlns="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.8" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.8" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/>
+	<xs:complexType name="AbstractVehicleType" abstract="true"/>
 	<xs:complexType name="ADASType">
 		<xs:sequence>
 			<xs:element name="EngineStopStart" type="xs:boolean">
@@ -35,6 +36,103 @@
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
+	<xs:complexType name="ExemptedVehicleType">
+		<xs:complexContent>
+			<xs:extension base="AbstractVehicleType">
+				<xs:sequence>
+					<xs:element name="Model" type="vdecdef:ModelType">
+						<xs:annotation>
+							<xs:documentation>P236 / II.1.1.7</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
+						<xs:annotation>
+							<xs:documentation>P235 / II.1.1.6</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
+						<xs:annotation>
+							<xs:documentation>P252 / II.1.1.6</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="VIN" type="vdecdef:VINType">
+						<xs:annotation>
+							<xs:documentation>P238 / II.1.1.1</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="LegislativeClass" type="vdecdef:LegislativeClassDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P251 / II.1.1.2</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="GrossVehicleMass">
+						<xs:annotation>
+							<xs:documentation>P041 / II.1.1.4</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="CurbMassChassis">
+						<xs:annotation>
+							<xs:documentation>P038 / II.1.1.8</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="vdecdef:VehicleCurbMassChassisType">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="ZeroEmissionVehicle" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P269 / II.1.1.10</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="HybridElectricHDV" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P279 / II.1.1.11</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="DualFuelVehicle" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P280 / II.1.1.12</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="MaxNetPower1" minOccurs="0">
+						<xs:annotation>
+							<xs:documentation>P277</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="PowerUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="MaxNetPower2" minOccurs="0">
+						<xs:annotation>
+							<xs:documentation>P278</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="PowerUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:complexType name="FuelConsumptionType">
 		<xs:simpleContent>
 			<xs:extension base="xs:double">
@@ -42,28 +140,38 @@
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
-	<xs:complexType name="ResultType">
-		<xs:sequence>
-			<xs:element name="Mission" type="MissionTypeType"/>
-			<xs:element name="Payload">
-				<xs:complexType>
-					<xs:simpleContent>
-						<xs:extension base="xs:double">
-							<xs:attribute name="unit" type="MassUnitType" use="required"/>
-						</xs:extension>
-					</xs:simpleContent>
-				</xs:complexType>
-			</xs:element>
-			<xs:element name="FuelMode">
-				<xs:simpleType>
-					<xs:restriction base="xs:string">
-						<xs:enumeration value="dual fuel mode"/>
-						<xs:enumeration value="single fuel mode"/>
-					</xs:restriction>
-				</xs:simpleType>
-			</xs:element>
-			<xs:choice>
+	<xs:complexType name="ResultSuccessType">
+		<xs:complexContent>
+			<xs:extension base="AbstractResultType">
 				<xs:sequence>
+					<xs:element name="Mission" type="MissionTypeType"/>
+					<xs:element name="TotalVehicleMass">
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="Payload">
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="PassengerCount" type="xs:double" minOccurs="0"/>
+					<xs:element name="FuelMode">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="dual fuel mode"/>
+								<xs:enumeration value="single fuel mode"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
 					<xs:element name="AverageSpeed">
 						<xs:complexType>
 							<xs:simpleContent>
@@ -83,17 +191,67 @@
 					</xs:element>
 					<xs:element name="CO2" type="CO2Type" maxOccurs="unbounded"/>
 				</xs:sequence>
-				<xs:element name="Error" type="xs:string"/>
-			</xs:choice>
-		</xs:sequence>
-		<xs:attribute name="status" use="required">
-			<xs:simpleType>
-				<xs:restriction base="xs:string">
-					<xs:enumeration value="success"/>
-					<xs:enumeration value="error"/>
-				</xs:restriction>
-			</xs:simpleType>
-		</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="ResultErrorType">
+		<xs:complexContent>
+			<xs:extension base="AbstractResultType">
+				<xs:sequence>
+					<xs:element name="Mission" type="MissionTypeType"/>
+					<xs:element name="Payload">
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="PassengerCount" type="xs:double" minOccurs="0"/>
+					<xs:element name="TotalVehicleMass">
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="FuelMode">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="dual fuel mode"/>
+								<xs:enumeration value="single fuel mode"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:choice>
+						<xs:sequence>
+							<xs:element name="AverageSpeed">
+								<xs:complexType>
+									<xs:simpleContent>
+										<xs:extension base="xs:double">
+											<xs:attribute name="unit" type="SpeedUnitType" use="required"/>
+										</xs:extension>
+									</xs:simpleContent>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="Fuel" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded"/>
+									</xs:sequence>
+									<xs:attribute name="type" type="xs:string" use="required"/>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="CO2" type="CO2Type" maxOccurs="unbounded"/>
+						</xs:sequence>
+						<xs:element name="Error" type="xs:string"/>
+					</xs:choice>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
 	</xs:complexType>
 	<xs:complexType name="VectoOutputDataType">
 		<xs:complexContent>
@@ -118,7 +276,7 @@
 								</xs:element>
 								<xs:choice>
 									<xs:sequence>
-										<xs:element name="Result" type="ResultType" maxOccurs="unbounded">
+										<xs:element name="Result" type="AbstractResultType" maxOccurs="unbounded">
 											<xs:annotation>
 												<xs:documentation>II.2.1, II.2.2</xs:documentation>
 											</xs:annotation>
@@ -162,6 +320,7 @@
 															</xs:simpleContent>
 														</xs:complexType>
 													</xs:element>
+													<xs:element name="AveragePassengerCount" type="xs:double"/>
 												</xs:sequence>
 											</xs:complexType>
 										</xs:element>
@@ -377,7 +536,7 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="ExemptedVehicleType">
+	<xs:complexType name="VehicleCompletedBusType">
 		<xs:complexContent>
 			<xs:extension base="AbstractVehicleType">
 				<xs:sequence>
@@ -386,27 +545,73 @@
 							<xs:documentation>P236 / II.1.1.7</xs:documentation>
 						</xs:annotation>
 					</xs:element>
-					<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
-						<xs:annotation>
-							<xs:documentation>P235 / II.1.1.6</xs:documentation>
-						</xs:annotation>
+					<xs:element name="PrimaryVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
+									<xs:annotation>
+										<xs:documentation>P235 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
+									<xs:annotation>
+										<xs:documentation>P252 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+							</xs:sequence>
+						</xs:complexType>
 					</xs:element>
-					<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
-						<xs:annotation>
-							<xs:documentation>P252 / II.1.1.6</xs:documentation>
-						</xs:annotation>
+					<xs:element name="CompletedVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
+									<xs:annotation>
+										<xs:documentation>P235 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
+									<xs:annotation>
+										<xs:documentation>P252 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+							</xs:sequence>
+						</xs:complexType>
 					</xs:element>
 					<xs:element name="VIN" type="vdecdef:VINType">
 						<xs:annotation>
 							<xs:documentation>P238 / II.1.1.1</xs:documentation>
 						</xs:annotation>
 					</xs:element>
-					<xs:element name="LegislativeClass" type="vdecdef:LegislativeClassDeclarationType">
+					<xs:element name="VehicleCategory">
 						<xs:annotation>
 							<xs:documentation>P251 / II.1.1.2</xs:documentation>
 						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
 					</xs:element>
-					<xs:element name="GrossVehicleMass">
+					<xs:element name="VehicleGroup" type="VehicleGroupType">
+						<xs:annotation>
+							<xs:documentation>VECTO / II.1.1.5</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="RegisteredClass">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleCode">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="TechnicalPermissibleMaximumLadenMass">
 						<xs:annotation>
 							<xs:documentation>P041 / II.1.1.4</xs:documentation>
 						</xs:annotation>
@@ -445,26 +650,149 @@
 							<xs:documentation>P280 / II.1.1.12</xs:documentation>
 						</xs:annotation>
 					</xs:element>
-					<xs:element name="MaxNetPower1" minOccurs="0">
+					<xs:element name="AxleConfiguration" type="xs:string">
 						<xs:annotation>
-							<xs:documentation>P277</xs:documentation>
+							<xs:documentation>P037 / II.1.1.3</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="VocationalVehicle" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P270 / II.1.1.9</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="SleeperCab" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P267 / II.1.1.13</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="RegisteredPassengers">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="LowerDeck">
+									<xs:simpleType>
+										<xs:restriction base="xs:int">
+											<xs:minInclusive value="0"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="UpperDeck">
+									<xs:simpleType>
+										<xs:restriction base="xs:int">
+											<xs:minInclusive value="0"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="LowEntry" type="xs:boolean"/>
+					<xs:element name="HeightIntegratedBody">
+						<xs:simpleType>
+							<xs:restriction base="vdecdef:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleLength">
+						<xs:simpleType>
+							<xs:restriction base="vdecdef:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleWidth">
+						<xs:simpleType>
+							<xs:restriction base="vdecdef:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="ADAS" type="ADASType"/>
+					<xs:element name="EngineRatedPower">
+						<xs:annotation>
+							<xs:documentation>P250 / II.1.2.1</xs:documentation>
 						</xs:annotation>
 						<xs:complexType>
 							<xs:simpleContent>
-								<xs:extension base="xs:double">
+								<xs:extension base="vdecdef:EngineRatedPower">
 									<xs:attribute name="unit" type="PowerUnitType" use="required"/>
 								</xs:extension>
 							</xs:simpleContent>
 						</xs:complexType>
 					</xs:element>
-					<xs:element name="MaxNetPower2" minOccurs="0">
+					<xs:element name="EngineDisplacement">
 						<xs:annotation>
-							<xs:documentation>P278</xs:documentation>
+							<xs:documentation>P061 / II.1.2.2</xs:documentation>
 						</xs:annotation>
 						<xs:complexType>
 							<xs:simpleContent>
 								<xs:extension base="xs:double">
-									<xs:attribute name="unit" type="PowerUnitType" use="required"/>
+									<xs:attribute name="unit" type="DisplacementType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="FuelTypes">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="FuelType" type="vdecdef:FuelTypeType">
+									<xs:annotation>
+										<xs:documentation>P193 / II.1.2.3</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="TransmissionMainCertificationMethod" type="vdecdef:GearboxCertificationOptionType">
+						<xs:annotation>
+							<xs:documentation>P154 / II.1.2.4</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType">
+						<xs:annotation>
+							<xs:documentation>P076 / II.1.2.5</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="GearsCount">
+						<xs:annotation>
+							<xs:documentation>P199 / II.1.2.6</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:int">
+								<xs:minInclusive value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="Retarder" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P052 / II.1.2.7</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AxleRatio" type="vdecdef:AxlegearRatioType">
+						<xs:annotation>
+							<xs:documentation>P150 / II.1.2.8</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AverageRRCMotorVehicleTyres" type="vdecdef:TyreRRCISOType">
+						<xs:annotation>
+							<xs:documentation>P046 / II.1.2.9  // arithmetic average of RRC over all truck tires</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="FuelEfficiencyLabelMotorVehicleTyre" maxOccurs="4">
+						<xs:annotation>
+							<xs:documentation>II.1.2.10  // classification of AverageRRCMotorVehicleTyres according to 1222/2009 C3 tyres </xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:string">
+									<xs:attribute name="axleNbr" use="required">
+										<xs:simpleType>
+											<xs:restriction base="xs:int">
+												<xs:minInclusive value="1"/>
+												<xs:maxInclusive value="4"/>
+											</xs:restriction>
+										</xs:simpleType>
+									</xs:attribute>
 								</xs:extension>
 							</xs:simpleContent>
 						</xs:complexType>
@@ -543,5 +871,14 @@
 			<xs:minLength value="1"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:complexType name="AbstractVehicleType" abstract="true"/>
+	<xs:complexType name="AbstractResultType" abstract="true">
+		<xs:attribute name="status" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="success"/>
+					<xs:enumeration value="error"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
index b8cb60dccb..d88e5ab09b 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
@@ -9,6 +9,16 @@
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/>
 	<xs:complexType name="AbstractComponentsType" abstract="true"/>
+	<xs:complexType name="AbstractResultType" abstract="true">
+		<xs:attribute name="status" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="success"/>
+					<xs:enumeration value="error"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
 	<xs:complexType name="AbstractVehicleType" abstract="true"/>
 	<xs:complexType name="ADASType">
 		<xs:sequence>
@@ -209,6 +219,16 @@
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
+	<xs:complexType name="CompletedVehiclePrimaryVehicleInformationType">
+		<xs:sequence>
+			<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
+			<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
+			<xs:element name="AxleConfiguration" type="xs:string"/>
+			<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+			<xs:element name="ManufacturerRecordSignature" type="vdecdef:SignatureType"/>
+			<xs:element name="VehicleInformationSignature" type="vdecdef:SignatureType"/>
+		</xs:sequence>
+	</xs:complexType>
 	<xs:complexType name="ComponentDescriptionType">
 		<xs:sequence>
 			<xs:element name="Model" type="vdecdef:ModelType"/>
@@ -216,6 +236,16 @@
 			<xs:element name="DigestValue" type="xs:token"/>
 		</xs:sequence>
 	</xs:complexType>
+	<xs:complexType name="ComponentsCompletedBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractComponentsType">
+				<xs:sequence>
+					<xs:element name="AirDrag" type="AirdragType"/>
+					<xs:element name="Auxiliaries" type="v2.6:AbstractCompletedVehicleAuxiliaryDataDeclarationType"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:complexType name="ComponentsPrimaryBusType">
 		<xs:complexContent>
 			<xs:extension base="AbstractComponentsType">
@@ -232,16 +262,15 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="ComponentsTruckType">
+	<xs:complexType name="ComponentsTruckFWDType">
 		<xs:complexContent>
 			<xs:extension base="AbstractComponentsType">
 				<xs:sequence>
 					<xs:element name="Engine" type="EngineType"/>
-					<xs:element name="Gearbox" type="GearboxType"/>
+					<xs:element name="Gearbox" type="GearboxFWDType"/>
 					<xs:element name="TorqueConverter" type="TorqueconverterType" minOccurs="0"/>
 					<xs:element name="Retarder" type="RetarderType"/>
 					<xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/>
-					<xs:element name="Axlegear" type="AxlegearType"/>
 					<xs:element name="AirDrag" type="AirdragType"/>
 					<xs:element name="AxleWheels" type="AxleWheelsType"/>
 					<xs:element name="Auxiliaries" type="AuxiliariesTruckType"/>
@@ -249,15 +278,16 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="ComponentsTruckFWDType">
+	<xs:complexType name="ComponentsTruckType">
 		<xs:complexContent>
 			<xs:extension base="AbstractComponentsType">
 				<xs:sequence>
 					<xs:element name="Engine" type="EngineType"/>
-					<xs:element name="Gearbox" type="GearboxFWDType"/>
+					<xs:element name="Gearbox" type="GearboxType"/>
 					<xs:element name="TorqueConverter" type="TorqueconverterType" minOccurs="0"/>
 					<xs:element name="Retarder" type="RetarderType"/>
 					<xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/>
+					<xs:element name="Axlegear" type="AxlegearType"/>
 					<xs:element name="AirDrag" type="AirdragType"/>
 					<xs:element name="AxleWheels" type="AxleWheelsType"/>
 					<xs:element name="Auxiliaries" type="AuxiliariesTruckType"/>
@@ -382,7 +412,7 @@
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
-	<xs:complexType name="GearboxType">
+	<xs:complexType name="GearboxFWDType">
 		<xs:sequence>
 			<xs:element name="Model" type="vdecdef:ModelType">
 				<xs:annotation>
@@ -419,6 +449,7 @@
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:element>
+			<xs:element name="AxlegearRatio" type="vdecdef:AxlegearRatioType"/>
 			<xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType">
 				<xs:annotation>
 					<xs:documentation>P078 / I.1.3.6 / #29</xs:documentation>
@@ -426,7 +457,7 @@
 			</xs:element>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="GearboxFWDType">
+	<xs:complexType name="GearboxType">
 		<xs:sequence>
 			<xs:element name="Model" type="vdecdef:ModelType">
 				<xs:annotation>
@@ -463,7 +494,6 @@
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:element>
-			<xs:element name="AxlegearRatio" type="vdecdef:AxlegearRatioType"/>
 			<xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType">
 				<xs:annotation>
 					<xs:documentation>P078 / I.1.3.6 / #29</xs:documentation>
@@ -471,15 +501,15 @@
 			</xs:element>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="ResultType">
-		<xs:sequence>
-			<xs:element name="Mission" type="MissionTypeType">
-				<xs:annotation>
-					<xs:documentation>I.2.1.1 / #56</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:choice>
+	<xs:complexType name="ResultCompletedVehicleSuccessType">
+		<xs:complexContent>
+			<xs:extension base="AbstractResultType">
 				<xs:sequence>
+					<xs:element name="Mission" type="MissionTypeType">
+						<xs:annotation>
+							<xs:documentation>I.2.1.1 / #56</xs:documentation>
+						</xs:annotation>
+					</xs:element>
 					<xs:element name="Distance">
 						<xs:annotation>
 							<xs:documentation>I.2.2.8 / #67</xs:documentation>
@@ -492,8 +522,46 @@
 							</xs:simpleContent>
 						</xs:complexType>
 					</xs:element>
-					<xs:element name="SimulationParameters" type="SimulationParametersType"/>
+					<xs:element name="SimulationParametersPrimaryVehicle" type="SimulationParametersType"/>
+					<xs:element name="SimulationParametersCompletedVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="TotalVehicleMass">
+									<xs:annotation>
+										<xs:documentation>I.2.1.4 / #59</xs:documentation>
+									</xs:annotation>
+									<xs:complexType>
+										<xs:simpleContent>
+											<xs:extension base="xs:double">
+												<xs:attribute name="unit" type="MassUnitType" use="required"/>
+											</xs:extension>
+										</xs:simpleContent>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="Payload">
+									<xs:annotation>
+										<xs:documentation>I.2.1.2 / #57</xs:documentation>
+									</xs:annotation>
+									<xs:complexType>
+										<xs:simpleContent>
+											<xs:extension base="xs:double">
+												<xs:attribute name="unit" type="MassUnitType" use="required"/>
+											</xs:extension>
+										</xs:simpleContent>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="PassengerCount" type="xs:double" minOccurs="0"/>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
 					<xs:element name="VehiclePerformance" type="VehiclePerformanceType"/>
+					<xs:element name="FuelConsumptionFactor">
+						<xs:simpleType>
+							<xs:restriction base="vdecdef:Double4">
+								<xs:minExclusive value="0.0000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
 					<xs:element name="Fuel" maxOccurs="unbounded">
 						<xs:complexType>
 							<xs:sequence>
@@ -512,21 +580,68 @@
 						</xs:annotation>
 					</xs:element>
 				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="ResultErrorType">
+		<xs:complexContent>
+			<xs:extension base="AbstractResultType">
 				<xs:sequence>
+					<xs:element name="Mission" type="MissionTypeType">
+						<xs:annotation>
+							<xs:documentation>I.2.1.1 / #56</xs:documentation>
+						</xs:annotation>
+					</xs:element>
 					<xs:element name="SimulationParameters" type="SimulationParametersType"/>
 					<xs:element name="Error" type="xs:string"/>
 					<xs:element name="ErrorDetails" type="xs:string"/>
 				</xs:sequence>
-			</xs:choice>
-		</xs:sequence>
-		<xs:attribute name="status" use="required">
-			<xs:simpleType>
-				<xs:restriction base="xs:string">
-					<xs:enumeration value="success"/>
-					<xs:enumeration value="error"/>
-				</xs:restriction>
-			</xs:simpleType>
-		</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="ResultSuccessType">
+		<xs:complexContent>
+			<xs:extension base="AbstractResultType">
+				<xs:sequence>
+					<xs:element name="Mission" type="MissionTypeType">
+						<xs:annotation>
+							<xs:documentation>I.2.1.1 / #56</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Distance">
+						<xs:annotation>
+							<xs:documentation>I.2.2.8 / #67</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="DistanceUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="SimulationParameters" type="SimulationParametersType"/>
+					<xs:element name="VehiclePerformance" type="VehiclePerformanceType"/>
+					<xs:element name="Fuel" maxOccurs="unbounded">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded">
+									<xs:annotation>
+										<xs:documentation>I.2.3.1 - I.2.3.12 / #69</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+							</xs:sequence>
+							<xs:attribute name="type" type="xs:string" use="required"/>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="CO2" type="CO2Type" maxOccurs="unbounded">
+						<xs:annotation>
+							<xs:documentation>I.2.3.13 - I.2.3.16 / #68</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
 	</xs:complexType>
 	<xs:complexType name="RetarderType">
 		<xs:sequence>
@@ -679,7 +794,7 @@
 								</xs:element>
 								<xs:choice>
 									<xs:sequence>
-										<xs:element name="Result" type="ResultType" maxOccurs="unbounded"/>
+										<xs:element name="Result" type="AbstractResultType" maxOccurs="unbounded"/>
 									</xs:sequence>
 									<xs:element name="ExemptedVehicle">
 										<xs:complexType/>
@@ -709,6 +824,97 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
+	<xs:complexType name="VehicleCompletedBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractVehicleType">
+				<xs:sequence>
+					<xs:element name="PrimaryVehicle" type="CompletedVehiclePrimaryVehicleInformationType"/>
+					<xs:element name="CompletedVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Model" type="vdecdef:ModelType"/>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
+								<xs:element name="VIN" type="vdecdef:VINType"/>
+								<xs:element name="VehicleCategory" type="xs:string"/>
+								<xs:element name="VehicleGroup" type="xs:string"/>
+								<xs:element name="RegisteredClass" type="xs:string"/>
+								<xs:element name="VehicleCode" type="xs:string"/>
+								<xs:element name="CurbMassChassis">
+									<xs:complexType>
+										<xs:simpleContent>
+											<xs:extension base="vdecdef:VehicleCurbMassChassisType">
+												<xs:attribute name="unit" type="MassUnitType" use="required"/>
+											</xs:extension>
+										</xs:simpleContent>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="TechnicalPermissibleMaximumLadenMass">
+									<xs:complexType>
+										<xs:simpleContent>
+											<xs:extension base="vdecdef:Double2">
+												<xs:attribute name="unit" type="MassUnitType" use="required"/>
+											</xs:extension>
+										</xs:simpleContent>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="VocationalVehicle" type="BooleanNotApplicableType"/>
+								<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
+								<xs:element name="HybridElectricHDV" type="xs:boolean"/>
+								<xs:element name="DualFuelVehicle" type="xs:boolean"/>
+								<xs:element name="SleeperCab" type="BooleanNotApplicableType"/>
+								<xs:element name="RegisteredPassengers">
+									<xs:complexType>
+										<xs:sequence>
+											<xs:element name="LowerDeck">
+												<xs:simpleType>
+													<xs:restriction base="xs:int">
+														<xs:minInclusive value="0"/>
+													</xs:restriction>
+												</xs:simpleType>
+											</xs:element>
+											<xs:element name="UpperDeck">
+												<xs:simpleType>
+													<xs:restriction base="xs:int">
+														<xs:minInclusive value="0"/>
+													</xs:restriction>
+												</xs:simpleType>
+											</xs:element>
+										</xs:sequence>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="LowEntry" type="xs:boolean"/>
+								<xs:element name="HeightIntegratedBody">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="VehicleLength">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="VehicleWidth">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="DoorDriveTechnology" type="xs:string"/>
+								<xs:element name="Components" type="AbstractComponentsType"/>
+								<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:complexType name="VehicleExemptedTruckType">
 		<xs:complexContent>
 			<xs:extension base="AbstractVehicleType">
@@ -1139,6 +1345,13 @@
 			<xs:enumeration value="rpm"/>
 		</xs:restriction>
 	</xs:simpleType>
+	<xs:simpleType name="BooleanNotApplicableType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="true"/>
+			<xs:enumeration value="false"/>
+			<xs:enumeration value="not applicable"/>
+		</xs:restriction>
+	</xs:simpleType>
 	<xs:simpleType name="CO2UnitType">
 		<xs:restriction base="xs:string">
 			<xs:enumeration value="g/km"/>
@@ -1205,105 +1418,4 @@
 			<xs:minLength value="1"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:complexType name="VehicleCompletedBusType">
-		<xs:complexContent>
-			<xs:extension base="AbstractVehicleType">
-				<xs:sequence>
-					<xs:element name="PrimaryVehicle" type="PrimaryVehicleType"/>
-					<xs:element name="CompletedVehicle">
-						<xs:complexType>
-							<xs:sequence>
-								<xs:element name="Model" type="vdecdef:ModelType"/>
-								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
-								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
-								<xs:element name="VIN" type="vdecdef:VINType"/>
-								<xs:element name="VehicleCategory" type="vdecdef:LegislativeClassDeclarationType"/>
-								<xs:element name="VehicleGroup" type="xs:string"/>
-								<xs:element name="RegisteredClass" type="xs:string"/>
-								<xs:element name="VehicleCode" type="xs:string"/>
-								<xs:element name="CurbMassChassis" type="vdecdef:VehicleCurbMassChassisType"/>
-								<xs:element name="TechnicalPermissibleMaximumLadenMass" type="vdecdef:VehicleGrossVehicleMassType"/>
-								<xs:element name="VocationalVehcle" type="BooleanNotApplicableType"/>
-								<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
-								<xs:element name="HybridElectricHDV" type="xs:boolean"/>
-								<xs:element name="DualFuelVehicle" type="xs:boolean"/>
-								<xs:element name="SleeperCab" type="BooleanNotApplicableType"/>
-								<xs:element name="RegisteredPassengers">
-									<xs:complexType>
-										<xs:sequence>
-											<xs:element name="LowerDeck">
-												<xs:simpleType>
-													<xs:restriction base="xs:int">
-														<xs:minInclusive value="0"/>
-													</xs:restriction>
-												</xs:simpleType>
-											</xs:element>
-											<xs:element name="UpperDeck">
-												<xs:simpleType>
-													<xs:restriction base="xs:int">
-														<xs:minInclusive value="0"/>
-													</xs:restriction>
-												</xs:simpleType>
-											</xs:element>
-										</xs:sequence>
-									</xs:complexType>
-								</xs:element>
-								<xs:element name="LowEntry" type="xs:boolean"/>
-								<xs:element name="HeightIntegratedBody">
-									<xs:simpleType>
-										<xs:restriction base="vdecdef:Double3">
-											<xs:minExclusive value="0.000"/>
-										</xs:restriction>
-									</xs:simpleType>
-								</xs:element>
-								<xs:element name="VehicleLength">
-									<xs:simpleType>
-										<xs:restriction base="vdecdef:Double3">
-											<xs:minExclusive value="0.000"/>
-										</xs:restriction>
-									</xs:simpleType>
-								</xs:element>
-								<xs:element name="VehicleWidth">
-									<xs:simpleType>
-										<xs:restriction base="vdecdef:Double3">
-											<xs:minExclusive value="0.000"/>
-										</xs:restriction>
-									</xs:simpleType>
-								</xs:element>
-								<xs:element name="DoorDriveTechnology" type="xs:string"/>
-								<xs:element name="Components" type="AbstractComponentsType"/>
-							</xs:sequence>
-						</xs:complexType>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:complexType name="PrimaryVehicleType">
-		<xs:sequence>
-			<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
-			<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
-			<xs:element name="AxleConfiguration" type="xs:string"/>
-			<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
-			<xs:element name="ManufacturerRecordSignature" type="vdecdef:SignatureType"/>
-			<xs:element name="VehicleInformationSignature" type="vdecdef:SignatureType"/>
-		</xs:sequence>
-	</xs:complexType>
-	<xs:simpleType name="BooleanNotApplicableType">
-		<xs:restriction base="xs:string">
-			<xs:enumeration value="true"/>
-			<xs:enumeration value="false"/>
-			<xs:enumeration value="not applicable"/>
-		</xs:restriction>
-	</xs:simpleType>
-	<xs:complexType name="ComponentsCompletedBusType">
-		<xs:complexContent>
-			<xs:extension base="AbstractComponentsType">
-				<xs:sequence>
-					<xs:element name="AirDrag" type="AirdragType"/>
-					<xs:element name="Auxiliaries" type="v2.6:AbstractCompletedVehicleAuxiliaryDataDeclarationType"/>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
 </xs:schema>
-- 
GitLab