<?xml version="1.0" encoding="UTF-8"?>
<!--
 Department of Transportation
 Pipeline and Hazardous Materials Safety Administration (PHMSA)
 
 XML Schema for Hazardous Materials Incident Report
 Form DOT 5800.1 (01-2004) 
-->
<xs:schema
   targetNamespace="http://hazmat.dot.gov/enforce/spills/spills.htm"
   xmlns="http://hazmat.dot.gov/enforce/spills/spills.htm"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   elementFormDefault="qualified"
   version="01-2004" xml:lang="EN">

   <xs:annotation>
      <xs:documentation>
         Department of Transportation
          Pipeline and Hazardous Materials Safety Administration (PHMSA)
         XML Schema for Hazardous Materials Incident Report
         Form DOT 5800.1 (01-2004) 
      </xs:documentation>
   </xs:annotation>

   <xs:element name="IncidentReport">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="ReportType"
                        type="reportType"/>
            <xs:element name="GeneralIncidentInformation"
                        type="generalIncidentInformation"/>
            <xs:element name="Consequences"
                        type="consequences"/>
            <xs:element name="DescriptionOfEventsAndPackageFailure"
                        type="descriptionOfEventsAndPackageFailure"
                        minOccurs="0"/>
            <xs:element name="RecommendationsTakenToPreventRecurrence"
                        type="recommendationsTakenToPreventRecurrence"
                        minOccurs="0"/>
            <xs:element name="ContactInformation"
                        type="contactInformation"/>
         </xs:sequence>
         <xs:attribute name="OMBControlNumber" type="token"
                       fixed="2137-0039" use="optional"/>
      </xs:complexType>
   </xs:element>

   <!-- Part 1 =========================================================== -->
   <xs:complexType name="reportType">
      <xs:sequence>
         <xs:choice id="q1">
            <xs:element name="A-ReleaseIncident" type="empty"/>
            <xs:element name="B-UndeclaredShipment" type="empty"/>
            <xs:element name="C-TankDamage" type="empty"/>
         </xs:choice>
         <xs:choice id="q2">
            <xs:element name="InitialReport">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="CustomerTrackingNumber"
                                 type="customerTrackingNumber" />
                     <xs:element name="RespondToEmailAddress"
                                 type="emailAddress"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="SupplementalReport">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="CustomerTrackingNumber"
                                 type="customerTrackingNumber" />
                     <xs:element name="RespondToEmailAddress"
                                 type="emailAddress"/>
                     <xs:element name="IncidentReportNumber"
                                 type="incidentReportNumber"/>
                     <xs:element name="IncidentTrackingNumber"
                                 type="incidentTrackingNumber"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:choice>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="customerTrackingNumber">
      <xs:restriction base="token">
         <xs:maxLength value="16"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="incidentReportNumber">
      <xs:restriction base="token">
         <xs:maxLength value="12"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="incidentTrackingNumber">
      <xs:restriction base="token">
         <xs:maxLength value="20"/>
      </xs:restriction>
   </xs:simpleType>

   <!-- Part 2 =========================================================== -->
   <xs:complexType name="generalIncidentInformation">
      <xs:sequence>
         <xs:element name="DateOfIncident" type="xs:date" id="q3"/>
         <xs:element name="TimeOfIncident" type="xs:time" id="q4"/>
         <xs:element name="NationalResponseCenterReportNumber" minOccurs="0"
                     id="q5">
            <xs:simpleType>
               <xs:restriction base="xs:positiveInteger">
                  <xs:totalDigits value="8"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="ReportToAnotherDOTAgency" minOccurs="0" id="q6">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="DOTAgency" type="dotAgency"/>
                  <xs:element name="ReportNumber">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="12"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
         <xs:element name="LocationOfIncident" id="q7">
            <xs:complexType>
               <xs:choice>
                  <xs:element name="US_Location">
                     <xs:complexType>
                        <xs:sequence>
                           <xs:choice>
                              <xs:sequence>
                                 <xs:element name="City" type="city"/>
                                 <xs:element name="County" type="county"
                                             minOccurs="0"/>
                                 <xs:element name="State" type="state"/>
                                 <xs:element name="Route" type="route"
                                             minOccurs="0"/>
                              </xs:sequence>
                              <xs:sequence>
                                 <xs:element name="County" type="county"/>
                                 <xs:element name="State" type="state"/>
                                 <xs:element name="Route" type="route"/>
                              </xs:sequence>
                           </xs:choice>
                           <xs:element name="PostalCode" type="postalCode"
                                       minOccurs="0"/>
                        </xs:sequence>
                     </xs:complexType>
                  </xs:element>
                  <xs:element name="NonUS_Location">
                     <xs:complexType>
                        <xs:sequence>
                           <xs:element name="City" type="city" minOccurs="0"/>
                           <xs:element name="County" type="county"
                                       minOccurs="0"/>
                           <xs:element name="State" type="nonUS_State"
                                       minOccurs="0"/>
                           <xs:element name="Route" type="route"
                                       minOccurs="0"/>
                           <xs:element name="PostalCode" type="postalCode"
                                       minOccurs="0"/>
                           <xs:element name="Country" type="country"/>
                        </xs:sequence>
                     </xs:complexType>
                  </xs:element>
               </xs:choice>
            </xs:complexType>
         </xs:element>
         <xs:choice id="q8">
            <xs:element name="AirTransportation"
                        type="airIncidentInformation"/>
            <xs:element name="ModeOfTransportation">
               <xs:simpleType>
                  <xs:restriction base="token">
                     <xs:enumeration value="Highway"/>
                     <xs:enumeration value="Rail"/>
                     <xs:enumeration value="Water"/>
                  </xs:restriction>
               </xs:simpleType>
            </xs:element>
         </xs:choice>
         <xs:element name="TransportationPhase" id="q9">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="In Transit"/>
                  <xs:enumeration value="Loading"/>
                  <xs:enumeration value="Unloading"/>
                  <xs:enumeration value="In Transit Storage"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="Carrier-Reporter" id="q10">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Name">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="80"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
                  <xs:element name="Address" type="address"/>
                  <xs:element name="FederalDOTIdNumber" minOccurs="0">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="12"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
                  <xs:element name="HazmatRegistrationNumber" minOccurs="0">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="14"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
         <xs:element name="Shipper-Offeror" type="shipper-Offeror"
                     maxOccurs="unbounded" id="q11"/>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="dotAgency">
      <xs:restriction base="token">
         <xs:enumeration
                     value="Office of the Secretary of Transportation (OST)"/>
         <xs:enumeration value="Bureau of Transportation Statistics (BTS)"/>
         <xs:enumeration value="Federal Aviation Administration (FAA)"/>
         <xs:enumeration value="Federal Highway Administration (FHWA)"/>
         <xs:enumeration
                 value="Federal Motor Carrier Safety Administration (FMCSA)"/>
         <xs:enumeration value="Federal Railroad Administration (FRA)"/>
         <xs:enumeration value="Federal Transit Administration (FTA)"/>
         <xs:enumeration value="Maritime Administration (MARAD)"/>
         <xs:enumeration
               value="National Highway Traffic Safety Administration (NHTSA)"/>
         <xs:enumeration value="Office of the Inspector General (OIG)"/>
         <xs:enumeration
                  value="Research and Special Programs Administration (RSPA)"/>
         <xs:enumeration
                value="Saint Lawrence Seaway Development Corporation (SLSDC)"/>
         <xs:enumeration value="Surface Transportation Board (STB)"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:complexType name="shipper-Offeror">
      <xs:sequence>
         <xs:element name="Name">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="80"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="Address" type="address"/>
         <xs:element name="Waybill-ShippingPaper" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="16"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="HazmatRegistrationNumber" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="14"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="Origin" type="address" minOccurs="0" id="q12"/>
         <xs:element name="HazardousMaterial" type="hazardousMaterial"
                     maxOccurs="unbounded"/>
       </xs:sequence>
   </xs:complexType>

   <xs:complexType name="hazardousMaterial">
      <xs:sequence>
         <xs:element name="ShippingName" id="q14">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="250"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="Technical-TradeName" minOccurs="0" id="q15">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="20"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="HazardousClass-Division" id="q16">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:minLength value="2"/>
                  <xs:maxLength value="2"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="IdentificationNumber" id="q17">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="6"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="PackingGroup" minOccurs="0" id="q18">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="I"/>
                  <xs:enumeration value="II"/>
                  <xs:enumeration value="III"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:choice id="q19">
            <xs:element name="QuantityReleased" type="quantity"/>
            <xs:element name="QuantityReleased_No" type="empty"/>
         </xs:choice>
         <xs:choice id="q20">
            <xs:element name="HazardousWaste_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="EPAManifestNumber">
                        <xs:simpleType>
                           <xs:restriction base="xs:positiveInteger">
                              <xs:totalDigits value="20"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="HazardousWaste_No" type="empty"/>
         </xs:choice>
         <xs:choice id="q21">
            <xs:element name="ToxicByInhalation_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="HazardZone">
                        <xs:simpleType>
                           <xs:restriction base="token">
                              <xs:pattern value="[A-D]"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="ToxicByInhalation_No" type="empty"/>
         </xs:choice>
         <xs:choice id="q22">
            <xs:element name="Exemption-Approval-CACertificate_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="CertificateNumber">
                        <xs:simpleType>
                           <xs:restriction base="token">
                              <xs:maxLength value="12"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="Exemption-Approval-CACertificate_No"
                        type="empty"/>
         </xs:choice>
         <xs:choice id="q23">
            <xs:element name="UndeclaredShipment_Yes" type="empty"/>
            <xs:element name="UndeclaredShipment_No" type="empty"/>
         </xs:choice>
         <xs:element name="Packaging" type="packaging" maxOccurs="unbounded"/>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="packaging">
      <xs:sequence>
         <xs:element name="Destination" type="address" id="q13" minOccurs="0"/>
         <xs:element name="PackagingInformation"
                     type="packagingInformation"/>
      </xs:sequence>
   </xs:complexType>

   <!-- Part 3 =========================================================== -->
   <xs:complexType name="packagingInformation">
      <xs:sequence>
         <xs:choice id="q24">
	    <xs:element name="NonBulk" type="nonBulk"/>
	    <xs:element name="IntermediateBulkContainer-IBC"
                        type="intermediateBulkContainer"/>
	    <xs:element name="CargoTankMotorVehicle-CTMV"
                        type="markedPackaging"/>
	    <xs:element name="TankCar" type="markedPackaging"/>
	    <xs:element name="Cylinder" type="markedPackaging"/>
	    <xs:element name="RadioactiveMaterials"
                        type="radioactiveMaterials"/>
	    <xs:element name="PortableTank" type="markedPackaging"/>
            <xs:element name="NonSpecificationPackaging"
                        type="nonSpecificationPackaging"/>
         </xs:choice>
         <xs:element name="Failure" minOccurs="0" maxOccurs="unbounded"
                     id="q25">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="WhatFailed"
                              type="whatFailed"/>
                  <xs:element name="HowFailed"
                              type="howFailed"/>
                  <xs:element name="CausesOfFailure"
                              type="causesOfFailure"/>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="markedPackaging">
      <xs:sequence>
         <xs:element name="IdentificationMarkings"
                     type="identificationMarkings" id="q26a-mp"/>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-mp"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28-mp"/>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="identificationMarkings" id="q26a">
      <xs:restriction base="token">
         <xs:maxLength value="40"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:complexType name="nonBulk">
      <xs:choice>
         <xs:sequence>
            <xs:element name="IdentificationMarkings"
                        type="identificationMarkings" id="q26a-nb"/>
            <xs:element name="AdditionalCharacteristics" minOccurs="0">
               <xs:complexType>
                  <xs:choice>
                     <xs:element name="SinglePackage"
                                 type="additionalCharacteristics"/>
                     <xs:sequence>
                        <xs:element name="OuterPackaging"
                                    type="additionalCharacteristics"/>
                        <xs:element name="InnerPackaging"
                                    type="additionalCharacteristics"/>
                     </xs:sequence>
                  </xs:choice>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
         <xs:choice>
            <xs:element name="SinglePackage"
                        type="nonBulkSingleOuterLayer"/>
            <xs:sequence>
               <xs:element name="OuterPackaging"
                           type="nonBulkSingleOuterLayer"/>
               <xs:element name="InnerPackaging" type="nonBulkInnerLayer"/>
            </xs:sequence>
         </xs:choice>
      </xs:choice>
   </xs:complexType>

   <xs:complexType name="additionalCharacteristics">
      <xs:sequence>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28"/>
      </xs:sequence>
   </xs:complexType>
   
   <xs:complexType name="nonBulkSingleOuterLayer">
      <xs:sequence>
         <xs:element name="PackagingType">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="1 - Drum"/>
                  <xs:enumeration value="2 - Wooden Barrel"/>
                  <xs:enumeration value="3 - Jerrican"/>
                  <xs:enumeration value="4 - Box"/>
                  <xs:enumeration value="5 - Bag"/>
                  <xs:enumeration value="6 - Composite Packaging"/>
                  <xs:enumeration value="7 - Pressure receptacle"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="MaterialOfConstruction">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="A - Steel"/>
                  <xs:enumeration value="B - Aluminum"/>
                  <xs:enumeration value="C - Natural Wood"/>
                  <xs:enumeration value="D - Plywood"/>
                  <xs:enumeration value="F - Reconstituted Wood"/>
                  <xs:enumeration value="G - Fiberboard"/>
                  <xs:enumeration value="H - Plastic"/>
                  <xs:enumeration value="L - Textile"/>
                  <xs:enumeration value="M - Paper, multi-wall"/>
                  <xs:enumeration
                              value="N - Metal other than steel or aluminum"/>
                  <xs:enumeration value="P - Glass, porcelain, or stoneware"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="HeadType" type="headType" minOccurs="0"/>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-nbo"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28-nbo"/>
      </xs:sequence>
   </xs:complexType>
   
   <xs:complexType name="nonBulkInnerLayer">
      <xs:sequence>
         <xs:element name="PackagingType">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="1 - Bottle"/>
                  <xs:enumeration value="2 - Can"/>
                  <xs:enumeration value="3 - Box"/>
                  <xs:enumeration value="4 - Bag"/>
                  <xs:enumeration value="5 - Cylinder"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="MaterialOfConstruction">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="A - Metal (any type)"/>
                  <xs:enumeration value="B - Glass, porcelain, or stoneware"/>
                  <xs:enumeration value="C - Plastic"/>
                  <xs:enumeration value="D - Fiberboard or cardboard"/>
                  <xs:enumeration value="E - Wood (any type)"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-nbi"/>
         <xs:element
                  name="PackagingConstructionAndTestInformation"
                  type="packagingConstructionAndTestInformation"
                  minOccurs="0" id="q28-nbi"/>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="intermediateBulkContainer">
      <xs:choice>
         <xs:sequence>
            <xs:element name="IdentificationMarkings"
                        type="identificationMarkings" id="q26a-ibc"/>
            <xs:element name="AdditionalCharacteristics" minOccurs="0">
               <xs:complexType>
                  <xs:choice>
                     <xs:element name="SinglePackage"
                                 type="additionalCharacteristics"/>
                     <xs:sequence>
                        <xs:element name="OuterPackaging"
                                    type="additionalCharacteristics"/>
                        <xs:element name="InnerPackaging"
                                    type="additionalCharacteristics"/>
                     </xs:sequence>
                  </xs:choice>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
         <xs:choice>
            <xs:element name="SinglePackage"
                        type="intermediateBulkContainerSingleOuterLayer"/>
            <xs:sequence>
               <xs:element name="OuterPackaging"
                           type="intermediateBulkContainerSingleOuterLayer"/>
               <xs:element name="InnerPackaging"
                           type="intermediateBulkContainerInnerLayer"/>
            </xs:sequence>
         </xs:choice>
      </xs:choice>
   </xs:complexType>

   <xs:complexType name="intermediateBulkContainerSingleOuterLayer">
      <xs:sequence>
         <xs:element name="PackagingType"
                     type="intermediateBulkContainerPackagingType"/>
         <xs:element name="MaterialOfConstruction"
                     type="intermediateBulkContainerMaterialOfConstruction"/>
         <xs:element name="HeadType" type="headType" minOccurs="0"/>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-ibco"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28-ibco"/>
      </xs:sequence>
   </xs:complexType>
   
   <xs:complexType name="intermediateBulkContainerInnerLayer">
      <xs:sequence>
         <xs:element name="PackagingType"
                     type="intermediateBulkContainerPackagingType"/>
         <xs:element name="MaterialOfConstruction"
                     type="intermediateBulkContainerMaterialOfConstruction"/>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-ibci"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28-ibci"/>
      </xs:sequence>
   </xs:complexType>
   
   <xs:simpleType name="intermediateBulkContainerPackagingType">
      <xs:restriction base="token">
         <xs:enumeration value=
                     "11 - Rigid IBC containing solids discharged by gravity"/>
         <xs:enumeration value=
"21 - Rigid IBC containing solids discharged under pressure of more than 10 kPa"/>
         <xs:enumeration value="31 - Rigid IBC containing liquids"/>
         <xs:enumeration value=
                  "13 - Flexible IBC containing solids discharged by gravity"/>
      </xs:restriction>
   </xs:simpleType>
   
   <xs:simpleType name="intermediateBulkContainerMaterialOfConstruction">
      <xs:restriction base="token">
         <xs:enumeration value="1 - Metal"/>
         <xs:enumeration value="2 - Plastic"/>
         <xs:enumeration value="3 - Composite"/>
         <xs:enumeration value="4 - Fiberboard"/>
         <xs:enumeration value="5 - Wooden"/>
         <xs:enumeration value="6 - Flexible"/>
      </xs:restriction>
   </xs:simpleType>
   
   <xs:complexType name="nonSpecificationPackaging">
      <xs:sequence>
         <xs:element name="Type">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="16"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:choice>
            <xs:sequence>
               <xs:element name="IdentificationMarkings"
                           type="identificationMarkings" id="q26a-nsp"/>
               <xs:element name="AdditionalCharacteristics" minOccurs="0">
                  <xs:complexType>
                     <xs:choice>
                        <xs:element name="SinglePackage"
                                    type="additionalCharacteristics"/>
                        <xs:sequence>
                           <xs:element name="OuterPackaging"
                                       type="additionalCharacteristics"/>
                           <xs:element name="InnerPackaging"
                                       type="additionalCharacteristics"/>
                        </xs:sequence>
                     </xs:choice>
                  </xs:complexType>
               </xs:element>
            </xs:sequence>
            <xs:choice>
               <xs:element name="SinglePackage"
                           type="nonSpecificationPackagingSingleOuterLayer"/>
               <xs:sequence>
                  <xs:element name="OuterPackaging"
                             type="nonSpecificationPackagingSingleOuterLayer"/>
                  <xs:element name="InnerPackaging"
                              type="nonSpecificationPackagingInnerLayer"/>
               </xs:sequence>
            </xs:choice>
         </xs:choice>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="nonSpecificationPackagingSingleOuterLayer">
      <xs:sequence>
         <xs:element name="PackagingType" type="token"/>
         <xs:element name="MaterialOfConstruction" type="token"/>
         <xs:element name="HeadType" type="headType" minOccurs="0"/>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-nspo"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28-nspo"/>
      </xs:sequence>
   </xs:complexType>
   
   <xs:complexType name="nonSpecificationPackagingInnerLayer">
      <xs:sequence>
         <xs:element name="PackagingType" type="token"/>
         <xs:element name="MaterialOfConstruction" type="token"/>
         <xs:element name="PackageCapacityAndQuantity"
                     type="packageCapacityAndQuantity"
                     minOccurs="0" id="q27-nspi"/>
         <xs:element name="PackagingConstructionAndTestInformation"
                     type="packagingConstructionAndTestInformation"
                     minOccurs="0" id="q28-nspi"/>
      </xs:sequence>
   </xs:complexType>
   
   <xs:simpleType name="headType">
      <xs:restriction base="token">
         <xs:enumeration value="1 - Non-removable"/>
         <xs:enumeration value="2 - Removable"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:complexType name="radioactiveMaterials">
      <xs:sequence>
         <xs:element name="IdentificationMarkings"
                     type="identificationMarkings" id="q26a-rm"/>
         <xs:choice minOccurs="0">
	    <xs:element name="SinglePackage"
                        type="additionalCharacteristics"/>
            <xs:sequence>
               <xs:element name="OuterPackaging"
                           type="additionalCharacteristics"/>
               <xs:element name="InnerPackaging"
                           type="additionalCharacteristics"/>
            </xs:sequence>
         </xs:choice>
         <xs:element name="PackagingCategory" id="q29">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="Type A"/>
                  <xs:enumeration value="Type B"/>
                  <xs:enumeration value="Type C"/>
                  <xs:enumeration value="Excepted"/>
                  <xs:enumeration value="Industrial"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="PackagingCertification">
            <xs:complexType>
               <xs:choice>
                  <xs:element name="US_Certification">
                     <xs:complexType>
                        <xs:sequence>
                           <xs:element name="CertificationNumber">
                              <xs:simpleType>
                                 <xs:restriction base="token">
                                    <xs:maxLength value="30"/>
                                 </xs:restriction>
                              </xs:simpleType>
                           </xs:element>
                        </xs:sequence>
                     </xs:complexType>
                  </xs:element>
                  <xs:element name="SelfCertified" type="empty"/>
               </xs:choice>
            </xs:complexType>
         </xs:element>
         <xs:element name="NuclidePresent">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="80"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="Activity" type="quantity"/>
         <xs:element name="TransportIndex">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="2"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="CriticalSafetyIndex">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="2"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="packageCapacityAndQuantity">
      <xs:sequence>
         <xs:element name="PackageCapacity" type="quantity"/>
         <xs:element name="AmountOfMaterialInPackage" type="quantity"/>
         <xs:element name="NumberOfPackagesInShipment">
            <xs:simpleType>
               <xs:restriction base="xs:positiveInteger">
                  <xs:totalDigits value="4"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="NumberOfPackagesThatFailed">
            <xs:simpleType>
               <xs:restriction base="xs:nonNegativeInteger">
                  <xs:totalDigits value="4"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="packagingConstructionAndTestInformation">
      <xs:sequence>
         <xs:element name="Manufacturer" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="80"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="ManufactureDate" type="xs:date" minOccurs="0"/>
         <xs:element name="SerialNumber" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="16"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="LastTestDate" type="xs:date" minOccurs="0"/>
         <xs:element name="MaterialOfConstruction" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="30"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="DesignPressure" type="pressure" minOccurs="0"/>
         <xs:element name="ShellThickness" type="thickness" minOccurs="0"/>
         <xs:element name="HeadThickness" type="thickness" minOccurs="0"/>
         <xs:element name="ServicePressure" type="pressure" minOccurs="0"/>
         <xs:element name="ValveOrDeviceFailed" minOccurs="0">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Type">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="16"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
                  <xs:element name="Manufacturer">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="30"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
                  <xs:element name="Model">
                     <xs:simpleType>
                        <xs:restriction base="token">
                           <xs:maxLength value="16"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="whatFailed">
      <xs:restriction base="token">
         <xs:enumeration value="101 - Air Inlet"/>
         <xs:enumeration value="102 - Auxiliary Valve"/>
         <xs:enumeration value="103 - Basic Material"/>
         <xs:enumeration value="104 - Body"/>
         <xs:enumeration value="105 - Bolts or Nuts"/>
         <xs:enumeration value="106 - Bottom Outlet Valve"/>
         <xs:enumeration value="107 - Check Valve"/>
         <xs:enumeration value="108 - Chime"/>
         <xs:enumeration value="109 - Closure (e.g., Cap, Top, or Plug)"/>
         <xs:enumeration value="110 - Cover"/>
         <xs:enumeration value="111 - Cylinder Neck or Shoulder"/>
         <xs:enumeration value="112 - Cylinder Sidewall - Near Base"/>
         <xs:enumeration value="113 - Cylinder Sidewall - Other"/>
         <xs:enumeration value="114 - Cylinder Valve"/>
         <xs:enumeration value="115 - Discharge Valve or Coupling"/>
         <xs:enumeration value="116 - Excess Flow Valve"/>
         <xs:enumeration value="117 - Fill Hole"/>
         <xs:enumeration value="118 - Flange"/>
         <xs:enumeration value="119 - Frangible Disc"/>
         <xs:enumeration
                      value="120 - Fusible Pressure Relief Device or Element"/>
         <xs:enumeration value="121 - Gasket"/>
         <xs:enumeration value="122 - Gauging Device"/>
         <xs:enumeration value="123 - Heater Coil"/>
         <xs:enumeration value="124 - High Level Sensor"/>
         <xs:enumeration value="125 - Hose"/>
         <xs:enumeration value="126 - Hose Adaptor or Coupling"/>
         <xs:enumeration value="127 - Inlet (Loading) Valve"/>
         <xs:enumeration value="128 - Inner Packaging"/>
         <xs:enumeration value="129 - Inner Receptacle"/>
         <xs:enumeration value="130 - Lifting Feature"/>
         <xs:enumeration value="131 - Lifting Lug"/>
         <xs:enumeration value="132 - Liner"/>
         <xs:enumeration value="133 - Liquid Line"/>
         <xs:enumeration value="134 - Liquid Valve"/>
         <xs:enumeration value="135 - Loading or Unloading Lines"/>
         <xs:enumeration value="136 - Locking Bar"/>
         <xs:enumeration value="137 - Manway or Dome Cover"/>
         <xs:enumeration value="138 - Mounting Studs"/>
         <xs:enumeration value="139 - O-Ring or Seals"/>
         <xs:enumeration value="140 - Outer Frame"/>
         <xs:enumeration value="141 - Piping or Fittings"/>
         <xs:enumeration value="142 - Piping Shear Section"/>
         <xs:enumeration
                value="143 - Pressure Relief Valve or Device - Non-Reclosing"/>
         <xs:enumeration
                    value="144 - Pressure Relief Valve or Device - Reclosing"/>
         <xs:enumeration value="145 - Remote Control Device"/>
         <xs:enumeration value="146 - Sample Line"/>
         <xs:enumeration value="147 - Stub Sill (Tank Car)"/>
         <xs:enumeration value="148 - Sump"/>
         <xs:enumeration value="149 - Tank Head"/>
         <xs:enumeration value="150 - Tank Shell"/>
         <xs:enumeration value="151 - Thermometer Well"/>
         <xs:enumeration value="152 - Threaded Connection"/>
         <xs:enumeration value="153 - Vacuum Relief Valve"/>
         <xs:enumeration value="154 - Valve Body"/>
         <xs:enumeration value="155 - Valve Seat"/>
         <xs:enumeration value="156 - Valve Spring"/>
         <xs:enumeration value="157 - Valve Stem"/>
         <xs:enumeration value="158 - Vapor Valve"/>
         <xs:enumeration value="159 - Vent"/>
         <xs:enumeration value="160 - Washout"/>
         <xs:enumeration value="161 - Weld or Seam"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="howFailed">
      <xs:restriction base="token">
         <xs:enumeration value="301 - Abraded"/>
         <xs:enumeration value="302 - Bent"/>
         <xs:enumeration value="303 - Burst or Ruptured"/>
         <xs:enumeration value="304 - Cracked"/>
         <xs:enumeration value="305 - Crushed"/>
         <xs:enumeration value="306 - Failed to Operate"/>
         <xs:enumeration value="307 - Gouged or Cut"/>
         <xs:enumeration value="308 - Leaked"/>
         <xs:enumeration value="309 - Punctured"/>
         <xs:enumeration value="310 - Ripped or Torn"/>
         <xs:enumeration value="311 - Structural"/>
         <xs:enumeration value="312 - Torn Off or Damaged"/>
         <xs:enumeration value="313 - Vented"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="causesOfFailure">
      <xs:restriction base="token">
         <xs:enumeration value="501 - Abrasion"/>
         <xs:enumeration value="502 - Broken Component or Device"/>
         <xs:enumeration value="503 - Commodity Self-ignition"/>
         <xs:enumeration value="504 - Commodity Polymerization"/>
         <xs:enumeration
                 value="505 - Conveyer or Material Handling Equipment Mishap"/>
         <xs:enumeration value="506 - Corrosion - Exterior"/>
         <xs:enumeration value="507 - Corrosion - Interior"/>
         <xs:enumeration value="508 - Defective Component or Device"/>
         <xs:enumeration value="509 - Derailment"/>
         <xs:enumeration value="510 - Deterioration or Aging"/>
         <xs:enumeration value="511 - Dropped"/>
         <xs:enumeration value="512 - Fire, Temperature, or Heat"/>
         <xs:enumeration value="513 - Forklift Accident"/>
         <xs:enumeration value="514 - Freezing"/>
         <xs:enumeration value="515 - Human Error"/>
         <xs:enumeration
           value="516 - Impact with Sharp or Protruding Object (e.g., nails)"/>
         <xs:enumeration
                        value="517 - Improper Preparation for Transportation"/>
         <xs:enumeration value="518 - Inadequate Accident Damage Protection"/>
         <xs:enumeration value="519 - Inadequate Blocking and Bracing"/>
         <xs:enumeration value="520 - Inadequate Maintenance"/>
         <xs:enumeration
                      value="521 - Inadequate Preparation for Transportation"/>
         <xs:enumeration value="522 - Inadequate Procedures"/>
         <xs:enumeration value="523 - Inadequate Training"/>
         <xs:enumeration value="524 - Incompatible Product"/>
         <xs:enumeration value="525 - Incorrectly Sized Component or Device"/>
         <xs:enumeration value="526 - Loose Closure, Component, or Device"/>
         <xs:enumeration
                      value="527 - Misaligned Material, Component, or Device"/>
         <xs:enumeration value="528 - Missing Component or Device"/>
         <xs:enumeration value="529 - Overfilled"/>
         <xs:enumeration value="530 - Over-pressurized"/>
         <xs:enumeration value="531 - Rollover Accident"/>
         <xs:enumeration
                     value="532 - Stub Sill Separation from Tank (Tank Cars)"/>
         <xs:enumeration value="533 - Threads Worn or Cross Threaded"/>
         <xs:enumeration value="534 - Too Much Weight on Package"/>
         <xs:enumeration value="535 - Valve Open"/>
         <xs:enumeration value="536 - Vandalism"/>
         <xs:enumeration value="537 - Vehicular Crash or Accident Damage"/>
         <xs:enumeration value="538 - Water Damage"/>
      </xs:restriction>
   </xs:simpleType>

   <!-- Part 4 =========================================================== -->
   <xs:complexType name="consequences">
      <xs:sequence>
         <xs:element name="ResultsOfIncident" minOccurs="0" id="q30">
            <xs:complexType>
               <xs:choice>
                  <xs:sequence>
                     <xs:element name="Result" maxOccurs="6">
                        <xs:simpleType> 
                           <xs:restriction base="token">
                              <xs:enumeration value="Spillage"/>
                              <xs:enumeration value="Fire"/>
                              <xs:enumeration value="Explosion"/>
                              <xs:enumeration
                                value="Material Entered Waterway/Storm Sewer"/>
                              <xs:enumeration value="Vapor (Gas) Dispersion"/>
                              <xs:enumeration value="Environmental Damage"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                  </xs:sequence>
                  <xs:element name="NoRelease" type="empty"/>
               </xs:choice>
            </xs:complexType>
         </xs:element>
         <xs:element name="EmergencyResponse" minOccurs="0" id="q31">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Fire-EMSReport" type="reportNumber"
                              minOccurs="0"/>
                  <xs:element name="PoliceReport" type="reportNumber"
                              minOccurs="0"/>
                  <xs:element name="InHouseCleanup" type="empty"
                              minOccurs="0"/>
                  <xs:element name="OtherCleanup" type="empty"
                              minOccurs="0"/>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
         <xs:choice id="q32">
            <xs:element name="DamagesMoreThan500_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="MaterialLoss" type="cost"/>
                     <xs:element name="CarrierDamage" type="cost"/>
                     <xs:element name="PropertyDamage" type="cost"/>
                     <xs:element name="ResponseCost" type="cost"/>
                     <xs:element name="Remediation-CleanupCost" type="cost"/>
                     <xs:element name="TotalCost">
                        <xs:simpleType>
                           <xs:restriction base="token">
                              <xs:pattern value="\$[5-9]\d{2}|\$[1-9]\d{3,7}"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="Damages_No" type="empty"/>
         </xs:choice>
         <xs:element name="HumanFatalities" id="q33">
            <xs:complexType>
               <xs:sequence>
                  <xs:choice id="q33a">
                     <xs:element name="FatalitiesFromHazardousMaterial_Yes"
                                 type="public"/>
                     <xs:element name="FatalitiesFromHazardousMaterial_No"
                                 type="empty"/>
                  </xs:choice>
                  <xs:choice id="q33b">
                     <xs:element name="FatalitiesNotFromHazardousMaterial_Yes">
                        <xs:complexType>
                           <xs:sequence>
                              <xs:element name="FatalitiesNumber">
                                 <xs:simpleType>
                                    <xs:restriction base="xs:positiveInteger">
                                       <xs:totalDigits value="3"/>
                                    </xs:restriction>
                                 </xs:simpleType>
                              </xs:element>
                           </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                     <xs:element name="FatalitiesNotFromHazardousMaterial_No"
                                 type="empty"/>
                  </xs:choice>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
         <xs:choice id="q34">
            <xs:element name="PersonalInjuries_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="Hospitalized" type="public"/>
                     <xs:element name="NonHospitalized" type="public"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="PersonalInjuries_No" type="empty"/>
         </xs:choice>
         <xs:choice id="q35">
            <xs:element name="Evacuation_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="GeneralPublicEvacuated"
                                 type="evacuatedNumber"/>
                     <xs:element name="EmployeesEvacuated"
                                 type="evacuatedNumber"/>
                     <xs:element name="TotalEvacuated"
                                 type="evacuatedNumber"/>
                     <xs:element name="DurationOfEvacuation" type="duration"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="Evacuation_No" type="empty"/>
         </xs:choice>
         <xs:choice id="q36">
            <xs:element name="TransportationArteryClosed_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="Duration" type="duration"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="TransportationArteryClosed_No" type="empty"/>
         </xs:choice>
         <xs:choice id="q37">
            <xs:element name="MaterialInvolvedInCrash_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="EstimatedSpeed">
                        <xs:simpleType>
                           <xs:restriction base="token">
                              <xs:pattern value="\d{1,3} mph"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                     <xs:element name="WeatherConditions">
                        <xs:simpleType>
                           <xs:restriction base="token">
                              <xs:maxLength value="16"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                     <xs:choice>
                        <xs:element name="VehicleOverturn_Yes" type="empty"/>
                        <xs:element name="VehicleOverturn_No" type="empty"/>
                     </xs:choice>
                     <xs:choice>
                        <xs:element name="VehicleLeftRoadway-Track_Yes"
                                    type="empty"/>
                        <xs:element name="VehicleLeftRoadway-Track_No"
                                    type="empty"/>
                     </xs:choice>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="MaterialInvolvedInCrash_No" type="empty"/>
         </xs:choice>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="reportNumber">
      <xs:restriction base="token">
         <xs:maxLength value="16"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:complexType name="public">
      <xs:sequence>
         <xs:element name="Employees" type="publicNumber"/>
         <xs:element name="Responders" type="publicNumber"/>
         <xs:element name="GeneralPublic" type="publicNumber"/>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="publicNumber">
      <xs:restriction base="xs:nonNegativeInteger">
         <xs:totalDigits value="3"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="evacuatedNumber">
      <xs:restriction base="xs:nonNegativeInteger">
         <xs:totalDigits value="5"/>
      </xs:restriction>
   </xs:simpleType>

   <!-- Part 5 =========================================================== -->
   <xs:complexType name="airIncidentInformation">
      <xs:sequence>
         <xs:choice id="q38">
            <xs:element name="ShipmentOnPassengerAircraft_Yes">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="TenderType">
                        <xs:simpleType> 
                           <xs:restriction base="token">
                              <xs:enumeration value="Cargo"/>
                              <xs:enumeration value="Passenger baggage"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name="ShipmentOnPassengerAircraft_No" type="empty"/>
         </xs:choice>
         <xs:element name="WhereIncidentOccur" id="q39">
            <xs:simpleType> 
               <xs:restriction base="token">
                  <xs:enumeration value="Air carrier cargo facility"/>
                  <xs:enumeration value="Sort center"/>
                  <xs:enumeration value="Baggage area"/>
                  <xs:enumeration value="By surface to/from airport"/>
                  <xs:enumeration value="During flight"/>
                  <xs:enumeration
                                 value="During loading/unloading of aircraft"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="PhasesShipmentAlreadyUndergone" id="q40">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Phase" maxOccurs="4">
                     <xs:simpleType> 
                        <xs:restriction base="token">
                           <xs:enumeration
                                    value="Shipment had not been transported"/>
                           <xs:enumeration
                                    value="Transported by air (first flight)"/>
                           <xs:enumeration
                                value="Transport by air (subsequent flights)"/>
                           <xs:enumeration
                       value="Initial transport by highway to cargo facility"/>
                           <xs:enumeration
                               value="Transfer at sort center/cargo facility"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:element>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <!-- Part 6 =========================================================== -->
   <xs:complexType name="descriptionOfEventsAndPackageFailure">
      <xs:sequence>
         <xs:element name="Description">
            <xs:simpleType>
               <xs:restriction base="xs:string">
                  <xs:maxLength value="80000"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="Attachments" minOccurs="0">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Attachment" type="attachment"
                              minOccurs="0" maxOccurs="unbounded"/>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="attachment">
      <xs:sequence>
         <xs:element name="Description">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="80"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="MimeType">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="application/pdf"/>
                  <xs:enumeration value="text/plain"/>
                  <xs:enumeration value="image/gif"/>
                  <xs:enumeration value="image/jpeg"/>
                  <xs:enumeration value="image/tiff"/>
                  <xs:enumeration value="image/bmp"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:choice>
            <xs:element name="HexData">
               <xs:simpleType>
                  <xs:list>
                     <xs:simpleType>
                        <xs:restriction base="xs:hexBinary">
                           <xs:whiteSpace value="collapse"/>
                        </xs:restriction>
                     </xs:simpleType>
                  </xs:list>
               </xs:simpleType>
            </xs:element>
            <xs:element name="Base64Data" type="xs:base64Binary"/>
         </xs:choice>
      </xs:sequence>
   </xs:complexType>

   <!-- Part 7 =========================================================== -->
   <xs:simpleType name="recommendationsTakenToPreventRecurrence">
      <xs:restriction base="xs:string">
         <xs:maxLength value="4000"/>
      </xs:restriction>
   </xs:simpleType>

   <!-- Part 8 =========================================================== -->
   <xs:complexType name="contactInformation">
      <xs:sequence>
         <xs:element name="ContactsName">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="50"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="ContactsTitle" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="50"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="BusinessName">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="80"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="BusinessAddress" type="address"/>
         <xs:element name="EmailAddress" type="emailAddress" minOccurs="0"/>
         <xs:element name="PhoneNumber">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="25"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="FaxNumber" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="25"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="HazmatRegistrationNumber" minOccurs="0">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="14"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:choice>
            <xs:element name="Preparer">
               <xs:simpleType>
                  <xs:restriction base="token">
                     <xs:enumeration value="Carrier"/>
                     <xs:enumeration value="Shipper"/>
                     <xs:enumeration value="Facility owner/operator"/>
                  </xs:restriction>
               </xs:simpleType>
            </xs:element>
            <xs:element name="OtherPreparer">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:maxLength value="50"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         </xs:choice>
         <xs:element name="Date" type="xs:date" minOccurs="0"/>
      </xs:sequence>
   </xs:complexType>

   <!-- ================================================================== -->
   <xs:simpleType name="token">
      <xs:restriction base="xs:string">
         <xs:whiteSpace value="collapse"/>
         <xs:minLength value="1"/>
      </xs:restriction>
   </xs:simpleType>
 
   <xs:complexType name="empty"/>
 
   <xs:complexType name="address">
      <xs:choice>
         <xs:element name="US_Address">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Street" type="street" minOccurs="0"/>
                  <xs:choice>
                     <xs:sequence>
                        <xs:element name="City" type="city"/>
                        <xs:element name="State" type="state"/>
                        <xs:element name="PostalCode" type="postalCode" />
                     </xs:sequence>
                     <xs:sequence>
                        <xs:element name="State" type="state"/>
                        <xs:element name="PostalCode" type="postalCode"/>
                     </xs:sequence>
                     <xs:element name="PostalCode" type="postalCode"/>
                  </xs:choice>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
         <xs:element name="NonUS_Address">
            <xs:complexType>
               <xs:sequence>
                  <xs:element name="Street" type="street" />
                  <xs:element name="City" type="city" />
                  <xs:element name="State" type="nonUS_State" />
                  <xs:element name="PostalCode" type="postalCode"
                              minOccurs="0"/>
                  <xs:element name="Country" type="country"/>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
      </xs:choice>
   </xs:complexType>

   <xs:simpleType name="country">
      <xs:restriction base="token">
         <xs:maxLength value="25"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="street">
      <xs:restriction base="token">
         <xs:maxLength value="40"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="city">
      <xs:restriction base="token">
         <xs:maxLength value="40"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="county">
      <xs:restriction base="token">
         <xs:maxLength value="25"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="state">
      <xs:restriction base="token">
         <xs:enumeration value="AK - Alaska"/>
         <xs:enumeration value="AL - Alabama"/>
         <xs:enumeration value="AR - Arkansas"/>
         <xs:enumeration value="AZ - Arizona"/>
         <xs:enumeration value="CA - California"/>
         <xs:enumeration value="CO - Colorado"/>
         <xs:enumeration value="CT - Connecticut"/>
         <xs:enumeration value="DC - District of Columbia"/>
         <xs:enumeration value="DE - Delaware"/>
         <xs:enumeration value="FL - Florida"/>
         <xs:enumeration value="GA - Georgia"/>
         <xs:enumeration value="GU - Guam"/>
         <xs:enumeration value="HI - Hawaii"/>
         <xs:enumeration value="IA - Iowa"/>
         <xs:enumeration value="ID - Idaho"/>
         <xs:enumeration value="IL - Illinois"/>
         <xs:enumeration value="IN - Indiana"/>
         <xs:enumeration value="KS - Kansas"/>
         <xs:enumeration value="KY - Kentucky"/>
         <xs:enumeration value="LA - Louisiana"/>
         <xs:enumeration value="MA - Massachusetts"/>
         <xs:enumeration value="MD - Maryland"/>
         <xs:enumeration value="ME - Maine"/>
         <xs:enumeration value="MI - Michigan"/>
         <xs:enumeration value="MN - Minnesota"/>
         <xs:enumeration value="MO - Missouri"/>
         <xs:enumeration value="MS - Mississippi"/>
         <xs:enumeration value="MT - Montana"/>
         <xs:enumeration value="NC - North Carolina"/>
         <xs:enumeration value="ND - North Dakota"/>
         <xs:enumeration value="NE - Nebraska"/>
         <xs:enumeration value="NH - New Hampshire"/>
         <xs:enumeration value="NJ - New Jersey"/>
         <xs:enumeration value="NM - New Mexico"/>
         <xs:enumeration value="NV - Nevada"/>
         <xs:enumeration value="NY - New York"/>
         <xs:enumeration value="OH - Ohio"/>
         <xs:enumeration value="OK - Oklahoma"/>
         <xs:enumeration value="OR - Oregon"/>
         <xs:enumeration value="PA - Pennsylvania"/>
         <xs:enumeration value="PR - Puerto Rico"/>
         <xs:enumeration value="RI - Rhode Island"/>
         <xs:enumeration value="SC - South Carolina"/>
         <xs:enumeration value="SD - South Dakota"/>
         <xs:enumeration value="TN - Tennessee"/>
         <xs:enumeration value="TX - Texas"/>
         <xs:enumeration value="UT - Utah"/>
         <xs:enumeration value="VA - Virginia"/>
         <xs:enumeration value="VI - Virgin Islands"/>
         <xs:enumeration value="VT - Vermont"/>
         <xs:enumeration value="WA - Washington"/>
         <xs:enumeration value="WI - Wisconsin"/>
         <xs:enumeration value="WV - West Virginia"/>
         <xs:enumeration value="WY - Wyoming"/>
         <xs:enumeration value="XX - Unknown"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="nonUS_State">
      <xs:restriction base="token">
         <xs:maxLength value="30"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="postalCode">
      <xs:restriction base="token">
         <xs:maxLength value="10"/>
      </xs:restriction>
   </xs:simpleType>

   <!-- Street Address, Mile Marker, Yardname, Airport,
        Body of Water, River Mile -->
   <xs:simpleType name="route">
      <xs:restriction base="token">
         <xs:maxLength value="30"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="emailAddress">
      <xs:restriction base="token">
         <xs:pattern value="[\w\.-]+@[\w-]+\.[\w\.-]+"/>
         <xs:maxLength value="80"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:complexType name="quantity">
      <xs:sequence>
         <xs:element name="Quantity">
            <xs:simpleType>
               <xs:restriction base="xs:decimal">
                  <xs:minExclusive value="0"/>
                  <xs:totalDigits value="9"/>
                  <xs:fractionDigits value="5"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="MeasurementUnit">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="Liquid - Ounce"/>
                  <xs:enumeration value="Liquid - Cup"/>
                  <xs:enumeration value="Liquid - Pint"/>
                  <xs:enumeration value="Liquid - Pound"/>
                  <xs:enumeration value="Liquid - Liter"/>
                  <xs:enumeration value="Liquid - Quart"/>
                  <xs:enumeration value="Liquid - Gallon"/>
                  <xs:enumeration value="Liquid - Milligram"/>
                  <xs:enumeration value="Liquid - Barrel"/>
                  <xs:enumeration value="Liquid - Cubic Centimeter"/>
                  <xs:enumeration value="Liquid - Gram"/>
                  <xs:enumeration value="Liquid - Kilogram"/>
                  <xs:enumeration value="Liquid - Teaspoon"/>
                  <xs:enumeration value="Liquid - Tablespoon"/>
                  <xs:enumeration value="Liquid - Milliliter"/>
                  <xs:enumeration value="Solid - Ounce"/>
                  <xs:enumeration value="Solid - Pint"/>
                  <xs:enumeration value="Solid - Pound"/>
                  <xs:enumeration value="Solid - Quart"/>
                  <xs:enumeration value="Solid - Kilogram"/>
                  <xs:enumeration value="Solid - Gallon"/>
                  <xs:enumeration value="Solid - Ton"/>
                  <xs:enumeration value="Solid - Metric Ton"/>
                  <xs:enumeration value="Solid - Long Ton"/>
                  <xs:enumeration value="Solid - Milligram"/>
                  <xs:enumeration value="Solid - Gram"/>
                  <xs:enumeration value="Solid - Liter"/>
                  <xs:enumeration value="Solid - Teaspoon"/>
                  <xs:enumeration value="Solid - Tablespoon"/>
                  <xs:enumeration value="Gas - Cubic Centimeter"/>
                  <xs:enumeration value="Gas - Milliliter"/>
                  <xs:enumeration value="Gas - Cubic Inch"/>
                  <xs:enumeration value="Gas - Liter"/>
                  <xs:enumeration value="Gas - Pint"/>
                  <xs:enumeration value="Gas - Gallon"/>
                  <xs:enumeration value="Gas - Cubic Foot"/>
                  <xs:enumeration value="Gas - Quart"/>
                  <xs:enumeration value="Gas - Yard"/>
                  <xs:enumeration value="Gas - Pound"/>
                  <xs:enumeration value="Radioactive - Curie"/>
                  <xs:enumeration value="Radioactive - Microcurie"/>
                  <xs:enumeration value="Radioactive - Millicurie"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="pressure">
      <xs:sequence>
         <xs:element name="Quantity">
            <xs:simpleType>
               <xs:restriction base="xs:positiveInteger">
                  <xs:totalDigits value="4"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="MeasurementUnit">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="psi"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:complexType name="thickness">
      <xs:sequence>
         <xs:element name="Quantity">
            <xs:simpleType>
               <xs:restriction base="xs:decimal">
                  <xs:minExclusive value="0"/>
                  <xs:totalDigits value="4"/>
                  <xs:fractionDigits value="3"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="MeasurementUnit">
            <xs:simpleType>
               <xs:restriction base="token">
                  <xs:enumeration value="inch"/>
               </xs:restriction>
            </xs:simpleType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>

   <xs:simpleType name="cost">
      <xs:restriction base="token">
         <xs:pattern value="\$\d{1,8}"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:simpleType name="duration">
      <xs:restriction base="token">
         <xs:pattern value="\d{1,3} hour(s)?"/>
      </xs:restriction>
   </xs:simpleType>

   <!-- Response ========================================================= -->
   <xs:element name="IncidentReportResponse">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="CustomerTrackingNumber"
                        type="customerTrackingNumber" />
            <xs:element name="IncidentReportNumber"
                        type="incidentReportNumber" minOccurs="0"/>
            <xs:element name="IncidentTrackingNumber"
                        type="incidentTrackingNumber" minOccurs="0"/>
            <xs:element name="Response">
               <xs:simpleType> 
                  <xs:restriction base="token">
                     <xs:enumeration value="OK"/>
                     <xs:enumeration value="WARNING"/>
                     <xs:enumeration value="ERROR"/>
                  </xs:restriction>
               </xs:simpleType>
            </xs:element>
            <xs:element name="Message" minOccurs="0" maxOccurs="unbounded">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="Type">
                        <xs:simpleType>
                           <xs:restriction base="token">
                              <xs:enumeration value="MINOR"/>
                              <xs:enumeration value="MAJOR"/>
                              <xs:enumeration value="INFO"/>
                           </xs:restriction>
                        </xs:simpleType>
                     </xs:element>
                     <xs:element name="Text" type="token"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
   </xs:element>

</xs:schema>

