<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="OEXML">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Header"/>
        <xs:element ref="Transaction"/>
      </xs:sequence>
      <xs:attribute name="schemaLocation" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Header">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="MessageID"/>
        <xs:element ref="MessageDate"/>
        <xs:element ref="From"/>
        <xs:element ref="InitiatingSystem"/>
        <xs:element ref="ReturnURI"/>
        <xs:element ref="SourceUserID"/>
        <xs:element ref="Priority"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="MessageID" type="xs:NCName"/>
  <xs:element name="MessageDate" type="xs:dateTime"/>
  <xs:element name="From" type="xs:NCName"/>
  <xs:element name="InitiatingSystem" type="xs:NCName"/>
  <xs:element name="ReturnURI" type="xs:anyURI"/>
  <xs:element name="SourceUserID" type="xs:NCName"/>
  <xs:element name="Priority" type="xs:integer"/>
  <xs:element name="Transaction">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="TransferNotification"/>
      </xs:sequence>
      <xs:attribute name="commodity" use="required" type="xs:NCName"/>
      <xs:attribute name="transactionType" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="TransferNotification">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Role"/>
        <xs:element ref="RoleStatus"/>
        <xs:element ref="ChangeRequest"/>
      </xs:sequence>
      <xs:attribute name="version" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Role" type="xs:NCName"/>
  <xs:element name="RoleStatus" type="xs:NCName"/>
  <xs:element name="ChangeRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Participant"/>
        <xs:element ref="RequestID"/>
        <xs:element ref="ChangeStatusCode"/>
        <xs:element ref="ChangeData"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Participant">
    <xs:complexType>
      <xs:attribute name="description" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="RequestID" type="xs:integer"/>
  <xs:element name="ChangeStatusCode">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="StatusChangeDate"/>
        <xs:element ref="Status"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="StatusChangeDate" type="xs:NMTOKEN"/>
  <xs:element name="Status" type="xs:NCName"/>
  <xs:element name="ChangeData">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ChangeReasonCode"/>
        <xs:element ref="ActualChangeDate"/>
        <xs:element ref="NMIStandingData"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ChangeReasonCode" type="xs:integer"/>
  <xs:element name="ActualChangeDate" type="xs:NMTOKEN"/>
  <xs:element name="NMIStandingData">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="NMI"/>
      </xs:sequence>
      <xs:attribute name="type" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="NMI">
    <xs:complexType>
      <xs:attribute name="checksum" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
