<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://TM.TransSmart.Shipment" elementFormDefault="qualified" targetNamespace="http://TM.TransSmart.Shipment" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <schemaInfo root_reference="carrierBooking" xmlns="http://schemas.microsoft.com/BizTalk/2003" />
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="carrierBooking">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="t:carrierBookingInfo"/>
        <xs:element ref="t:shipments"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="carrierBookingInfo">
    <xs:complexType>
      <xs:all>
        <xs:element ref="t:version"/>
        <xs:element ref="t:status"/>
        <xs:element ref="t:description"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="version" type="xs:string"/>
  <xs:element name="status" type="xs:string"/>
  <xs:element name="shipments">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="t:shipmentInfo"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="shipmentInfo">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" ref="t:customerId"/>
        <xs:element minOccurs="0" ref="t:costcenter"/>
        <xs:element minOccurs="0" ref="t:carrier"/>
        <xs:element minOccurs="0" ref="t:executingCarrier"/>
        <xs:element minOccurs="0" ref="t:reference"/>
        <xs:element minOccurs="0" ref="t:awb"/>
        <xs:element minOccurs="0" ref="t:description"/>
        <xs:element minOccurs="0" ref="t:instruction"/>
        <xs:element minOccurs="0" ref="t:value"/>
        <xs:element minOccurs="0" ref="t:valueCurrency"/>
        <xs:element minOccurs="0" ref="t:pickupDate"/>
        <xs:element minOccurs="0" ref="t:pickupTime"/>
        <xs:element minOccurs="0" ref="t:pickupTimeTo"/>
        <xs:element minOccurs="0" ref="t:requestedDeliveryDate"/>
        <xs:element minOccurs="0" ref="t:requestedDeliveryTime"/>
        <xs:element minOccurs="0" ref="t:requestedDeliveryTimeTo"/>
        <xs:element minOccurs="0" ref="t:plannedDeliveryDate"/>
        <xs:element minOccurs="0" ref="t:plannedDeliveryTime"/>
        <xs:element minOccurs="0" ref="t:service"/>
        <xs:element minOccurs="0" ref="t:serviceLevelTime"/>
        <xs:element minOccurs="0" ref="t:serviceLevelOther"/>
        <xs:element minOccurs="0" ref="t:incoterms"/>
        <xs:element minOccurs="0" ref="t:inbound"/>
        <xs:element minOccurs="0" ref="t:noOfPackages"/>
        <xs:element minOccurs="0" ref="t:weight"/>
        <xs:element minOccurs="0" ref="t:weightUom"/>
        <xs:element minOccurs="0" ref="t:price"/>
        <xs:element minOccurs="0" ref="t:salesPrice"/>
        <xs:element minOccurs="0" ref="t:currency"/>
        <xs:element minOccurs="0" ref="t:trackingUrl"/>
        <xs:element minOccurs="0" ref="t:shipmentStatusCode"/>
        <xs:element minOccurs="0" ref="t:additionalReferences"/>
        <xs:element minOccurs="0" ref="t:shipmentLines"/>
        <xs:element minOccurs="0" ref="t:addresses"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="customerId" type="xs:string"/>
  <xs:element name="costcenter" type="xs:string"/>
  <xs:element name="carrier" type="xs:string"/>
  <xs:element name="executingCarrier" type="xs:string"/>
  <xs:element name="reference" type="xs:string"/>
  <xs:element name="instruction" type="xs:string"/>
  <xs:element name="valueCurrency" type="xs:string"/>
  <xs:element name="pickupDate" type="xs:string"/>
  <xs:element name="pickupTime" type="xs:string"/>
  <xs:element name="pickupTimeTo" type="xs:string"/>
  <xs:element name="requestedDeliveryDate" type="xs:string"/>
  <xs:element name="requestedDeliveryTime" type="xs:string"/>
  <xs:element name="requestedDeliveryTimeTo" type="xs:string"/>
  <xs:element name="plannedDeliveryDate" type="xs:string"/>
  <xs:element name="plannedDeliveryTime" type="xs:string"/>
  <xs:element name="service" type="xs:string"/>
  <xs:element name="serviceLevelTime" type="xs:string"/>
  <xs:element name="serviceLevelOther" type="xs:string"/>
  <xs:element name="incoterms" type="xs:string"/>
  <xs:element name="inbound" type="xs:string"/>
  <xs:element name="noOfPackages" type="xs:integer"/>
  <xs:element name="weightUom" type="xs:string"/>
  <xs:element name="price" type="xs:string" nillable="true"/>
  <xs:element name="salesPrice" type="xs:string" nillable="true"/>
  <xs:element name="currency" type="xs:string"/>
  <xs:element name="trackingUrl" type="xs:string"/>
  <xs:element name="shipmentStatusCode" type="xs:string"/>
  <xs:element name="additionalReferences">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="t:additionalReference"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="additionalReference">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="t:type"/>
        <xs:element ref="t:value"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="shipmentLines">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="t:shipmentLine"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="shipmentLine">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" ref="t:sequence"/>
        <xs:element minOccurs="0" ref="t:lineNo"/>
        <xs:element minOccurs="0" ref="t:shipmentLineId"/>
        <xs:element minOccurs="0" ref="t:awb"/>
        <xs:element minOccurs="0" ref="t:packageType"/>
        <xs:element minOccurs="0" ref="t:description"/>
        <xs:element minOccurs="0" ref="t:quantity"/>
        <xs:element minOccurs="0" ref="t:genericStatusCode"/>
        <xs:element minOccurs="0" ref="t:carrierStatusCode"/>
        <xs:element minOccurs="0" ref="t:carrierStatusDescription"/>
        <xs:element minOccurs="0" ref="t:deliveryDate"/>
        <xs:element minOccurs="0" ref="t:deliveryTime"/>
        <xs:element minOccurs="0" ref="t:acceptedBy"/>
        <xs:element minOccurs="0" ref="t:measurements"/>
		<xs:element ref="t:dangerousGoods" minOccurs="0"/>
      </xs:all>   
    </xs:complexType> 
  </xs:element>       
  <xs:element name="sequence" type="xs:integer"/>
  <xs:element name="lineNo" type="xs:integer"/>
  <xs:element name="shipmentLineId" type="xs:string"/>
  <xs:element name="packageType" type="xs:string"/>
  <xs:element name="quantity" type="xs:integer"/>
  <xs:element name="genericStatusCode" type="xs:string"/>
  <xs:element name="carrierStatusCode" type="xs:string"/>
  <xs:element name="carrierStatusDescription" type="xs:string"/>
  <xs:element name="deliveryDate" type="xs:date"/>
  <xs:element name="deliveryTime" type="xs:time"/>
  <xs:element name="acceptedBy" type="xs:string"/>
  <xs:element name="measurements">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" ref="t:length"/>
        <xs:element minOccurs="0" ref="t:width"/>
        <xs:element minOccurs="0" ref="t:height"/>
        <xs:element minOccurs="0" ref="t:weight"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="length" type="xs:decimal" nillable="true"/>
  <xs:element name="width" type="xs:decimal" nillable="true"/>
  <xs:element name="height" type="xs:decimal" nillable="true"/>
  <xs:element name="addresses">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="t:address"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="address">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" ref="t:type"/>
        <xs:element minOccurs="0" ref="t:name"/>
        <xs:element minOccurs="0" ref="t:street1"/>
        <xs:element minOccurs="0" ref="t:street2"/>
        <xs:element minOccurs="0" ref="t:city"/>
        <xs:element minOccurs="0" ref="t:houseNo"/>
        <xs:element minOccurs="0" ref="t:zipCode"/>
        <xs:element minOccurs="0" ref="t:state"/>
        <xs:element minOccurs="0" ref="t:countryCode"/>
        <xs:element minOccurs="0" ref="t:contact"/>
        <xs:element minOccurs="0" ref="t:telNo"/>
        <xs:element minOccurs="0" ref="t:faxNo"/>
        <xs:element minOccurs="0" ref="t:email"/>
        <xs:element minOccurs="0" ref="t:VATNumber"/>
        <xs:element minOccurs="0" ref="t:accountNo"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
    <xs:element name="dangerousGoods" nillable="true">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="t:dangerousGoodsInfo" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="street1" type="xs:string"/>
  <xs:element name="street2" type="xs:string"/>
  <xs:element name="city" type="xs:string"/>
  <xs:element name="houseNo" type="xs:string"/>
  <xs:element name="zipCode" type="xs:string"/>
  <xs:element name="state" type="xs:string"/>
  <xs:element name="countryCode" type="xs:string"/>
  <xs:element name="contact" type="xs:string"/>
  <xs:element name="telNo" type="xs:string"/>
  <xs:element name="faxNo" type="xs:string"/>
  <xs:element name="email" type="xs:string"/>
  <xs:element name="VATNumber" type="xs:string"/>
  <xs:element name="accountNo" type="xs:string"/>
  <xs:element name="description" type="xs:string"/>
  <xs:element name="awb" type="xs:string"/>
  <xs:element name="value" type="xs:string" nillable="true"/>
  <xs:element name="weight" type="xs:string" nillable="true"/>
  <xs:element name="type" type="xs:string"/>
   <xs:element name="dangerousGoodsInfo" nillable="true">
        <xs:complexType>
            <xs:all>
                <xs:element ref="t:idCode" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>hazard identification code</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:unCode" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>united nations dangerous goods (UNDG) identifier</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:packingGroup" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>packing group</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:packingType" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>packing instruction type code</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:packingClassification" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>classification identifier</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:description" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>description of the dangerous good</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:markingIdentifier" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>dangerous goods marking identifier</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:limitedQuantity" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>flag to indicate if limited quantity is true or false</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:instruction" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>special instructions concerning the dangerous good</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:flashPointDegree" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>dangerous goods flashpoint degree</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:limitedQuantityPoints" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>limited quantity points</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:tunnelCode" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>dangerous goods tunnel code</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="t:measurements" minOccurs="0"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
    <xs:element name="idCode" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="64"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="unCode" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="64"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="packingGroup" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="64"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="packingType" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="64"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="packingClassification" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="64"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="markingIdentifier" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="64"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="limitedQuantity" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="1"/>
                <xs:enumeration value=""/>
                <xs:enumeration value="0"/>
                <xs:enumeration value="1"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="flashPointDegree" type="xs:decimal" nillable="true"/>
    <xs:element name="limitedQuantityPoints" type="xs:int" nillable="true"/>
    <xs:element name="tunnelCode" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="0"/>
                <xs:maxLength value="16"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>
