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

<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:attribute name="root">
        <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: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>

    <!-- 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:simpleType name="arrayCoordinate">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>

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

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

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

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

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

    <xs:element name="Array" type="tns:Array"/>
    <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>

    <!-- '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"/>

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

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

    <!-- '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>

    <!-- Element declarations corresponding to each of the simple types in the
 XML Schemas Specification. -->

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <xs:element name="anyType"/>
</xs:schema>

