<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!--
Legal Disclaimer

The presentation, distribution or other dissemination of the information 
contained in this specification is not a license, either expressly or impliedly, 
to any intellectual property owned or controlled by BEA or IBM or Microsoft and\or any other 
third party.  BEA and IBM and Microsoft and\or any other third party may have patents, patent 
applications, trademarks, copyrights, or other intellectual property rights 
covering subject matter in this document.  The furnishing of this document 
does not give you any license to BEA's and IBM's and Microsoft's or any other third party's patents, 
trademarks, copyrights, or other intellectual property.

This specification and the information contained herein is provided on an "AS IS"
 basis and to the maximum extent permitted by applicable law, BEA and IBM and Microsoft provides 
the document AS IS AND WITH ALL FAULTS, and hereby disclaims all other warranties 
and conditions, either express, implied or statutory, including, but not limited 
to, any (if any) implied warranties, duties or conditions of merchantability, of 
fitness for a particular purpose, of accuracy or completeness of responses, of 
results, of workmanlike effort, of lack of viruses, and of lack of negligence, 
all with regard to the document. ALSO, THERE IS NO WARRANTY OR CONDITION OF 
TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR 
NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE DOCUMENT.

IN NO EVENT WILL BEA or IBM or MICROSOFT BE LIABLE TO ANY OTHER PARTY FOR THE COST OF PROCURING 
SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF DATA, OR ANY 
INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER 
CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY 
OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR NOT SUCH PARTY HAD ADVANCE 
NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.

Copyright Notice

Copyright 2001, 2002 BEA Systems and IBM Corporation and Microsoft Corporation. All rights reserved.
-->
<xsd:schema targetNamespace="http://schemas.xmlsoap.org/ws/2003/09/wsat" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsat="http://schemas.xmlsoap.org/ws/2003/09/wsat" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
	<xsd:complexType name="Notification">
		<xsd:sequence>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:element name="Prepare" type="wsat:Notification"/>
	<xsd:element name="Prepared" type="wsat:Notification"/>
	<xsd:element name="Aborted" type="wsat:Notification"/>
	<xsd:element name="ReadOnly" type="wsat:Notification"/>
	<xsd:element name="Commit" type="wsat:Notification"/>
	<xsd:element name="Rollback" type="wsat:Notification"/>
	<xsd:element name="Committed" type="wsat:Notification"/>
	<xsd:element name="Replay" type="wsat:Notification"/>
	<xsd:simpleType name="Vote">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="VoteCommit"/>
			<xsd:enumeration value="VoteRollback"/>
			<xsd:enumeration value="VoteReadOnly"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:element name="PrepareResponse">
		<xsd:complexType>
			<xsd:attribute name="vote" type="wsat:Vote"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="Outcome">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Commit"/>
			<xsd:enumeration value="Rollback"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:element name="ReplayResponse">
		<xsd:complexType>
			<xsd:attribute name="outcome" type="wsat:Outcome"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="ErrorCodes">
		<xsd:restriction base="xsd:QName">
			<xsd:enumeration value="wsat:InconsistentInternalState"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
