<?xml version='1.0' encoding='UTF-8'?>
<!-- $Id: wsdl12Ext.xsd,v 1.0 2003/03/12 -->
<!-- 
   Extension proposed to the W3C XML Schema defined in the Web Services Description (WSDL)
   Version 1.2 specification http://www.w3.org/TR/wsdl12
    
    Author: Kaarthik Sivashanmugam
    Comment: File wsdl12Ext.xsd renamed as wsdl12Ext.xml for display purposes

-->

<!-- Following are commented from the original schema to display in the browser IE


DOCTYPE xs:schema PUBLIC '-//W3C//DTD XMLSCHEMA 200102//EN'
                           'http://www.w3.org/2001/XMLSchema.dtd' [

<!ENTITY % entities SYSTEM 'entities.dtd' >

%entities;
]

<xs:schema targetNamespace='&wsdl-ns;'
		xmlns:wsdl='&wsdl-ns;' >
           
           -->

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
             elementFormDefault='qualified' >

  <xs:include schemaLocation='wsdl12-ext.xsd' />

  <xs:complexType name='Documentation' mixed='true' >
    <xs:sequence>
      <xs:any processContents='lax' minOccurs='0' maxOccurs='unbounded' />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name='Documented' >
    <xs:annotation>
      <xs:documentation>
      This type is extended by component types to allow them to be documented.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name='documentation' type='wsdl:Documentation' minOccurs='0' />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name='ExtensibleDocumented' abstract='true' >
    <xs:annotation>
      <xs:documentation>
      This type is extended by component types to allow 
      attributes from other namespaces to be added.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base='wsdl:Documented' >
	    <xs:anyAttribute namespace='##other' processContents='lax' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- definitions element decl and type def -->
  <xs:element name='definitions' type='wsdl:Definitions' >
    <xs:unique name='message' >
      <xs:selector xpath='wsdl:message' />
      <xs:field xpath='@name' />
    </xs:unique>
    <xs:unique name='portType' >
      <xs:selector xpath='wsdl:portType' />
      <xs:field xpath='@name' />
    </xs:unique>
    <xs:unique name='binding' >
      <xs:selector xpath='wsdl:binding' />
      <xs:field xpath='@name' />
    </xs:unique>
    <xs:unique name='service' >
      <xs:selector xpath='wsdl:service' />
      <xs:field xpath='@name' />
    </xs:unique>
  </xs:element>
  
  <xs:complexType name='Definitions' >
	<xs:complexContent>
	  <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:sequence>
		  <xs:element ref='wsdl:preImportInclude' minOccurs='0' maxOccurs='unbounded' />
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element name='import' type='wsdl:Import' />
		    <xs:element ref='wsdl:inImportInclude' />
			<xs:element name='include' type='wsdl:Include' />
          </xs:choice>
		  <xs:element ref='wsdl:preTypes' minOccurs='0' maxOccurs='unbounded' />
		  <xs:element name='types' type='wsdl:Types' minOccurs='0' />
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:annotation>
			  <xs:documentation>
			  Any top-level, optional element is allowed to appear more
			  than once - Any extensibility element is allowed in any place.
			  Such extensibility elements must be in the substitution group of 
			  globalExt or postTypes
			  </xs:documentation>
		    </xs:annotation>
		    <xs:element ref='wsdl:globalExt' />
			<xs:element ref='wsdl:postTypes' />
			<xs:element name='message' type='wsdl:Message' >
			  <xs:unique name='part' >
			    <xs:selector xpath='wsdl:part' />
				<xs:field xpath='@name' />
			  </xs:unique>
			</xs:element>
			<xs:element name='portType' type='wsdl:PortType' >
			  <xs:unique name='operation' >
			    <xs:selector xpath='wsdl:operation' />
				<xs:field xpath='@name' />
			  </xs:unique>
			</xs:element>
			<xs:element name='binding' type='wsdl:Binding' />
			<xs:element name='service' type='wsdl:Service' >
		      <xs:unique name='port' >
			    <xs:selector xpath='wsdl:port' />
			    <xs:field xpath='@name' />
		      </xs:unique>
			</xs:element>
		  </xs:choice>
		</xs:sequence>
		<xs:attribute name='targetNamespace' type='xs:anyURI' use='required' />
	  </xs:extension>
	</xs:complexContent>
  </xs:complexType>

  <!-- types for import and include elements -->
  <xs:complexType name='Import' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
        <xs:attribute name='namespace' type='xs:anyURI' use='required' />
        <xs:attribute name='location' type='xs:anyURI' use='optional' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='Include' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
        <xs:attribute name='location' type='xs:anyURI' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='Types' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:sequence>
	      <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' />
		</xs:sequence>
	  </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- types related to wsdl:message -->
  <xs:complexType name='Message' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:sequence>
		  <xs:element ref='wsdl:msgPrePartExt' minOccurs='0' maxOccurs='unbounded' />
          <xs:choice minOccurs='0' maxOccurs='unbounded'>
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:msgExt' />
            <xs:element name='part' type='wsdl:Part' />
          </xs:choice>
		  <xs:element ref='wsdl:msgPostPartExt' minOccurs='0' maxOccurs='unbounded' />
        </xs:sequence>
        <xs:attribute name='name' type='xs:NCName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='Part' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
        <xs:annotation>
          <xs:documentation>
          Either the element attribute OR the type attribute may appear but not both. 
		  Alternatively a qualified extensibility attribute which refers to constructs 
		  in some type system other than XML Schema may be used.
          </xs:documentation>
        </xs:annotation>
		<xs:choice minOccurs='0' maxOccurs='unbounded'>
		  <xs:element ref='wsdl:globalExt' />
		  <xs:element ref='wsdl:msgPartExt' />
		</xs:choice>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='element' type='xs:QName' use='optional' />
        <xs:attribute name='type' type='xs:QName' use='optional' />
        <xs:attribute name='input-concept' type='xs:QName' use='optional' />
        <xs:attribute name='output-concept' type='xs:QName' use='optional' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- parts related to wsdl:portType -->
  <xs:complexType name='PortType' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
        <xs:sequence>
		  <xs:element ref='wsdl:portTypePreOpExt' minOccurs='0' maxOccurs='unbounded' />
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:portTypeExt' />
            	    <xs:element name='operation' type='wsdl:PortTypeOperation' />
		  </xs:choice>
		  <xs:element ref='wsdl:portTypePostOpExt' minOccurs='0' maxOccurs='unbounded' />
        </xs:sequence>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='extends' use='optional' >
		  <xs:simpleType>
		    <xs:list itemType='xs:QName' />
		  </xs:simpleType>
		</xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='PortTypeOperation' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:sequence>
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:portTypeOpExt' />
          	  </xs:choice>
		  <xs:choice>
		    <xs:sequence>
			  <xs:element name='input' type='wsdl:MessageRef' />
			  <xs:sequence minOccurs='0' >
			    <xs:element name='output' type='wsdl:MessageRef' />
			    <xs:element name='fault' type='wsdl:MessageRefFault' minOccurs='0' maxOccurs='unbounded' />
			  </xs:sequence>
			</xs:sequence>
		    <xs:sequence>
			  <xs:element name='output' type='wsdl:MessageRef' />
			  <xs:sequence minOccurs='0' >
			    <xs:element name='input' type='wsdl:MessageRef' />
				<xs:element name='fault' type='wsdl:MessageRefFault' minOccurs='0' maxOccurs='unbounded' />
			  </xs:sequence>
			</xs:sequence>
		    <xs:element name='precondition' type='xs:PreCond' minOccurs='0' maxOccurs='unbounded'/>
		    <xs:element name='effect' type='xs:Effect' minOccurs='0' maxOccurs='unbounded'/>
		  </xs:choice>
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:portTypeOpExt' />
		  </xs:choice>
              </xs:sequence>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='operation-concept' type='xs:QName' use='optional' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='MessageRef' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:choice minOccurs='0' maxOccurs='unbounded' >
		  <xs:element ref='wsdl:globalExt' />
		  <xs:element ref='wsdl:portTypeOpMsgExt' />
		</xs:choice>
        <xs:attribute name='name' type='xs:NCName' use='optional' />
        <xs:attribute name='message' type='xs:QName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='MessageRefFault'>
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:choice minOccurs='0' maxOccurs='unbounded' >
		  <xs:element ref='wsdl:globalExt' />
		  <xs:element ref='wsdl:portTypeOpFaultExt' />
		</xs:choice>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='message' type='xs:QName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='PreCond'>
    <xs:complexContent>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='precondition-concept' type='xs:QName' use='required' />
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name='Effect'>
    <xs:complexContent>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='effect-concept' type='xs:QName' use='required' />
    </xs:complexContent>
  </xs:complexType>
  
  <!-- types related to wsdl:binding -->
  <xs:complexType name='Binding' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
        <xs:sequence>
		  <xs:element ref='wsdl:bindingPreOpExt' minOccurs='0' maxOccurs='unbounded' />
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:bindingExt' />
            <xs:element name='operation' type='wsdl:BindingOperation' />
          </xs:choice>
		  <xs:element ref='wsdl:bindingPostOpExt' minOccurs='0' maxOccurs='unbounded' />
        </xs:sequence>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='type' type='xs:QName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='BindingOperation' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
        <xs:sequence>
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:bindingOpExt' />
		  </xs:choice>
	      <xs:choice>
		    <xs:sequence>
			  <xs:element name='input' type='wsdl:BindingOperationMessage' />
			  <xs:element name='output' type='wsdl:BindingOperationMessage' minOccurs='0' />
			</xs:sequence>
		    <xs:sequence>
			  <xs:element name='output' type='wsdl:BindingOperationMessage' />
			  <xs:element name='input' type='wsdl:BindingOperationMessage' minOccurs='0' />
			</xs:sequence>
		  </xs:choice>
		  <xs:choice minOccurs='0' maxOccurs='unbounded' >
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:bindingOpExt' />
            <xs:element name='fault' type='wsdl:BindingOperationFault' />
          </xs:choice>
        </xs:sequence>
        <xs:attribute name='name' type='xs:NCName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='BindingOperationMessage' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:choice minOccurs='0' maxOccurs='unbounded' >
	      <xs:element ref='wsdl:globalExt' />
		  <xs:element ref='wsdl:bindingOpMsgExt' />
		</xs:choice>
        <xs:attribute name='name' type='xs:NCName' use='optional' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='BindingOperationFault' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:choice minOccurs='0' maxOccurs='unbounded' >
		  <xs:element ref='wsdl:globalExt' />
		  <xs:element ref='wsdl:bindingOpFaultExt' />
		</xs:choice>
        <xs:attribute name='name' type='xs:NCName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- types related to service -->
  <xs:complexType name='Service' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:sequence>
		  <xs:element ref='wsdl:servicePrePortExt' minOccurs='0' maxOccurs='unbounded' />
          <xs:choice minOccurs='0' maxOccurs='unbounded'>
		    <xs:element ref='wsdl:globalExt' />
		    <xs:element ref='wsdl:serviceExt' />
            <xs:element name='port' type='wsdl:Port' />
          </xs:choice>
		  <xs:element ref='wsdl:servicePostPortExt' minOccurs='0' maxOccurs='unbounded' />
        </xs:sequence>
        <xs:attribute name='name' type='xs:NCName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name='Port' >
    <xs:complexContent>
      <xs:extension base='wsdl:ExtensibleDocumented' >
	    <xs:choice minOccurs='0' maxOccurs='unbounded' >
		  <xs:element ref='wsdl:globalExt' />
		  <xs:element ref='wsdl:portExt' />
		</xs:choice>
        <xs:attribute name='name' type='xs:NCName' use='required' />
        <xs:attribute name='binding' type='xs:QName' use='required' />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:attribute name='required' type='xs:boolean' />

  <xs:complexType name='ExtensibilityElement' abstract='true' >
    <xs:annotation>
	  <xs:documentation>
	  This abstract type is intended to serve as the base type for
      extensibility elements. It includes the wsdl:required attribute
      which it is anticipated will be used by most extension elements
	  </xs:documentation>
	</xs:annotation>
    <xs:attribute ref='wsdl:required' use='optional' />
  </xs:complexType>

</xs:schema>
