aktueller Stand

This commit is contained in:
Daniel Schick 2015-07-12 18:12:31 +00:00
parent 87c54023c1
commit 6876ef0d87
33 changed files with 8864 additions and 30 deletions

Binary file not shown.

View File

@ -0,0 +1,25 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="bpol">
<xs:sequence>
<xs:element name="StowawayOnBoard" type="yorn-type"/>
<xs:element name="PortsOfItinery" type="portsofitinery" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portsofitinery">
<xs:sequence>
<xs:element name="PortOfItinery" type="portofitinery" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofitinery">
<xs:sequence>
<xs:element name="PortOfItineryName" type="string1-99-type"/>
<xs:element name="PortOfItineryETA" type="xs:dateTime"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required"/>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="crew">
<xs:sequence>
<xs:element name="CrewMembers" type="crewmembers"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="crewmembers">
<xs:sequence>
<xs:element name="CrewMember" type="crewmember" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="crewmember">
<xs:sequence>
<xs:element name="CrewMemberLastName" type="string1-99-type"/>
<xs:element name="CrewMemberFirstName" type="string1-99-type"/>
<xs:element name="CrewMemberPlaceOfBirth" type="string1-99-type"/>
<xs:element name="CrewMemberDateOfBirth" type="xs:date"/>
<xs:element name="CrewMemberGender" type="gender-type" minOccurs="0"/>
<xs:element name="CrewMemberNationality" type="flag-type"/>
<xs:element name="CrewMemberIdentityDocumentType" type="document-type"/>
<xs:element name="CrewMemberIdentityDocumentId" type="string1-99-type"/>
<xs:element name="CrewMemberVisaNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="CrewMemberDuty" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,803 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 02.07.2015 -->
<!-- XML Schema:data exchange NSW - german ports optionale Meldetypen-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="serv_reeder.xsd"/>
<xs:include schemaLocation="prearrival72_reeder.xsd"/>
<xs:include schemaLocation="sec_reeder.xsd"/>
<xs:include schemaLocation="mdh_reeder.xsd"/>
<xs:include schemaLocation="waste_reeder.xsd"/>
<xs:include schemaLocation="bpol_reeder.xsd"/>
<xs:include schemaLocation="pas_reeder.xsd"/>
<xs:include schemaLocation="crew_reeder.xsd"/>
<xs:include schemaLocation="tow_reeder.xsd"/>
<xs:element name="nsw" type="nsw"/>
<xs:complexType name="nsw">
<xs:sequence>
<xs:element name="conveyance" type="conveyance"/>
</xs:sequence>
<xs:attribute name="xml_version" type="xs:string" use="required" fixed="HIS-NORD NSW_V1-0"/>
<xs:attribute name="protect_version" type="xs:string" use="required" fixed="PROTE11"/>
<xs:attribute name="date_registration" type="xs:dateTime" use="required"/>
<xs:attribute name="message_sender" type="xs:string" use="required"/>
<xs:attribute name="message_recipient" type="xs:string" use="required"/>
<xs:attribute name="document_reference" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="conveyance">
<xs:sequence>
<xs:choice id="visit">
<!-- neu in 1-0 -->
<xs:element name="VisitId" type="visitid-type"/>
<xs:element name="TransitId" type="transitid-type"/>
<xs:sequence>
<xs:element name="name" type="referenceid-type" minOccurs="0"/>
<xs:element name="code" type="string1-99-type"/>
</xs:sequence>
</xs:choice>
<xs:element name="owner_sender" type="broker_owner"/>
<xs:element name="vessel" type="vessel-type"/>
<xs:choice id="noanod">
<xs:element name="Import" type="import"/>
<xs:element name="Export" type="export"/>
<xs:element name="Transit" type="transit"/>
</xs:choice>
<!-- neu in 1-0 -->
<xs:element name="PersonsOnBoard" type="pob"/>
<xs:element name="NameOfMaster" type="string1-99-type" minOccurs="0"/>
<xs:element name="Draught_DMT" type="posfloat-type" minOccurs="0"/>
<xs:element name="Info" type="info" minOccurs="0"/>
<xs:element name="BunkerFuelList" type="bunker-type" minOccurs="0"/>
<xs:choice id="hza" minOccurs="0">
<xs:element name="NoHazmatOnBoard" type="y-type"/>
<xs:sequence>
<xs:element name="HazmatCargoManifestOnBoard" type="yorn-type"/>
<xs:element name="INFClass" type="infclass-type" minOccurs="0"/>
<xs:element name="DGCodes" type="dgcodes"/>
</xs:sequence>
</xs:choice>
<xs:element name="GeneralCargo" type="generalcargo" minOccurs="0"/>
<!--OPTIONALE MELDETYPEN-->
<xs:element name="Serv" type="serv" minOccurs="0"/>
<xs:element name="Pre72H" type="pre72" minOccurs="0"/>
<xs:choice id="sec" minOccurs="0">
<xs:sequence>
<xs:element name="SECSimplification" type="y-type"/>
<xs:element name="PortOfCallWhereCompleteSECNotified" type="locode-type"/>
</xs:sequence>
<xs:element name="SEC" type="sec"/>
</xs:choice>
<xs:choice id="mdh" minOccurs="0">
<xs:sequence>
<xs:element name="MDHSimplification" type="y-type"/>
<xs:element name="PortOfCallWhereCompleteMDHNotified" type="locode-type"/>
</xs:sequence>
<xs:element name="MDH" type="mdh"/>
</xs:choice>
<xs:choice id="was" minOccurs="0">
<xs:element name="WasteDisposalValidExemption" type="y-type"/>
<xs:element name="Waste" type="was"/>
</xs:choice>
<xs:element name="BPOL" type="bpol" minOccurs="0"/>
<xs:element name="PAS" type="pas" minOccurs="0"/>
<xs:element name="CREW" type="crew" minOccurs="0"/>
<xs:element name="TOWS" type="tows" minOccurs="0"/>
</xs:sequence>
<xs:assert test="if ((count(NoHazmatOnBoard) eq 1) or (count(HazmatCargoManifestOnBoard) eq 0)) then empty(GeneralCargo/LoadUnit/LocationOnBoard) and
empty(GeneralCargo/LoadUnit/PortOfLoadingLocode) and empty(GeneralCargo/LoadUnit/PortOfDischargeLocode)
and empty(GeneralCargo/LoadUnit/DGList)
else GeneralCargo/LoadUnit/LocationOnBoard and GeneralCargo/LoadUnit/PortOfLoadingLocode
and GeneralCargo/LoadUnit/PortOfDischargeLocode and GeneralCargo/LoadUnit/DGList"/>
</xs:complexType>
<xs:complexType name="bunker-type">
<xs:sequence>
<xs:element name="BunkerFuel" type="bunkerfuel" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bunkerfuel">
<xs:sequence>
<xs:element name="Name" type="string1-99-type"/>
<xs:element name="NetMassTNE" type="posfloat-type"/>
</xs:sequence>
</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>
<xs:complexType name="generalcargo">
<xs:sequence>
<xs:element name="LoadUnit" type="loadunit" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="loadunit">
<xs:sequence>
<xs:element name="HandlingCode" type="handlingcode-type"/>
<xs:element name="LocationOnBoard" type="string1-24-type" minOccurs="0"/>
<xs:element name="PortOfLoadingLocode" type="locode-type" minOccurs="0"/>
<xs:element name="PortOfDischargeLocode" type="locode-type" minOccurs="0"/>
<!-- neu in 1-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="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"/>
<!-- neu in 1-0 -->
<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"/>
<!-- neu in 1-0 -->
<xs:element name="CompatibilityGroup" type="class1cg-type" minOccurs="0"/>
<xs:element name="ProperShippingName" type="string1-255-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="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"/>
<!-- neu in 1-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"/>
<!-- neu in 1-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"/>
<!-- neu in 1-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"/>
<!-- neu in 1-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="import">
<xs:sequence>
<xs:element name="LastPort" type="lastport"/>
<xs:element name="PortOfCall" type="portofcallhazmat"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="export">
<xs:sequence>
<xs:element name="PortOfCall" type="portofcallhazmat"/>
<xs:element name="NextPort" type="nextporthazmat" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="transit">
<xs:sequence>
<xs:element name="LastPort" type="lastport"/>
<xs:element name="NextPort" type="nextporthazmat" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lastport">
<xs:sequence>
<xs:element name="Locode" type="locode-type" default="ZZUKN"/>
<xs:element name="ETD" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
<xs:assert test="if (Locode eq 'ZZUKN') then empty(ETD) else ETD"/>
</xs:complexType>
<xs:complexType name="portofcallhazmat">
<xs:sequence>
<xs:element name="Locode" type="locode-type"/>
<xs:element name="ETA" type="xs:dateTime"/>
<xs:element name="ETD" type="xs:dateTime"/>
<xs:element name="ATA" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ATD" type="xs:dateTime" minOccurs="0"/>
<!-- neu in 1-0 -->
<xs:element name="CallPurposes" type="callpurposes" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="nextporthazmat">
<xs:sequence>
<xs:element name="Locode" type="locode-type" default="ZZUKN"/>
<xs:element name="ETA" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
<xs:assert test="if (Locode eq 'ZZUKN') then empty(ETA) else ETA"/>
</xs:complexType>
<xs:complexType name="vessel-type">
<xs:sequence>
<xs:element name="IMONumber" type="imonumber-type" minOccurs="0"/>
<xs:element name="CallSign" type="callsign-type"/>
<xs:element name="MMSINumber" type="mmsinumber-type"/>
<xs:element name="ENINumber" type="eninumber-type" minOccurs="0"/>
<xs:element name="ShipName" type="string1-99-type"/>
<xs:element name="Flag" type="flag-type"/>
<!-- neu in 1-0 -->
<xs:element name="LengthOverall_MTR" type="posfloat-type"/>
<xs:element name="Beam_MTR" type="posfloat-type"/>
<xs:element name="GrossTonnage" type="posint-type"/>
<xs:element name="PortOfRegistry" type="locode-type"/>
<xs:element name="InmarsatCallNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="ShipType" type="ship-type"/>
<xs:element name="ISMCompany" type="ismcompany" minOccurs="0"/>
</xs:sequence>
<xs:assert test="count(IMONumber) + count(ENINumber) eq 1"/>
<xs:assert test="if (GrossTonnage/number() ge 500) then ISMCompany else true()"/>
</xs:complexType>
<xs:complexType name="broker_owner">
<xs:sequence>
<xs:element name="name_short" type="string1-99-type"/>
<xs:element name="name_long" type="string1-99-type"/>
<xs:element name="address" type="address-type"/>
<xs:element name="contact" type="contacts"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contacts">
<xs:sequence>
<xs:element name="name" type="string1-99-type"/>
<xs:element name="firstname" type="string1-99-type" minOccurs="0"/>
<xs:element name="phone" type="string1-99-type"/>
<xs:element name="fax" type="string1-99-type" minOccurs="0"/>
<xs:element name="email" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="packages">
<xs:sequence>
<xs:element name="numberofpackages" type="xs:integer"/>
<xs:element name="packagediscription" type="xs:string"/>
<xs:element name="packagecode" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="measure">
<xs:sequence>
<xs:element name="dimension" type="xs:string"/>
<xs:element name="value" type="xs:string"/>
<xs:element name="kind" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="class7">
<xs:sequence>
<xs:element name="radioactivity" type="measure"/>
<xs:element name="criticalindex" type="measure"/>
<xs:element name="transportindex" type="measure"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="address-type">
<xs:sequence>
<xs:element name="StreetNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="Place" type="string1-99-type" minOccurs="0"/>
<xs:element name="PostCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="Locode" type="locode-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- neu in 1-0 -->
<xs:complexType name="callpurposes">
<xs:sequence>
<xs:element name="CallPurpose" type="callpurpose" maxOccurs="9" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="callpurpose">
<xs:sequence>
<xs:element name="CallPurposeCode" type="callpurposecode-type"/>
<xs:element name="CallPurposeDescription" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ismcompany">
<xs:sequence>
<xs:element name="ISMCompanyName" type="string1-99-type"/>
<xs:element name="ISMCompanyId" type="companyid-type"/>
<xs:element name="ISMCompanyStreetAndNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="ISMCompanyPostalCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="ISMCompanyCity" type="string1-99-type" minOccurs="0"/>
<xs:element name="ISMCompanyCountry" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="pob">
<xs:sequence>
<xs:element name="TotalPersonsOnBoard" type="pob-type"/>
<xs:element name="TotalCrewMembersOnBoard" type="posint-type"/>
<xs:element name="TotalPassengersOnBoard" type="posint0-type"/>
<xs:element name="TotalStowawaysOnBoard" type="posint0-type"/>
</xs:sequence>
<xs:assert test="(TotalCrewMembersOnBoard + TotalPassengersOnBoard + TotalStowawaysOnBoard) eq TotalPersonsOnBoard"/>
</xs:complexType>
<xs:complexType name="info">
<xs:sequence>
<xs:element name="ShippingArea" type="shippingarea-type"/>
<xs:element name="RequestedPositionInPortOfCall" type="string1-99-type"/>
<xs:element name="SpecialRequirementsOfShipAtBerth" type="string1-255-type" minOccurs="0"/>
<xs:element name="ConstructionCharacteristicsOfShip" type="string0-99-type" minOccurs="0"/>
<xs:element name="FumigatedBulkCargo" type="yorn-type"/>
<xs:element name="DeadWeightSummer_TNE" type="xs:float" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="subsidiaryrisks">
<xs:sequence>
<xs:element name="SubsidiaryRisk" type="risk-type" minOccurs="1" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
<!-- ============ simple types ============ -->
<xs:simpleType name="callsign-type">
<xs:restriction base='xs:string'>
<xs:minLength value='4' />
<xs:maxLength value='7' />
<xs:pattern value="[A-Za-z0-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="email-type">
<xs:restriction base='xs:string'>
<xs:minLength value='5' />
<xs:maxLength value='100' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="eninumber-type">
<xs:restriction base="xs:string">
<xs:minLength value='8' />
<xs:maxLength value='8' />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="flag-type">
<xs:restriction base='xs:string'>
<xs:minLength value='2' />
<xs:maxLength value='2' />
<xs:pattern value="[A-Z]*" />
</xs:restriction>
</xs:simpleType>
<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="imonumber-type">
<xs:restriction base="xs:string">
<xs:minLength value="7" />
<xs:maxLength value="7" />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="locode-type">
<xs:restriction base='xs:string'>
<xs:minLength value='5' />
<xs:maxLength value='5' />
<xs:pattern value="[A-Z][A-Z][A-Z0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mmsinumber-type">
<xs:restriction base='xs:string'>
<xs:minLength value='9' />
<xs:maxLength value='10' />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ship-type">
<xs:restriction base="xs:string">
<xs:minLength value='2'/>
<xs:maxLength value='3'/>
<xs:pattern value="[A-Z0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="phonefax-type">
<xs:restriction base='xs:string'>
<xs:minLength value='2' />
<xs:maxLength value='50' />
<xs:pattern value="[\+]{0,1}[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pob-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="1" />
<xs:maxInclusive value="99998" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint-type">
<xs:restriction base="xs:integer">
<xs:minExclusive value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="unnumber-type">
<xs:restriction base="xs:string">
<xs:minLength value="4" />
<xs:maxLength value="4" />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="version-type">
<xs:restriction base='xs:string'>
<xs:minLength value='3' />
<xs:maxLength value='10' />
<xs:pattern value="[0-9]*.[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posfloat-type">
<xs:restriction base="xs:float">
<xs:minExclusive value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="referencecode-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='32' />
<xs:pattern value="[0-9a-zA-Z]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="referenceid-type">
<xs:restriction base="xs:string">
<xs:minLength value='0' />
<xs:maxLength value='100' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-24-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='24' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-99-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='99' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-255-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='255' />
</xs:restriction>
</xs:simpleType>
<!-- neu in 1-0 -->
<xs:simpleType name="callpurposecode-type">
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxExclusive value="1000"/>
</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="companyid-type">
<xs:restriction base="xs:string">
<xs:minLength value='7'/>
<xs:maxLength value='7'/>
</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="risk-type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="11" />
</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="visitid-type">
<xs:restriction base="xs:string">
<xs:pattern value="DE[A-Z]{3}-[0-9]{4}-[A-Z]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="transitid-type">
<xs:restriction base="xs:string">
<xs:pattern value="ZZNOK-[0-9]{4}-[A-Z]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string0-99-type">
<xs:restriction base="xs:string">
<xs:minLength value='0' />
<xs:maxLength value='99' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint0-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posfloat0-type">
<xs:restriction base='xs:float'>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="class7cat-type">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
</xs:restriction>
</xs:simpleType>
<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="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"/>
<!--neu 02.07.2015-->
<xs:enumeration value="TRANSIT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="infclass-type">
<xs:restriction base="xs:string">
<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" />
<!-- neu in 1-0 -->
<xs:enumeration value="NONE" />
</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" />
<!-- neu in 1-0 -->
<xs:enumeration value="OS" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yorn-type">
<xs:restriction base="xs:string">
<xs:enumeration value="Y" />
<xs:enumeration value="N" />
</xs:restriction>
</xs:simpleType>
<!-- neu in 1-0 -->
<xs:simpleType name="shippingarea-type">
<xs:restriction base="xs:string">
<xs:enumeration value="NORTH_BALTIC_SEA"/>
<xs:enumeration value="EUROPE"/>
<xs:enumeration value="OVERSEAS"/>
</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:simpleType name="y-type">
<xs:restriction base="xs:string">
<xs:enumeration value="Y"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="gender-type">
<xs:restriction base="xs:string">
<xs:enumeration value="MALE"/>
<xs:enumeration value="FEMALE"/>
<xs:enumeration value="OTHER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="document-type">
<xs:restriction base="xs:string">
<xs:enumeration value="IDENTITY_CARD"/>
<xs:enumeration value="PASSPORT"/>
<xs:enumeration value="MUSTER_BOOK"/>
<xs:enumeration value="PICTURE_ID"/>
<xs:enumeration value="RESIDENTAL_PERMIT"/>
<xs:enumeration value="OTHER_LEGAL_IDENTITY_DOCUMENT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint1-3-type">
<xs:restriction base="xs:integer">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,82 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="mdh">
<xs:sequence>
<xs:element name="NonAccidentialDeathsDuringVoyage" type="yorn-type"/>
<xs:element name="NonAccidentialDeathsDuringVoyageCount" type="posint-type" minOccurs="0"/>
<xs:element name="SuspisionInfectiousNature" type="yorn-type"/>
<xs:element name="NumberOfIllPersonsHigherThanExpected" type="yorn-type"/>
<xs:element name="NumberOfIllPersons" type="posint-type" minOccurs="0"/>
<xs:element name="SickPersonOnBoard" type="yorn-type"/>
<xs:element name="MedicalConsulted" type="yorn-type"/>
<xs:element name="AwareOfConditionsForFurtherInfections" type="yorn-type"/>
<xs:element name="SanitaryMeasuresApplied" type="yorn-type"/>
<xs:element name="SanitaryMeasuresDetails" type="sanitarydetails" minOccurs="0"/>
<xs:element name="StowawaysDetected" type="yorn-type"/>
<xs:element name="StowawayJoiningLocation" type="string1-99-type" minOccurs="0"/>
<xs:element name="SickAnimalOrPetOnBoard" type="yorn-type"/>
<xs:element name="ValidSanitaryControlExemptionOrCertificateOnBoard" type="yorn-type"/>
<xs:element name="ValidSanitaryControlExemptionOrCertificate" type="sanitarycertificate" minOccurs="0"/>
<xs:element name="SanitaryControlReinspectionRequired" type="yorn-type"/>
<xs:element name="InfectedAreaVisited" type="yorn-type"/>
<xs:element name="InfectedArea" type="infectedarea" minOccurs="0"/>
<xs:element name="PortsOfCallLast30Days" type="portofcalls"/>
</xs:sequence>
<xs:assert test="if (NonAccidentialDeathsDuringVoyage eq 'Y') then NonAccidentialDeathsDuringVoyageCount
else empty(NonAccidentialDeathsDuringVoyageCount)"/>
<xs:assert test="if (NumberOfIllPersonsHigherThanExpected eq 'Y') then NumberOfIllPersons else empty(NumberOfIllPersons)"/>
<xs:assert test="if (SanitaryMeasuresApplied eq 'Y') then SanitaryMeasuresDetails else empty(SanitaryMeasuresDetails)"/>
<xs:assert test="if (StowawaysDetected eq 'Y') then StowawayJoiningLocation else empty(StowawayJoiningLocation)"/>
<xs:assert test="if (ValidSanitaryControlExemptionOrCertificateOnBoard eq 'Y') then ValidSanitaryControlExemptionOrCertificate
else empty(ValidSanitaryControlExemptionOrCertificate)"/>
<xs:assert test="if (InfectedAreaVisited eq 'Y') then InfectedArea else empty(InfectedArea)"/>
</xs:complexType>
<xs:complexType name="sanitarydetails">
<xs:sequence>
<xs:element name="SanitaryMeasuresType" type="string1-99-type"/>
<xs:element name="SanitaryMeasuresLocation" type="string1-99-type"/>
<xs:element name="SanitaryMeasuresDate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sanitarycertificate">
<xs:sequence>
<xs:element name="PlaceOfIssue" type="string1-99-type"/>
<xs:element name="DateOfIssue" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="infectedarea">
<xs:sequence>
<xs:element name="InfectedAreaPort" type="string1-99-type"/>
<xs:element name="InfectedAreaDate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofcalls">
<xs:sequence>
<xs:element name="PortOfCallLast30Days" type="portofcallmdh" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofcallmdh">
<xs:sequence>
<xs:element name="PortOfCallLast30DaysLocode" type="locode-type"/>
<xs:element name="PortOfCallLast30DaysDateOfDeparture" type="xs:date"/>
<xs:element name="PortOfCallLast30DaysCrewMembersJoined" type="yorn-type"/>
<xs:element name="PortOfCallLast30DaysCrewJoinedShip" type="crewjoined" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required"/>
<xs:assert test="if (PortOfCallLast30DaysCrewMembersJoined eq 'Y') then PortOfCallLast30DaysCrewJoinedShip
else empty(PortOfCallLast30DaysCrewJoinedShip)"/>
</xs:complexType>
<xs:complexType name="crewjoined">
<xs:sequence>
<xs:element name="PortOfCallLast30DaysCrewJoinedShipName" type="string1-99-type" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,34 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="pas">
<xs:sequence>
<xs:element name="Passengers" type="passengers"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="passengers">
<xs:sequence>
<xs:element name="Passenger" type="passenger" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="passenger">
<xs:sequence>
<xs:element name="PassengerLastName" type="string1-99-type"/>
<xs:element name="PassengerFirstName" type="string1-99-type"/>
<xs:element name="PassengerPlaceOfBirth" type="string1-99-type"/>
<xs:element name="PassengerDateOfBirth" type="xs:date"/>
<xs:element name="PassengerGender" type="gender-type" minOccurs="0"/>
<xs:element name="PassengerNationality" type="flag-type"/>
<xs:element name="PassengerIdentityDocumentType" type="document-type"/>
<xs:element name="PassengerIdentityDocumentId" type="string1-99-type"/>
<xs:element name="PassengerVisaNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="PassengerPortOfEmbarkation" type="locode-type"/>
<xs:element name="PassengerPortOfDisembarkation" type="locode-type"/>
<xs:element name="PassengerInTransit" type="yorn-type"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,41 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 12.03.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="pre72">
<xs:sequence>
<xs:element name="Tanker" type="yorn-type"/>
<xs:element name="TankerDetails" type="tankerdetails" minOccurs="0"/>
<xs:element name="PlannedOperations" type="string1-99-type"/>
<xs:element name="PlannedWorks" type="string1-255-type"/>
<xs:element name="DateOfLastExpandedInspection" type="xs:date"/>
<xs:element name="PlannedPeriodOfStay_HUR" type="posfloat0-type"/>
</xs:sequence>
<xs:assert test="if (Tanker eq 'Y') then TankerDetails else empty(TankerDetails)"/>
</xs:complexType>
<xs:complexType name="tankerdetails">
<xs:sequence>
<xs:element name="TankerHullConfiguration" type="hullconfig-type"/>
<xs:element name="ConditionCargoBallastTanks" type="cargocondition-type"/>
<xs:element name="NatureOfCargo" type="string1-99-type" minOccurs="0"/>
<xs:element name="VolumeOfCargo_TNE" type="posfloat-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="hullconfig-type">
<xs:restriction base="xs:string">
<xs:enumeration value="SINGLE_HULL"/>
<xs:enumeration value="SINGLE_HULL_WITH_SBT"/>
<xs:enumeration value="DOUBLE_HULL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="cargocondition-type">
<xs:restriction base="xs:string">
<xs:enumeration value="FULL"/>
<xs:enumeration value="EMPTY"/>
<xs:enumeration value="INERTED"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,108 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 12.03.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="sec">
<xs:sequence>
<xs:element name="CSOLastName" type="string1-99-type"/>
<xs:element name="CSOFirstName" type="string1-99-type" minOccurs="0"/>
<xs:element name="CSOPhone" type="string1-99-type"/>
<xs:element name="CSOFax" type="string1-99-type" minOccurs="0"/>
<xs:element name="CSOEMail" type="string1-99-type" minOccurs="0"/>
<xs:element name="ValidISSCOnBoard" type="yorn-type"/>
<xs:element name="ReasonsForNoValidISSC" type="string1-255-type" minOccurs="0"/>
<xs:element name="ISSCType" type="issc-type"/>
<xs:element name="ISSCIssuerType" type="isscissuer-type"/>
<xs:element name="ISSCIssuerName" type="string1-99-type"/>
<xs:element name="ISSCDateOfExpiration" type="xs:date"/>
<xs:element name="ApprovedSecurityPlanOnBoard" type="yorn-type"/>
<xs:element name="CurrentShipSecurityLevel " type="posint1-3-type"/>
<xs:element name="PortFacilityOfArrival" type="string1-99-type"/>
<xs:element name="GeneralDescriptionOfCargo" type="cargodescription-type"/>
<xs:element name="Last10Ports" type="last10ports"/>
<xs:element name="LastActivities" type="lastactivities" minOccurs="0"/>
</xs:sequence>
<xs:assert test="if (ValidISSCOnBoard eq 'Y') then ReasonsForNoValidISSC else empty(ReasonsForNoValidISSC)"/>
</xs:complexType>
<xs:complexType name="last10ports">
<xs:sequence>
<xs:element name="LastPort" type="last10port" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="last10port">
<xs:sequence>
<xs:element name="PortFacilityPortName" type="string1-99-type" minOccurs="0"/>
<xs:element name="PortFacilityPortCountry" type="string1-99-type" minOccurs="0"/>
<xs:element name="PortFacilityPortLoCode" type="locode-type" minOccurs="0"/>
<xs:element name="PortFacilityDateOfArrival" type="xs:date"/>
<xs:element name="PortFacilityDateOfDeparture" type="xs:date"/>
<xs:element name="PortFacilityShipSecurityLevel" type="posint1-3-type"/>
<xs:element name="PortFacilitySecurityMattersToReport" type="string1-255-type" minOccurs="0"/>
<xs:element name="PortFacilityGISISCode" type="unnumber-type"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required"/>
<xs:assert test="if (count(PortFacilityPortLoCode) eq 0) then PortFacilityPortName and PortFacilityPortCountry else PortFacilityPortLoCode"/>
</xs:complexType>
<xs:complexType name="lastactivities">
<xs:sequence>
<xs:element name="LastActivity" type="lastactivity" minOccurs="0" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lastactivity">
<xs:sequence>
<xs:element name="ShipToShipActivityLocation" type="location"/>
<xs:element name="ShipToShipActivityDateFrom" type="xs:date"/>
<xs:element name="ShipToShipActivityDateTo" type="xs:date"/>
<xs:element name="ShipToShipActivityType" type="string1-255-type"/>
<xs:element name="ShipToShipActivitySecurityMattersToReportOf" type="string1-255-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="location">
<xs:choice maxOccurs="3">
<xs:element name="ShipToShipActivityLocationName" type="string1-255-type"/>
<xs:element name="ShipToShipActivityLocationLoCode" type="locode-type"/>
<xs:element name="ShipToShipActivityLocationCoordinates" type="coordinates"/>
</xs:choice>
<xs:assert test="count(ShipToShipActivityLocationName) le 1 and count(ShipToShipActivityLocationLoCode) le 1 and count(ShipToShipActivityLocationCoordinates) le 1"/>
</xs:complexType>
<xs:complexType name="coordinates">
<xs:sequence>
<xs:element name="ShipToShipActivityLocationCoordinatesLatitude" type="xs:integer"/>
<xs:element name="ShipToShipActivityLocationCoordinatesLongitude" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="issc-type">
<xs:restriction base="xs:string">
<xs:enumeration value="FULL"/>
<xs:enumeration value="INTERIM"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="isscissuer-type">
<xs:restriction base="xs:string">
<xs:enumeration value="ADMINISTRATION"/>
<xs:enumeration value="RSO"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="cargodescription-type">
<xs:restriction base="xs:string">
<xs:enumeration value="CONTAINER"/>
<xs:enumeration value="VEHICLES"/>
<xs:enumeration value="CONVENTIONAL_GENERAL_CARGO"/>
<xs:enumeration value="DRY_CARGO_IN_BULK"/>
<xs:enumeration value="LIQUID_CARGO_IN_BULK"/>
<xs:enumeration value="EMPTY"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,25 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="serv">
<xs:sequence>
<xs:element name="Services" type="services"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="services">
<xs:sequence>
<xs:element name="Service" type="service" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="service">
<xs:sequence>
<xs:element name="ServiceInvoiced" type="string1-99-type" minOccurs="0"/>
<xs:element name="ServiceBeneficiary" type="string1-99-type"/>
<xs:element name="ServiceInvoiceRecipient" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,50 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 12.03.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="tows">
<xs:sequence>
<xs:element name="TOW" type="tow" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tow">
<xs:sequence>
<xs:element name="TowageName" type="string1-99-type"/>
<xs:element name="TowageFlag" type="flag-type" minOccurs="0"/>
<xs:element name="TowageOperator" type="towageoperator" minOccurs="0"/>
<xs:element name="TowageGrossTonnage" type="posint-type" minOccurs="0"/>
<xs:element name="TowageLengthOverall_MTR" type="posfloat-type"/>
<xs:element name="TowageBeam_MTR" type="posfloat-type"/>
<xs:element name="TowagePurposeOfCall" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageDraught_DMT" type="posfloat-type"/>
<xs:element name="TowageRemarks" type="string1-255-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="towageoperator">
<xs:sequence>
<xs:element name="TowageOperatorCompanyName" type="string1-99-type" minOccurs="0"/>
<xs:element name="Address" type="address" minOccurs="0"/>
<xs:element name="Contact" type="contact" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="address">
<xs:sequence>
<xs:element name="TowageOperatorStreetAndNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageOperatorPostalCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="TowageOperatorCity" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageOperatorCountry" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contact">
<xs:sequence>
<xs:element name="TowageOperatorPhone" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageOperatorFax" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowareOperatorEMail" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,70 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="was">
<xs:sequence>
<xs:element name="LastWasteDisposalPort" type="locode-type"/>
<xs:element name="LastWasteDisposalDate" type="xs:date"/>
<xs:element name="WasteDisposalServiceProviderName" type="string0-99-type" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="WasteDisposalDelivery" type="wastedelivery-type"/>
<xs:element name="Wastes" type="wastes">
<xs:unique name="WasteUnique">
<xs:selector xpath="Waste"/>
<xs:field xpath="@WasteType"/>
</xs:unique>
</xs:element>
<xs:element name="ConfirmationOfCorrectness" type="yorn-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="wastes">
<xs:sequence>
<xs:element name="Waste" type="waste" minOccurs="9" maxOccurs="9"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="waste">
<xs:sequence>
<xs:element name="WasteDescription" type="string1-99-type" minOccurs="0"/>
<xs:element name="WasteDisposalAmount_MTQ" type="posfloat0-type"/>
<xs:element name="WasteDetails" type="wastedetails" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="WasteType" type="waste-type" use="required"/>
<xs:assert test="if (ends-with(@WasteType,'OTHERS') or starts-with(@WasteType,'CARGO')) then WasteDescription else empty(WasteDescription)"/>
</xs:complexType>
<xs:complexType name="wastedetails">
<xs:sequence>
<xs:element name="WasteCapacity_MTQ" type="posfloat0-type" minOccurs="0"/>
<xs:element name="WasteAmountRetained_MTQ" type="posfloat0-type" minOccurs="0"/>
<xs:element name="WasteDisposalPort" type="locode-type" minOccurs="0"/>
<xs:element name="WasteAmountGeneratedTillNextPort_MTQ" type="posfloat0-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="wastedelivery-type">
<xs:restriction base="xs:string">
<xs:enumeration value="ALL"/>
<xs:enumeration value="SOME"/>
<xs:enumeration value="NONE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="waste-type">
<xs:restriction base="xs:string">
<xs:enumeration value="WASTE_OILS-SLUDGE"/>
<xs:enumeration value="WASTE_OILS-BILGE_WATER"/>
<xs:enumeration value="WASTE_OILS-OTHERS"/>
<xs:enumeration value="GARBAGE-FOOD_WASTE"/>
<xs:enumeration value="GARBAGE-PLASTIC"/>
<xs:enumeration value="GARBAGE-OTHER"/>
<xs:enumeration value="SEWAGE"/>
<xs:enumeration value="CARGO-ASSOCIATED_WASTE"/>
<xs:enumeration value="CARGO-RESIDUES"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,25 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="bpol">
<xs:sequence>
<xs:element name="StowawayOnBoard" type="yorn-type"/>
<xs:element name="PortsOfItinery" type="portsofitinery" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portsofitinery">
<xs:sequence>
<xs:element name="PortOfItinery" type="portofitinery" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofitinery">
<xs:sequence>
<xs:element name="PortOfItineryName" type="string1-99-type"/>
<xs:element name="PortOfItineryETA" type="xs:dateTime"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required"/>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="crew">
<xs:sequence>
<xs:element name="CrewMembers" type="crewmembers"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="crewmembers">
<xs:sequence>
<xs:element name="CrewMember" type="crewmember" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="crewmember">
<xs:sequence>
<xs:element name="CrewMemberLastName" type="string1-99-type"/>
<xs:element name="CrewMemberFirstName" type="string1-99-type"/>
<xs:element name="CrewMemberPlaceOfBirth" type="string1-99-type"/>
<xs:element name="CrewMemberDateOfBirth" type="xs:date"/>
<xs:element name="CrewMemberGender" type="gender-type" minOccurs="0"/>
<xs:element name="CrewMemberNationality" type="flag-type"/>
<xs:element name="CrewMemberIdentityDocumentType" type="document-type"/>
<xs:element name="CrewMemberIdentityDocumentId" type="string1-99-type"/>
<xs:element name="CrewMemberVisaNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="CrewMemberDuty" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,786 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 02.07.2015 -->
<!-- XML Schema:data exchange NSW - german ports optionale Meldetypen-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="serv_reeder.xsd"/>
<xs:include schemaLocation="prearrival72_reeder.xsd"/>
<xs:include schemaLocation="sec_reeder.xsd"/>
<xs:include schemaLocation="mdh_reeder.xsd"/>
<xs:include schemaLocation="waste_reeder.xsd"/>
<xs:include schemaLocation="bpol_reeder.xsd"/>
<xs:include schemaLocation="pas_reeder.xsd"/>
<xs:include schemaLocation="crew_reeder.xsd"/>
<xs:include schemaLocation="tow_reeder.xsd"/>
<xs:element name="nsw" type="nsw"/>
<xs:complexType name="nsw">
<xs:sequence>
<xs:element name="conveyance" type="conveyance"/>
</xs:sequence>
<xs:attribute name="xml_version" type="xs:string" use="required" fixed="HIS-NORD NSW_V1-0"/>
<xs:attribute name="protect_version" type="xs:string" use="required" fixed="PROTE11"/>
<xs:attribute name="date_registration" type="xs:dateTime" use="required"/>
<xs:attribute name="message_sender" type="xs:string" use="required"/>
<xs:attribute name="message_recipient" type="xs:string" use="required"/>
<xs:attribute name="document_reference" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="conveyance">
<xs:sequence>
<xs:choice id="visit">
<!-- neu in 1-0 -->
<xs:element name="VisitId" type="visitid-type"/>
<xs:element name="TransitId" type="transitid-type"/>
<xs:sequence>
<xs:element name="name" type="referenceid-type" minOccurs="0"/>
<xs:element name="code" type="string1-99-type"/>
</xs:sequence>
</xs:choice>
<xs:element name="owner_sender" type="broker_owner"/>
<xs:element name="vessel" type="vessel-type"/>
<xs:choice id="noanod">
<xs:element name="Import" type="import"/>
<xs:element name="Export" type="export"/>
<xs:element name="Transit" type="transit"/>
</xs:choice>
<!-- neu in 1-0 -->
<xs:element name="PersonsOnBoard" type="pob"/>
<xs:element name="NameOfMaster" type="string1-99-type" minOccurs="0"/>
<xs:element name="Draught_DMT" type="posfloat-type" minOccurs="0"/>
<xs:element name="Info" type="info" minOccurs="0"/>
<xs:element name="BunkerFuelList" type="bunker-type" minOccurs="0"/>
<xs:choice id="hza" minOccurs="0">
<xs:element name="NoHazmatOnBoard" type="y-type"/>
<xs:sequence>
<xs:element name="HazmatCargoManifestOnBoard" type="yorn-type"/>
<xs:element name="INFClass" type="infclass-type" minOccurs="0"/>
<xs:element name="DGCodes" type="dgcodes"/>
</xs:sequence>
</xs:choice>
<xs:element name="GeneralCargo" type="generalcargo" minOccurs="0"/>
<!--OPTIONALE MELDETYPEN-->
<xs:element name="Serv" type="serv" minOccurs="0"/>
<xs:element name="Pre72H" type="pre72" minOccurs="0"/>
<xs:choice id="sec" minOccurs="0">
<xs:sequence>
<xs:element name="SECSimplification" type="y-type"/>
<xs:element name="PortOfCallWhereCompleteSECNotified" type="locode-type"/>
</xs:sequence>
<xs:element name="SEC" type="sec"/>
</xs:choice>
<xs:choice id="mdh" minOccurs="0">
<xs:sequence>
<xs:element name="MDHSimplification" type="y-type"/>
<xs:element name="PortOfCallWhereCompleteMDHNotified" type="locode-type"/>
</xs:sequence>
<xs:element name="MDH" type="mdh"/>
</xs:choice>
<xs:choice id="was" minOccurs="0">
<xs:element name="WasteDisposalValidExemption" type="y-type"/>
<xs:element name="Waste" type="was"/>
</xs:choice>
<xs:element name="BPOL" type="bpol" minOccurs="0"/>
<xs:element name="PAS" type="pas" minOccurs="0"/>
<xs:element name="CREW" type="crew" minOccurs="0"/>
<xs:element name="TOWS" type="tows" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bunker-type">
<xs:sequence>
<xs:element name="BunkerFuel" type="bunkerfuel" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bunkerfuel">
<xs:sequence>
<xs:element name="Name" type="string1-99-type"/>
<xs:element name="NetMassTNE" type="posfloat-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dgcodes">
<xs:sequence>
<xs:element name="DGCode" type="dgcode-type" maxOccurs="6"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="generalcargo">
<xs:sequence>
<xs:element name="LoadUnit" type="loadunit" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="loadunit">
<xs:sequence>
<xs:element name="HandlingCode" type="handlingcode-type"/>
<xs:element name="LocationOnBoard" type="string1-24-type" minOccurs="0"/>
<xs:element name="PortOfLoadingLocode" type="locode-type" minOccurs="0"/>
<xs:element name="PortOfDischargeLocode" type="locode-type" minOccurs="0"/>
<!-- neu in 1-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="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"/>
<!-- neu in 1-0 -->
<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"/>
<!-- neu in 1-0 -->
<xs:element name="CompatibilityGroup" type="class1cg-type" minOccurs="0"/>
<xs:element name="ProperShippingName" type="string1-255-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: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"/>
<!-- neu in 1-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: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"/>
<!-- neu in 1-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"/>
<!-- neu in 1-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: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"/>
<!-- neu in 1-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="import">
<xs:sequence>
<xs:element name="LastPort" type="lastport"/>
<xs:element name="PortOfCall" type="portofcallhazmat"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="export">
<xs:sequence>
<xs:element name="PortOfCall" type="portofcallhazmat"/>
<xs:element name="NextPort" type="nextporthazmat" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="transit">
<xs:sequence>
<xs:element name="LastPort" type="lastport"/>
<xs:element name="NextPort" type="nextporthazmat" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lastport">
<xs:sequence>
<xs:element name="Locode" type="locode-type" default="ZZUKN"/>
<xs:element name="ETD" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofcallhazmat">
<xs:sequence>
<xs:element name="Locode" type="locode-type"/>
<xs:element name="ETA" type="xs:dateTime"/>
<xs:element name="ETD" type="xs:dateTime"/>
<xs:element name="ATA" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ATD" type="xs:dateTime" minOccurs="0"/>
<!-- neu in 1-0 -->
<xs:element name="CallPurposes" type="callpurposes" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="nextporthazmat">
<xs:sequence>
<xs:element name="Locode" type="locode-type" default="ZZUKN"/>
<xs:element name="ETA" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="vessel-type">
<xs:sequence>
<xs:element name="IMONumber" type="imonumber-type" minOccurs="0"/>
<xs:element name="CallSign" type="callsign-type"/>
<xs:element name="MMSINumber" type="mmsinumber-type"/>
<xs:element name="ENINumber" type="eninumber-type" minOccurs="0"/>
<xs:element name="ShipName" type="string1-99-type"/>
<xs:element name="Flag" type="flag-type"/>
<!-- neu in 1-0 -->
<xs:element name="LengthOverall_MTR" type="posfloat-type"/>
<xs:element name="Beam_MTR" type="posfloat-type"/>
<xs:element name="GrossTonnage" type="posint-type"/>
<xs:element name="PortOfRegistry" type="locode-type"/>
<xs:element name="InmarsatCallNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="ShipType" type="ship-type"/>
<xs:element name="ISMCompany" type="ismcompany" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="broker_owner">
<xs:sequence>
<xs:element name="name_short" type="string1-99-type"/>
<xs:element name="name_long" type="string1-99-type"/>
<xs:element name="address" type="address-type"/>
<xs:element name="contact" type="contacts"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contacts">
<xs:sequence>
<xs:element name="name" type="string1-99-type"/>
<xs:element name="firstname" type="string1-99-type" minOccurs="0"/>
<xs:element name="phone" type="string1-99-type"/>
<xs:element name="fax" type="string1-99-type" minOccurs="0"/>
<xs:element name="email" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="packages">
<xs:sequence>
<xs:element name="numberofpackages" type="xs:integer"/>
<xs:element name="packagediscription" type="xs:string"/>
<xs:element name="packagecode" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="measure">
<xs:sequence>
<xs:element name="dimension" type="xs:string"/>
<xs:element name="value" type="xs:string"/>
<xs:element name="kind" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="class7">
<xs:sequence>
<xs:element name="radioactivity" type="measure"/>
<xs:element name="criticalindex" type="measure"/>
<xs:element name="transportindex" type="measure"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="address-type">
<xs:sequence>
<xs:element name="StreetNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="Place" type="string1-99-type" minOccurs="0"/>
<xs:element name="PostCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="Locode" type="locode-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- neu in 1-0 -->
<xs:complexType name="callpurposes">
<xs:sequence>
<xs:element name="CallPurpose" type="callpurpose" maxOccurs="9" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="callpurpose">
<xs:sequence>
<xs:element name="CallPurposeCode" type="callpurposecode-type"/>
<xs:element name="CallPurposeDescription" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ismcompany">
<xs:sequence>
<xs:element name="ISMCompanyName" type="string1-99-type"/>
<xs:element name="ISMCompanyId" type="companyid-type"/>
<xs:element name="ISMCompanyStreetAndNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="ISMCompanyPostalCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="ISMCompanyCity" type="string1-99-type" minOccurs="0"/>
<xs:element name="ISMCompanyCountry" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="pob">
<xs:sequence>
<xs:element name="TotalPersonsOnBoard" type="pob-type"/>
<xs:element name="TotalCrewMembersOnBoard" type="posint-type"/>
<xs:element name="TotalPassengersOnBoard" type="posint0-type"/>
<xs:element name="TotalStowawaysOnBoard" type="posint0-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="info">
<xs:sequence>
<xs:element name="ShippingArea" type="shippingarea-type"/>
<xs:element name="RequestedPositionInPortOfCall" type="string1-99-type"/>
<xs:element name="SpecialRequirementsOfShipAtBerth" type="string1-255-type" minOccurs="0"/>
<xs:element name="ConstructionCharacteristicsOfShip" type="string0-99-type" minOccurs="0"/>
<xs:element name="FumigatedBulkCargo" type="yorn-type"/>
<xs:element name="DeadWeightSummer_TNE" type="xs:float" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="subsidiaryrisks">
<xs:sequence>
<xs:element name="SubsidiaryRisk" type="risk-type" minOccurs="1" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
<!-- ============ simple types ============ -->
<xs:simpleType name="callsign-type">
<xs:restriction base='xs:string'>
<xs:minLength value='4' />
<xs:maxLength value='7' />
<xs:pattern value="[A-Za-z0-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="email-type">
<xs:restriction base='xs:string'>
<xs:minLength value='5' />
<xs:maxLength value='100' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="eninumber-type">
<xs:restriction base="xs:string">
<xs:minLength value='8' />
<xs:maxLength value='8' />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="flag-type">
<xs:restriction base='xs:string'>
<xs:minLength value='2' />
<xs:maxLength value='2' />
<xs:pattern value="[A-Z]*" />
</xs:restriction>
</xs:simpleType>
<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="imonumber-type">
<xs:restriction base="xs:string">
<xs:minLength value="7" />
<xs:maxLength value="7" />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="locode-type">
<xs:restriction base='xs:string'>
<xs:minLength value='5' />
<xs:maxLength value='5' />
<xs:pattern value="[A-Z][A-Z][A-Z0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mmsinumber-type">
<xs:restriction base='xs:string'>
<xs:minLength value='9' />
<xs:maxLength value='10' />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ship-type">
<xs:restriction base="xs:string">
<xs:minLength value='2'/>
<xs:maxLength value='3'/>
<xs:pattern value="[A-Z0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="phonefax-type">
<xs:restriction base='xs:string'>
<xs:minLength value='2' />
<xs:maxLength value='50' />
<xs:pattern value="[\+]{0,1}[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pob-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="1" />
<xs:maxInclusive value="99998" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint-type">
<xs:restriction base="xs:integer">
<xs:minExclusive value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="unnumber-type">
<xs:restriction base="xs:string">
<xs:minLength value="4" />
<xs:maxLength value="4" />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="version-type">
<xs:restriction base='xs:string'>
<xs:minLength value='3' />
<xs:maxLength value='10' />
<xs:pattern value="[0-9]*.[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posfloat-type">
<xs:restriction base="xs:float">
<xs:minExclusive value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="referencecode-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='32' />
<xs:pattern value="[0-9a-zA-Z]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="referenceid-type">
<xs:restriction base="xs:string">
<xs:minLength value='0' />
<xs:maxLength value='100' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-24-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='24' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-99-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='99' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-255-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='255' />
</xs:restriction>
</xs:simpleType>
<!-- neu in 1-0 -->
<xs:simpleType name="callpurposecode-type">
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxExclusive value="1000"/>
</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="companyid-type">
<xs:restriction base="xs:string">
<xs:minLength value='7'/>
<xs:maxLength value='7'/>
</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="risk-type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="11" />
</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="visitid-type">
<xs:restriction base="xs:string">
<xs:pattern value="DE[A-Z]{3}-[0-9]{4}-[A-Z]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="transitid-type">
<xs:restriction base="xs:string">
<xs:pattern value="ZZNOK-[0-9]{4}-[A-Z]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string0-99-type">
<xs:restriction base="xs:string">
<xs:minLength value='0' />
<xs:maxLength value='99' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint0-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posfloat0-type">
<xs:restriction base='xs:float'>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="class7cat-type">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
</xs:restriction>
</xs:simpleType>
<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="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"/>
<!--neu 02.07.2015-->
<xs:enumeration value="TRANSIT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="infclass-type">
<xs:restriction base="xs:string">
<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" />
<!-- neu in 1-0 -->
<xs:enumeration value="NONE" />
</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" />
<!-- neu in 1-0 -->
<xs:enumeration value="OS" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yorn-type">
<xs:restriction base="xs:string">
<xs:enumeration value="Y" />
<xs:enumeration value="N" />
</xs:restriction>
</xs:simpleType>
<!-- neu in 1-0 -->
<xs:simpleType name="shippingarea-type">
<xs:restriction base="xs:string">
<xs:enumeration value="NORTH_BALTIC_SEA"/>
<xs:enumeration value="EUROPE"/>
<xs:enumeration value="OVERSEAS"/>
</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:simpleType name="y-type">
<xs:restriction base="xs:string">
<xs:enumeration value="Y"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="gender-type">
<xs:restriction base="xs:string">
<xs:enumeration value="MALE"/>
<xs:enumeration value="FEMALE"/>
<xs:enumeration value="OTHER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="document-type">
<xs:restriction base="xs:string">
<xs:enumeration value="IDENTITY_CARD"/>
<xs:enumeration value="PASSPORT"/>
<xs:enumeration value="MUSTER_BOOK"/>
<xs:enumeration value="PICTURE_ID"/>
<xs:enumeration value="RESIDENTAL_PERMIT"/>
<xs:enumeration value="OTHER_LEGAL_IDENTITY_DOCUMENT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint1-3-type">
<xs:restriction base="xs:integer">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,786 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 02.07.2015 -->
<!-- XML Schema:data exchange NSW - german ports optionale Meldetypen-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="serv_reeder.xsd"/>
<xs:include schemaLocation="prearrival72_reeder.xsd"/>
<xs:include schemaLocation="sec_reeder.xsd"/>
<xs:include schemaLocation="mdh_reeder.xsd"/>
<xs:include schemaLocation="waste_reeder.xsd"/>
<xs:include schemaLocation="bpol_reeder.xsd"/>
<xs:include schemaLocation="pas_reeder.xsd"/>
<xs:include schemaLocation="crew_reeder.xsd"/>
<xs:include schemaLocation="tow_reeder.xsd"/>
<xs:element name="nsw" type="nsw"/>
<xs:complexType name="nsw">
<xs:sequence>
<xs:element name="conveyance" type="conveyance"/>
</xs:sequence>
<xs:attribute name="xml_version" type="xs:string" use="required" fixed="HIS-NORD NSW_V1-0"/>
<xs:attribute name="protect_version" type="xs:string" use="required" fixed="PROTE11"/>
<xs:attribute name="date_registration" type="xs:dateTime" use="required"/>
<xs:attribute name="message_sender" type="xs:string" use="required"/>
<xs:attribute name="message_recipient" type="xs:string" use="required"/>
<xs:attribute name="document_reference" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="conveyance">
<xs:sequence>
<xs:choice id="visit">
<!-- neu in 1-0 -->
<xs:element name="VisitId" type="visitid-type"/>
<xs:element name="TransitId" type="transitid-type"/>
<xs:sequence>
<xs:element name="name" type="referenceid-type" minOccurs="0"/>
<xs:element name="code" type="string1-99-type"/>
</xs:sequence>
</xs:choice>
<xs:element name="owner_sender" type="broker_owner"/>
<xs:element name="vessel" type="vessel-type"/>
<xs:choice id="noanod">
<xs:element name="Import" type="import"/>
<xs:element name="Export" type="export"/>
<xs:element name="Transit" type="transit"/>
</xs:choice>
<!-- neu in 1-0 -->
<xs:element name="PersonsOnBoard" type="pob"/>
<xs:element name="NameOfMaster" type="string1-99-type" minOccurs="0"/>
<xs:element name="Draught_DMT" type="posfloat-type" minOccurs="0"/>
<xs:element name="Info" type="info" minOccurs="0"/>
<xs:element name="BunkerFuelList" type="bunker-type" minOccurs="0"/>
<xs:choice id="hza" minOccurs="0">
<xs:element name="NoHazmatOnBoard" type="y-type"/>
<xs:sequence>
<xs:element name="HazmatCargoManifestOnBoard" type="yorn-type"/>
<xs:element name="INFClass" type="infclass-type" minOccurs="0"/>
<xs:element name="DGCodes" type="dgcodes"/>
</xs:sequence>
</xs:choice>
<xs:element name="GeneralCargo" type="generalcargo" minOccurs="0"/>
<!--OPTIONALE MELDETYPEN-->
<xs:element name="Serv" type="serv" minOccurs="0"/>
<xs:element name="Pre72H" type="pre72" minOccurs="0"/>
<xs:choice id="sec" minOccurs="0">
<xs:sequence>
<xs:element name="SECSimplification" type="y-type"/>
<xs:element name="PortOfCallWhereCompleteSECNotified" type="locode-type"/>
</xs:sequence>
<xs:element name="SEC" type="sec"/>
</xs:choice>
<xs:choice id="mdh" minOccurs="0">
<xs:sequence>
<xs:element name="MDHSimplification" type="y-type"/>
<xs:element name="PortOfCallWhereCompleteMDHNotified" type="locode-type"/>
</xs:sequence>
<xs:element name="MDH" type="mdh"/>
</xs:choice>
<xs:choice id="was" minOccurs="0">
<xs:element name="WasteDisposalValidExemption" type="y-type"/>
<xs:element name="Waste" type="was"/>
</xs:choice>
<xs:element name="BPOL" type="bpol" minOccurs="0"/>
<xs:element name="PAS" type="pas" minOccurs="0"/>
<xs:element name="CREW" type="crew" minOccurs="0"/>
<xs:element name="TOWS" type="tows" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bunker-type">
<xs:sequence>
<xs:element name="BunkerFuel" type="bunkerfuel" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bunkerfuel">
<xs:sequence>
<xs:element name="Name" type="string1-99-type"/>
<xs:element name="NetMassTNE" type="posfloat-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dgcodes">
<xs:sequence>
<xs:element name="DGCode" type="dgcode-type" maxOccurs="6"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="generalcargo">
<xs:sequence>
<xs:element name="LoadUnit" type="loadunit" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="loadunit">
<xs:sequence>
<xs:element name="HandlingCode" type="handlingcode-type"/>
<xs:element name="LocationOnBoard" type="string1-24-type" minOccurs="0"/>
<xs:element name="PortOfLoadingLocode" type="locode-type" minOccurs="0"/>
<xs:element name="PortOfDischargeLocode" type="locode-type" minOccurs="0"/>
<!-- neu in 1-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="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"/>
<!-- neu in 1-0 -->
<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"/>
<!-- neu in 1-0 -->
<xs:element name="CompatibilityGroup" type="class1cg-type" minOccurs="0"/>
<xs:element name="ProperShippingName" type="string1-255-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: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"/>
<!-- neu in 1-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: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"/>
<!-- neu in 1-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"/>
<!-- neu in 1-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: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"/>
<!-- neu in 1-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="import">
<xs:sequence>
<xs:element name="LastPort" type="lastport"/>
<xs:element name="PortOfCall" type="portofcallhazmat"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="export">
<xs:sequence>
<xs:element name="PortOfCall" type="portofcallhazmat"/>
<xs:element name="NextPort" type="nextporthazmat" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="transit">
<xs:sequence>
<xs:element name="LastPort" type="lastport"/>
<xs:element name="NextPort" type="nextporthazmat" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lastport">
<xs:sequence>
<xs:element name="Locode" type="locode-type" default="ZZUKN"/>
<xs:element name="ETD" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofcallhazmat">
<xs:sequence>
<xs:element name="Locode" type="locode-type"/>
<xs:element name="ETA" type="xs:dateTime"/>
<xs:element name="ETD" type="xs:dateTime"/>
<xs:element name="ATA" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ATD" type="xs:dateTime" minOccurs="0"/>
<!-- neu in 1-0 -->
<xs:element name="CallPurposes" type="callpurposes" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="nextporthazmat">
<xs:sequence>
<xs:element name="Locode" type="locode-type" default="ZZUKN"/>
<xs:element name="ETA" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="vessel-type">
<xs:sequence>
<xs:element name="IMONumber" type="imonumber-type" minOccurs="0"/>
<xs:element name="CallSign" type="callsign-type"/>
<xs:element name="MMSINumber" type="mmsinumber-type"/>
<xs:element name="ENINumber" type="eninumber-type" minOccurs="0"/>
<xs:element name="ShipName" type="string1-99-type"/>
<xs:element name="Flag" type="flag-type"/>
<!-- neu in 1-0 -->
<xs:element name="LengthOverall_MTR" type="posfloat-type"/>
<xs:element name="Beam_MTR" type="posfloat-type"/>
<xs:element name="GrossTonnage" type="posint-type"/>
<xs:element name="PortOfRegistry" type="locode-type"/>
<xs:element name="InmarsatCallNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="ShipType" type="ship-type"/>
<xs:element name="ISMCompany" type="ismcompany" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="broker_owner">
<xs:sequence>
<xs:element name="name_short" type="string1-99-type"/>
<xs:element name="name_long" type="string1-99-type"/>
<xs:element name="address" type="address-type"/>
<xs:element name="contact" type="contacts"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contacts">
<xs:sequence>
<xs:element name="name" type="string1-99-type"/>
<xs:element name="firstname" type="string1-99-type" minOccurs="0"/>
<xs:element name="phone" type="string1-99-type"/>
<xs:element name="fax" type="string1-99-type" minOccurs="0"/>
<xs:element name="email" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="packages">
<xs:sequence>
<xs:element name="numberofpackages" type="xs:integer"/>
<xs:element name="packagediscription" type="xs:string"/>
<xs:element name="packagecode" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="measure">
<xs:sequence>
<xs:element name="dimension" type="xs:string"/>
<xs:element name="value" type="xs:string"/>
<xs:element name="kind" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="class7">
<xs:sequence>
<xs:element name="radioactivity" type="measure"/>
<xs:element name="criticalindex" type="measure"/>
<xs:element name="transportindex" type="measure"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="address-type">
<xs:sequence>
<xs:element name="StreetNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="Place" type="string1-99-type" minOccurs="0"/>
<xs:element name="PostCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="Locode" type="locode-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- neu in 1-0 -->
<xs:complexType name="callpurposes">
<xs:sequence>
<xs:element name="CallPurpose" type="callpurpose" maxOccurs="9" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="callpurpose">
<xs:sequence>
<xs:element name="CallPurposeCode" type="callpurposecode-type"/>
<xs:element name="CallPurposeDescription" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ismcompany">
<xs:sequence>
<xs:element name="ISMCompanyName" type="string1-99-type"/>
<xs:element name="ISMCompanyId" type="companyid-type"/>
<xs:element name="ISMCompanyStreetAndNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="ISMCompanyPostalCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="ISMCompanyCity" type="string1-99-type" minOccurs="0"/>
<xs:element name="ISMCompanyCountry" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="pob">
<xs:sequence>
<xs:element name="TotalPersonsOnBoard" type="pob-type"/>
<xs:element name="TotalCrewMembersOnBoard" type="posint-type"/>
<xs:element name="TotalPassengersOnBoard" type="posint0-type"/>
<xs:element name="TotalStowawaysOnBoard" type="posint0-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="info">
<xs:sequence>
<xs:element name="ShippingArea" type="shippingarea-type"/>
<xs:element name="RequestedPositionInPortOfCall" type="string1-99-type"/>
<xs:element name="SpecialRequirementsOfShipAtBerth" type="string1-255-type" minOccurs="0"/>
<xs:element name="ConstructionCharacteristicsOfShip" type="string0-99-type" minOccurs="0"/>
<xs:element name="FumigatedBulkCargo" type="yorn-type"/>
<xs:element name="DeadWeightSummer_TNE" type="xs:float" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="subsidiaryrisks">
<xs:sequence>
<xs:element name="SubsidiaryRisk" type="risk-type" minOccurs="1" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
<!-- ============ simple types ============ -->
<xs:simpleType name="callsign-type">
<xs:restriction base='xs:string'>
<xs:minLength value='4' />
<xs:maxLength value='7' />
<xs:pattern value="[A-Za-z0-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="email-type">
<xs:restriction base='xs:string'>
<xs:minLength value='5' />
<xs:maxLength value='100' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="eninumber-type">
<xs:restriction base="xs:string">
<xs:minLength value='8' />
<xs:maxLength value='8' />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="flag-type">
<xs:restriction base='xs:string'>
<xs:minLength value='2' />
<xs:maxLength value='2' />
<xs:pattern value="[A-Z]*" />
</xs:restriction>
</xs:simpleType>
<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="imonumber-type">
<xs:restriction base="xs:string">
<xs:minLength value="7" />
<xs:maxLength value="7" />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="locode-type">
<xs:restriction base='xs:string'>
<xs:minLength value='5' />
<xs:maxLength value='5' />
<xs:pattern value="[A-Z][A-Z][A-Z0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mmsinumber-type">
<xs:restriction base='xs:string'>
<xs:minLength value='9' />
<xs:maxLength value='10' />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ship-type">
<xs:restriction base="xs:string">
<xs:minLength value='2'/>
<xs:maxLength value='3'/>
<xs:pattern value="[A-Z0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="phonefax-type">
<xs:restriction base='xs:string'>
<xs:minLength value='2' />
<xs:maxLength value='50' />
<xs:pattern value="[\+]{0,1}[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pob-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="1" />
<xs:maxInclusive value="99998" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint-type">
<xs:restriction base="xs:integer">
<xs:minExclusive value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="unnumber-type">
<xs:restriction base="xs:string">
<xs:minLength value="4" />
<xs:maxLength value="4" />
<xs:pattern value="[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="version-type">
<xs:restriction base='xs:string'>
<xs:minLength value='3' />
<xs:maxLength value='10' />
<xs:pattern value="[0-9]*.[0-9]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posfloat-type">
<xs:restriction base="xs:float">
<xs:minExclusive value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="referencecode-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='32' />
<xs:pattern value="[0-9a-zA-Z]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="referenceid-type">
<xs:restriction base="xs:string">
<xs:minLength value='0' />
<xs:maxLength value='100' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-24-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='24' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-99-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='99' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1-255-type">
<xs:restriction base="xs:string">
<xs:minLength value='1' />
<xs:maxLength value='255' />
</xs:restriction>
</xs:simpleType>
<!-- neu in 1-0 -->
<xs:simpleType name="callpurposecode-type">
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxExclusive value="1000"/>
</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="companyid-type">
<xs:restriction base="xs:string">
<xs:minLength value='7'/>
<xs:maxLength value='7'/>
</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="risk-type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="11" />
</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="visitid-type">
<xs:restriction base="xs:string">
<xs:pattern value="DE[A-Z]{3}-[0-9]{4}-[A-Z]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="transitid-type">
<xs:restriction base="xs:string">
<xs:pattern value="ZZNOK-[0-9]{4}-[A-Z]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string0-99-type">
<xs:restriction base="xs:string">
<xs:minLength value='0' />
<xs:maxLength value='99' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint0-type">
<xs:restriction base='xs:integer'>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posfloat0-type">
<xs:restriction base='xs:float'>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="class7cat-type">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
</xs:restriction>
</xs:simpleType>
<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="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"/>
<!--neu 02.07.2015-->
<xs:enumeration value="TRANSIT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="infclass-type">
<xs:restriction base="xs:string">
<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" />
<!-- neu in 1-0 -->
<xs:enumeration value="NONE" />
</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" />
<!-- neu in 1-0 -->
<xs:enumeration value="OS" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yorn-type">
<xs:restriction base="xs:string">
<xs:enumeration value="Y" />
<xs:enumeration value="N" />
</xs:restriction>
</xs:simpleType>
<!-- neu in 1-0 -->
<xs:simpleType name="shippingarea-type">
<xs:restriction base="xs:string">
<xs:enumeration value="NORTH_BALTIC_SEA"/>
<xs:enumeration value="EUROPE"/>
<xs:enumeration value="OVERSEAS"/>
</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:simpleType name="y-type">
<xs:restriction base="xs:string">
<xs:enumeration value="Y"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="gender-type">
<xs:restriction base="xs:string">
<xs:enumeration value="MALE"/>
<xs:enumeration value="FEMALE"/>
<xs:enumeration value="OTHER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="document-type">
<xs:restriction base="xs:string">
<xs:enumeration value="IDENTITY_CARD"/>
<xs:enumeration value="PASSPORT"/>
<xs:enumeration value="MUSTER_BOOK"/>
<xs:enumeration value="PICTURE_ID"/>
<xs:enumeration value="RESIDENTAL_PERMIT"/>
<xs:enumeration value="OTHER_LEGAL_IDENTITY_DOCUMENT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="posint1-3-type">
<xs:restriction base="xs:integer">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,72 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="mdh">
<xs:sequence>
<xs:element name="NonAccidentialDeathsDuringVoyage" type="yorn-type"/>
<xs:element name="NonAccidentialDeathsDuringVoyageCount" type="posint-type" minOccurs="0"/>
<xs:element name="SuspisionInfectiousNature" type="yorn-type"/>
<xs:element name="NumberOfIllPersonsHigherThanExpected" type="yorn-type"/>
<xs:element name="NumberOfIllPersons" type="posint-type" minOccurs="0"/>
<xs:element name="SickPersonOnBoard" type="yorn-type"/>
<xs:element name="MedicalConsulted" type="yorn-type"/>
<xs:element name="AwareOfConditionsForFurtherInfections" type="yorn-type"/>
<xs:element name="SanitaryMeasuresApplied" type="yorn-type"/>
<xs:element name="SanitaryMeasuresDetails" type="sanitarydetails" minOccurs="0"/>
<xs:element name="StowawaysDetected" type="yorn-type"/>
<xs:element name="StowawayJoiningLocation" type="string1-99-type" minOccurs="0"/>
<xs:element name="SickAnimalOrPetOnBoard" type="yorn-type"/>
<xs:element name="ValidSanitaryControlExemptionOrCertificateOnBoard" type="yorn-type"/>
<xs:element name="ValidSanitaryControlExemptionOrCertificate" type="sanitarycertificate" minOccurs="0"/>
<xs:element name="SanitaryControlReinspectionRequired" type="yorn-type"/>
<xs:element name="InfectedAreaVisited" type="yorn-type"/>
<xs:element name="InfectedArea" type="infectedarea" minOccurs="0"/>
<xs:element name="PortsOfCallLast30Days" type="portofcalls"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sanitarydetails">
<xs:sequence>
<xs:element name="SanitaryMeasuresType" type="string1-99-type"/>
<xs:element name="SanitaryMeasuresLocation" type="string1-99-type"/>
<xs:element name="SanitaryMeasuresDate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sanitarycertificate">
<xs:sequence>
<xs:element name="PlaceOfIssue" type="string1-99-type"/>
<xs:element name="DateOfIssue" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="infectedarea">
<xs:sequence>
<xs:element name="InfectedAreaPort" type="string1-99-type"/>
<xs:element name="InfectedAreaDate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofcalls">
<xs:sequence>
<xs:element name="PortOfCallLast30Days" type="portofcallmdh" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="portofcallmdh">
<xs:sequence>
<xs:element name="PortOfCallLast30DaysLocode" type="locode-type"/>
<xs:element name="PortOfCallLast30DaysDateOfDeparture" type="xs:date"/>
<xs:element name="PortOfCallLast30DaysCrewMembersJoined" type="yorn-type"/>
<xs:element name="PortOfCallLast30DaysCrewJoinedShip" type="crewjoined" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required"/>
</xs:complexType>
<xs:complexType name="crewjoined">
<xs:sequence>
<xs:element name="PortOfCallLast30DaysCrewJoinedShipName" type="string1-99-type" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,34 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="pas">
<xs:sequence>
<xs:element name="Passengers" type="passengers"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="passengers">
<xs:sequence>
<xs:element name="Passenger" type="passenger" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="passenger">
<xs:sequence>
<xs:element name="PassengerLastName" type="string1-99-type"/>
<xs:element name="PassengerFirstName" type="string1-99-type"/>
<xs:element name="PassengerPlaceOfBirth" type="string1-99-type"/>
<xs:element name="PassengerDateOfBirth" type="xs:date"/>
<xs:element name="PassengerGender" type="gender-type" minOccurs="0"/>
<xs:element name="PassengerNationality" type="flag-type"/>
<xs:element name="PassengerIdentityDocumentType" type="document-type"/>
<xs:element name="PassengerIdentityDocumentId" type="string1-99-type"/>
<xs:element name="PassengerVisaNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="PassengerPortOfEmbarkation" type="locode-type"/>
<xs:element name="PassengerPortOfDisembarkation" type="locode-type"/>
<xs:element name="PassengerInTransit" type="yorn-type"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,40 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 12.03.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="pre72">
<xs:sequence>
<xs:element name="Tanker" type="yorn-type"/>
<xs:element name="TankerDetails" type="tankerdetails" minOccurs="0"/>
<xs:element name="PlannedOperations" type="string1-99-type"/>
<xs:element name="PlannedWorks" type="string1-255-type"/>
<xs:element name="DateOfLastExpandedInspection" type="xs:date"/>
<xs:element name="PlannedPeriodOfStay_HUR" type="posfloat0-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tankerdetails">
<xs:sequence>
<xs:element name="TankerHullConfiguration" type="hullconfig-type"/>
<xs:element name="ConditionCargoBallastTanks" type="cargocondition-type"/>
<xs:element name="NatureOfCargo" type="string1-99-type" minOccurs="0"/>
<xs:element name="VolumeOfCargo_TNE" type="posfloat-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="hullconfig-type">
<xs:restriction base="xs:string">
<xs:enumeration value="SINGLE_HULL"/>
<xs:enumeration value="SINGLE_HULL_WITH_SBT"/>
<xs:enumeration value="DOUBLE_HULL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="cargocondition-type">
<xs:restriction base="xs:string">
<xs:enumeration value="FULL"/>
<xs:enumeration value="EMPTY"/>
<xs:enumeration value="INERTED"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,105 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 12.03.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="sec">
<xs:sequence>
<xs:element name="CSOLastName" type="string1-99-type"/>
<xs:element name="CSOFirstName" type="string1-99-type" minOccurs="0"/>
<xs:element name="CSOPhone" type="string1-99-type"/>
<xs:element name="CSOFax" type="string1-99-type" minOccurs="0"/>
<xs:element name="CSOEMail" type="string1-99-type" minOccurs="0"/>
<xs:element name="ValidISSCOnBoard" type="yorn-type"/>
<xs:element name="ReasonsForNoValidISSC" type="string1-255-type" minOccurs="0"/>
<xs:element name="ISSCType" type="issc-type"/>
<xs:element name="ISSCIssuerType" type="isscissuer-type"/>
<xs:element name="ISSCIssuerName" type="string1-99-type"/>
<xs:element name="ISSCDateOfExpiration" type="xs:date"/>
<xs:element name="ApprovedSecurityPlanOnBoard" type="yorn-type"/>
<xs:element name="CurrentShipSecurityLevel " type="posint1-3-type"/>
<xs:element name="PortFacilityOfArrival" type="string1-99-type"/>
<xs:element name="GeneralDescriptionOfCargo" type="cargodescription-type"/>
<xs:element name="Last10Ports" type="last10ports"/>
<xs:element name="LastActivities" type="lastactivities" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="last10ports">
<xs:sequence>
<xs:element name="LastPort" type="last10port" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="last10port">
<xs:sequence>
<xs:element name="PortFacilityPortName" type="string1-99-type" minOccurs="0"/>
<xs:element name="PortFacilityPortCountry" type="string1-99-type" minOccurs="0"/>
<xs:element name="PortFacilityPortLoCode" type="locode-type" minOccurs="0"/>
<xs:element name="PortFacilityDateOfArrival" type="xs:date"/>
<xs:element name="PortFacilityDateOfDeparture" type="xs:date"/>
<xs:element name="PortFacilityShipSecurityLevel" type="posint1-3-type"/>
<xs:element name="PortFacilitySecurityMattersToReport" type="string1-255-type" minOccurs="0"/>
<xs:element name="PortFacilityGISISCode" type="unnumber-type"/>
</xs:sequence>
<xs:attribute name="Index" type="posint-type" use="required"/>
</xs:complexType>
<xs:complexType name="lastactivities">
<xs:sequence>
<xs:element name="LastActivity" type="lastactivity" minOccurs="0" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lastactivity">
<xs:sequence>
<xs:element name="ShipToShipActivityLocation" type="location"/>
<xs:element name="ShipToShipActivityDateFrom" type="xs:date"/>
<xs:element name="ShipToShipActivityDateTo" type="xs:date"/>
<xs:element name="ShipToShipActivityType" type="string1-255-type"/>
<xs:element name="ShipToShipActivitySecurityMattersToReportOf" type="string1-255-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="location">
<xs:choice maxOccurs="3">
<xs:element name="ShipToShipActivityLocationName" type="string1-255-type"/>
<xs:element name="ShipToShipActivityLocationLoCode" type="locode-type"/>
<xs:element name="ShipToShipActivityLocationCoordinates" type="coordinates"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="coordinates">
<xs:sequence>
<xs:element name="ShipToShipActivityLocationCoordinatesLatitude" type="xs:integer"/>
<xs:element name="ShipToShipActivityLocationCoordinatesLongitude" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="issc-type">
<xs:restriction base="xs:string">
<xs:enumeration value="FULL"/>
<xs:enumeration value="INTERIM"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="isscissuer-type">
<xs:restriction base="xs:string">
<xs:enumeration value="ADMINISTRATION"/>
<xs:enumeration value="RSO"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="cargodescription-type">
<xs:restriction base="xs:string">
<xs:enumeration value="CONTAINER"/>
<xs:enumeration value="VEHICLES"/>
<xs:enumeration value="CONVENTIONAL_GENERAL_CARGO"/>
<xs:enumeration value="DRY_CARGO_IN_BULK"/>
<xs:enumeration value="LIQUID_CARGO_IN_BULK"/>
<xs:enumeration value="EMPTY"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -0,0 +1,25 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="serv">
<xs:sequence>
<xs:element name="Services" type="services"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="services">
<xs:sequence>
<xs:element name="Service" type="service" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="service">
<xs:sequence>
<xs:element name="ServiceInvoiced" type="string1-99-type" minOccurs="0"/>
<xs:element name="ServiceBeneficiary" type="string1-99-type"/>
<xs:element name="ServiceInvoiceRecipient" type="string1-99-type"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,50 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 12.03.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="tows">
<xs:sequence>
<xs:element name="TOW" type="tow" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tow">
<xs:sequence>
<xs:element name="TowageName" type="string1-99-type"/>
<xs:element name="TowageFlag" type="flag-type" minOccurs="0"/>
<xs:element name="TowageOperator" type="towageoperator" minOccurs="0"/>
<xs:element name="TowageGrossTonnage" type="posint-type" minOccurs="0"/>
<xs:element name="TowageLengthOverall_MTR" type="posfloat-type"/>
<xs:element name="TowageBeam_MTR" type="posfloat-type"/>
<xs:element name="TowagePurposeOfCall" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageDraught_DMT" type="posfloat-type"/>
<xs:element name="TowageRemarks" type="string1-255-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="towageoperator">
<xs:sequence>
<xs:element name="TowageOperatorCompanyName" type="string1-99-type" minOccurs="0"/>
<xs:element name="Address" type="address" minOccurs="0"/>
<xs:element name="Contact" type="contact" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="address">
<xs:sequence>
<xs:element name="TowageOperatorStreetAndNumber" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageOperatorPostalCode" type="string1-24-type" minOccurs="0"/>
<xs:element name="TowageOperatorCity" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageOperatorCountry" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contact">
<xs:sequence>
<xs:element name="TowageOperatorPhone" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowageOperatorFax" type="string1-99-type" minOccurs="0"/>
<xs:element name="TowareOperatorEMail" type="string1-99-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,69 @@
<?xml version="1.0"?>
<!-- DATEN + DIENSTE GmbH Rostock, Version vom 15.01.2015 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="was">
<xs:sequence>
<xs:element name="LastWasteDisposalPort" type="locode-type"/>
<xs:element name="LastWasteDisposalDate" type="xs:date"/>
<xs:element name="WasteDisposalServiceProviderName" type="string0-99-type" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="WasteDisposalDelivery" type="wastedelivery-type"/>
<xs:element name="Wastes" type="wastes">
<xs:unique name="WasteUnique">
<xs:selector xpath="Waste"/>
<xs:field xpath="@WasteType"/>
</xs:unique>
</xs:element>
<xs:element name="ConfirmationOfCorrectness" type="yorn-type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="wastes">
<xs:sequence>
<xs:element name="Waste" type="waste" minOccurs="9" maxOccurs="9"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="waste">
<xs:sequence>
<xs:element name="WasteDescription" type="string1-99-type" minOccurs="0"/>
<xs:element name="WasteDisposalAmount_MTQ" type="posfloat0-type"/>
<xs:element name="WasteDetails" type="wastedetails" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="WasteType" type="waste-type" use="required"/>
</xs:complexType>
<xs:complexType name="wastedetails">
<xs:sequence>
<xs:element name="WasteCapacity_MTQ" type="posfloat0-type" minOccurs="0"/>
<xs:element name="WasteAmountRetained_MTQ" type="posfloat0-type" minOccurs="0"/>
<xs:element name="WasteDisposalPort" type="locode-type" minOccurs="0"/>
<xs:element name="WasteAmountGeneratedTillNextPort_MTQ" type="posfloat0-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- ======== simple types - enumerations =========== -->
<xs:simpleType name="wastedelivery-type">
<xs:restriction base="xs:string">
<xs:enumeration value="ALL"/>
<xs:enumeration value="SOME"/>
<xs:enumeration value="NONE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="waste-type">
<xs:restriction base="xs:string">
<xs:enumeration value="WASTE_OILS-SLUDGE"/>
<xs:enumeration value="WASTE_OILS-BILGE_WATER"/>
<xs:enumeration value="WASTE_OILS-OTHERS"/>
<xs:enumeration value="GARBAGE-FOOD_WASTE"/>
<xs:enumeration value="GARBAGE-PLASTIC"/>
<xs:enumeration value="GARBAGE-OTHER"/>
<xs:enumeration value="SEWAGE"/>
<xs:enumeration value="CARGO-ASSOCIATED_WASTE"/>
<xs:enumeration value="CARGO-RESIDUES"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@ -13,8 +13,7 @@ using log4net;
using bsmd.database; using bsmd.database;
using bsmd.dbh; using bsmd.dbh;
using bsmd.hisnord;
namespace SendNSWMessageService namespace SendNSWMessageService
{ {
@ -128,19 +127,20 @@ namespace SendNSWMessageService
{ {
case Message.NSWProvider.DBH: case Message.NSWProvider.DBH:
sendSucceeded = bsmd.dbh.Request.SendMessage(message); sendSucceeded = bsmd.dbh.Request.SendMessage(message);
if (!sendSucceeded) if (!sendSucceeded)
{ message.InternalStatus = Message.BSMDStatus.SEND_FAILED;
message.InternalStatus = Message.BSMDStatus.SEND_FAILED;
}
break; break;
case Message.NSWProvider.DAKOSY: case Message.NSWProvider.DAKOSY:
sendSucceeded = bsmd.dakosy.Request.Send(message); sendSucceeded = bsmd.dakosy.Request.Send(message);
if (!sendSucceeded) message.InternalStatus = Message.BSMDStatus.SEND_FAILED; if (!sendSucceeded) message.InternalStatus = Message.BSMDStatus.SEND_FAILED;
break; break;
case Message.NSWProvider.DUDR: case Message.NSWProvider.DUDR:
_log.Warn("Cannot send via Daten und Dienste HRO yet"); sendSucceeded = bsmd.hisnord.Request.Send(message);
if (!sendSucceeded) message.InternalStatus = Message.BSMDStatus.SEND_FAILED;
break; break;
default: default:
_log.WarnFormat("Initial HIS not specified for message {0}", message.Id); _log.WarnFormat("Initial HIS not specified for message {0}", message.Id);
break; break;

View File

@ -114,6 +114,10 @@
<Project>{df625ff0-2265-4686-9cb6-2a8511cb3b9d}</Project> <Project>{df625ff0-2265-4686-9cb6-2a8511cb3b9d}</Project>
<Name>bsmd.dbh</Name> <Name>bsmd.dbh</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\bsmd.hisnord\bsmd.hisnord.csproj">
<Project>{e7e48971-e879-4e6a-b316-70ac0a6f4c95}</Project>
<Name>bsmd.hisnord</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@ -150,16 +150,25 @@ namespace bsmd.ReportGenerator
paragraph = section.AddParagraph("EU-NOAD incoming data receipt"); paragraph = section.AddParagraph("EU-NOAD incoming data receipt");
paragraph.Format.Font.Size = 16; paragraph.Format.Font.Size = 16;
paragraph.Format.Font.Color = Colors.DarkRed; paragraph.Format.Font.Color = Colors.DarkRed;
paragraph.Format.SpaceBefore = "8cm"; paragraph.Format.SpaceBefore = Unit.FromCentimeter(4);
paragraph = section.AddParagraph("Rendering date: "); paragraph = section.AddParagraph("Rendering date: ");
paragraph.Format.SpaceAfter = "2cm"; paragraph.Format.SpaceAfter = Unit.FromCentimeter(3);
paragraph.AddDateField(); paragraph.AddDateField();
paragraph = section.AddParagraph(); Table table = document.LastSection.AddTable();
paragraph.Format.Font.Size = 14; table.Format.Font.Size = 14;
Column column = table.AddColumn();
column.Width = Unit.FromCentimeter(4);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(8);
foreach (string key in coverInfos.Keys) foreach (string key in coverInfos.Keys)
paragraph.AddText(string.Format("{0}:\t\t{1}\n", key, coverInfos[key])); {
Row row = table.AddRow();
row.Cells[0].AddParagraph(key);
row.Cells[1].AddParagraph(coverInfos[key] ?? string.Empty);
}
} }
@ -203,27 +212,329 @@ namespace bsmd.ReportGenerator
document.LastSection.AddParagraph(messageParagraph.Title, "Heading2"); document.LastSection.AddParagraph(messageParagraph.Title, "Heading2");
document.LastSection.AddParagraph(messageParagraph.Subtitle, "Heading3"); document.LastSection.AddParagraph(messageParagraph.Subtitle, "Heading3");
if (messageParagraph.MessageText != null) // 1:n message (CREW, PAS,..) Message message = messageParagraph as Message;
// Spezialbehandlung WAS Meldung
if ((message != null) && (message.MessageNotificationClass == Message.NotificationClass.WAS))
{
BSMDDocument.CreateWASTable(document, message);
return;
}
if((message != null) && (message.MessageNotificationClass == Message.NotificationClass.BKRD))
{
BSMDDocument.CreateBKRDTable(document, message);
return;
}
if ((message != null) && (message.MessageNotificationClass == Message.NotificationClass.BKRA))
{
BSMDDocument.CreateBKRATable(document, message);
return;
}
if((message != null) && (message.MessageNotificationClass == Message.NotificationClass.LADG))
{
BSMDDocument.CreateLADGTable(document, message);
return;
}
if (messageParagraph.MessageText != null) // komplette Nachricht (z.B. STAT)
BSMDDocument.AddActualTableParagraph(document, messageParagraph.MessageText, false); BSMDDocument.AddActualTableParagraph(document, messageParagraph.MessageText, false);
if (messageParagraph.ChildParagraphs != null) if((message != null) && (message.MessageNotificationClass == Message.NotificationClass.SEC))
{ {
// TODO: Adäquate Tabellendarstellung designen BSMDDocument.CreateLast10PortFacilitiesTable(document, message);
return;
}
//if (messageParagraph.ShowChildrenAsTable) if (messageParagraph.ChildParagraphs != null) // 1:n message (CREW, PAS,..)
//{ {
//}
//else
//{
foreach (IMessageParagraph childParagraph in messageParagraph.ChildParagraphs) foreach (IMessageParagraph childParagraph in messageParagraph.ChildParagraphs)
{ {
BSMDDocument.AddActualTableParagraph(document, childParagraph.MessageText, true); BSMDDocument.AddActualTableParagraph(document, childParagraph.MessageText, true);
} }
//}
} }
} }
#region LADG
private static void CreateLADGTable(Document document, Message message)
{
Table table = document.LastSection.AddTable();
table.Rows.VerticalAlignment = VerticalAlignment.Center;
table.Borders.Visible = true;
Column column = table.AddColumn();
column.Width = Unit.FromCentimeter(1);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(7);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(4);
Row hRow = table.AddRow();
hRow.Cells[1].AddParagraph("handling type");
hRow.Cells[2].AddParagraph("Code (NST2007)");
hRow.Cells[1].AddParagraph("Number of items");
hRow.Cells[2].AddParagraph("Gross quantity (tons)");
for (int i = 0; i < message.Elements.Count; i++)
{
Row row = table.AddRow();
LADG ladg = message.Elements[i] as LADG;
row.Cells[0].AddParagraph((i + 1).ToString());
row.Cells[1].AddParagraph(ladg.CargoHandlingType.HasValue ? (ladg.CargoHandlingType.Value == 0) ? "Load" : "Discharge" : "");
row.Cells[2].AddParagraph(ladg.CargoCodeNST ?? "");
row.Cells[3].AddParagraph(ladg.CargoNumberOfItems.HasValue ? ladg.CargoNumberOfItems.Value.ToString() : "");
row.Cells[4].AddParagraph(ladg.CargoGrossQuantity_TNE.HasValue ? ladg.CargoGrossQuantity_TNE.Value.ToString() : "");
}
}
#endregion
#region SEC
private static void CreateLast10PortFacilitiesTable(Document document, Message message)
{
SEC sec = message.Elements[0] as SEC;
if (sec.LastTenPortFacilitesCalled.Count > 0)
{
document.LastSection.AddParagraph("Last 10 port facilites called", "Heading3");
Table table = document.LastSection.AddTable();
table.Rows.VerticalAlignment = VerticalAlignment.Center;
table.Borders.Visible = true;
Column column = table.AddColumn();
column.Width = Unit.FromCentimeter(0.8);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(3.9);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(1.5);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(0.8);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(1);
Row hRow = table.AddRow();
hRow.Cells[0].AddParagraph("No.");
hRow.Cells[1].AddParagraph("Port name");
hRow.Cells[2].AddParagraph("Country");
hRow.Cells[3].AddParagraph("LoCode");
hRow.Cells[4].AddParagraph("Arr.");
hRow.Cells[5].AddParagraph("Dep.");
hRow.Cells[6].AddParagraph("Ship sec. level");
hRow.Cells[7].AddParagraph("sec. matter to report");
hRow.Cells[8].AddParagraph("GISIS");
for(int i=0;i<sec.LastTenPortFacilitesCalled.Count;i++) {
Row row = table.AddRow();
BSMDDocument.SetLast10PortFacility((i + 1), sec.LastTenPortFacilitesCalled[i], row);
}
}
}
private static void SetLast10PortFacility(int p, LastTenPortFacilitiesCalled lastTenPortFacilitiesCalled, Row row)
{
row.Cells[0].AddParagraph(p.ToString());
row.Cells[1].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityPortName ?? "");
row.Cells[2].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityPortCountry ?? "");
row.Cells[3].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityPortLoCode ?? "");
row.Cells[4].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityDateOfArrival.HasValue ? lastTenPortFacilitiesCalled.PortFacilityDateOfArrival.Value.ToShortDateString() : "");
row.Cells[5].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityDateOfDeparture.HasValue ? lastTenPortFacilitiesCalled.PortFacilityDateOfDeparture.Value.ToShortDateString() : "");
row.Cells[6].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.HasValue ? lastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.ToString() : "");
row.Cells[7].AddParagraph(lastTenPortFacilitiesCalled.PortFacilitySecurityMattersToReport ?? "");
row.Cells[8].AddParagraph(lastTenPortFacilitiesCalled.PortFacilityGISISCode ?? "");
}
#endregion
#region BKRD
private static void CreateBKRDTable(Document document, Message message)
{
Table table = document.LastSection.AddTable();
table.Rows.VerticalAlignment = VerticalAlignment.Center;
table.Borders.Visible = true;
Column column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(6);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(8);
Row hRow = table.AddRow();
hRow.Cells[1].AddParagraph("Name / type of fuel");
hRow.Cells[2].AddParagraph("Bunker fuel amount in tons");
for (int i = 0; i < message.Elements.Count; i++)
{
Row row = table.AddRow();
BRKD brkd = message.Elements[i] as BRKD;
row.Cells[0].AddParagraph((i + 1).ToString());
row.Cells[1].AddParagraph(brkd.BunkerFuelType ?? "");
row.Cells[2].AddParagraph(brkd.BunkerFuelQuantity_TNE.HasValue ? brkd.BunkerFuelQuantity_TNE.Value.ToString("N2") : "");
}
}
#endregion
#region BKRA
private static void CreateBKRATable(Document document, Message message)
{
Table table = document.LastSection.AddTable();
table.Rows.VerticalAlignment = VerticalAlignment.Center;
table.Borders.Visible = true;
Column column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(6);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(8);
Row hRow = table.AddRow();
hRow.Cells[1].AddParagraph("Name / type of fuel");
hRow.Cells[2].AddParagraph("Bunker fuel amount in tons");
for (int i = 0; i < message.Elements.Count; i++)
{
Row row = table.AddRow();
BRKA brkd = message.Elements[i] as BRKA;
row.Cells[0].AddParagraph((i + 1).ToString());
row.Cells[1].AddParagraph(brkd.BunkerFuelType ?? "");
row.Cells[2].AddParagraph(brkd.BunkerFuelQuantity_TNE.HasValue ? brkd.BunkerFuelQuantity_TNE.Value.ToString("N2") : "");
}
}
#endregion
#region CreateWASTable
private static void CreateWASTable(Document document, Message message)
{
WAS was = message.Elements[0] as WAS;
Table table = document.LastSection.AddTable();
table.Rows.VerticalAlignment = VerticalAlignment.Center;
table.Borders.Visible = true;
Column column = table.AddColumn();
column.Width = Unit.FromCentimeter(10);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(6);
Row row = table.AddRow();
row.Cells[0].AddParagraph("Last port where waste or cargo residues were discharged");
row.Cells[1].AddParagraph("Date of last disposal");
row = table.AddRow();
row.Cells[0].AddParagraph(was.LastWasteDisposalPort ?? "");
if(was.LastWasteDisposalDate.HasValue)
row.Cells[1].AddParagraph(was.LastWasteDisposalDate.ToString());
row = table.AddRow();
row.Cells[0].AddParagraph("Name of waste disposal service provider");
row.Cells[1].AddParagraph("Waste disposal order (all, some, none");
row = table.AddRow();
for (int i = 0; i < was.WasteDisposalServiceProvider.Count; i++)
row.Cells[0].AddParagraph(was.WasteDisposalServiceProvider[i].WasteDisposalServiceProviderName);
if (was.WasteDisposalDelivery.HasValue)
row.Cells[1].AddParagraph((was.WasteDisposalDelivery.Value == 0) ? "ALL" : (was.WasteDisposalDelivery == 1) ? "SOME" : "NONE");
table = document.LastSection.AddTable();
table.Rows.VerticalAlignment = VerticalAlignment.Top;
table.Borders.Visible = true;
column = table.AddColumn();
column.Width = Unit.FromCentimeter(4);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
column = table.AddColumn();
column.Width = Unit.FromCentimeter(2);
row = table.AddRow();
row.Cells[0].AddParagraph("TYPE");
row.Cells[1].AddParagraph("Description");
row.Cells[2].AddParagraph("Amount to be disposed");
row.Cells[3].AddParagraph("Maximum dedicated storage capacity on board");
row.Cells[4].AddParagraph("Amount retained on board");
row.Cells[5].AddParagraph("Port of delivery of remaining waste");
row.Cells[6].AddParagraph("Estimated waste/cargo residues amount generated between port of call and next port");
row = table.AddRow();
row.Cells[0].AddParagraph("1 Oil Sludge");
GetWasteForIndex(1, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("2 Oil Bilgewater");
GetWasteForIndex(2, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("3 Oil other");
GetWasteForIndex(3, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("4 Garbage Foodwaste");
GetWasteForIndex(4, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("5 Garbage plastic");
GetWasteForIndex(5, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("6 Garbage other");
GetWasteForIndex(6, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("7 Sewage");
GetWasteForIndex(7, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("8 Cargo associated waste");
GetWasteForIndex(8, was, row);
row = table.AddRow();
row.Cells[0].AddParagraph("9 Cargo residues");
GetWasteForIndex(9, was, row);
}
private static void GetWasteForIndex(int index, WAS was, Row row)
{
foreach (Waste waste in was.Waste)
{
if (waste.Identifier == index.ToString())
{
row.Cells[1].AddParagraph(waste.WasteDescription ?? "");
row.Cells[2].AddParagraph(waste.WasteDisposalAmount_MTQ.HasValue ? waste.WasteDisposalAmount_MTQ.Value.ToString("N2") : "");
row.Cells[3].AddParagraph(waste.WasteCapacity_MTQ.HasValue ? waste.WasteCapacity_MTQ.Value.ToString("N2") : "");
row.Cells[4].AddParagraph(waste.WasteAmountRetained_MTQ.HasValue ? waste.WasteAmountRetained_MTQ.Value.ToString("N2") : "");
row.Cells[5].AddParagraph(waste.WasteDisposalPort ?? "");
row.Cells[6].AddParagraph(waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue ? waste.WasteAmountGeneratedTillNextPort_MTQ.Value.ToString("N2") : "");
}
}
}
#endregion
private static void AddActualTableParagraph(Document document, List<KeyValuePair<string, string>> messageText, bool isSubTable) private static void AddActualTableParagraph(Document document, List<KeyValuePair<string, string>> messageText, bool isSubTable)
{ {
Table table = document.LastSection.AddTable(); Table table = document.LastSection.AddTable();

View File

@ -84,9 +84,22 @@ namespace bsmd.ReportGenerator
} }
coverInfos.Add("IMO", reportCore.IMO); coverInfos.Add("IMO", reportCore.IMO);
DateTime eta = reportCore.ETA ?? (reportCore.ETAKielCanal ?? new DateTime(0)); DateTime eta = reportCore.ETA ?? (reportCore.ETAKielCanal ?? new DateTime(0));
coverInfos.Add("ETA", eta.ToString()); coverInfos.Add("ETA", eta.ToShortDateString());
coverInfos.Add("Port", reportCore.Portname); coverInfos.Add("Port", reportCore.Portname);
coverInfos.Add("", "");
if (reportCore.Customer != null)
{
coverInfos.Add("Name", reportCore.Customer.Name);
coverInfos.Add("Contact first name", reportCore.Customer.ContactFirstName);
coverInfos.Add("Contact last name", reportCore.Customer.ContactLastName);
coverInfos.Add("Customer number", reportCore.Customer.CustomerNumber);
coverInfos.Add("Street", reportCore.Customer.StreetAndNumber);
coverInfos.Add("Postal code", reportCore.Customer.PostalCode);
coverInfos.Add("City", reportCore.Customer.City);
coverInfos.Add("Country", reportCore.Customer.Country);
coverInfos.Add("Phone", reportCore.Customer.Phone);
coverInfos.Add("E-Mail", reportCore.Customer.Email);
}
Document migraDocument = BSMDDocument.CreateDocument( Document migraDocument = BSMDDocument.CreateDocument(
string.Format("NSW Eingangsdatenübersicht für IMO {0}, ETA {1}", reportCore.IMO, reportCore.ETA), string.Format("NSW Eingangsdatenübersicht für IMO {0}, ETA {1}", reportCore.IMO, reportCore.ETA),
@ -107,11 +120,34 @@ namespace bsmd.ReportGenerator
BSMDDocument.RenderDocument(migraDocument, fullPath); BSMDDocument.RenderDocument(migraDocument, fullPath);
_log.InfoFormat("Document created for MessageCoreId {0}, IMO {1}", reportCore.Id, reportCore.IMO); _log.InfoFormat("Document created for MessageCoreId {0}, IMO {1}", reportCore.Id, reportCore.IMO);
string subject = string.Format("NSW message report for {0}", reportCore.IMO); string subject = string.Format("NSW message report for {0}", reportCore.IMO);
BSMDMail.SendNSWReportAsAttachment(subject, fullPath); List<string> attachments = new List<string>();
attachments.Add(fullPath);
// 10.7.15: Check PAS/CREW messages to create extra csv files and add them as well
Message pas = messages.Find(x => x.MessageNotificationClass == Message.NotificationClass.PAS);
string passengerCSV = null;
if ((pas != null) && (pas.Elements.Count > 0))
{
passengerCSV = CrewPasHelper.CreateCSV(pas);
attachments.Add(passengerCSV);
}
Message crew = messages.Find(x => x.MessageNotificationClass == Message.NotificationClass.CREW);
string crewCSV = null;
if ((crew != null) && (crew.Elements.Count > 0))
{
crewCSV = CrewPasHelper.CreateCSV(crew);
attachments.Add(crewCSV);
}
BSMDMail.SendNSWReportWithAttachments(subject, attachments);
// reset report status // reset report status
reportCore.ReportStatus = MessageCore.ReportStatusEnum.NONE; reportCore.ReportStatus = MessageCore.ReportStatusEnum.NONE;
DBManager.Instance.Save(reportCore); DBManager.Instance.Save(reportCore);
if (passengerCSV != null) File.Delete(passengerCSV);
if (crewCSV != null) File.Delete(crewCSV);
} }
DBManager.Instance.Disconnect(); DBManager.Instance.Disconnect();
@ -132,7 +168,7 @@ namespace bsmd.ReportGenerator
{ {
this.processRunning = false; this.processRunning = false;
} }
} }
protected override void OnStop() protected override void OnStop()
{ {

View File

@ -79,6 +79,7 @@
<Link>Properties\AssemblyProjectKeyInfo.cs</Link> <Link>Properties\AssemblyProjectKeyInfo.cs</Link>
</Compile> </Compile>
<Compile Include="BSMDDocument.cs" /> <Compile Include="BSMDDocument.cs" />
<Compile Include="CrewPasHelper.cs" />
<Compile Include="ProjectInstaller.cs"> <Compile Include="ProjectInstaller.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>

View File

@ -99,7 +99,21 @@ namespace bsmd.database
List<DatabaseEntity> cores = aMessageCore.LoadList(reader); List<DatabaseEntity> cores = aMessageCore.LoadList(reader);
List<MessageCore> result = new List<MessageCore>(); List<MessageCore> result = new List<MessageCore>();
foreach (MessageCore core in cores) foreach (MessageCore core in cores)
{
result.Add(core); result.Add(core);
if (core.CustomerId.HasValue)
{
Customer c = new Customer();
SqlCommand cCmd = new SqlCommand();
c.PrepareLoadCommand(cCmd, Message.LoadFilter.BY_ID, core.CustomerId.Value);
reader = this.PerformCommand(cCmd);
List<DatabaseEntity> customers = c.LoadList(reader);
if (customers.Count > 0)
core.Customer = customers[0] as Customer;
}
}
return result; return result;
} }

View File

@ -73,6 +73,8 @@ namespace bsmd.database
public bool IsTransit { get; set; } public bool IsTransit { get; set; }
public bool Incoming { get; set; } // tbd: für HIS-NORD, mal sehen ob das so bleibt
public BSMDStatus BSMDStatusInternal { get; set; } public BSMDStatus BSMDStatusInternal { get; set; }
public Message.NSWProvider InitialHIS { get; set; } public Message.NSWProvider InitialHIS { get; set; }

View File

@ -19,7 +19,7 @@ namespace bsmd.email
{ {
public class BSMDMail public class BSMDMail
{ {
public static void SendNSWReportAsAttachment(string subject, string filename) public static void SendNSWReportWithAttachments(string subject, List<string> filenameList)
{ {
ILog log = LogManager.GetLogger(typeof(BSMDMail)); ILog log = LogManager.GetLogger(typeof(BSMDMail));
SmtpClient smtpClient = new SmtpClient(); SmtpClient smtpClient = new SmtpClient();
@ -44,7 +44,7 @@ namespace bsmd.email
message.Body = "see attachment"; message.Body = "see attachment";
message.To.Add(recipient); message.To.Add(recipient);
if (filename != null) foreach(string filename in filenameList)
{ {
Attachment attachment = new Attachment(filename, MediaTypeNames.Application.Octet); Attachment attachment = new Attachment(filename, MediaTypeNames.Application.Octet);
ContentDisposition disposition = attachment.ContentDisposition; ContentDisposition disposition = attachment.ContentDisposition;

View File

@ -880,7 +880,8 @@ namespace bsmd.herberg.FormService
if (wDict.ContainsKey("WasteDisposalAmount_MTQ")) waste.WasteDisposalAmount_MTQ = Extensions.TryParseDouble(wDict["WasteDisposalAmount_MTQ"]); if (wDict.ContainsKey("WasteDisposalAmount_MTQ")) waste.WasteDisposalAmount_MTQ = Extensions.TryParseDouble(wDict["WasteDisposalAmount_MTQ"]);
if (wDict.ContainsKey("WasteDescription")) waste.WasteDescription = wDict["WasteDescription"]; if (wDict.ContainsKey("WasteDescription")) waste.WasteDescription = wDict["WasteDescription"];
if (wDict.ContainsKey("WasteType")) waste.WasteType = Enums.ParseWasteType(wDict["WasteType"]); if (wDict.ContainsKey("WasteType")) waste.WasteType = Enums.ParseWasteType(wDict["WasteType"]);
if (wDict.ContainsKey("WasteDisposalPort")) waste.WasteDisposalPort = wDict["WasteDisposalPort"]; if (wDict.ContainsKey("WasteDisposalCountryCode") && wDict.ContainsKey("WasteDisposalPortCode"))
waste.WasteDisposalPort = wDict["WasteDisposalCountryCode"] + wDict["WasteDisposalPortCode"];
saveMessages.Add(waste); saveMessages.Add(waste);
} }

View File

@ -36,6 +36,9 @@
<AssemblyOriginatorKeyFile>..\bsmdKey.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>..\bsmdKey.snk</AssemblyOriginatorKeyFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
@ -54,7 +57,15 @@
<Compile Include="..\bsmd.database\Properties\AssemblyProjectKeyInfo.cs"> <Compile Include="..\bsmd.database\Properties\AssemblyProjectKeyInfo.cs">
<Link>Properties\AssemblyProjectKeyInfo.cs</Link> <Link>Properties\AssemblyProjectKeyInfo.cs</Link>
</Compile> </Compile>
<Compile Include="his-nord.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Request.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\bsmd.database\bsmd.database.csproj">
<Project>{19945af2-379b-46a5-b27a-303b5ec1d557}</Project>
<Name>bsmd.database</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

File diff suppressed because it is too large Load Diff