<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <xsd:element name="Name">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="test" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Extrinsic">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
   <xsd:attribute name="name" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Description">
  <xsd:complexType mixed="true">
   <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:element ref="ShortName"/>
   </xsd:sequence>
   <xsd:attribute name="test" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ShortName" type="xsd:string">
 </xsd:element>

 <xsd:element name="CountryCode">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="isoCountryCode" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="AreaOrCityCode" type="xsd:string">
 </xsd:element>

 <xsd:element name="Number" type="xsd:string">
 </xsd:element>

 <xsd:element name="Extension" type="xsd:string">
 </xsd:element>

 <xsd:element name="TelephoneNumber">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="CountryCode"/>
    <xsd:element ref="AreaOrCityCode"/>
    <xsd:element ref="Number"/>
    <xsd:element ref="Extension" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Phone">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="TelephoneNumber"/>
   </xsd:sequence>
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Fax">
  <xsd:complexType>
   <xsd:choice>
    <xsd:element ref="TelephoneNumber"/>
    <xsd:element ref="URL"/>
    <xsd:element ref="Email"/>
   </xsd:choice>
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="URL">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Email">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Contact">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Name"/>
    <xsd:element ref="PostalAddress" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Email" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Phone" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Fax" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="URL" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="role" type="xsd:NMTOKEN" use="optional"/>
   <xsd:attribute name="addressID" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="DeliverTo" type="xsd:string">
 </xsd:element>

 <xsd:element name="Street" type="xsd:string">
 </xsd:element>

 <xsd:element name="City" type="xsd:string">
 </xsd:element>

 <xsd:element name="State" type="xsd:string">
 </xsd:element>

 <xsd:element name="PostalCode" type="xsd:string">
 </xsd:element>

 <xsd:element name="Country">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="isoCountryCode" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PostalAddress">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="DeliverTo" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Street" maxOccurs="unbounded"/>
    <xsd:element ref="City"/>
    <xsd:element ref="State" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="PostalCode" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Country"/>
   </xsd:sequence>
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Address">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Name"/>
    <xsd:element ref="PostalAddress" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Email" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Phone" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Fax" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="URL" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="isoCountryCode" type="xsd:string" use="optional"/>
   <xsd:attribute name="addressID" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Money">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="currency" type="xsd:string" use="required"/>
   <xsd:attribute name="alternateAmount" type="xsd:string" use="optional"/>
   <xsd:attribute name="alternateCurrency" type="xsd:string" use="optional"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Comments">
  <xsd:complexType mixed="true">
   <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:element ref="Attachment"/>
   </xsd:sequence>
   <xsd:attribute name="test" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Attachment">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="URL"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="AttachmentReference">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Name"/>
    <xsd:element ref="Description"/>
    <xsd:element ref="InternalID"/>
   </xsd:sequence>
   <xsd:attribute name="length" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="UnitPrice">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="DocumentReference">
  <xsd:complexType>
   <xsd:attribute name="payloadID" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InternalID">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="domain" type="xsd:string" use="optional"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OriginatorCookie" type="xsd:string">
 </xsd:element>

 <xsd:element name="BrowserFormPost">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="URL"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SelectedService" type="xsd:string">
 </xsd:element>

 <xsd:element name="StartPage">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="URL"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ReturnData">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="ReturnValue"/>
    <xsd:element ref="Name"/>
   </xsd:sequence>
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ReturnValue" type="xsd:string">
 </xsd:element>

 <xsd:element name="Supplier">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Name"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="SupplierID" maxOccurs="unbounded"/>
    <xsd:element ref="SupplierLocation" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="corporateURL" type="xsd:string" use="optional"/>
   <xsd:attribute name="storeFrontURL" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SupplierLocation">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Address"/>
    <xsd:element ref="OrderMethods"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderMethods">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="OrderMethod" maxOccurs="unbounded"/>
    <xsd:element ref="Contact" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderMethod">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="OrderTarget"/>
    <xsd:element ref="OrderProtocol" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderTarget">
  <xsd:complexType>
   <xsd:choice>
    <xsd:element ref="Phone"/>
    <xsd:element ref="Email"/>
    <xsd:element ref="Fax"/>
    <xsd:element ref="URL"/>
    <xsd:element ref="OtherOrderTarget"/>
   </xsd:choice>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderProtocol" type="xsd:string">
 </xsd:element>

 <xsd:element name="OtherOrderTarget">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SupplierID">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="domain" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SupplierList">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Supplier" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="UnitOfMeasure" type="xsd:string">
 </xsd:element>

 <xsd:element name="ManufacturerPartID" type="xsd:string">
 </xsd:element>

 <xsd:element name="ManufacturerName">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="test" type="xsd:string" use="optional"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Classification">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="domain" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SupplierPartID" type="xsd:string">
 </xsd:element>

 <xsd:element name="SupplierPartAuxiliaryID">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ItemID">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="SupplierPartID"/>
    <xsd:element ref="SupplierPartAuxiliaryID" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ItemDetail">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="UnitPrice"/>
    <xsd:element ref="Description" maxOccurs="unbounded"/>
    <xsd:element ref="UnitOfMeasure"/>
    <xsd:element ref="Classification" maxOccurs="unbounded"/>
    <xsd:element ref="ManufacturerPartID" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ManufacturerName" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="URL" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Total">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="BillTo">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Address"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ShipTo">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Address"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Shipping">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
    <xsd:element ref="Description"/>
   </xsd:sequence>
   <xsd:attribute name="trackingDomain" type="xsd:string" use="optional"/>
   <xsd:attribute name="trackingId" type="xsd:string" use="optional"/>
   <xsd:attribute name="tracking" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PCard">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="PostalAddress" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="number" type="xsd:string" use="required"/>
   <xsd:attribute name="expiration" type="xsd:string" use="required"/>
   <xsd:attribute name="name" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Payment">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="PCard"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Segment">
  <xsd:complexType>
   <xsd:attribute name="type" type="xsd:string" use="required"/>
   <xsd:attribute name="id" type="xsd:string" use="required"/>
   <xsd:attribute name="description" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="AccountingSegment">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Name"/>
    <xsd:element ref="Description"/>
   </xsd:sequence>
   <xsd:attribute name="id" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Accounting">
  <xsd:complexType>
   <xsd:choice>
    <xsd:element ref="Segment" maxOccurs="unbounded"/>
    <xsd:element ref="AccountingSegment" maxOccurs="unbounded"/>
   </xsd:choice>
   <xsd:attribute name="name" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Charge">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Distribution">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Accounting"/>
    <xsd:element ref="Charge"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="TaxAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="TaxableAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="TaxLocation">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="test" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="TaxDetail">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="TaxableAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="TaxAmount"/>
    <xsd:element ref="TaxLocation" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Description" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="purpose" type="xsd:string" use="optional"/>
   <xsd:attribute name="category" type="xsd:string" use="required"/>
   <xsd:attribute name="percentageRate" type="xsd:string" use="optional"/>
   <xsd:attribute name="isVatRecoverable" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Tax">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
    <xsd:element ref="Description"/>
    <xsd:element ref="TaxDetail" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ItemOut">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="ItemID"/>
    <xsd:element ref="Path" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ItemDetail" minOccurs="0" maxOccurs="1"/>
    <xsd:choice minOccurs="0" maxOccurs="1">
     <xsd:element ref="SupplierID"/>
     <xsd:element ref="SupplierList"/>
    </xsd:choice>
    <xsd:element ref="ShipTo" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Shipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Distribution" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Contact" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="quantity" type="xsd:string" use="required"/>
   <xsd:attribute name="lineNumber" type="xsd:string" use="optional"/>
   <xsd:attribute name="requisitionID" type="xsd:string" use="optional"/>
   <xsd:attribute name="agreementItemNumber" type="xsd:string" use="optional"/>
   <xsd:attribute name="requestedDeliveryDate" type="xsd:string" use="optional"/>
   <xsd:attribute name="isAdHoc" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ItemIn">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="ItemID"/>
    <xsd:element ref="Path" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ItemDetail"/>
    <xsd:element ref="SupplierID" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ShipTo" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Shipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="quantity" type="xsd:string" use="required"/>
   <xsd:attribute name="lineNumber" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PaymentStatus">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="PCard"/>
    <xsd:element ref="Total"/>
    <xsd:element ref="Shipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="orderID" type="xsd:string" use="required"/>
   <xsd:attribute name="transactionTimestamp" type="xsd:string" use="required"/>
   <xsd:attribute name="type" use="required">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Authorization"/>
      <xsd:enumeration value="Settlement"/>
      <xsd:enumeration value="Sale"/>
      <xsd:enumeration value="Credit"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="isFailed" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="transactionID" type="xsd:string" use="optional"/>
   <xsd:attribute name="authorizationID" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PartialAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceStatus">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="PartialAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="type" use="required">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="reconciled"/>
      <xsd:enumeration value="rejected"/>
      <xsd:enumeration value="paid"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderRequest">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="OrderRequestHeader"/>
    <xsd:element ref="ItemOut" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderRequestHeader">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Total"/>
    <xsd:element ref="ShipTo" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="BillTo"/>
    <xsd:element ref="Shipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Payment" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Contact" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Followup" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="DocumentReference" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="orderID" type="xsd:string" use="required"/>
   <xsd:attribute name="orderDate" type="xsd:string" use="required"/>
   <xsd:attribute name="orderType" default="regular">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="release"/>
      <xsd:enumeration value="regular"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="type" default="new">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="new"/>
      <xsd:enumeration value="update"/>
      <xsd:enumeration value="delete"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="agreementID" type="xsd:string" use="optional"/>
   <xsd:attribute name="agreementPayloadID" type="xsd:string" use="optional"/>
   <xsd:attribute name="requisitionID" type="xsd:string" use="optional"/>
   <xsd:attribute name="shipComplete" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MasterAgreementRequest">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="MasterAgreementRequestHeader"/>
    <xsd:element ref="AgreementItemOut" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MasterAgreementRequestHeader">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="MaxAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="MinAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="MaxReleaseAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="MinReleaseAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Contact" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="DocumentReference" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="agreementID" type="xsd:string" use="required"/>
   <xsd:attribute name="agreementDate" type="xsd:string" use="required"/>
   <xsd:attribute name="type" default="value">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="value"/>
      <xsd:enumeration value="quantity"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="effectiveDate" type="xsd:string" use="required"/>
   <xsd:attribute name="expirationDate" type="xsd:string" use="required"/>
   <xsd:attribute name="parentAgreementPayloadID" type="xsd:string" use="optional"/>
   <xsd:attribute name="operation" default="new">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="new"/>
      <xsd:enumeration value="update"/>
      <xsd:enumeration value="delete"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="AgreementItemOut">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="MaxAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="MinAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="MaxReleaseAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="MinReleaseAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ItemOut"/>
   </xsd:sequence>
   <xsd:attribute name="maxQuantity" type="xsd:string" use="optional"/>
   <xsd:attribute name="minQuantity" type="xsd:string" use="optional"/>
   <xsd:attribute name="maxReleaseQuantity" type="xsd:string" use="optional"/>
   <xsd:attribute name="minReleaseQuantity" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MaxAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MinAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MaxReleaseAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MinReleaseAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Followup">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="URL"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PunchOutSetupRequest">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="BuyerCookie"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="BrowserFormPost" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Contact" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="SupplierSetup" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ShipTo" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="SelectedItem" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ItemOut" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="operation" use="required">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="create"/>
      <xsd:enumeration value="inspect"/>
      <xsd:enumeration value="edit"/>
      <xsd:enumeration value="source"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="BuyerCookie">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SelectedItem">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="ItemID"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SupplierSetup">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="URL"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PunchOutSetupResponse">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="StartPage"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PunchOutOrderMessage">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="BuyerCookie"/>
    <xsd:element ref="PunchOutOrderMessageHeader"/>
    <xsd:element ref="ItemIn" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="PunchOutOrderMessageHeader">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="SourcingStatus" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Total"/>
    <xsd:element ref="ShipTo" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Shipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="operationAllowed" use="required">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="create"/>
      <xsd:enumeration value="inspect"/>
      <xsd:enumeration value="edit"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="quoteStatus" default="final">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="pending"/>
      <xsd:enumeration value="final"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="StatusUpdateRequest">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="DocumentReference"/>
    <xsd:element ref="Status"/>
    <xsd:sequence minOccurs="0" maxOccurs="1">
     <xsd:choice>
      <xsd:element ref="PaymentStatus"/>
      <xsd:element ref="SourcingStatus"/>
      <xsd:element ref="InvoiceStatus"/>
     </xsd:choice>
    </xsd:sequence>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="CopyRequest">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="cXML"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SourcingStatus">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="action" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="approve"/>
      <xsd:enumeration value="cancel"/>
      <xsd:enumeration value="deny"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="test" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderReference">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="DocumentReference"/>
   </xsd:sequence>
   <xsd:attribute name="orderID" type="xsd:string" use="optional"/>
   <xsd:attribute name="orderDate" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="CarrierIdentifier">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="domain" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ShipmentIdentifier" type="xsd:string">
 </xsd:element>

 <xsd:element name="Creator">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="test" type="xsd:string" use="required"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="IdReference">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Creator" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Description" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="identifier" type="xsd:string" use="required"/>
   <xsd:attribute name="domain" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoicePartner">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Contact"/>
    <xsd:element ref="IdReference" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailHeaderIndicator">
  <xsd:complexType>
   <xsd:attribute name="isHeaderInvoice" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="isVatRecoverable" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailLineIndicator">
  <xsd:complexType>
   <xsd:attribute name="isTaxInLine" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="isSpecialHandlingInLine" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="isShippingInLine" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="isDiscountInLine" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="isAccountingInLine" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SupplierOrderInfo">
  <xsd:complexType>
   <xsd:attribute name="orderID" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OrderIDInfo">
  <xsd:complexType>
   <xsd:attribute name="orderID" type="xsd:string" use="required"/>
   <xsd:attribute name="orderDate" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MasterAgreementIDInfo">
  <xsd:complexType>
   <xsd:attribute name="agreementID" type="xsd:string" use="required"/>
   <xsd:attribute name="agreementDate" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="MasterAgreementReference">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="DocumentReference"/>
   </xsd:sequence>
   <xsd:attribute name="agreementID" type="xsd:string" use="optional"/>
   <xsd:attribute name="agreementDate" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailOrderInfo">
  <xsd:complexType>
   <xsd:choice>
    <xsd:sequence>
     <xsd:element ref="OrderReference"/>
     <xsd:choice minOccurs="0" maxOccurs="1">
      <xsd:element ref="MasterAgreementReference"/>
      <xsd:element ref="MasterAgreementIDInfo"/>
     </xsd:choice>
     <xsd:element ref="SupplierOrderInfo" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:sequence>
     <xsd:element ref="MasterAgreementReference"/>
     <xsd:element ref="OrderIDInfo" minOccurs="0" maxOccurs="1"/>
     <xsd:element ref="SupplierOrderInfo" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:sequence>
     <xsd:element ref="MasterAgreementIDInfo"/>
     <xsd:element ref="OrderIDInfo" minOccurs="0" maxOccurs="1"/>
     <xsd:element ref="SupplierOrderInfo" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:sequence>
     <xsd:element ref="OrderIDInfo"/>
     <xsd:element ref="SupplierOrderInfo" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:element ref="SupplierOrderInfo"/>
   </xsd:choice>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailShipping">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Contact"/>
    <xsd:element ref="Contact" maxOccurs="unbounded"/>
    <xsd:sequence minOccurs="0" maxOccurs="1">
     <xsd:element ref="CarrierIdentifier" maxOccurs="unbounded"/>
     <xsd:element ref="ShipmentIdentifier"/>
    </xsd:sequence>
    <xsd:element ref="DocumentReference" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="shippingDate" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailPaymentTerm">
  <xsd:complexType>
   <xsd:attribute name="payInNumberOfDays" type="xsd:string" use="required"/>
   <xsd:attribute name="percentageRate" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="DepositAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SubtotalAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SpecialHandlingAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="ShippingAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="GrossAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="NetAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="DueAmount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailDiscount">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Money"/>
   </xsd:sequence>
   <xsd:attribute name="percentageRate" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailSummary">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="SubtotalAmount"/>
    <xsd:element ref="Tax"/>
    <xsd:element ref="SpecialHandlingAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="ShippingAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="GrossAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailDiscount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="NetAmount"/>
    <xsd:element ref="DepositAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="DueAmount" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailItemReference">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="ItemID" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Description" minOccurs="0" maxOccurs="1"/>
    <xsd:sequence minOccurs="0" maxOccurs="1">
     <xsd:element ref="ManufacturerPartID"/>
     <xsd:element ref="ManufacturerName"/>
    </xsd:sequence>
    <xsd:element ref="Country" minOccurs="0" maxOccurs="1"/>
   </xsd:sequence>
   <xsd:attribute name="lineNumber" type="xsd:string" use="required"/>
   <xsd:attribute name="serialNumber" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailLineSpecialHandling">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Description" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailLineShipping">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="InvoiceDetailShipping"/>
    <xsd:element ref="Money"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailItem">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="UnitOfMeasure"/>
    <xsd:element ref="UnitPrice"/>
    <xsd:element ref="InvoiceDetailItemReference"/>
    <xsd:element ref="SubtotalAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailLineSpecialHandling" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailLineShipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="GrossAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailDiscount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="NetAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Distribution" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="invoiceLineNumber" type="xsd:string" use="required"/>
   <xsd:attribute name="quantity" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailOrderSummary">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="SubtotalAmount"/>
    <xsd:element ref="Tax" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailLineSpecialHandling" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailLineShipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="GrossAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailDiscount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="NetAmount" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="invoiceLineNumber" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailHeaderOrder">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="InvoiceDetailOrderInfo"/>
    <xsd:element ref="InvoiceDetailOrderSummary"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailOrder">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="InvoiceDetailOrderInfo"/>
    <xsd:element ref="InvoiceDetailItem" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailRequestHeader">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="InvoiceDetailHeaderIndicator"/>
    <xsd:element ref="InvoiceDetailLineIndicator"/>
    <xsd:element ref="InvoicePartner" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="DocumentReference" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailShipping" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="InvoiceDetailPaymentTerm" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element ref="Comments" minOccurs="0" maxOccurs="1"/>
    <xsd:element ref="Extrinsic" minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="invoiceID" type="xsd:string" use="required"/>
   <xsd:attribute name="isInformationOnly" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="purpose" default="standard">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="standard"/>
      <xsd:enumeration value="creditMemo"/>
      <xsd:enumeration value="debitMemo"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="operation" default="new">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="new"/>
      <xsd:enumeration value="delete"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="invoiceDate" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="InvoiceDetailRequest">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="InvoiceDetailRequestHeader"/>
    <xsd:choice>
     <xsd:element ref="InvoiceDetailOrder" maxOccurs="unbounded"/>
     <xsd:element ref="InvoiceDetailHeaderOrder" maxOccurs="unbounded"/>
    </xsd:choice>
    <xsd:element ref="InvoiceDetailSummary"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="cXML">
  <xsd:complexType>
   <xsd:choice>
    <xsd:sequence>
     <xsd:element ref="Header"/>
     <xsd:choice>
      <xsd:element ref="Message"/>
      <xsd:element ref="Request"/>
     </xsd:choice>
    </xsd:sequence>
    <xsd:element ref="Response"/>
   </xsd:choice>
   <xsd:attribute name="version" type="xsd:string" default="1.2"/>
   <xsd:attribute name="payloadID" type="xsd:string" use="required"/>
   <xsd:attribute name="timestamp" type="xsd:string" use="required"/>
   <xsd:attribute name="test" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Header">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="From"/>
    <xsd:element ref="To"/>
    <xsd:element ref="Sender"/>
    <xsd:sequence minOccurs="0" maxOccurs="1">
     <xsd:element ref="Path"/>
     <xsd:element ref="OriginalDocument"/>
    </xsd:sequence>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="From">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Credential" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="To">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Credential" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Sender">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Credential" maxOccurs="unbounded"/>
    <xsd:element ref="UserAgent"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Path">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Node" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Node">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Credential" maxOccurs="unbounded"/>
   </xsd:sequence>
   <xsd:attribute name="type" use="required">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="copy"/>
      <xsd:enumeration value="route"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="itemDetailsRequired" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="yes"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="OriginalDocument">
  <xsd:complexType>
   <xsd:attribute name="payloadID" type="xsd:string" use="required"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="UserAgent" type="xsd:string">
 </xsd:element>

 <xsd:element name="DigitalSignature">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
   <xsd:attribute name="type" type="xsd:string" default="PK7 self-contained"/>
   <xsd:attribute name="encoding" type="xsd:string" default="Base64"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="SharedSecret">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Identity">
  <xsd:complexType>
   <xsd:sequence>
   <xsd:any namespace="http://www.w3.org/namespace/"/>
   </xsd:sequence>
   <xsd:attribute name="lastChangedTimestamp" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Credential">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Identity"/>
    <xsd:choice minOccurs="0" maxOccurs="1">
     <xsd:element ref="SharedSecret"/>
     <xsd:element ref="DigitalSignature"/>
    </xsd:choice>
   </xsd:sequence>
   <xsd:attribute name="domain" type="xsd:string" use="required"/>
   <xsd:attribute name="type" use="optional">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="marketplace"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Status">
  <xsd:complexType>
  <xsd:simpleContent>
  <xsd:extension base="xsd:string">
   <xsd:attribute name="code" type="xsd:string" use="required"/>
   <xsd:attribute name="text" type="xsd:string" use="required"/>
   <xsd:attribute name="test" type="xsd:string" use="optional"/>
   </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Message">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Status" minOccurs="0" maxOccurs="1"/>
    <xsd:sequence>
     <xsd:element ref="PunchOutOrderMessage"/>
    </xsd:sequence>
   </xsd:sequence>
   <xsd:attribute name="deploymentMode" default="production">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="production"/>
      <xsd:enumeration value="test"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
   <xsd:attribute name="inReplyTo" type="xsd:string" use="optional"/>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Request">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="InvoiceDetailRequest"/>
   </xsd:sequence>
   <xsd:attribute name="deploymentMode" default="production">
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="production"/>
      <xsd:enumeration value="test"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:attribute>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Response">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Status"/>
    <xsd:sequence minOccurs="0" maxOccurs="1">
     <xsd:sequence>
      <xsd:element ref="PunchOutSetupResponse"/>
     </xsd:sequence>
    </xsd:sequence>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
</xsd:schema>
