<?xml version='1.0' encoding='UTF-8' ?>

<!-- Schema for the SOAP/1.1 encoding

     This schema has been produced using W3C's SOAP Version 1.2 schema

     found at: http://www.w3.org/2001/06/soap-encoding

     Copyright 2001 Martin Gudgin, Developmentor. http://www.develop.co.uk

     Changes made are the following:
     - reverted namespace to http://schemas.xmlsoap.org/soap/encoding/
     - reverted root to only allow 0 and 1 as lexical values

     Original copyright:

     Copyright 2001 W3C (Massachusetts Institute of Technology,
     Institut National de Recherche en Informatique et en Automatique,
     Keio University). All Rights Reserved.
     http://www.w3.org/Consortium/Legal/

     This document is governed by the W3C Software License [1] as
     described in the FAQ [2].

     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/"
           targetNamespace="http://schemas.xmlsoap.org/soap/encoding/" >

  <xs:attributeGroup name="commonAttributes" >
      <xs:annotation>
         <xs:documentation>
            Attributes common to all elements that function as accessors or
            represent independent (multi-ref) values.  The href attribute is
            intended to be used in a manner like CONREF.  That is, the element
            content should be empty iff the href attribute appears
         </xs:documentation>
      </xs:annotation>
      <xs:attribute name="id" type="xs:ID" />
      <xs:attribute name="href" type="xs:anyURI" />
      <xs:anyAttribute namespace="##other" processContents="lax" />
  </xs:attributeGroup>

  <xs:attributeGroup name="arrayAttributes" >
    <xs:attribute ref="tns:arrayType" />
    <xs:attribute ref="tns:offset" />
  </xs:attributeGroup>

  <xs:attributeGroup name="arrayMemberAttributes" >
    <xs:attribute ref="tns:position" />
  </xs:attributeGroup>

  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->
  <!-- Array attributes. Needed to give the type and dimensions of an array's contents, and the offset for partially-transmitted arrays. -->

 <xs:attribute name="root" default="0" >
   <xs:annotation>
     <xs:documentation>
	   'root' can be used to distinguish serialization roots from other
       elements that are present in a serialization but are not roots of
       a serialized value graph
	 </xs:documentation>
   </xs:annotation>

   <xs:simpleType>
     <xs:restriction base='xs:boolean'>
	   <xs:pattern value='0|1' />
	 </xs:restriction>
   </xs:simpleType>
 </xs:attribute>


  <xs:attribute name="arrayType" type="xs:string" />
  <xs:attribute name="offset" type="tns:arrayCoordinate" />
  <xs:attribute name="position" type="tns:arrayCoordinate" />


  <xs:element name="Array" type="tns:Array" />

  <!-- 'Struct' is a complex type for accessors identified by name.
       Constraint: No element may be have the same name as any other,
       nor may any element have a maxOccurs > 1. -->
  <xs:element name="Struct" type="tns:Struct" />

 <!-- Element declarations corresponding to each of the simple types in the
      XML Schemas Specification. -->
  <xs:element name="duration" type="tns:duration" />
  <xs:element name="dateTime" type="tns:dateTime" />
  <xs:element name="NOTATION" type="tns:NOTATION" />
  <xs:element name="time" type="tns:time" />
  <xs:element name="date" type="tns:date" />
  <xs:element name="gYearMonth" type="tns:gYearMonth" />
  <xs:element name="gYear" type="tns:gYear" />
  <xs:element name="gMonthDay" type="tns:gMonthDay" />
  <xs:element name="gDay" type="tns:gDay" />
  <xs:element name="gMonth" type="tns:gMonth" />
  <xs:element name="boolean" type="tns:boolean" />
  <xs:element name="base64Binary" type="tns:base64Binary" />
  <xs:element name="hexBinary" type="tns:hexBinary" />
  <xs:element name="float" type="tns:float" />
  <xs:element name="double" type="tns:double" />
  <xs:element name="anyURI" type="tns:anyURI" />
  <xs:element name="QName" type="tns:QName" />
  <xs:element name="string" type="tns:string" />
  <xs:element name="normalizedString" type="tns:normalizedString" />
  <xs:element name="token" type="tns:token" />
  <xs:element name="language" type="tns:language" />
  <xs:element name="Name" type="tns:Name" />
  <xs:element name="NMTOKEN" type="tns:NMTOKEN" />
  <xs:element name="NCName" type="tns:NCName" />
  <xs:element name="NMTOKENS" type="tns:NMTOKENS" />
  <xs:element name="ID" type="tns:ID" />
  <xs:element name="IDREF" type="tns:IDREF" />
  <xs:element name="ENTITY" type="tns:ENTITY" />
  <xs:element name="IDREFS" type="tns:IDREFS" />
  <xs:element name="ENTITIES" type="tns:ENTITIES" />
  <xs:element name="decimal" type="tns:decimal" />
  <xs:element name="integer" type="tns:integer" />
  <xs:element name="nonPositiveInteger" type="tns:nonPositiveInteger" />
  <xs:element name="negativeInteger" type="tns:negativeInteger" />
  <xs:element name="long" type="tns:long" />
  <xs:element name="int" type="tns:int" />
  <xs:element name="short" type="tns:short" />
  <xs:element name="byte" type="tns:byte" />
  <xs:element name="nonNegativeInteger" type="tns:nonNegativeInteger" />
  <xs:element name="positiveInteger" type="tns:positiveInteger" />
  <xs:element name="unsignedLong" type="tns:unsignedLong" />
  <xs:element name="unsignedInt" type="tns:unsignedInt" />
  <xs:element name="unsignedShort" type="tns:unsignedShort" />
  <xs:element name="unsignedByte" type="tns:unsignedByte" />
  <xs:element name="anyType" />

  <xs:complexType name="Array" >
    <xs:annotation>
	  <xs:documentation>
	   'Array' is a complex type for accessors identified by position
	  </xs:documentation>
	</xs:annotation>

    <xs:group ref="tns:Array" minOccurs="0" />
    <xs:attributeGroup ref="tns:arrayAttributes" />
    <xs:attributeGroup ref="tns:commonAttributes" />
  </xs:complexType>

  <xs:complexType name="Struct" >
    <xs:group ref="tns:Struct" minOccurs="0" />
    <xs:attributeGroup ref="tns:commonAttributes"/>
  </xs:complexType>


  <xs:complexType name="duration" >
    <xs:simpleContent>
      <xs:extension base="xs:duration" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="dateTime" >
    <xs:simpleContent>
      <xs:extension base="xs:dateTime" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="NOTATION" >
    <xs:simpleContent>
      <xs:extension base="xs:QName" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="time" >
    <xs:simpleContent>
      <xs:extension base="xs:time" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="date" >
    <xs:simpleContent>
      <xs:extension base="xs:date" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="gYearMonth" >
    <xs:simpleContent>
      <xs:extension base="xs:gYearMonth" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="gYear" >
    <xs:simpleContent>
      <xs:extension base="xs:gYear" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="gMonthDay" >
    <xs:simpleContent>
      <xs:extension base="xs:gMonthDay" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="gDay" >
    <xs:simpleContent>
      <xs:extension base="xs:gDay" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="gMonth" >
    <xs:simpleContent>
      <xs:extension base="xs:gMonth" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="boolean" >
    <xs:simpleContent>
      <xs:extension base="xs:boolean" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="base64Binary" >
    <xs:simpleContent>
      <xs:extension base="xs:base64Binary" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>




  <xs:complexType name="hexBinary" >

    <xs:simpleContent>

     <xs:extension base="xs:hexBinary" >

       <xs:attributeGroup ref="tns:commonAttributes" />

     </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="float" >

    <xs:simpleContent>

      <xs:extension base="xs:float" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="double" >

    <xs:simpleContent>

      <xs:extension base="xs:double" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="anyURI" >

    <xs:simpleContent>

      <xs:extension base="xs:anyURI" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="QName" >

    <xs:simpleContent>

      <xs:extension base="xs:QName" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>






  <xs:complexType name="string" >

    <xs:simpleContent>

      <xs:extension base="xs:string" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="normalizedString" >

    <xs:simpleContent>

      <xs:extension base="xs:normalizedString" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="token" >

    <xs:simpleContent>

      <xs:extension base="xs:token" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="language" >

    <xs:simpleContent>

      <xs:extension base="xs:language" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="Name" >

    <xs:simpleContent>

      <xs:extension base="xs:Name" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="NMTOKEN" >

    <xs:simpleContent>

      <xs:extension base="xs:NMTOKEN" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="NCName" >

    <xs:simpleContent>

      <xs:extension base="xs:NCName" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="NMTOKENS" >

    <xs:simpleContent>

      <xs:extension base="xs:NMTOKENS" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="ID" >

    <xs:simpleContent>

      <xs:extension base="xs:ID" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="IDREF" >

    <xs:simpleContent>

      <xs:extension base="xs:IDREF" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="ENTITY" >

    <xs:simpleContent>

      <xs:extension base="xs:ENTITY" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="IDREFS" >

    <xs:simpleContent>

      <xs:extension base="xs:IDREFS" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="ENTITIES" >

    <xs:simpleContent>

      <xs:extension base="xs:ENTITIES" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="decimal" >

    <xs:simpleContent>

      <xs:extension base="xs:decimal" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="integer" >

    <xs:simpleContent>

      <xs:extension base="xs:integer" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="nonPositiveInteger" >

    <xs:simpleContent>

      <xs:extension base="xs:nonPositiveInteger" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="negativeInteger" >

    <xs:simpleContent>

      <xs:extension base="xs:negativeInteger" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="long" >

    <xs:simpleContent>

      <xs:extension base="xs:long" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="int" >

    <xs:simpleContent>

      <xs:extension base="xs:int" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="short" >

    <xs:simpleContent>

      <xs:extension base="xs:short" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="byte" >

    <xs:simpleContent>

      <xs:extension base="xs:byte" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="nonNegativeInteger" >

    <xs:simpleContent>

      <xs:extension base="xs:nonNegativeInteger" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="unsignedLong" >

    <xs:simpleContent>

      <xs:extension base="xs:unsignedLong" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="unsignedInt" >

    <xs:simpleContent>

      <xs:extension base="xs:unsignedInt" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="unsignedShort" >

    <xs:simpleContent>

      <xs:extension base="xs:unsignedShort" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="unsignedByte" >

    <xs:simpleContent>

      <xs:extension base="xs:unsignedByte" >

        <xs:attributeGroup ref="tns:commonAttributes" />

      </xs:extension>

    </xs:simpleContent>

  </xs:complexType>




  <xs:complexType name="positiveInteger" >
    <xs:simpleContent>
      <xs:extension base="xs:positiveInteger" >
        <xs:attributeGroup ref="tns:commonAttributes" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <xs:group name="Array" >
    <xs:sequence>
      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
	</xs:sequence>
  </xs:group>

  <xs:group name="Struct" >
    <xs:sequence>
      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
	</xs:sequence>
  </xs:group>


  <xs:simpleType name="arrayCoordinate" >
    <xs:restriction base="xs:string" />
  </xs:simpleType>

  <!-- 'Base64' can be used to serialize binary data using base64 encoding
       as defined in RFC2045 but without the MIME line length limitation. -->
  <xs:simpleType name="base64" >
    <xs:restriction base="xs:base64Binary" />
  </xs:simpleType>

</xs:schema>



