<!--************************************************************-->
<!--  draft_pstc_schemma_request_07.xsd                         -->
<!--                                                            -->
<!--  Draft request/response schema for SPML. Requires the      -->
<!--  SPML Core schema and the Schema schema.                   -->
<!--                                                            -->
<!--  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.                                                  -->
<!--************************************************************-->

<xsd:schema 	targetNamespace="urn:oasis:names:tc:SPML:1:0:req" 
		xmlns ="urn:oasis:names:tc:SPML:1:0:req"
		xmlns:spml="urn:oasis:names:tc:SPML:1:0:core"
		xmlns:spmlschema="urn:oasis:names:tc:SPML:1:0:schema"
		xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core">
		
        <xsd:import namespace="urn:oasis:names:tc:DSML:2:0:core" 
        	schemaLocation="http://www.oasis-open.org/committees/dsml/docs/DSMLv2.xsd" />
        
        <xsd:import namespace="urn:oasis:names:tc:SPML:1:0:core" 
        	schemaLocation="draft_pstc_schema_core_09.xsd" />
	
        <xsd:import namespace="urn:oasis:names:tc:SPML:1:0:schema" 
        	schemaLocation="draft_pstc_schema_schema_03.xsd" />

	<xsd:group name="BatchRequests">
		<xsd:choice>
			<xsd:element name="searchRequest" type="spml:SearchRequest"/>
			<xsd:element name="modifyRequest" type="spml:ModifyRequest"/>
			<xsd:element name="addRequest" type="spml:AddRequest"/>
			<xsd:element name="deleteRequest" type="spml:DeleteRequest"/>
			<xsd:element name="extendedRequest" type="spml:ExtendedRequest"/>
			<xsd:element name="schemaRequest" type="spmlschema:SchemaRequest"/>
		</xsd:choice>
	</xsd:group>

	<xsd:group name="BatchResponses">
		<xsd:choice>
			<xsd:element name="searchResponse" type="spml:SearchResponse"/>
			<xsd:element name="modifyResponse" type="spml:ModifyResponse"/>
			<xsd:element name="addResponse" type="spml:AddResponse"/>
			<xsd:element name="deleteResponse" type="spml:DeleteResponse"/>
			<xsd:element name="extendedResponse" type="spml:ExtendedResponse"/>
			<xsd:element name="schemaResponse" type="spmlschema:SchemaResponse"/>
		</xsd:choice>
	</xsd:group>
	
	<xsd:complexType name="BatchRequest">
		<xsd:sequence>
			<xsd:group ref="BatchRequests" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="batchAttributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>

		<xsd:attribute name="requestID" type="dsml:RequestID" use="optional"/>
		
		<xsd:attribute name="processing" use="optional" default="urn:oasis:names:tc:SPML:1.0:req#sequential">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#sequential"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#parallel"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		
		<xsd:attribute name="execution" use="optional" default="urn:oasis:names:tc:SPML:1.0:req#synchronous ">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#synchronous "/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#asynchronous"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		
		<xsd:attribute name="onError" use="optional" default="urn:oasis:names:tc:SPML:1.0:req#exit">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#resume"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#exit"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="BatchResponse">
		<xsd:sequence>
			<xsd:element name="errorMessage" type="xsd:string" minOccurs="0" maxOccurs="1" />
			<xsd:group ref="BatchResponses" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="batchAttributes" type="spml:Attributes" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>

		<xsd:attribute name="results" type="spml:ResultCode" use="required"/>
		
		<xsd:attribute name="requestID" type="dsml:RequestID" use="optional"/>
	</xsd:complexType>
	
	<xsd:complexType name="BatchCancelRequest">
	
		<xsd:attribute name="requestID" type="dsml:RequestID" use="required"/>
	</xsd:complexType>


	<xsd:complexType name="BatchCancelResponse">
		<xsd:sequence>
			<xsd:element name="resultCode" type="spml:ResultCode"/>
			<xsd:element name="errorMessage" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
		
		<xsd:attribute name="requestID" type="dsml:RequestID" use="required"/>

		<xsd:attribute name="cancelResults">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#nosuchRequest "/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#canceled"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#couldnotcancel"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		
	</xsd:complexType>
	
	<xsd:complexType name="BatchStatusRequest">
	
		<xsd:attribute name="requestID" type="dsml:RequestID" use="required"/>
		
	</xsd:complexType>

	<xsd:complexType name="BatchStatusResponse">
		<xsd:sequence>
			<xsd:element name="errorMessage" type="xsd:string" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
		
		<xsd:attribute name="requestID" type="dsml:RequestID" use="required"/>

		<xsd:attribute name="statusResults">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#nosuchRequest "/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#success"/>
					<xsd:enumeration value="urn:oasis:names:tc:SPML:1.0:req#pending"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		
	</xsd:complexType>

	<xsd:element name="batchRequest" type="BatchRequest" />
	
	<xsd:element name="batchResponse" type="BatchResponse" />


	<xsd:element name="batchCancelRequest" type="BatchCancelRequest" />
	
	<xsd:element name="batchCancelResponse" type="BatchCancelResponse" />

	<xsd:element name="batchStatusRequest" type="BatchStatusRequest" />
	
	<xsd:element name="batchStatusResponse" type="BatchStatusResponse" />


	
</xsd:schema>

