<?xml version="1.0" encoding="us-ascii"?>
<!-- $Id: wsdl12.xsd,v 1.1 2003/01/23 19:12:56 plehegar Exp $ --><!-- 
   W3C XML Schema defined in the Web Services Description (WSDL)
    Version 1.2 specification
     http://www.w3.org/TR/wsdl12

   Copyright (c) 2003 World Wide Web Consortium,
  
   (Massachusetts Institute of Technology, European Research Consortium for
   Informatics and Mathematics, Keio University). All Rights Reserved. This
   work is distributed under the W3C(r) Software License [1] in the hope that
   it will be useful, but WITHOUT ANY WARRANTY; without even the implied
   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
   [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
--><!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://www.w3.org/2003/01/wsdl" targetNamespace="http://www.w3.org/2003/01/wsdl" elementFormDefault="qualified" finalDefault="" blockDefault="" attributeFormDefault="unqualified">

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

  <xs:complexType name="Documented" mixed="false">
    <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" mixed="false">
    <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>

  <!-- Abstract elements intended to serve as head of substitution groups for extensibility elements -->

  <!-- Abstract elements that can appear in multiple locations -->
  <xs:element name="globalExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as a child 
	  of any element in wsdl that has complex content
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="msgAndportTypeExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as a child 
	  of wsdl:message and/or wsdl:portType
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="msgportTypeAndBindingExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as a child 
	  of wsdl:message, wsdl:portType and/or wsdl:binding
	  </xs:documentation>
	</xs:annotation>
  </xs:element>  

  <xs:element name="msgportTypeBindingServiceExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as a child 
	  of wsdl:message, wsdl:portType, wsdl:binding and/or wsdl:service
	  </xs:documentation>
	</xs:annotation>
  </xs:element>  

  <xs:element name="bindingAndServiceExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as a child 
	  of wsdl:binding and/or wsdl:service
	  </xs:documentation>
	</xs:annotation>
  </xs:element>  

  <!-- Top level abstract elements -->
  <xs:element name="preImportInclude" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear before the wsdl:import/wsdl:include elements
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="inImportInclude" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear interleaved with the wsdl:import/wsdl:include elements
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="preTypes" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear after the wsdl:import/wsdl:include elements 
	  but before the wsdl:types element
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="postTypes" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear after the wsdl:types element 
	  ( potentially interleaved with wsdl:message/portType/binding/service
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <!-- Abstract elements related to message -->
  <xs:element name="msgExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:message
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="msgPrePartExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:message before wsdl:part
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="msgPostPartExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:message after wsdl:part
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="msgPartExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:message/wsdl:part
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <!-- Abstract elements related to portType -->
  <xs:element name="portTypeExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:portType
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="portTypePreOpExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:portType before wsdl:operation
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="portTypePostOpExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:portType after wsdl:operation
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="portTypeOpExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:portType/wsdl:operation
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="portTypeOpMsgExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of 
	  wsdl:portType/wsdl:operation/wsdl:input\output
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="portTypeOpFaultExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of 
	  wsdl:portType/wsdl:operation/wsdl:fault
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <!-- Abstract elements related to bindings -->
  <xs:element name="bindingExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:binding
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="bindingPreOpExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:binding before wsdl:operation
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="bindingPostOpExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:binding after wsdl:operation
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="bindingOpExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:binding/wsdl:operation
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="bindingOpMsgExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:binding/wsdl:operation/wsdl:input/output
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="bindingOpFaultExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:binding/wsdl:operation/wsdl:fault
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <!-- Abstract elements related to service -->
  <xs:element name="serviceExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:service
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="servicePrePortExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:service before wsdl:port
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="servicePostPortExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:service after wsdl:port
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <xs:element name="portExt" abstract="true">
    <xs:annotation>
	  <xs:documentation>
	  This element serves as the head of a substitution group 
	  for extensibility elements that wish to appear as children of wsdl:port
	  </xs:documentation>
	</xs:annotation>
  </xs:element>

  <!-- 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" mixed="false">
	<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" mixed="false">
    <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" mixed="false">
    <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" mixed="false">
    <xs:complexContent>
      <xs:extension base="wsdl:ExtensibleDocumented">
	    <xs:sequence>
	      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
		</xs:sequence>
	  </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- types related to wsdl:message -->
  <xs:complexType name="Message" mixed="false">
    <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" mixed="false">
    <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:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- parts related to wsdl:portType -->
  <xs:complexType name="PortType" mixed="false">
    <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:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="PortTypeOperation" mixed="false">
    <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:Gudge"/>
			  <xs:sequence minOccurs="0">
			    <xs:element name="output" type="wsdl:Gudge"/>
			    <xs:element name="fault" type="wsdl:GudgeFault" minOccurs="0" maxOccurs="unbounded"/>
			  </xs:sequence>
			</xs:sequence>
		    <xs:sequence>
			  <xs:element name="output" type="wsdl:Gudge"/>
			  <xs:sequence minOccurs="0">
			    <xs:element name="input" type="wsdl:Gudge"/>
				<xs:element name="fault" type="wsdl:GudgeFault" minOccurs="0" maxOccurs="unbounded"/>
			  </xs:sequence>
			</xs:sequence>
		  </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:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Gudge" mixed="false">
    <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="GudgeFault" mixed="false">
    <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>

  <!-- types related to wsdl:binding -->
  <xs:complexType name="Binding" mixed="false">
    <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" mixed="false">
    <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" mixed="false">
    <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" mixed="false">
    <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" mixed="false">
    <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" mixed="false">
    <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" mixed="false">
    <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>