<!--************************************************************-->
<!--  SPMLv1_0.xsd                                              -->
<!--                                                            -->
<!--  Schema for SPML v1.0.                                     -->
<!--                                                            -->
<!--  Editors:                                                  -->
<!--    Jeff Bohren (jbohren@opennetwork.com)                   -->
<!--    Yoav Kirsch (Yoav.Kirsch@businesslayers.com)            -->
<!--                                                            -->
<!--                                                            -->
<!-- Copyright (C) The Organization for the Advancement of      -->
<!-- Structured Information Standards [OASIS] 2003. All Rights  -->
<!-- Reserved.                                                  -->
<!--************************************************************-->

<!--*********************************************************************-->
<!-- Note: You may need to add the following lines to                    -->
<!-- The DSMLv2.xsd file to properly parse this schema:                  -->
<!--                                                                     -->
<!--   <xsd:element name="attr" type="DsmlAttr"/>                        -->
<!--   <xsd:element name="modification" type="DsmlModification"/>        -->
<!--   <xsd:element name="filter" type="Filter"/>                        -->
<!--   <xsd:element name="attributes" type="AttributeDescriptions" />    -->
<!--                                                                     -->
<!--*********************************************************************-->

<schema 	targetNamespace="urn:oasis:names:tc:SPML:1:0" 
		xmlns:spml="urn:oasis:names:tc:SPML:1:0"
		xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core" 
		xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
		xmlns="http://www.w3.org/2001/XMLSchema"
		elementFormDefault="unqualified" attributeFormDefault="unqualified"
		version="1.1">
	 
        <import namespace="urn:oasis:names:tc:DSML:2:0:core" 
        	schemaLocation="DSMLv2_SPMLv1.xsd" />
	
	<import namespace="urn:oasis:names:tc:SAML:1.0:assertion" 
		schemaLocation="cs-sstc-schema-assertion-01.xsd"/>
	
	<xsd:complexType name="Attributes">
		<xsd:sequence>
			<xsd:element ref="dsml:attr" minOccurs="0" maxOccurs="unbounded" />
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>  
	
	


	<xsd:simpleType name="ExecutionType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#synchronous"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#asynchronous"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="SpmlRequest">
		<xsd:sequence>
			<xsd:element name="operationalAttributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="requestID" type="xsd:ID" use="optional"/>
		<xsd:attribute name="execution" type="spml:ExecutionType" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>

	<xsd:simpleType name="ResultCode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#success"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#failure"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#pending"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	<xsd:simpleType name="ErrorCode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#malformedRequest"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#unsupportedOperation"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#unsupportedIdentifierType"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#noSuchIdentifier"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#noSuchRequest "/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#customError"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	<xsd:complexType name="SpmlResponse">
		<xsd:sequence>
			<xsd:element name="operationalAttributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="errorMessage" type="xsd:string" minOccurs="0"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>

		<xsd:attribute name="result" type="spml:ResultCode" use="required"/>
		<xsd:attribute name="requestID" type="xsd:ID" use="optional"/>
		<xsd:attribute name="error" type="spml:ErrorCode" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>

	<xsd:simpleType name="IdentifierType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#EMailAddress"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#DN"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#UserIDAndOrDomainName"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#LibertyUniqueID"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#PassportUniqueID"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#GUID"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#URN"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#GenericString"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#SAMLSubject"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#OID"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	<xsd:complexType name="Identifier">
		<xsd:sequence>
			<xsd:choice>
				<xsd:element name="id" type="xsd:anyType" minOccurs="0"/>
				<xsd:element name="subject" type="saml:SubjectStatementAbstractType" minOccurs="0"/>
			</xsd:choice>
			<xsd:element name="identifierAttributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="type" type="spml:IdentifierType" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>
	

	
	<xsd:complexType name="AddRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
				<xsd:sequence>
					<xsd:element name="identifier" type="spml:Identifier" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="attributes" type="spml:Attributes" />
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>  
 
 	<xsd:complexType name="AddResponse">
 		<xsd:complexContent>
 			<xsd:extension base="spml:SpmlResponse">
 				<xsd:sequence>
 					<xsd:element name="identifier" type="spml:Identifier" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="attributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
 				</xsd:sequence>
 			</xsd:extension>
 		</xsd:complexContent>
	</xsd:complexType> 

	<xsd:complexType name="Modifications">
		<xsd:sequence>
			<xsd:element ref="dsml:modification" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>  

	<xsd:complexType name="ModifyRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
				<xsd:sequence>
					<xsd:element name="identifier" type="spml:Identifier" minOccurs="1" maxOccurs="1" />
					<xsd:element name="modifications" type="spml:Modifications"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>	
	

	<xsd:complexType name="ModifyResponse">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlResponse">
				<xsd:sequence>
					<xsd:element name="modifications" type="spml:Modifications" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="DeleteRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
				<xsd:sequence>
					<xsd:element name="identifier" type="spml:Identifier" minOccurs="1" maxOccurs="1" />
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

 	<xsd:complexType name="DeleteResponse">
 		<xsd:complexContent>
 			<xsd:extension base="spml:SpmlResponse">
 			</xsd:extension>
 		</xsd:complexContent>
	</xsd:complexType>
	
	
	<xsd:complexType name="SearchRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
				<xsd:sequence>
					<xsd:element name="searchBase" type="spml:Identifier" minOccurs="0" maxOccurs="1" />
					<xsd:element ref="dsml:filter" minOccurs="0" maxOccurs="1" />
					<xsd:element ref="dsml:attributes" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>  

	<xsd:complexType name="SearchResultEntry">
		<xsd:sequence>
			<xsd:element name="identifier" type="spml:Identifier" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="attributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>
 
 	<xsd:complexType name="SearchResponse">
 		<xsd:complexContent>
 			<xsd:extension base="spml:SpmlResponse">
 				<xsd:sequence>
 					<xsd:element name="searchResultEntry" type="spml:SearchResultEntry" minOccurs="0" maxOccurs="unbounded"/>
 				</xsd:sequence>
 			</xsd:extension>
 		</xsd:complexContent>
	</xsd:complexType> 

	<xsd:complexType name="ProviderIdentifier">
		<xsd:sequence>
			<xsd:element name="providerID" type="xsd:anyType" />
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="providerIDType" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#URN"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#OID"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:anyAttribute namespace="##other" processContents="lax" />
	</xsd:complexType>
	                        
	<xsd:complexType name="OperationIdentifier">
		<xsd:sequence>
			<xsd:element name="operationID" type="xsd:anyType" />
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="operationIDType" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#URN"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#OID"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#GenericString"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>
	
	 
	<xsd:complexType name="ExtendedRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
				<xsd:sequence>
					<xsd:element name="providerIdentifier" type="spml:ProviderIdentifier" minOccurs="1" maxOccurs="1" />
					<xsd:element name="operationIdentifier" type="spml:OperationIdentifier" minOccurs="1" maxOccurs="1"/>
					<xsd:element name="identifier" type="spml:Identifier" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="attributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>  
	 
	<xsd:complexType name="ExtendedResponse">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlResponse">
				<xsd:sequence>
					<xsd:element name="attributes" type="spml:Attributes" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="Properties">
		<xsd:sequence>
			<xsd:element ref="dsml:attr" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>  

 	<xsd:complexType name="AttributeDefinition">
		<xsd:sequence>
			<xsd:element name="properties" type="spml:Properties" minOccurs="0" maxOccurs="1"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="description" type="xsd:string" use="optional"/>
		<xsd:attribute name="multivalued" type="xsd:boolean" use="optional" default="false"/>
		<xsd:attribute name="type" type="xsd:string" use="optional" default="xsd:string"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>

 	<xsd:complexType name="AttributeDefinitionReference">
		<xsd:sequence>
			<xsd:element name="providerIdentifier" type="spml:ProviderIdentifier" minOccurs="0" maxOccurs="1" />
			<xsd:element name="schemaIdentifier" type="spml:SchemaIdentifier" minOccurs="0" maxOccurs="1" />
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
 		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="required" type="xsd:boolean" use="optional" default="false"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>

	<xsd:complexType name="AttributeDefinitionReferences">
		<xsd:sequence>
			<xsd:element name="attributeDefinitionReference" type="spml:AttributeDefinitionReference" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>  

 	<xsd:complexType name="ObjectClassDefinitionReference">
		<xsd:sequence>
			<xsd:element name="providerIdentifier" type="spml:ProviderIdentifier" minOccurs="0" maxOccurs="1" />
			<xsd:element name="schemaIdentifier" type="spml:SchemaIdentifier" minOccurs="0" maxOccurs="1" />
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
 		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>

	<xsd:complexType name="ObjectClassDefinitionReferences">
		<xsd:sequence>
			<xsd:element name="objectClassDefinitionReference" type="spml:ObjectClassDefinitionReference" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>  

 	<xsd:complexType name="ObjectClassDefinition">
 		<xsd:sequence>
			<xsd:element name="properties" type="spml:Properties" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="memberAttributes" type="spml:AttributeDefinitionReferences" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="superiorClasses" type="spml:ObjectClassDefinitionReferences" minOccurs="0" maxOccurs="1"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
 		<xsd:attribute name="name" type="xsd:string" use="required"/>
 		<xsd:attribute name="description" type="xsd:string" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>

 	<xsd:complexType name="ExtendedRequestDefinition">
 		<xsd:sequence>
			<xsd:element name="operationIdentifier" type="spml:OperationIdentifier" minOccurs="1" maxOccurs="1" />
			<xsd:element name="properties" type="spml:Properties" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="parameters" type="spml:AttributeDefinitionReferences" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="returnValues" type="spml:AttributeDefinitionReferences" minOccurs="0" maxOccurs="1"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
 		<xsd:attribute name="description" type="xsd:string" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
 	</xsd:complexType>

	
	<xsd:complexType name="SchemaIdentifier">
		<xsd:sequence>
			<xsd:element name="schemaID" type="xsd:anyType" />
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="schemaIDType" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#URN"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#OID"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#GenericString"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:anyAttribute namespace="##other" processContents="lax" />		
	</xsd:complexType>
	
 	<xsd:complexType name="Schema">
		<xsd:sequence>
			<xsd:element name="providerIdentifier" type="spml:ProviderIdentifier" minOccurs="1" maxOccurs="1" />
			<xsd:element name="schemaIdentifier" type="spml:SchemaIdentifier" minOccurs="1" maxOccurs="1" />
			<xsd:element name="objectClassDefinition" type="spml:ObjectClassDefinition" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="attributeDefinition" type="spml:AttributeDefinition" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="extendedRequestDefinition" type="spml:ExtendedRequestDefinition" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
		</xsd:sequence>		
		<xsd:attribute name="majorVersion" type="xsd:string"/>
		<xsd:attribute name="minorVersion" type="xsd:string"/>
		<xsd:anyAttribute namespace="##other" processContents="lax" />				
	</xsd:complexType>

	<xsd:complexType name="SchemaRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
 				<xsd:sequence>
 					<xsd:element name="providerIdentifier" type="spml:ProviderIdentifier" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="schemaIdentifier" type="spml:SchemaIdentifier" minOccurs="0" maxOccurs="1"/>
 				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	 
	<xsd:complexType name="SchemaResponse">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlResponse">
 				<xsd:sequence>
 					<xsd:element name="schema" type="spml:Schema" minOccurs="1" maxOccurs="unbounded"/>
 				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:simpleType name="ProcessingType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#sequential"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#parallel"/>
		</xsd:restriction>
	</xsd:simpleType>


	
	<xsd:simpleType name="OnErrorType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#resume"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#exit"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="CancelResultsType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#nosuchRequest "/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#canceled"/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#couldNotCancel"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="StatusReturnsType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#status "/>
			<xsd:enumeration value="urn:oasis:names:tc:SPML:1:0#result"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:group name="BatchRequests">
		<xsd:choice>
			<xsd:element name="modifyRequest" type="spml:ModifyRequest" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="addRequest" type="spml:AddRequest" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="deleteRequest" type="spml:DeleteRequest" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="extendedRequest" type="spml:ExtendedRequest" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:choice>
	</xsd:group>
	
	<xsd:complexType name="BatchRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
				<xsd:sequence>
					<xsd:group ref="spml:BatchRequests" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
				<xsd:attribute name="processing" type="spml:ProcessingType" use="optional" default="urn:oasis:names:tc:SPML:1:0#sequential" />
				<xsd:attribute name="onError" type="spml:OnErrorType" use="optional" default="urn:oasis:names:tc:SPML:1:0#exit" />
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:group name="BatchResponses">
		<xsd:choice>
			<xsd:element name="modifyResponse" type="spml:ModifyResponse" minOccurs="0" maxOccurs="unbounded" />
			<xsd:element name="addResponse" type="spml:AddResponse" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="deleteResponse" type="spml:DeleteResponse" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="extendedResponse" type="spml:ExtendedResponse" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:choice>
	</xsd:group>

	<xsd:complexType name="BatchResponse">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlResponse">
				<xsd:sequence>
					<xsd:group ref="spml:BatchResponses" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="CancelRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>


	<xsd:complexType name="CancelResponse">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlResponse">
				<xsd:attribute name="cancelResult" type="spml:CancelResultsType" use="required"  />
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="StatusRequest">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlRequest">	
				<xsd:attribute name="statusReturns" type="spml:StatusReturnsType" use="optional"  default="urn:oasis:names:tc:SPML:1:0#result" />		
			</xsd:extension>
		</xsd:complexContent>		
	</xsd:complexType>
	
	<xsd:group name="StatusResponses">
		<xsd:choice>
			<xsd:element name="modifyResponse" type="spml:ModifyResponse" minOccurs="0" maxOccurs="1" />
			<xsd:element name="addResponse" type="spml:AddResponse" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="deleteResponse" type="spml:DeleteResponse" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="extendedResponse" type="spml:ExtendedResponse" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="searchResponse" type="spml:SearchResponse" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="schemaResponse" type="spml:SchemaResponse" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="batchResponse" type="spml:BatchResponse" minOccurs="0" maxOccurs="1" />
		</xsd:choice>
	</xsd:group>

	<xsd:complexType name="StatusResponse">
		<xsd:complexContent>
			<xsd:extension base="spml:SpmlResponse">
				<xsd:sequence>
					<xsd:group ref="spml:StatusResponses" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>		
	</xsd:complexType>
	

	<xsd:element name="batchRequest" type="spml:BatchRequest" />
	
	<xsd:element name="batchResponse" type="spml:BatchResponse" />

	<xsd:element name="addRequest" type="spml:AddRequest" />
	
	<xsd:element name="addResponse" type="spml:AddResponse" />

	<xsd:element name="modifyRequest" type="spml:ModifyRequest" />
	
	<xsd:element name="modifyResponse" type="spml:ModifyResponse" />

	<xsd:element name="deleteRequest" type="spml:DeleteRequest" />
	
	<xsd:element name="deleteResponse" type="spml:DeleteResponse" />

	<xsd:element name="searchRequest" type="spml:SearchRequest" />
	
	<xsd:element name="searchResponse" type="spml:SearchResponse" />

	<xsd:element name="extendedRequest" type="spml:ExtendedRequest" />
	
	<xsd:element name="extendedResponse" type="spml:ExtendedResponse" />

	<xsd:element name="schemaRequest" type="spml:SchemaRequest" />
	
	<xsd:element name="schemaResponse" type="spml:SchemaResponse" />

	<xsd:element name="cancelRequest" type="spml:CancelRequest" />
	
	<xsd:element name="cancelResponse" type="spml:CancelResponse" />

	<xsd:element name="statusRequest" type="spml:StatusRequest" />
	
	<xsd:element name="statusResponse" type="spml:StatusResponse" />

	<xsd:element name="schema" type="spml:Schema" />

</schema>

