git_bsmd/nsw/HIS-NORD/xsd.assert/hazmat_reeder.xsd
Daniel Schick 3ce90d643a 3.0.8
Erweiterung Dakosy, HIS-Nord (erste Anfänge)
2016-04-03 09:10:35 +00:00

292 lines
11 KiB
XML

<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 02.02.2016 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="generalcargo">
<xs:sequence>
<xs:element name="LoadUnit" type="loadunit" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="loadunit">
<xs:sequence>
<xs:element name="HandlingCode" type="handlingcode-type"/>
<!-- neu in 2-0 neues Element StowagePositionBayRowTier bei Containern-->
<xs:choice minOccurs="0">
<xs:element name="LocationOnBoard" type="string1-24-type" minOccurs="0"/>
<xs:element name="StowagePositionBayRowTier" type="stowagepositionbayrowtier" minOccurs="0"/>
</xs:choice>
<xs:element name="PortOfLoadingLocode" type="locode-type" minOccurs="0"/>
<xs:element name="PortOfDischargeLocode" type="locode-type" minOccurs="0"/>
<xs:element name="CargoCodeNST" type="cargocode-type"/>
<xs:element name="CargoNumberOfItems" type="posint-type" minOccurs="0"/>
<xs:element name="CargoGrossQuantity_TNE" type="posfloat-type"/>
<xs:element name="DGList" type="dglist" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="stowagepositionbayrowtier">
<xs:sequence>
<xs:element name="Bay" type="bay-type"/>
<xs:element name="Row" type="cargocode-type"/>
<xs:element name="Tier" type="cargocode-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dglist">
<xs:choice maxOccurs="unbounded">
<xs:element name="LoadPositionIMDG" type="position-imdg" maxOccurs="unbounded"/>
<xs:element name="LoadPositionIBC" type="position-ibc" maxOccurs="unbounded"/>
<xs:element name="LoadPositionIGC" type="position-igc" maxOccurs="unbounded"/>
<xs:element name="LoadPositionMARPOL" type="position-marpol" maxOccurs="unbounded"/>
<xs:element name="LoadPositionIMSBC" type="position-imsbc" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="position-imdg">
<xs:sequence>
<xs:element name="UNNumber" type="unnumber-type"/>
<xs:element name="IMOClass" type="imoclass-type"/>
<xs:element name="PackingGroup" type="packinggroup-type" minOccurs="0"/>
<xs:element name="TechnicalName" type="string1-255-type" minOccurs="0"/>
<xs:element name="NetMassKGM" type="posfloat-type" minOccurs="0"/>
<xs:element name="GrossMassKGM" type="posfloat-type" minOccurs="0"/>
<xs:element name="CubeMTQ" type="posfloat-type" minOccurs="0"/>
<xs:element name="NumberOfPackages" type="posint-type"/>
<xs:choice maxOccurs="3">
<xs:element name="PackageName" type="string1-99-type"/>
<xs:element name="PackageCode" type="string1-24-type"/>
<xs:element name="PackageType" type="string1-99-type"/>
</xs:choice>
<xs:element name="LimitedQuantities" type="yorn-type"/>
<xs:element name="ExceptedQuantities" type="yorn-type"/>
<xs:element name="Class1NEW_KGM" type="posfloat0-type" minOccurs="0"/>
<xs:element name="FlashpointCEL" type="flashpointcel-type" minOccurs="0"/>
<xs:element name="ControlTempCEL" type="xs:float" minOccurs="0"/>
<xs:element name="EmergencyTempCEL" type="xs:float" minOccurs="0"/>
<xs:element name="Class7NuclideName" type="string1-99-type" minOccurs="0"/>
<xs:element name="Class7MaxActivityBQL" type="posfloat0-type" minOccurs="0"/>
<xs:element name="Class7Category" type="class7cat-type" minOccurs="0"/>
<xs:element name="Class7TI" type="class7ti-type" minOccurs="0"/>
<xs:element name="Class7CSI" type="class7csi-type" minOccurs="0"/>
<xs:element name="Remarks" type="string1-255-type" minOccurs="0"/>
<xs:element name="CompatibilityGroup" type="class1cg-type" minOccurs="0"/>
<!-- neu in 2-0 ProperShippingName von 255 auf 500 Anzahl Zeichen gestiegen-->
<xs:element name="ProperShippingName" type="string1-500-type"/>
<xs:element name="SubsidiaryRisks" type="subsidiaryrisks" minOccurs="0"/>
<xs:element name="MarinePollutant" type="yorn-type"/>
<xs:element name="GeneralCargoIBC" type="yorn-type" minOccurs="0"/>
<xs:element name="ContainerNumber" type="string1-24-type" minOccurs="0"/>
<xs:element name="VehicleLicenseNumber" type="string1-24-type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required" />
<xs:assert test="count(NetMassKGM) + count(GrossMassKGM) + count(CubeMTQ) ge 1"/>
<xs:assert test="count(PackageName) le 1 and count(PackageCode) le 1 and count(PackageType) le 1"/>
</xs:complexType>
<xs:complexType name="subsidiaryrisks">
<xs:sequence>
<xs:element name="SubsidiaryRisk" type="risk-type" minOccurs="1" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="position-ibc">
<xs:sequence>
<xs:element name="Name" type="string1-255-type"/>
<xs:element name="SpecRef15_19" type="yorn-type" minOccurs="0"/>
<xs:element name="PollutionCategory" type="polcat-type"/>
<xs:element name="NetMassKGM" type="posfloat-type"/>
<xs:element name="FlashpointInfo" type="flashpointinfo-type"/>
<xs:element name="Remarks" type="string1-255-type" minOccurs="0"/>
<xs:element name="Hazards" type="hazard-type" minOccurs="0"/>
<xs:element name="FlashpointCEL" type="flashpointcel-type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required" />
<xs:assert test="if (FlashpointInfo eq 'LE60CEL') then FlashpointCEL else empty(FlashpointCEL)"/>
</xs:complexType>
<xs:complexType name="position-igc">
<xs:sequence>
<xs:element name="UNNumber" type="unnumber-type" minOccurs="0"/>
<xs:element name="Name" type="string1-255-type"/>
<xs:element name="NetMassKGM" type="posfloat-type"/>
<xs:element name="Remarks" type="string1-255-type" minOccurs="0"/>
<xs:element name="IMOClass" type="imoclass-type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required" />
</xs:complexType>
<xs:complexType name="position-marpol">
<xs:sequence>
<xs:element name="Name" type="string1-255-type"/>
<xs:element name="NetMassKGM" type="posfloat-type"/>
<xs:element name="Remarks" type="string1-255-type" minOccurs="0"/>
<xs:element name="FlashpointInformation" type="flashpointinfo-type"/>
<xs:element name="Flashpoint_CEL" type="flashpointcel-type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required" />
<xs:assert test="if (FlashpointInformation eq 'LE60CEL') then Flashpoint_CEL else empty(Flashpoint_CEL)"/>
</xs:complexType>
<xs:complexType name="position-imsbc">
<xs:sequence>
<xs:element name="UNNumber" type="unnumber-type" minOccurs="0"/>
<xs:element name="Name" type="string1-255-type"/>
<xs:element name="MHB" type="yorn-type" />
<xs:element name="NetMassKGM" type="posfloat-type"/>
<xs:element name="Remarks" type="string1-255-type" minOccurs="0"/>
<xs:element name="IMOClass" type="imoclass-type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required" />
<xs:assert test="if (MHB eq 'N') then UNNumber and IMOClass else empty(UNNumber) and empty(IMOClass)"/>
</xs:complexType>
<xs:complexType name="dgcodes">
<xs:sequence>
<xs:element name="DGCode" type="dgcode-type" maxOccurs="6"/>
</xs:sequence>
<xs:assert test="count(DGCode[text()='IMDG']) le 1 and count(DGCode[text()='IMDG_MoU']) le 1 and count(DGCode[text()='IBC']) le 1 and
count(DGCode[text()='MARPOL_ANNEX_I']) le 1 and count(DGCode[text()='IGC']) le 1 and count(DGCode[text()='IMSBC']) le 1"/>
</xs:complexType>
<!-- ============ simple types ============ -->
<xs:simpleType name="imoclass-type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="10" />
<xs:pattern value="[0-9A-Z\.]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="bay-type">
<xs:restriction base="xs:string">
<xs:minLength value='3'/>
<xs:maxLength value='3'/>
<xs:pattern value="[0-9]+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="cargocode-type">
<xs:restriction base="xs:string">
<xs:minLength value='2'/>
<xs:maxLength value='2'/>
<xs:pattern value="[0-9]+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="class1cg-type">
<xs:restriction base='xs:string'>
<xs:minLength value='1' />
<xs:maxLength value='1' />
<xs:pattern value="[A-Z]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="flashpointcel-type">
<xs:restriction base='xs:string'>
<xs:minLength value='1'/>
<xs:maxLength value='10'/>
<xs:pattern value="[&lt;&gt;]?[\-]?[0-9]+(\.[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="class7csi-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="class7ti-type">
<xs:restriction base='xs:float'>
<xs:minInclusive value="0" />
<xs:maxInclusive value="50" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="class7cat-type">
<xs:restriction base="xs:integer">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="risk-type">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="11" />
</xs:restriction>
</xs:simpleType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="dgcode-type">
<xs:restriction base="xs:string">
<xs:enumeration value="IMDG"/>
<xs:enumeration value="IMDG_MoU"/>
<xs:enumeration value="IBC"/>
<xs:enumeration value="MARPOL_ANNEX_I"/>
<xs:enumeration value="IGC"/>
<xs:enumeration value="IMSBC"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="infclass-type">
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="INF1"/>
<xs:enumeration value="INF2"/>
<xs:enumeration value="INF3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="packinggroup-type">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="I" />
<xs:enumeration value="II" />
<xs:enumeration value="III" />
<xs:enumeration value="NONE" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="flashpointinfo-type">
<xs:restriction base="xs:string">
<xs:enumeration value="NF"/>
<xs:enumeration value="GT60CEL"/>
<xs:enumeration value="LE60CEL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="handlingcode-type">
<xs:restriction base="xs:string">
<xs:enumeration value="LOAD"/>
<xs:enumeration value="DISCHARGE"/>
<xs:enumeration value="TRANSIT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="polcat-type">
<xs:restriction base="xs:string">
<xs:enumeration value="X"/>
<xs:enumeration value="Y"/>
<xs:enumeration value="Z"/>
<xs:enumeration value="OS"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="hazard-type">
<xs:restriction base="xs:string">
<xs:enumeration value="P"/>
<xs:enumeration value="S"/>
<xs:enumeration value="S/P"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>