<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
  <xsd:element name="ORDER">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="BILLTO"/>
        <xsd:element ref="SHIPTO"/>
        <xsd:element ref="CONTACT"/>
        <xsd:element ref="PRIORITY"/>
        <xsd:element ref="ITEMS"/>
        <xsd:element ref="TOTALS"/>
      </xsd:sequence>
      <xsd:attribute name="xmlns" use="fixed" value="http://example.com/orders" type="xsd:string"/>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="BILLTO">
    <xsd:complexType>
      <xsd:choice>
        <xsd:element ref="REFERENCE"/>
        <xsd:element ref="FULLADDRESS"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="SHIPTO">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:choice>
          <xsd:element ref="REFERENCE"/>
          <xsd:element ref="FULLADDRESS"/>
        </xsd:choice>
        <xsd:element ref="SHIPVIA"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="SHIPVIA">
    <xsd:complexType>
      <xsd:choice>
        <xsd:element ref="REFERENCE"/>
        <xsd:element ref="FULLADDRESS"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="REFERENCE" type="xsd:string"/>
  <xsd:element name="FULLADDRESS">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="COMPANY"/>
        <xsd:element ref="ADDRESSLINE" maxOccurs="unbounded"/>
        <xsd:element ref="CITY"/>
        <xsd:element ref="STATE"/>
        <xsd:element ref="POSTALCODE"/>
        <xsd:element ref="COUNTRY"/>
        <xsd:element ref="CONTACT"/>
        <xsd:element ref="PHONE"/>
        <xsd:element ref="FAX" minOccurs="0"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="COMPANY" type="xsd:string"/>
  <xsd:element name="ADDRESSLINE" type="xsd:string"/>
  <xsd:element name="CITY" type="xsd:string"/>
  <xsd:element name="STATE" type="xsd:string"/>
  <xsd:element name="POSTALCODE" type="xsd:string"/>
  <xsd:element name="COUNTRY" type="xsd:string"/>
  <xsd:element name="CONTACT">
    <xsd:complexType mixed="true">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="REFERENCE"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="PHONE" type="xsd:string"/>
  <xsd:element name="FAX" type="xsd:string"/>
  <xsd:element name="PRIORITY" type="xsd:string"/>
  <xsd:element name="TOTALS">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="TOTALITEMS"/>
        <xsd:element ref="TOTALQUANTITY"/>
        <xsd:element ref="TOTALCOST"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="TOTALITEMS" type="xsd:string">
    <xsd:annotation>
      <xsd:documentation>NOTE TOTALS ARE FOR CHECKING DATA ONLY AND DO NOT REFLECT FINAL COSTS OR QUANTITIES </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="TOTALQUANTITY" type="xsd:integer"/>
  <xsd:element name="TOTALCOST" type="xsd:string"/>
  <xsd:element name="ITEMS">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="ITEM" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
