diff --git a/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_engine_valid.xml b/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_engine_valid.xml index cc89ab132435c5fdd88483b4d8641fcb40b729f5..39a26b1a140961897c0fae941893c4fb3d142fb7 100644 --- a/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_engine_valid.xml +++ b/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_engine_valid.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v0.8" - xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="0.6" +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" + xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" + xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v0.8 ../XSD/VectoComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> <tns:Engine> <Data id="ENG-c481b13b8dba4d3682c4"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> - <TechnicalReportId>ENG-gooZah3D</TechnicalReportId> + <CertificationNumber>ENG-gooZah3D</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> @@ -158,7 +158,7 @@ <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </di:Transforms> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <di:DigestValue>BWAxs/2pGjQJdvn2GJE7X2lbNOBYSN3Xrrb+a+BfVUg=</di:DigestValue> + <di:DigestValue>bYGqZ5tcExIOHyNkH7HElRegtVqLcqBNzbTEWAKttsc=</di:DigestValue> </di:Reference> </Signature> </tns:Engine> diff --git a/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_gearbox_valid.xml b/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_gearbox_valid.xml index 7b4b5fda927b4b34c0806ab26dbccaa713e631a4..f39102a6ef3c98fe4b9bdcb7ee6db69f4d0e6aff 100644 --- a/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_gearbox_valid.xml +++ b/VectoCommon/VectoHashingTest/Testdata/XML/Validation/vecto_gearbox_valid.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v0.8" +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" + xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="0.6" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v0.8 ../XSD/VectoComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 ../XSD/VectoComponent.xsd"> <tns:Gearbox> <Data id="GBX-75d63e1e3e6642028bc5"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> - <TechnicalReportId>GBX-vi2Oak2N</TechnicalReportId> + <CertificationNumber>GBX-vi2Oak2N</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> @@ -2390,7 +2390,7 @@ <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </di:Transforms> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <di:DigestValue>H4xO+urVMI8J65DssHC27LwPG+t193DROb3nhM657/A=</di:DigestValue> + <di:DigestValue>osxjs+vChAnmncXtxqxie5iHDQthzhKSGE7sqzCc2bM=</di:DigestValue> </di:Reference> </Signature> </tns:Gearbox> diff --git a/VectoCommon/VectoHashingTest/VectoHashTest.cs b/VectoCommon/VectoHashingTest/VectoHashTest.cs index 733cb953b442e120fd93f2eb7af8d966ef8225ad..96cf65962239651bb9b06470f56e4e2ba2c04dc7 100644 --- a/VectoCommon/VectoHashingTest/VectoHashTest.cs +++ b/VectoCommon/VectoHashingTest/VectoHashTest.cs @@ -498,5 +498,21 @@ namespace VectoHashingTest { AssertHelper.Exception<ArgumentOutOfRangeException>(() => ((VectoComponents)9999).HashIdPrefix()); } + + + + [TestCase(@"Testdata\XML\Validation\vecto_engine_valid.xml"), + TestCase(@"Testdata\XML\Validation\vecto_gearbox_valid.xml")] + public void TestXMLComponentValidation(string file) + { + var xmlDoc = new XmlDocument(); + xmlDoc.Load(XmlReader.Create(file)); + var validator = new XMLValidator(xmlDoc); + Assert.IsTrue(validator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport)); + + var version = XMLHelper.GetVersionFromNamespaceUri(xmlDoc.DocumentElement.NamespaceURI); + Assert.AreEqual("1.0", version); + + } } } diff --git a/VectoCore/VectoCore/Resources/XSD/VectoMonitoring.xsd b/VectoCore/VectoCore/Resources/XSD/VectoMonitoring.xsd new file mode 100644 index 0000000000000000000000000000000000000000..b2cd8b1b8ef878b41074466df970e372e26e7cdd --- /dev/null +++ b/VectoCore/VectoCore/Resources/XSD/VectoMonitoring.xsd @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="urn:tugraz:ivt:VectoAPI:MonitoringOutput" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> + <!-- + + This is a convienience file that imports the schema for all supported versions of customer information file and all supported declaration definitions + + --> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:MonitoringOutput:v0.7" schemaLocation="VectoMonitoring.0.7.xsd"/> +</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.xsd index 044e6c7007d04487bed31c427862ef558675e5e7..243edf30180c83a4ae7e92b58f2059f1676e637b 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.xsd @@ -1,258 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2016 rel. 2 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> -<!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)--> -<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.5" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.5" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.5"> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> - <xs:element name="VectoCustomerInformation"> - <xs:annotation> - <xs:documentation>Comment describing your root element</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Data"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="VectoOutputDataType"/> - </xs:complexContent> - </xs:complexType> - </xs:element> - <xs:element name="Signature" type="vdecdef:SignatureType"/> - </xs:sequence> - <xs:attribute name="schemaVersion" type="xs:decimal" use="required"/> - </xs:complexType> - </xs:element> - <xs:complexType name="CO2Type"> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="CO2UnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="FuelConsumptionType"> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="FuelConsumptionUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="ResultType"> - <xs:sequence> - <xs:element name="Mission" type="MissionTypeType"/> - <xs:choice> - <xs:sequence> - <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="FuelType" type="vdecdef:FuelTypeType"/> - <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="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded"/> - <xs:element name="CO2" type="CO2Type" maxOccurs="unbounded"/> - </xs:sequence> - <xs:element name="Error"/> - </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:complexType> - <xs:complexType name="VectoOutputDataType"> - <xs:sequence> - <xs:element name="Vehicle" type="VehicleType"/> - <xs:element name="ResultDataSignature" type="vdecdef:SignatureType"/> - <xs:element name="Results"> - <xs:complexType> - <xs:sequence> - <xs:element name="Status"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="success"/> - <xs:enumeration value="error"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="Result" type="ResultType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="ApplicationInformation"> - <xs:complexType> - <xs:sequence> - <xs:element name="SimulationToolVersion"/> - <xs:element name="Date"/> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="id" use="required"/> - </xs:complexType> - <xs:complexType name="VehiclePerformanceType"> - <xs:sequence/> - </xs:complexType> - <xs:complexType name="VehicleType"> - <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"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LegislativeClass" type="vdecdef:LegislativeClassDeclarationType"> - <xs:annotation> - <xs:documentation>P251</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VehicleGroup" type="VehicleGroupType"> - <xs:annotation> - <xs:documentation>VECTO</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AxleConfiguration" type="vdecdef:VehicleAxleConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P037</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="GrossVehicleMass" type="vdecdef:VehicleGrossVehicleMassType"> - <xs:annotation> - <xs:documentation>P041</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CurbMassChassis" type="vdecdef:VehicleCurbMassChassisType"> - <xs:annotation> - <xs:documentation>P038</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="EngineRatedPower" type="vdecdef:EngineRatedPower"> - <xs:annotation> - <xs:documentation>P250</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="EngineDisplacement" type="vdecdef:EngineDisplacementType"> - <xs:annotation> - <xs:documentation>P061</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="FuelType" type="vdecdef:FuelTypeType"> - <xs:annotation> - <xs:documentation>P193</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TransmissionMainCertificationMethod" type="vdecdef:GearboxCertificationOptionType"> - <xs:annotation> - <xs:documentation>P154</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType"> - <xs:annotation> - <xs:documentation>P076</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="GearsCount"> - <xs:annotation> - <xs:documentation>P199</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</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AxleRatio" type="vdecdef:AxlegearRatioType"> - <xs:annotation> - <xs:documentation>P150</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AverageRRC" type="vdecdef:TyreRRCISOType"/> - <xs:element name="InputDataSignature" type="vdecdef:SignatureType"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AccelerationUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="m/s²"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AirdragCertificationOptionType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="Measured"/> - <xs:enumeration value="Standard values"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CO2UnitType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="g/km"/> - <xs:enumeration value="g/t-km"/> - <xs:enumeration value="g/p-km"/> - <xs:enumeration value="g/m³-km"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DistanceUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="km"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="FuelConsumptionUnitType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="g/km"/> - <xs:enumeration value="g/t-km"/> - <xs:enumeration value="g/p-km"/> - <xs:enumeration value="g/m³-km"/> - <xs:enumeration value="l/100km"/> - <xs:enumeration value="l/t-km"/> - <xs:enumeration value="l/p-km"/> - <xs:enumeration value="l/m³-km"/> - <xs:enumeration value="MJ/km"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="MassUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="kg"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="MissionTypeType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="Long Haul EMS"/> - <xs:enumeration value="Long Haul"/> - <xs:enumeration value="Regional Delivery EMS"/> - <xs:enumeration value="Regional Delivery"/> - <xs:enumeration value="Urban Delivery"/> - <xs:enumeration value="Municipal Utility"/> - <xs:enumeration value="Construction"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="SpeedUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="km/h"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="VehicleGroupType"> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - <xs:maxInclusive value="16"/> - </xs:restriction> - </xs:simpleType> +<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="urn:tugraz:ivt:VectoAPI:CustomerOutput" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> + <!-- + + This is a convienience file that imports the schema for all supported versions of customer information file and all supported declaration definitions + + --> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.5" schemaLocation="VectoOutputCustomer.0.5.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.7" schemaLocation="VectoOutputCustomer.0.7.xsd"/> </xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd index 54f7fe161bd33a74fc08663c6cf2308ec3cbd92e..b8765ba6f1241780a6559be5b2f98ad71280fd99 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd @@ -1,648 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> -<!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)--> -<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.5"> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> - <xs:element name="VectoOutput"> - <xs:annotation> - <xs:documentation>Comment describing your root element</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Data"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="VectoOutputDataType"/> - </xs:complexContent> - </xs:complexType> - </xs:element> - <xs:element name="Signature" type="vdecdef:SignatureType"/> - </xs:sequence> - <xs:attribute name="schemaVersion" type="xs:decimal" use="required"/> - </xs:complexType> - </xs:element> - <xs:complexType name="AirdragType"> - <xs:sequence> - <xs:element name="Model" minOccurs="0"/> - <xs:element name="CertificationMethod" type="AirdragCertificationOptionType"/> - <xs:element name="CertificationNumber" minOccurs="0"/> - <xs:element name="DigestValue" minOccurs="0"/> - <xs:element name="CdxA" type="vdecdef:AirdragCdxAType"> - <xs:annotation> - <xs:documentation>P245</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AngledriveType"> - <xs:sequence> - <xs:element name="Model" type="vdecdef:ModelType"/> - <xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType"> - <xs:annotation> - <xs:documentation>P258</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> - <xs:element name="DigestValue" type="xs:token"/> - <xs:element name="Ratio" type="vdecdef:AngledriveRatioType"> - <xs:annotation> - <xs:documentation>P176</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AuxiliariesType"> - <xs:sequence> - <xs:element name="FanTechnology" type="vdecdef:AuxFanTechnologyType"> - <xs:annotation> - <xs:documentation>P181</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="SteeringPumpTechnology" maxOccurs="4"> - <xs:annotation> - <xs:documentation>P182</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="vdecdef:AuxSPTechnologyType"/> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="ElectricSystemTechnology" type="vdecdef:AuxESTechnologyType"> - <xs:annotation> - <xs:documentation>P183</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="PneumaticSystemTechnology" type="vdecdef:AuxPSTechnologyType"> - <xs:annotation> - <xs:documentation>P184</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="HVACTechnology" type="vdecdef:AuxHVACTechnologyType"> - <xs:annotation> - <xs:documentation>P185</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AxlegearType"> - <xs:sequence> - <xs:element name="Model" type="vdecdef:ModelType"/> - <xs:element name="CertificationMethod" type="vdecdef:AxlegearCertificationOptionType"> - <xs:annotation> - <xs:documentation>P256</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> - <xs:element name="DigestValue" type="xs:token"/> - <xs:element name="LineType" type="vdecdef:AxlegearLineTypeType"> - <xs:annotation> - <xs:documentation>P253</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Ratio" type="vdecdef:AxlegearRatioType"> - <xs:annotation> - <xs:documentation>P150</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="AxleType"> - <xs:sequence> - <xs:element name="TyreDimension" type="vdecdef:TyreDimensionType"> - <xs:annotation> - <xs:documentation>P108</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TyreCertificationNumber" type="vdecdef:CertificationNumberType"> - <xs:annotation> - <xs:documentation>P267</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="DigestValue" type="xs:token"/> - <xs:element name="TyreRRCDeclared" type="vdecdef:TyreRRCISOType"> - <xs:annotation> - <xs:documentation>P046</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TwinTyres" type="vdecdef:AxleTwinTyresType"> - <xs:annotation> - <xs:documentation>P045</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="axleNumber" use="required"> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - <xs:maxInclusive value="4"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:complexType> - <xs:complexType name="AxleWheelsType"> - <xs:sequence minOccurs="2" maxOccurs="4"> - <xs:element name="Axle" type="AxleType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CO2Type"> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="CO2UnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="Model" type="vdecdef:ModelType"/> - <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType"/> - <xs:element name="DigestValue" type="xs:token"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="EngineType"> - <xs:complexContent> - <xs:extension base="ComponentDescriptionType"> - <xs:sequence> - <xs:element name="RatedPower"> - <xs:annotation> - <xs:documentation>P250</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="vdecdef:EngineRatedPower"> - <xs:attribute name="unit" type="PowerUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="IdlingSpeed"> - <xs:annotation> - <xs:documentation>P063 / P198</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="vdecdef:EngineDeclaredSpeedType"> - <xs:attribute name="unit" type="AngularVelocityUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="RatedSpeed"> - <xs:annotation> - <xs:documentation>P249</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="vdecdef:EngineDeclaredSpeedType"> - <xs:attribute name="unit" type="AngularVelocityUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="Displacement"> - <xs:annotation> - <xs:documentation>P061</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="DisplacementType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="FuelType" type="vdecdef:FuelTypeType"> - <xs:annotation> - <xs:documentation>P193</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="FuelConsumptionType"> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="FuelConsumptionUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="GearboxType"> - <xs:sequence> - <xs:element name="Model" type="vdecdef:ModelType"/> - <xs:element name="CertificationMethod" type="vdecdef:GearboxCertificationOptionType"> - <xs:annotation> - <xs:documentation>P154</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> - <xs:element name="DigestValue" type="xs:token"/> - <xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType"> - <xs:annotation> - <xs:documentation>P076</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="GearsCount"> - <xs:annotation> - <xs:documentation>P199</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType"> - <xs:annotation> - <xs:documentation>P078</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ResultType"> - <xs:sequence> - <xs:element name="Mission" type="MissionTypeType"/> - <xs:choice> - <xs:sequence> - <xs:element name="Distance"> - <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="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded"/> - <xs:element name="CO2" type="CO2Type" maxOccurs="unbounded"/> - </xs:sequence> - <xs:sequence> - <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:complexType> - <xs:complexType name="RetarderType"> - <xs:sequence> - <xs:element name="RetarderType" type="vdecdef:RetarderTypeType"> - <xs:annotation> - <xs:documentation>P052</xs:documentation> - </xs:annotation> - </xs:element> - <xs:sequence minOccurs="0"> - <xs:element name="Model" type="vdecdef:ModelType"/> - <xs:element name="CertificationMethod" type="vdecdef:RetarderCertificationOptionType"> - <xs:annotation> - <xs:documentation>P255</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> - <xs:element name="DigestValue" type="xs:token"/> - </xs:sequence> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SimulationParametersType"> - <xs:sequence> - <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="FuelType" type="vdecdef:FuelTypeType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TorqueconverterType"> - <xs:sequence> - <xs:element name="Model" type="vdecdef:ModelType"/> - <xs:element name="CertificationMethod" type="vdecdef:TorqueConverterCertificationOptionType"> - <xs:annotation> - <xs:documentation>P257</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/> - <xs:element name="DigestValue" type="xs:token"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TorqueLimitsEntryType"> - <xs:attribute name="gear" type="vdecdef:GearboxGearNumberType" use="required"> - <xs:annotation> - <xs:documentation>P196</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="torqueLimit" type="vdecdef:TorqueLimitEntryMaxTorqueType" use="required"> - <xs:annotation> - <xs:documentation>P197 / P194</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:complexType name="TorqueLimitsType"> - <xs:sequence> - <xs:element name="Entry" type="TorqueLimitsEntryType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="VectoOutputDataType"> - <xs:sequence> - <xs:element name="Vehicle" type="VehicleType"/> - <xs:element name="Results"> - <xs:complexType> - <xs:sequence> - <xs:element name="Status"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="success"/> - <xs:enumeration value="error"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="Result" type="ResultType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="ApplicationInformation"> - <xs:complexType> - <xs:sequence> - <xs:element name="SimulationToolVersion"/> - <xs:element name="Date"/> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="id" use="required"/> - </xs:complexType> - <xs:complexType name="VehiclePerformanceType"> - <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="AverageDrivingSpeed"> - <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="MinSpeed"> - <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="MaxSpeed"> - <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="MaxDeceleration"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="AccelerationUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="MaxAcceleration"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="AccelerationUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="FullLoadDrivingtimePercentage"> - <xs:simpleType> - <xs:restriction base="xs:double"> - <xs:minInclusive value="0"/> - <xs:maxInclusive value="100"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="GearshiftCount" type="xs:int"/> - <xs:element name="EngineSpeedDriving"> - <xs:complexType> - <xs:sequence> - <xs:element name="Min"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="AngularVelocityUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="Average"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="AngularVelocityUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element name="Max"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:double"> - <xs:attribute name="unit" type="AngularVelocityUnitType" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="VehicleType"> - <xs:sequence> - <xs:element name="VIN"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LegislativeClass" type="vdecdef:LegislativeClassDeclarationType"> - <xs:annotation> - <xs:documentation>P251</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VehicleGroup" type="VehicleGroupType"> - <xs:annotation> - <xs:documentation>VECTO</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AxleConfiguration" type="vdecdef:VehicleAxleConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P037</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="GrossVehicleMass"> - <xs:annotation> - <xs:documentation>P041</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</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="PTO" type="xs:boolean"> - <xs:annotation> - <xs:documentation>P247</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TorqueLimits" type="TorqueLimitsType" minOccurs="0"/> - <xs:element name="Components"> - <xs:complexType> - <xs:sequence> - <xs:element name="Engine" type="EngineType"/> - <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="AuxiliariesType"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="InputDataSignature" type="vdecdef:SignatureType"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AccelerationUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="m/s²"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AirdragCertificationOptionType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="Measured"/> - <xs:enumeration value="Standard values"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="CO2UnitType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="g/km"/> - <xs:enumeration value="g/t-km"/> - <xs:enumeration value="g/p-km"/> - <xs:enumeration value="g/m³-km"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DistanceUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="km"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="FuelConsumptionUnitType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="g/km"/> - <xs:enumeration value="g/t-km"/> - <xs:enumeration value="g/p-km"/> - <xs:enumeration value="g/m³-km"/> - <xs:enumeration value="l/100km"/> - <xs:enumeration value="l/t-km"/> - <xs:enumeration value="l/p-km"/> - <xs:enumeration value="l/m³-km"/> - <xs:enumeration value="MJ/km"/> - <xs:enumeration value="MJ/t-km"/> - <xs:enumeration value="MJ/m³-km"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="MassUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="kg"/> - <xs:enumeration value="t"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="MissionTypeType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="Long Haul EMS"/> - <xs:enumeration value="Long Haul"/> - <xs:enumeration value="Regional Delivery EMS"/> - <xs:enumeration value="Regional Delivery"/> - <xs:enumeration value="Urban Delivery"/> - <xs:enumeration value="Municipal Utility"/> - <xs:enumeration value="Construction"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="SpeedUnitType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="km/h"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="VehicleGroupType"> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - <xs:maxInclusive value="16"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AngularVelocityUnitType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="rpm"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="PowerUnitType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="kW"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DisplacementType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="ltr"/> - </xs:restriction> - </xs:simpleType> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> + <!-- + + This is a convienience file that imports the schema for all supported versions of manufacturer records file and all supported declaration definitions + + --> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" schemaLocation="VectoOutputManufacturer.0.5.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.6" schemaLocation="VectoOutputManufacturer.0.6.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" schemaLocation="VectoOutputManufacturer.0.7.xsd"/> </xs:schema> diff --git a/VectoCore/VectoCore/Utils/XMLDefinitions.cs b/VectoCore/VectoCore/Utils/XMLDefinitions.cs index d54fa72ecb1e079f6a643a578d53ff349b529e8d..42903ce30c2a3d46bc500715ca0c6b16d16c5a49 100644 --- a/VectoCore/VectoCore/Utils/XMLDefinitions.cs +++ b/VectoCore/VectoCore/Utils/XMLDefinitions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Xml; namespace TUGraz.VectoCore.Utils { @@ -74,20 +75,21 @@ namespace TUGraz.VectoCore.Utils {XmlDocumentType.DeclarationComponentData, "VectoDeclarationComponent.xsd"}, {XmlDocumentType.EngineeringJobData, "VectoEngineeringJob.xsd" }, {XmlDocumentType.EngineeringComponentData, "VectoEngineeringComponent.xsd" }, - {XmlDocumentType.ManufacturerReport, "VectoOutputManufacturer{0}.xsd" }, - {XmlDocumentType.CustomerReport , "VectoOutputCustomer{0}.xsd"}, - {XmlDocumentType.MonitoringReport , "VectoMonitoring{0}.xsd"}, + {XmlDocumentType.ManufacturerReport, "VectoOutputManufacturer.xsd" }, + {XmlDocumentType.CustomerReport , "VectoOutputCustomer.xsd"}, + {XmlDocumentType.MonitoringReport , "VectoMonitoring.xsd"}, }; - public static string GetSchemaFilename(XmlDocumentType type, string version) + public static string GetSchemaFilename(XmlDocumentType type) { if (!schemaFilenames.ContainsKey(type)) { throw new Exception(string.Format("Invalid argument {0} - only use single flags", type)); } var entry = schemaFilenames[type]; - return string.Format(entry, string.IsNullOrWhiteSpace(version) ? "" : "." + version); + + return entry; } } diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs index 8202eb1ddae03d868ffb9cb73406fbc1f1529c80..64abf035b0b0a064fd8314ac1360fab5c2f8ff5e 100644 --- a/VectoCore/VectoCore/Utils/XMLHelper.cs +++ b/VectoCore/VectoCore/Utils/XMLHelper.cs @@ -68,18 +68,6 @@ namespace TUGraz.VectoCore.Utils // return GetVersionFromNamespaceUri(node.NamespaceURI); //} - public static string GetSchemaVersion(XmlNode node) - { - var nodeType = node.Attributes?.GetNamedItem("type", "http://www.w3.org/2001/XMLSchema-instance"); - if (nodeType != null) { - var parts = nodeType.InnerText.Split(':'); - if (parts.Length == 2) { - return GetVersionFromNamespaceUri(nodeType.GetNamespaceOfPrefix(parts[0])); - } - } - return GetVersionFromNamespaceUri(node.NamespaceURI); - } - public static string GetVersionFromNamespaceUri(XNamespace namespaceUri) { const string versionPrefix = "v"; diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs index 1956b61f67486d587f7fb3b5d8e7f0c50733a3c6..eb5d5e61fcd3f68e2c23a96892ae79ad18234421 100644 --- a/VectoCore/VectoCore/Utils/XMLValidator.cs +++ b/VectoCore/VectoCore/Utils/XMLValidator.cs @@ -78,26 +78,15 @@ namespace TUGraz.VectoCore.Utils throw new Exception("empty XML document"); } - var version = XMLHelper.GetSchemaVersion(_doc.DocumentElement); - - _doc.Schemas = GetXMLSchema(docType, version); + _doc.Schemas = GetXMLSchema(docType); + _doc.Validate(ValidationCallBack); - //var settings = new XmlReaderSettings(); - //settings.Schemas = GetXMLSchema(docType, version); - //settings.ValidationType = ValidationType.Schema; - //settings.ValidationFlags = - // XmlSchemaValidationFlags.ReportValidationWarnings | XmlSchemaValidationFlags.AllowXmlAttributes; - //settings.ValidationEventHandler += ValidationCallBack; - //var m = new MemoryStream(); - //var w = new XmlTextWriter(m, Encoding.UTF8); - //_doc.WriteTo(w); - //w.Flush(); - //m.Flush(); - //m.Seek(0, SeekOrigin.Begin); - //var r = new XmlTextReader(m); - //var reader = XmlReader.Create(r, settings); - //_doc = new XmlDocument(); - //_doc.Load(reader); + + if (_doc.SchemaInfo.Validity != XmlSchemaValidity.Valid || _doc.DocumentElement?.SchemaInfo == null || + _doc.DocumentElement.SchemaInfo.SchemaType == null) { + _valid = false; + } + return _valid; } @@ -115,16 +104,15 @@ namespace TUGraz.VectoCore.Utils } } - private static XmlSchemaSet GetXMLSchema(XmlDocumentType docType, string version) + private static XmlSchemaSet GetXMLSchema(XmlDocumentType docType) { var xset = new XmlSchemaSet() { XmlResolver = new XmlResourceResolver() }; - foreach (var entry in EnumHelper.GetValues<XmlDocumentType>()) { if ((entry & docType) == 0) { continue; } - var schemaFile = XMLDefinitions.GetSchemaFilename(entry, version); + var schemaFile = XMLDefinitions.GetSchemaFilename(entry); if (schemaFile == null) { continue; } @@ -134,7 +122,7 @@ namespace TUGraz.VectoCore.Utils resource = RessourceHelper.LoadResourceAsStream(RessourceHelper.ResourceType.XMLSchema, schemaFile); } catch (Exception e) { throw new Exception( - string.Format("Unknown XML schema! version: {0}, xml document type: {1} ({2})", entry, version, schemaFile), e); + string.Format("Missing resource {0} for XML document type: {1} ({2})", schemaFile, entry, docType.ToString()), e); } var reader = XmlReader.Create(resource, new XmlReaderSettings(), "schema://"); diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index ae5ba4cbdf283b1384c69c983afb8354af830bd1..9a0c77e859011e33b99e3a530e1bbd0996e91a7d 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -680,6 +680,9 @@ <EmbeddedResource Include="Resources\XSD\VectoEngineeringJob.xsd"> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="Resources\XSD\VectoMonitoring.xsd"> + <SubType>Designer</SubType> + </EmbeddedResource> <None Include="Utils\VectoVersionCore.tt"> <Generator>TextTemplatingFileGenerator</Generator> <LastGenOutput>VectoVersionCore.cs</LastGenOutput> diff --git a/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs index a12d7a7f3021de1e32df601ba98e30d0c03c6298..f23bdd9ebd54235c969451c68aa44aba53bf4420 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs @@ -31,7 +31,6 @@ using System.IO; using NUnit.Framework; -using NUnit.Framework.Internal; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Tests.Utils; diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs index 94f308f06f801301bda6ba2f1871c0dbd6cc8925..32150285bb1d8c30b17b4bdf2e84682c2bca2aa0 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs @@ -117,7 +117,7 @@ namespace TUGraz.VectoCore.Tests.Integration var val2 = new XMLValidator(XmlReader.Create(customerFile)); Assert.IsTrue(val2.ValidateXML(XmlDocumentType.CustomerReport)); - var val3 = new XMLValidator(XmlReader.Create(customerFile)); + var val3 = new XMLValidator(XmlReader.Create(monitoringFile)); Assert.IsTrue(val3.ValidateXML(XmlDocumentType.MonitoringReport)); } diff --git a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs index 1afb697da649d8b747f0214db03eb796e50ecf3c..6d45954ac232486b4898ce309a6b6b9f102e4435 100644 --- a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs +++ b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs @@ -140,13 +140,13 @@ namespace TUGraz.VectoCore.Tests.Integration jobContainer.WaitFinished(); var mrfValidator = GetValidator(xmlReport.FullReport); - mrfValidator.ValidateXML(XmlDocumentType.ManufacturerReport); + mrfValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); var cifValidator = GetValidator(xmlReport.CustomerReport); - cifValidator.ValidateXML(XmlDocumentType.CustomerReport); + cifValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); var monitoringValidator = GetValidator(xmlReport.MonitoringReport); - monitoringValidator.ValidateXML(XmlDocumentType.MonitoringReport); + monitoringValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport); } private static XMLValidator GetValidator(XDocument xmlReport)