<?xml version='1.0'?>
<!-- XML Schema for SOAP v 1.1 Encoding -->

<!-- Copyright 2000 DevelopMentor, International Business Machines Corporation,
     Lotus Development Corporation, Microsoft, UserLand Software -->

<schema xmlns='http://www.w3.org/1999/XMLSchema'
        xmlns:tns='http://schemas.xmlsoap.org/soap/encoding/'
        targetNamespace='http://schemas.xmlsoap.org/soap/encoding/'>
        
 <!-- '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. -->

 <attribute name='root' default='0'>
    <simpleType base='boolean'>
      <pattern value='0|1'/>
    </simpleType>
 </attribute>
  
  <!-- 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. -->      
        
  <attributeGroup name='commonAttributes'>
    <attribute name='id' type='ID'/>
    <attribute name='href' type='uriReference'/>
    <anyAttribute namespace='##other'/>
  </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. -->
   
  <simpleType name='arrayCoordinate' base='string'/>
          
  <attribute name='arrayType' type='string'/>
  <attribute name='offset' type='tns:arrayCoordinate'/>
  
  <attributeGroup name='arrayAttributes'>
    <attribute ref='tns:arrayType' minOccurs='1' />
    <attribute ref='tns:offset'/>
  </attributeGroup>    
  
  <attribute name='position' type='tns:arrayCoordinate'/> 
  
  <attributeGroup name='arrayMemberAttributes'>
    <attribute ref='tns:position'/>
  </attributeGroup>    
  
  <!-- 'Array' is a complex type for accessors identified by position.
   -->
   
  <element name='Array' type='tns:Array'/>
  <group name='Array'>
    <any minOccurs='0' maxOccurs='*'/>
  </group>
  <complexType name='Array' content='elementOnly'>
    <group ref='Array' minOccurs='0' maxOccurs='1'/>
    <attributeGroup ref='tns:arrayAttributes'/>
    <attributeGroup ref='tns:commonAttributes'/>
  </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. -->
   
  <element name='Struct' type='tns:Struct'/>
  <group name='Struct'>
      <any minOccurs='0' maxOccurs='*'/>
  </group>
  <complexType name='Struct'>
    <group ref='Struct' minOccurs='0' maxOccurs='1'/>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType> 

  <!-- 'Base64' can be used to serialize binary data using base64 encoding
       as defined in RFC2045 but without the MIME line length limitation. -->

  <simpleType name='base64' base='binary'>
    <encoding value='base64'/>
  </simpleType>

 <!-- Element declarations corresponding to each of the simple types in the 
      XML Schemas Specification. -->
  
  <element name='string' type='tns:string'/>
  <complexType name='string' base='string' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='boolean' type='tns:boolean'/>
  <complexType name='boolean' base='boolean' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='float' type='tns:float'/>
  <complexType name='float' base='float' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='double' type='tns:double'/>
  <complexType name='double' base='double' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='decimal' type='tns:decimal'/>
  <complexType name='decimal' base='decimal' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='timeDuration' type='tns:timeDuration'/>
  <complexType name='timeDuration' base='timeDuration' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='recurringDuration' type='tns:recurringDuration'/>
  <complexType name='recurringDuration' base='recurringDuration' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='binary' type='tns:binary'/>
  <complexType name='binary' base='binary' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='uriReference' type='tns:uriReference'/>
  <complexType name='uriReference' base='uriReference' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='ID' type='tns:ID'/>
  <complexType name='ID' base='ID' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='IDREF' type='tns:IDREF'/>
  <complexType name='IDREF' base='IDREF' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='ENTITY' type='tns:ENTITY'/>
  <complexType name='ENTITY' base='ENTITY' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='NOTATION' type='tns:NOTATION'/>
  <complexType name='NOTATION' base='NOTATION' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='QName' type='tns:QName'/>
  <complexType name='QName' base='QName' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='language' type='tns:language'/>
  <complexType name='language' base='language' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='IDREFS' type='tns:IDREFS'/>
  <complexType name='IDREFS' base='IDREFS' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='ENTITIES' type='tns:ENTITIES'/>
  <complexType name='ENTITIES' base='ENTITIES' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='NMTOKEN' type='tns:NMTOKEN'/>
  <complexType name='NMTOKEN' base='NMTOKEN' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='NMTOKENS' type='tns:NMTOKENS'/>
  <complexType name='NMTOKENS' base='NMTOKENS' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='Name' type='tns:Name'/>
  <complexType name='Name' base='Name' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='NCName' type='tns:NCName'/>
  <complexType name='NCName' base='NCName' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='integer' type='tns:integer'/>
  <complexType name='integer' base='integer' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='nonPositiveInteger' type='tns:nonPositiveInteger'/>
  <complexType name='nonPositiveInteger' base='nonPositiveInteger' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='negativeInteger' type='tns:negativeInteger'/>
  <complexType name='negativeInteger' base='negativeInteger' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='long' type='tns:long'/>
  <complexType name='long' base='long' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='int' type='tns:int'/>
  <complexType name='int' base='int' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='short' type='tns:short'/>
  <complexType name='short' base='short' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='byte' type='tns:byte'/>
  <complexType name='byte' base='byte' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='nonNegativeInteger' type='tns:nonNegativeInteger'/>
  <complexType name='nonNegativeInteger' base='nonNegativeInteger' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='unsignedLong' type='tns:unsignedLong'/>
  <complexType name='unsignedLong' base='unsignedLong' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='unsignedInt' type='tns:unsignedInt'/>
  <complexType name='unsignedInt' base='unsignedInt' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='unsignedShort' type='tns:unsignedShort'/>
  <complexType name='unsignedShort' base='unsignedShort' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='unsignedByte' type='tns:unsignedByte'/>
  <complexType name='unsignedByte' base='unsignedByte' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='positiveInteger' type='tns:positiveInteger'/>
  <complexType name='positiveInteger' base='positiveInteger' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='timeInstant' type='tns:timeInstant'/>
  <complexType name='timeInstant' base='timeInstant' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='time' type='tns:time'/>
  <complexType name='time' base='time' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='timePeriod' type='tns:timePeriod'/>
  <complexType name='timePeriod' base='timePeriod' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='date' type='tns:date'/>
  <complexType name='date' base='date' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='month' type='tns:month'/>
  <complexType name='month' base='month' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='year' type='tns:year'/>
  <complexType name='year' base='year' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='century' type='tns:century'/>
  <complexType name='century' base='century' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='recurringDate' type='tns:recurringDate'/>
  <complexType name='recurringDate' base='recurringDate' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>

  <element name='recurringDay' type='tns:recurringDay'/>
  <complexType name='recurringDay' base='recurringDay' content='textOnly'>
    <attributeGroup ref='tns:commonAttributes'/>
  </complexType>
  
 <!-- Element declarations and types corresponding to the ur-type in the 
      W3C XML Schemas Specification. This is the 
      soap representation for the type described as the ur-Type in the W3C 
      schema specification.  This type will be dropped from the SOAP 
      specification or modified appropriately if the W3C schema's workgroup 
      can give us a proper xsd:ur-Type name soon enough for us to use, 
      or else deprecated. -->
  
  <element name='ur-type'/>
  <complexType name='ur-type'/>

</schema>