This document is also available in these non-normative formats: .
Copyright © @@@@ W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. WSDL Version 2.0 Bindings describes how to use WSDL in conjunction with SOAP 1.2 [SOAP 1.2 Part 1: Messaging Framework], HTTP/1.1 GET/POST [IETF RFC 2616], and MIME [IETF RFC 2045]. This specification depends on WSDL Version 2.0 [WSDL 2.0 Core Language].
This document is an editors' copy that has no official standing.
1. Introduction
2. WSDL SOAP Binding
3. WSDL HTTP Binding
4. MIME Binding
5. References
A. Acknowledgements (Non-Normative)
B. Part 2 Change Log (Non-Normative)
1. Introduction
    1.1 Notational Conventions
2. WSDL SOAP Binding
    2.1 How the SOAP Binding Extends WSDL (Non-normative)
    2.2 
					binding Element with binding [parent]
				
        2.2.1 
						protocol Attribute with binding [owner]
					
    2.3 module Element with binding [parent]
        2.3.1 uri Attribute with module [owner]
        2.3.2 required Attribute with binding [owner]
    2.4 propertyConstraint Element with module [parent]
        2.4.1 uri Attribute with propertyConstraint [owner]
        2.4.2 type Attribute with propertyConstraint [owner]
    2.5 
					operation Element with operation [parent]
				
        2.5.1 
						soapAction Attribute with operation [owner]
					
    2.6 
					header Element with input or output [parent]
				
        2.6.1 
						element Attribute with header [owner]
					
        2.6.2 
						mustUnderstand Attribute with header [owner]
					
        2.6.3 
						role Attribute with header [owner]
					
    2.7 
					headerfault Element with input or output [parent]
				
        2.7.1 
						message Attribute with headerfault [owner]
					
        2.7.2 
						part Attribute with headerfault [owner]
					
        2.7.3 
						namespace Attribute with headerfault [owner]
					
        2.7.4 
						encodingStyle Attribute with headerfault [owner]
					
    2.8 
					address Element with endpoint [parent]
				
        2.8.1 
						location Attribute with address [owner]
					
3. WSDL HTTP Binding
    3.1 
			    binding Element with binding [parent]
			  
        3.1.1 verbDefault Attribute with
			     binding [owner]
    3.2 
			    operation Element with operation
			    [parent] 
			  
        3.2.1 
				  verb Attribute with operation
				  [owner]
				
        3.2.2 
				  location Attribute with operation
				  [owner]
				
    3.3 Method is GET
        3.3.1 Case of Input Parts Cited in location Attribute
        3.3.2 Case of Input Parts NOT Cited in location attribute
            3.3.2.1 Serializing Parts into HTTP Body request
        3.3.3 Case of Output Parts
            3.3.3.1 Serializing parts into HTTP Body response
    3.4 Method is POST
        3.4.1 XML Encoding Mechanism
            3.4.1.1 Case of Input Parts Cited in location Attribute
            3.4.1.2 Case of Input Parts NOT Cited in location attribute
            3.4.1.3 Case of Output Parts
        3.4.2 Multipart Encoding Mechanism
            3.4.2.1 Case of Input Parts Cited in location Attribute
            3.4.2.2 Case of Input Parts NOT Cited in location Attribute
            3.4.2.3 Case of Output Parts
        3.4.3 application/x-www-form-urlencoded Encoding Mechanism
            3.4.3.1 Case of Input Parts Cited in location Attribute
            3.4.3.2 Case of Input Parts NOT Cited in location Attribute
            3.4.3.3 Case of Output Parts
    3.5 
					address Element with endpoint [parent]
				
        3.5.1 
						location Attribute with address [owner]
					
4. MIME Binding
    4.1 How the MIME
Binding extends WSDL
    4.2 mime:content
    4.3 mime:multipartRelated
    4.4 wsoap:body
    4.5 mime:mimeXml
5. References
    5.1 Normative References
    5.2 Informative References
A. Acknowledgements (Non-Normative)
B. Part 2 Change Log (Non-Normative)
    B.1 WSDL Specification Changes
    B.2 XML Schema Changes
The Web Services Description Language WSDL Version 2.0 (WSDL) [WSDL 2.0 Core Language] defines an XML grammar [XML 1.0] for describing network services as collections of communication endpoints capable of exchanging messages. WSDL service definitions provide documentation for distributed systems and serve as a recipe for automating the details involved in applications communication. WSDL 2.0 Bindings (this document) defines binding extensions for the following protocols and message formats:
SOAP Version 1.2 [SOAP 1.2 Part 1: Messaging Framework] (see 2. WSDL SOAP Binding).
HTTP/1.1 GET/POST [IETF RFC 2616] (see 3. WSDL HTTP Binding).
MIME [IETF RFC 2045] (see 4. MIME Binding).
WSDL 2.0 Primer [WSDL 2.0 Primer] is a non-normative document intended to provide an easily understandable tutorial on the features of the WSDL Version 2.0 specifications.
The Core Language [WSDL 2.0 Core Language] of the WSDL 2.0 specification describes the core elements of the WSDL language.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119 [IETF RFC 2119].
This specification uses a number of namespace prefixes throughout; they are listed in Table 1-1. Note that the choice of any namespace prefix is arbitrary and not semantically significant (see [XML Information Set]).
| Prefix | Namespace | Notes | 
|---|---|---|
| wsdl | "http://www.w3.org/@@@@/@@/wsdl" | A normative XML Schema [XML Schema Structures], [XML Schema Datatypes] document for the "http://www.w3.org/@@@@/@@/wsdl" namespace can be found at http://www.w3.org/@@@@/@@/wsdl. | 
| wsoap | "http://www.w3.org/@@@@/@@/wsdl/soap12" | A normative XML Schema [XML Schema Structures], [XML Schema Datatypes] document for the "http://www.w3.org/@@@@/@@/wsdl/soap12" namespace can be found at http://www.w3.org/@@@@/@@/wsdl/soap12. | 
| http | "http://www.w3.org/@@@@/@@/wsdl/http" | A normative XML Schema [XML Schema Structures], [XML Schema Datatypes] document for the "http://www.w3.org/@@@@/@@/wsdl/http" namespace can be found at http://www.w3.org/@@@@/@@/wsdl/http. | 
| mime | "http://www.w3.org/@@@@/@@/wsdl/mime" | A normative XML Schema [XML Schema Structures], [XML Schema Datatypes] document for the "http://www.w3.org/@@@@/@@/wsdl/mime" namespace can be found at http://www.w3.org/@@@@/@@/wsdl/mime. | 
| xsd | "http://www.w3.org/2001/XMLSchema" | Defined in the W3C XML Schema specification [XML Schema Structures], [XML Schema Datatypes]. | 
| xsi | "http://www.w3.org/2001/XMLSchema-instance" | Defined in the W3C XML Schema specification [XML Schema Structures], [XML Schema Datatypes]. | 
Namespace names of the general form "http://example.org/..." and "http://example.com/..." represent application or context-dependent URIs [IETF RFC 2396].
This specification uses the Extended Backus-Naur Form (EBNF) as described in XML 1.0 [XML 1.0].
All parts of this specification are normative, with the EXCEPTION of pseudo-schemas, examples, and sections explicitly marked as "Non-Normative". Pseudo-schemas are provided for each component, before the description of this component.
| Editorial note: JCS | 20030115 | 
| The WG is actively redesigning the SOAP/HTTP binding to align with changes in SOAP 1.2. | |
| Editorial note: JCS | 20030115 | 
| This section is not fully converted to a component model compatible with Part 1. | |
WSDL includes a binding for SOAP 1.2 endpoints, which supports the specification of the following protocol specific information:
An indication that a binding is bound to the SOAP 1.2 protocol.
A way of specifying an address for a SOAP endpoint.
The URI for the SOAPAction HTTP header field for the HTTP binding of SOAP.
| Editorial note: JCS | 20030115 | 
| The SOAP 1.2 HTTP binding does not define a SOAPAction HTTP header field. This is a known issue. | |
A list of definitions for header blocks that are transmitted as part of the SOAP Envelope
This binding grammar is not an exhaustive specification since the set of SOAP bindings is evolving. Nothing precludes additional SOAP bindings to be derived from portions of this grammar. For example:
SOAP bindings that do not employ a URI addressing scheme
    may substitute another addressing scheme by replacing the
    wsoap:address  element defined in 2.8 
					address Element with endpoint [parent]
				.
SOAP bindings that do not require a  SOAPAction 
    omit the soapAction  attribute defined in 2.5 
					operation Element with operation [parent]
				.
<definitions >
 <binding>
  <wsoap:binding protocol="uri"/>
  <wsoap:module uri="uri"
               required="boolean"? >
   <wsoap:propertyConstraint uri="uri"
                            type="qname"? />?
  </wsoap:module>?
  <operation>
   <wsoap:operation soapAction="uri" /> ?
   <(in|out)put>
    <wsoap:header element="qname"
                 mustUnderstand="boolean"?
                 role="uri"? />*
   </(in|out)put>
  </operation>
 </binding>
 <service>
  <endpoint>
   <wsoap:address location="uri" />
  </endpoint>
 </service>
</definitions>
binding  Element with binding  [parent]
				<definitions > <binding > <wsoap:binding protocol="uri"/> </binding> </definitions>
The REQUIRED binding  element information item indicates that messages are SOAP Envelopes
				[SOAP 1.2 Part 1: Messaging Framework].
The binding  element information item has the following Infoset properties:
A [local name] of binding 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of binding  in the namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
One or more attribute information items amongst its [attributes] as follows:
A REQUIRED protocol  attribute information item as described below.
The binding  element information item has no [children].
protocol  Attribute with binding  [owner]
					The protocol  attribute information item indicates which underlying protocol
					to use for SOAP Envelopes within a binding  element information item.
					The protocol  attribute information item has the following Infoset properties:
A [local name] of protocol 
							
A [namespace name] which has no value
An [owner] of binding  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the
protocol  attribute information item is xsd:anyURI. The value of the
protocol  attribute information item is a URI that identifies a specific protocol
to carry SOAP Envelopes. The URI value
"http://www.w3.org/2003/05/soap/bindings/HTTP/" corresponds to the HTTP binding in
the SOAP specification.
module  Element with binding  [parent]<definitions >
 <binding >
  <wsoap:module uri="uri"
               required="boolean"? >
  </wsoap:module>
 </binding>
</definitions>
The OPTIONAL module  element information item indicates
				SOAP module(s) supported by a binding  element information item. A SOAP
				module[SOAP 1.2 Part 1: Messaging Framework] realizes zero or more SOAP features implemented as
				one or more SOAP header blocks.
The module  element information item has the following
				Infoset properties:
A [local name] of module 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of binding  in the
						namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
One or more attribute information items amongst its [attributes] as follows:
A required uri  attribute information item
								as described below
An optional required  attribute information item
								as described below
uri  Attribute with module  [owner]The uri  attribute information item specifies the URI of
					the SOAP module for the [owner] module . The uri 
					attribute information item has the following Infoset properties:
A [local name] of uri 
							
A [namespace name] which has no value
An [owner] of module  in the
							namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the uri  attribute information item is
					xsd:anyURI . The value of the
					uri  attribute information item is a URI that identifies a specific
					SOAP module.
required  Attribute with binding  [owner]The required  attribute information item specifies 
					whether the [owner] module  is required by the
					[parent] binding. The required  attribute information item has the
					following Infoset properties:
A [local name] of required 
							
A [namespace name] which has no value
An [owner] of module  in the
							namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the required  attribute information item is
					xsd:boolean .
Omitting this attribute information item is defined as being semantically equivalent to including it with a value of "false".
propertyConstraint  Element with module  [parent]<definitions>
 <binding>
  <wsoap:module>
   <wsoap:propertyConstraint uri="uri"
                            type="qname"? />
  </wsoap:module>
 </binding>
</definitions>
The OPTIONAL propertyConstraint  element information item indicates
				SOAP module(s) supported by a module  element information item.
The propertyConstraint  element information item has the following
				Infoset properties:
A [local name] of propertyConstraint 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of module  in the
						namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
One or more attribute information items amongst its [attributes] as follows:
A required uri  attribute information item
								as described below
An optional type  attribute information item
								as described below
The value of the propertyConstraint  element information item
				is the value that is required for the SOAP property of the
				[parent] module .
The propertyConstraint  element information item has no [children].
uri  Attribute with propertyConstraint  [owner]The uri  attribute information item specifies the URI of
					the SOAP property for the [ancestor] module .
					The uri  attribute information item has the following Infoset properties:
A [local name] of uri 
							
A [namespace name] which has no value
An [owner] of propertyConstraint  in the
							namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the uri  attribute information item is
					xsd:anyURI . The value of the
					uri  attribute information item is a URI that identifies a specific
					SOAP property for the [ancestor] module .
type  Attribute with propertyConstraint  [owner]The type  attribute information item specifies the type
					of the value of the [owner] propertyConstraint .
					The type  attribute information item has the following Infoset properties:
A [local name] of type 
							
A [namespace name] which has no value
An [owner] of propertyConstraint  in the
							namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the type  attribute information item is
					xsd:QName . The value of the
					type  attribute information item is XML Qualified Name that identifies
					the type of the value for the [owner] propertyConstraint .
operation  Element with operation  [parent]
				<definitions> <binding> <operation> <wsoap:operation soapAction="uri" /> ? </operation> </binding> </definitions>
The OPTIONAL operation  element information item provides binding information for the [parent]
				operation. The operation  element information item has the following Infoset properties:
A [local name] of operation 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of operation  in the namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
Zero or more attribute information items amongst its [attributes] as follows:
A REQUIRED soapAction  attribute information item as described below
The operation  element information item has no [children].
soapAction  Attribute with operation  [owner]
					| Editorial note: JCS | 20030115 | 
| The SOAP 1.2 HTTP binding does not define a SOAPAction HTTP header. This is a known issue. | |
The soapAction  attribute information item specifies the value of the HTTP SOAPAction header for the operation  owner. The soapAction  attribute information item has the following Infoset properties:
A [local name] of soapAction 
							
A [namespace name] which has no value
An [owner] of operation  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the soapAction  attribute information item is xsd:anyURI.
The value of the soapAction  attribute information item is the URI to be included in the HTTP SOAPAction header for the [owner] operation.
This URI
value should be used directly as the value for the HTTP SOAPAction header; no attempt should be made to make a
relative URI value absolute when making the request. For the
HTTP protocol binding of SOAP, this value is required (it has
no default value). For other SOAP protocol bindings, it MUST
NOT be specified.
header  Element with input  or output  [parent]
				<definitions>
 <binding>
  <operation>
   [ <input> | <output> ]
    <wsoap:header element="qname"
                 mustUnderstand="boolean"?
                 role="uri"? />*
   [ </input> | </output> ]
  </operation>
 </binding>
</definitions>
The OPTIONAL header  element information item specifies SOAP header block(s) for the [ancestor] operation. The header  element information item has the following Infoset properties:
A [local name] of header 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of input  or output  in the namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
One or more attribute information items amongst its [attributes] as follows:
An REQUIRED element  attribute information item as described below
An OPTIONAL mustUnderstand  attribute information item as described below
An OPTIONAL role  attribute information item as described below
The header  element information item has no [children].
The header  element information item 
allow headers to be defined that are transmitted
as SOAP header blocks.
	  It is not necessary to exhaustively list all header blocks that
	  appear in the SOAP Envelope using header  element information items.  For
	  example, extensions (see Language
	  Extensibility and Binding, [WSDL 2.0 Core Language], section 4) to WSDL may imply specific
	  headers should be added to the actual payload, and it is not
	  required to list those headers here.
	
element  Attribute with header  [owner]
					The element  attribute information item refers to an XML Schema element declaration component that defines the SOAP header block for the [owner] header . The element  attribute information item has the following Infoset properties:
A [local name] of element 
							
A [namespace name] which has no value
An [owner] of header  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the element  attribute information item is xsd:QName.
mustUnderstand  Attribute with header  [owner]
					The mustUnderstand  attribute information item indicates that the SOAP 1.2 mustUnderstand attribute MUST be inserted to this header. It is assumed that the schema referred to by the element  attribute information item permits such insertion. The mustUnderstand  attribute information item has the following Infoset properties:
A [local name] of mustUnderstand 
							
A [namespace name] which has no value
An [owner] of header  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the mustUnderstand  attribute information item is xsd:boolean.
role  Attribute with header  [owner]
					The optional role  attribute information item identifies the SOAP
role to which a SOAP header block is targeted. The role 
attribute information item has:
A [local name] of role 
							
A [namespace name] which has no value
A [specified] property with a value of "true"
An [owner] of header  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the role  attribute information item is xsd:anyURI . The value of
the role  attribute information item is a URI that names a role
that a SOAP node can assume. It SHOULD NOT be
a relative URI.
A role  attribute information item that is either absent or has an
empty value is equivalent to indicating a value of
"http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver", i.e.,
targeting the SOAP header block to an ultimate SOAP receiver.
headerfault  Element with input  or output  [parent]
				| Editorial note: JJM | 2003/05/23 | 
| This section has not yet been finalized. | |
<definitions>
 <binding>
  <operation>
    [ <input> | <output> ]
    <wsoap:headerfault message="qname"
                      part="nmtoken"
                      namespace="uri"?
                      encodingStyle="uri"? />*
    [ </input> | </output> ]
  </operation>
 </binding>
</definitions>
The optional headerfault  element information item specifies SOAP fault header block(s)
				for the [ancestor] operation. The SOAP
specification states that errors pertaining to header blocks have to be
returned in header blocks, and this mechanism allows specifying
the format of such fault header blocks.
The headerfault  element information item has
				the following Infoset properties:
A [local name] of headerfault 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of input  or output  in
						the namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
One or more attribute information items amongst its [attributes] as follows:
A mandatory message  attribute information item as described below.
A mandatory part  attribute information item as described below.
An optional namespace  attribute information item as described below.
An optional encodingStyle  attribute information item as described below.
The headerfault  element information item has no [children].
The headerfault  element information item 
				allows fault headers to be defined that are transmitted
				as SOAP fault header blocks, and that carry information pertaining
				to the faulty SOAP header block defined by the corresponding header .
The namespace  attribute information items MUST be specified if and only if the
				type  attribute information item is specified.
message  Attribute with headerfault  [owner]
					The message  attribute information item refers to an XML Schema
					element declaration component that defines the SOAP fault header block
					for the [owner] headerfault . The message  attribute information item
					has the following Infoset properties:
A [local name] of message 
							
A [namespace name] which has no value
An [owner] of headerfault  in the namespace
							named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the message  attribute information item is xsd:QName.
part  Attribute with headerfault  [owner]
					The part  attribute information item refers to an XML Schema type
					description that defines the SOAP header block for the [owner]
					headerfault . The part  attribute information item
					has the following Infoset properties:
A [local name] of part 
							
A [namespace name] which has no value
An [owner] of headerfault  in the namespace named
							"http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the part  attribute information item is xsd:QName.
The
						
namespace  attribute information item is used in the same way as with
the body  element information item,
only style ="document" is assumed since headers
do not contain parameters.
The schema referenced MAY include
definitions for the role  and mustUnderstand  attribute information item
in the namespace named "http://www.w3.org/2003/05/soap-envelope".
namespace  Attribute with headerfault  [owner]
					The namespace  attribute information item defines the XML namespace of
					the SOAP fault header block for the [owner] headerfault  when it has
					a type  attribute information item. The namespace  attribute information item has the following
					Infoset properties:
A [local name] of namespace 
							
A [namespace name] which has no value
An [owner] of headerfault  in the namespace
							named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the namespace  attribute information item is xsd:anyURI.
encodingStyle  Attribute with headerfault  [owner]
					The encodingStyle  attribute information item indicates the encoding style
					that was used to generate type description for the SOAP fault header block(s)
					for the [ancestor] operation .
The encodingStyle  attribute information item has the following Infoset properties:
A [local name] of encodingStyle 
							
A [namespace name] which has no value
An [owner] of headerfault  in the namespace
							named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the encodingStyle  attribute information item is xsd:anyURI.
The [normalized value] "http://www.w3.org/2003/05/soap-envelope/encoding/none" indicates that
the type description has not been derived as a function of a well-known encoding.
The [normalized value] MUST NOT be "".
If no encodingStyle  is in scope,
then the [normalized value] is the encodingStyleDefault  attribute information item.
address  Element with endpoint  [parent]
				<definitions> <service> <endpoint> <wsoap:address location="uri" /> </endpoint> </service> </definitions>
The mandatory address  element information item contains the endpoint address of an endpoint .
				The address  element information item has the following Infoset properties:
A [local name] of address 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/soap12"
A [parent] of endpoint  in the namespace named "http://www.w3.org/@@@@/@@/wsdl"
						
One attribute information item amongst its [attributes] as follows:
A required location  attribute information item as described below
The address  element information item has no [children].
location  Attribute with address  [owner]
					The mandatory location  attribute information item identifies the endpoint address of an endpoint .
					The location  attribute information item has the following Infoset properties:
A [local name] of location 
							
A [namespace name] which has no value
An [owner] of address  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/soap12"
							
The type of the location  attribute information item is xsd:anyURI . The value of the location 
					attribute information item is a URI that processes messages bound by the endpoint .
					The URI scheme of the value of the location  attribute information item MUST correspond
					to the transport specified by the value of the binding  attribute information item of
					the endpoint  element information item.
| Editorial note: JJM | 20030514 | 
| This section is not fully converted to a component model compatible with Part 1. | |
The WSDL HTTP binding described in this section
				is a binding to HTTP 1.1 [IETF RFC 2616]. This binding
				extends WSDL [WSDL 2.0 Core Language] by adding element information items
				and attribute information items to the Infoset of the WSDL binding  element information item
				and service  element information item
				(in the "http://www.w3.org/@@@@/@@/wsdl" namespace). 
The WSDL HTTP binding supports the specification of the following protocol specific information:
Binding to the HTTP/1.1 protocol.
An HTTP method to be used for each operation.
An address for an HTTP endpoint.
A relative address for each operation (relative to the base address defined by the port).
Portions of an input message to be serialized in the path of the request URI, query parameters of the request URI, or the body of the request.
Serializing an output message in the body of the response.
binding  Element with binding  [parent]
			  <definitions>
    <binding>
        <http:binding verbDefault="xsd:string"? />
    </binding>
</definitions>The mandatory binding  element information item indicates that messages are HTTP messages
			  [IETF RFC 2616].
The binding  element information item has the following Infoset properties:
A [local name] of binding 
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/http"
A [parent] of binding  in the namespace named
			        "http://www.w3.org/@@@@/@@/wsdl"
Zero or one attribute information items amongst its [attributes] as follows:
An optional verbDefault 
			           attribute information item as described below.
The binding  element information item has no [children].
verbDefault  Attribute with
			     binding  [owner]The verbDefault  attribute information item indicates the
			     HTTP method used within a binding  element information item, 
			     for example "GET" or
			     "POST".
The verbDefault  attribute information item has the following
			     Infoset properties:
A [local name] of verbDefault 
A [namespace name] which has no value
An [owner] of binding  in the
							namespace named
							"http://www.w3.org/@@@@/@@/wsdl/http" 
							
The type of the verbDefault  attribute information item is
					xsd:string. 
					The value of the verbDefault  attribute information item is a
					string that identifies a specific HTTP method.
					
operation  Element with operation 
			    [parent] 
			  <definitions>
    <binding>
        <operation>
            <http:operation location="xsd:anyURI"?
                            verb="xsd:string"? />?
        </operation>
    </binding>
</definitions>
The optional operation  element information item provides
              binding information to the [parent] operation.
The operation  element information item has the following
			  Infoset properties:
A [local name] of operation 
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/http"
A [parent] of operation  in the
			        namespace named "http://www.w3.org/@@@@/@@/wsdl"
Zero to two attribute information items amongst its [attributes] as follows:
An optional location  attribute information item as
					   defined below.
An optional verb  attribute information item as
					   described below.
The operation  element information item has no [children].
If the operation  element information item has no [attributes],
			  it MAY be omitted.
verb  Attribute with operation 
				  [owner]
				The verb  attribute information item indicates the HTTP method
				used by a particular operation  element information item.
The verb  attribute information item has the following Infoset
				properties:
A [local name] of verb 
A [namespace name] which has no value
An [owner] of operation  in the namespace
				    named "http://www.w3.org/@@@@/@@/wsdl/http"
The type of the verb  attribute information item is
				xsd:string.
The value of the verb  attribute information item is a string
				that identifies a specific HTTP method to be used with
				this operation.  If there is no verb  attribute information item,
				the HTTP method to be used is specified by the
				verbDefault  attribute information item with [owner]
				binding .  It is a fatal error if there is no
				verb  attribute information item or verbDefault  attribute information item.
				
location  Attribute with operation 
				  [owner]
				The location  attribute information item indicates a relative
				URI for a particular operation  element information item.
				The location  attribute information item may also indicate which
				portions of an input message are serialized in the
				path of the request URI (as opposed to simply being
				serialized as query parameters of the request URI or
				in the body of the request).
				
The location  attribute information item has the following Infoset
				properties:
				
A [local name] of location 
A [namespace name] which has no value
An [owner] of operation  in the namespace
				    named "http://www.w3.org/@@@@/@@/wsdl/http"
The type of the location  attribute information item is
				xsd:anyURI.
				
The location  attribute information item specifies a template
				for the relative portion of the request URI for an
				operation. This URI is combined with the base URI
				specified in the address  element information item to form the
				full URI for the HTTP request to invoke the
				operation.
				
Message parts are serialized according to the rules of:
Section 3.3 Method is GET, if the HTTP method is "GET"
Section 3.4 Method is POST, if the HTTP method is "POST"
| Editorial note: JJM | 2003/05/23 | 
| The editors are soliciting input on whether bindings for HTTP PUT or HTTP DELETE would be appropriate. | |
GET The rules in this section MUST be followed when the HTTP method is "GET".
location  AttributeThe location  attribute information item MAY cite input
				message parts to be serialized in the path of the
				request URI by enclosing a part name within curly
				braces (e.g. "{partName}"):
				
When constructing the request URI, each pair of curly braces (and enclosed part name) is replaced by the corresponding part value.
A double curly brace (i.e. "{{" or "}}") MAY be used to include a single, literal curly brace in the request URI.
Part values MUST be URI escaped.
Parts MUST NOT be cited more than once within
				the location  attribute information item.
Strings enclosed within single curly braces MUST be input message part names; any other strings enclosed within single curly braces are a fatal error.
If cited input message parts are defined using an XML Schema type, they MUST derive from xsd:simpleType, but MUST NOT derive from xsd:hexBinary, xsd:base64Binary, or any simple list type.
location  attributeAll input message
				    parts NOT cited by the location  attribute information item
				    are serialized as query parameters appended to the
				    request URI.
				
Uncited parts with single values (non-list) are serialized as a single name-value parameter pair. The name of the parameter is the name of the uncited part, and the value of the parameter is the value of the uncited part.
Uncited parts with list values are serialized as one name-value parameter pair per list value. The name of each parameter is the name of the uncited part, and the value of each parameter is the corresponding value in the list.
Part names and values MUST be URI escaped.
If uncited input message parts are defined using an XML Schema type, they MUST derive from xsd:simpleType, MUST NOT derive from xsd:hexBinary or xsd:base64Binary, but MAY derive from a simple list type.
Output message parts are serialized as a single XML document in the body of the HTTP response.
The root of the document is an XML element whose local name and XML namespace are the {name} and {target namespace} of the operation, respectively. The root has one child for each part as follows:
If the {component reference} for an uncited part corresponds to an element declaration, the child is the element instance.
If the {component reference} for an uncited part corresponds to a type definition, the child has a local name, XML namespace, and value corresponding to the {name} of the part, the {target namespace} of the message, and the value of the part, respectively.
The HTTP Content-Type  header field MUST
				be the media type "application/xml" or
				any derived XML type ("*/*+xml").
				
If there are no message parts, the HTTP Body MUST
				be empty, and the HTTP Content-Length 
				header field MUST have a value of "0"
				(zero).
				
POST The rules in this section MUST be followed when the HTTP method is "POST".
| Editorial note: JJM | 2003/05/22 | 
| How do we select the encoding mechanism to be used? | |
location  AttributeAll input message
				parts cited by the location  attribute information item are serialized
				according to the rules in 3.3.1 Case of Input Parts Cited in location Attribute.
location  attributeAll input message parts NOT cited by the
				location  attribute information item are serialized according to
				the rules in 3.3.3.1 Serializing parts into HTTP Body response.
				
All output message parts are serialized according to the rules in 3.3.3 Case of Output Parts.
location  AttributeAll input message
				parts cited by the location  attribute information item are serialized
				according to the rules in 3.3.1 Case of Input Parts Cited in location Attribute.
location  AttributeAll input message parts NOT cited by the location  attribute information item
				are serialized as a single MIME Multipart document in the body of the
				HTTP response. The document has one MIME body part for each uncited
				message part as follows:
				
If the {component reference} for an uncited part corresponds to an element declaration, the content of the MIME body part is the element instance. The media type of the MIME body part MUST be "application/xml" or any derived XML type ("*/*+xml").
If the {component reference} for an uncited
					    part corresponds to the simple type definition
					    xsd:hexBinary , xsd:base64Binary 
					    or a type derived from one or the other,
					    the content of the MIME body part is
					    the element instance. The media type of the MIME body part
					    MUST be the one specified.
						
In all other cases, the content of the MIME body part is an XML document with a local name, XML namespace, and value corresponding to the {name} of the part, the {target namespace} of the message, and the value of the part, respectively. The media type of the MIME body part MUST be "application/xml".
All output message parts are serialized according to the rules in 3.3.3 Case of Output Parts.
application/x-www-form-urlencoded  Encoding Mechanismlocation  AttributeAll input message
				parts cited by the location  attribute information item are serialized
				according to the rules in 3.3.1 Case of Input Parts Cited in location Attribute.
location  AttributeAll input message parts NOT cited by the location  attribute information item
				are serialized as a single URLEncoded form in the body of the HTTP request.
Uncited input parts MUST follow the rules in 3.3.2.1 Serializing Parts into HTTP Body request
The HTTP Content-Type  header field MUST be the media type
				"x-www-form-urlencoded".
If there is no uncited message part, the HTTP Body MUST be empty,
				and the HTTP Content-Length  header field MUST have a value of
				"0" (zero).
All output message parts are serialized according to the rules in 3.3.3 Case of Output Parts.
address  Element with endpoint  [parent]
				
<definitions>
    <service>
        <endpoint>
            <http:address location="xsd:anyURI" />
        </endpoint>
    </service>
</definitions>
The mandatory address  element information item contains the endpoint address of an endpoint .
				The address  element information item has the following Infoset properties:
A [local name] of address. 
						
A [namespace name] of "http://www.w3.org/@@@@/@@/wsdl/http."
A [parent] of endpoint  in the namespace named "http://www.w3.org/@@@@/@@/wsdl."
						
One attribute information item amongst its [attributes] as follows:
A required location  attribute information item as described below.
The address  element information item has no [children].
location  Attribute with address  [owner]
					The mandatory location  attribute information item identifies the endpoint address of
					an endpoint . The location  attribute information item has the following Infoset properties:
A [local name] of location. 
							
A [namespace name] which has no value.
An [owner] of address  in the namespace named "http://www.w3.org/@@@@/@@/wsdl/http".
							
The type of the location  attribute information item is xsd:anyURI .
					The value of the location  attribute information item is a URI that processes messages
					bound by the endpoint . The URI scheme of the value of the location 
					attribute information item MUST correspond to the transport specified by the value of the binding 
					attribute information item of the endpoint  element information item.
| Editorial note: JJM | 20030514 | 
| This binding has not been revised and may be dropped in a future version of this specification | |
WSDL includes a way to bind abstract types to concrete messages in some MIME format. Bindings for the following MIME types are defined:
"multipart/related", defined in [IETF RFC 2387].
"text/xml", defined in [IETF RFC 3023].
"application/x-www-form-urlencoded", defined in Form content types ([HTML 4.01], section 17.13.4).
Others (by specifying the MIME type string)
The set of defined MIME types is both large and evolving, so
it is not a goal for WSDL to exhaustively define XML grammar for
each MIME type. Nothing precludes additional grammar to be
added to define additional MIME types as necessary. If a
MIME type string is sufficient to describe the content, the
mime  element defined below can be used.
The MIME Binding extends WSDL with the following extension elements:
<mime:content part="nmtoken"? type="string"?/>
<mime:multipartRelated>
    <mime:part> *
        <-- mime element -->
    </mime:part>
</mime:multipartRelated>
<mime:mimeXml part="nmtoken"?/>
They are used at the following locations in WSDL:
<definitions .... >
    <binding .... >
        <operation .... >
           <input .... >
               <-- mime elements -->
           </input>
           <output .... >
               <-- mime elements -->
           </output>
        </operation>
    </binding>
</definitions>
MIME elements appear under input and output to specify the MIME format. If multiple appear, they are considered to be alternatives.
To avoid having to define a new element for every MIME format,
the mime:content  element may be used if there is no
additional information to convey about the format other than its
MIME type string.
<mime:content part="nmtoken"? type="string"?/>
The part  attribute is used to specify the name of the
message part. If the message has a single part, then the 
part  attribute is optional. The type  attribute
contains the MIME type string.  A type  value has two
portions, separated by a slash (/), either of which may be a
wildcard (*). Not specifying the type  attribute indicates
that all MIME types are acceptable.
If the return format is XML [XML 1.0], but the schema is not known ahead of time, the generic mime element can be used indicating "text/xml" [IETF RFC 3023]:
<mime:content type="text/xml"/>
A wildcard (*) can be used to specify a family of mime types, for example all text types.
<mime:content type="text/*"/>
The following two examples both specify all mime types:
<mime:content type="*/*"/> <mime:content/>
The "multipart/related" MIME type aggregates an
arbitrary set of MIME formatted parts into one message using the
MIME type "multipart/related". The 
mime:multipartRelated  element describes the concrete format of
such a message:
<mime:multipartRelated>
    <mime:part> *
        <-- mime element -->
    </mime:part>
</mime:multipartRelated>
	  The mime:part  element describes each part of a
	  "multipart/related" message [IETF RFC 2387]. MIME elements appear within
	  mime:part  to specify the concrete MIME type for the
	  part. If more than one MIME element appears inside a 
	  mime:part , they are alternatives.
	
	  When using the MIME binding with SOAP requests [SOAP 1.2 Part 1: Messaging Framework], it is legal to use the
	  wsoap:body  element as a MIME element. It indicates
	  the content type is "text/xml", and there is an
	  enclosing SOAP Envelope.
	
	  To specify XML payloads that are not SOAP compliant (do not
	  have a SOAP Envelope), but do have a particular schema, the
	   mime:mimeXml  element may be used to specify that
	  concrete schema. The part  attribute refers to a
	  message part defining the concrete schema of the root XML
	  element. The  part  attribute MAY be omitted if the
	  message has only a single part. The part references a concrete
	  schema using the  element  attribute for simple
	  parts or type  attribute for composite parts
	  .
	
<mime:mimeXml part="nmtoken"?/>
This document is the work of the W3C Web Services Description Working Group.
Members of the Working Group are (at the time of writing, and by alphabetical order): Adi Sakala (IONA Technologies), Alan Davies (SeeBeyond), Allen Brookes (Rogue Wave Softwave), Amelia Lewis (TIBCO/Extensibility), Arthur Ryman (IBM), Bijan Parsia (University of Maryland), Dale Moberg (Cyclone Commerce), Dan Kulp (IONA Technologies), David Booth (W3C), Dietmar Gaertner (Software AG), Don Mullen (TIBCO Software), Erik Ackerman (Lexmark), Glen Daniels (Macromedia), Igor Sedukhin (Computer Associates), Ingo Melzer (DaimlerChrysler Research and Technology), Jacek Kopecky (Systinet), Jean-Jacques Moreau (Canon), Jeff Mischkinsky (Oracle Corporation), Jeffrey Schlimmer (Microsoft Corporation), Jerry Thrasher (Lexmark), Jim Hendler (University of Maryland), Johan Pauhlsson (L'Échangeur), Jonathan Marsh (Chair, Microsoft Corporation), Kevin Canyang Liu (SAP), Laurent De Teneuille (L'Échangeur), Lily Liu (webMethods, Inc.), Martin Gudgin (Microsoft Corporation), Michael Champion (Software AG), Michael Mahan (Nokia), Michael Mealling (Verisign), Mike Ballantyne (Electronic Data Systems), Mike Davoren (W. W. Grainger), Mike McHugh (W. W. Grainger), Philippe Le Hégaret (W3C), Prasad Yendluri (webMethods, Inc.), Roberto Chinnici (Sun Microsystems), Sandeep Kumar (Cisco Systems), Sandra Swearingen (U.S. Department of Defense, U.S. Air Force), Sanjiva Weerawarana (IBM), Steve Graham (Global Grid Forum), Steve Lind (AT&T), Steve Tuecke (Global Grid Forum), Tom Jordahl (Macromedia), Umit Yalcinalp (Oracle Corporation), Waqar Sadiq (Electronic Data Systems), William Vambenepe (Hewlett-Packard Company), Youenn Fablet (Canon)
Previous members were: Aaron Skonnard (DevelopMentor), Don Wright (Lexmark), Barbara Zengler (DaimlerChrysler Research and Technology), Jochen Ruetschlin (DaimlerChrysler Research and Technology), Joyce Yang (Oracle Corporation), Keith Ballinger (Microsoft), Krishna Sankar (Cisco Systems), Mario Jeckle (DaimlerChrysler Research and Technology), Pallavi Malu (Intel Corporation), William Stumbo (Xerox), Daniel Schutzer (Citigroup), Dave Solo (Citigroup), Stefano Pogliani (Sun Microsystems), Stephen White (SeeBeyond), Tim Finin (University of Maryland)
The people who have contributed to discussions on www-ws-desc@w3.org are also gratefully acknowledged.
| Date | Author | Description | 
|---|---|---|
| 20031103 | JJM | Fix new non-normative SOAP binding pseudo-schema. | 
| 20031102 | SW | Updated SOAP binding. | 
| 20031102 | SW | Change 1.2 to 2.0 per WG decision to rename. | 
| 20030606 | JJM | Replaced <kw/> by <b/>. Indicated that pseudo-schemas are not normative | 
| 20030604 | JJM | Reformated pseudo-syntax elements to match Part 1 layout | 
| 20030529 | JCS | Incorporated text to resolve Issue 6e | 
| 20030523 | JJM | Commented out MIME binding example; this is primer stuff. | 
| 20030523 | JJM | Added pseudo-syntax to all sections. | 
| 20030523 | JJM | Started converting the fault and headerfault sections to component model. | 
| 20030523 | JJM | Complete the Multipart and x-www-form-urlencoded sections. | 
| 20030523 | JJM | Fixed typos in HTTP binding (in particular added NOT in some section headers). | 
| 20030522 | JCS | Added rules for serializing HTTP response | 
| 20030522 | JCS | Added cardinality to pseudo schema for HTTP binding | 
| 20030522 | JCS | Changes @transport to @protocol for SOAP binding | 
| 20030522 | JJM | Incorporated remaining text from Philippe into the HTTP binding. | 
| 20030522 | JJM | Polished the HTTP binding, split into subsections, added double curly brace escape mechanism, removed pseudo-schema. | 
| 20030521 | JCS | Added rules for @verbDefault/@verb and @location. | 
| 20030514 | JJM | Start converting the HTTP binding to the component model. The next thing to do will be to remove http:urlReplacement, etc. and incorporate instead Philippe's text. | 
| 20030313 | MJG | Changed to Part 3 ( from Part 2 ) | 
| 20030117 | JCS | Incorporated resolution for Issue 5 (@encodingStyle). Referenced (rather than in-lined XML Schema). | 
| 20030117 | JJM | Various editorial fixes. | 
| 20030116 | JCS | Updated pseudo and XML Schema. | 
| 20030116 | JJM | Added propertyConstraint section. | 
| 20030116 | JJM | Added soap:module section. | 
| 20030115 | JCS | Incorporated resolutions for Issue 25 (drop @use and @encoding), Issue 51 (headers reference element/type), and attribute roll up into text and schema. Began reworking SOAP HTTP binding to use Infoset model. Removed informative appendices 'Notes on URIs' and example WSDL documents; expect them to appear in the primer. Updated SOAP 1.2 references to CR. | 
| 20030114 | JJM | Removed ednote saying Part 2 is out of synch with Part 1. | 
| 20030111 | JJM | Incorporated resolution for issue 17 (role AII). | 
| 20030109 | JJM | Incorporated resolution for issue 4 (Namespaces). | 
| 20020702 | JJM | Added summary to prefix table. | 
| 20020628 | JJM | Added out-of-synch-with-Part2 and not-soap12-yet ednote. | 
| 20020621 | JJM | Commented out the link to the previous version. There is no previous version for 1.2 right now. | 
| 20020621 | JJM | Rewrote the Notation Conventions section. | 
| 20020621 | JJM | Added reference to part 0 in introduction. Renumbered references. | 
| 20020621 | JJM | Simplified abstract and introduction. | 
| 20020621 | JJM | Obtain the list of WG members from a separate file. | 
| 20020621 | JJM | Updated stylesheet and DTDs to latest XMLP stylesheet and DTDs. | 
| 20020621 | JJM | Deleted placeholder for appendix C "Location of Extensibility Elements", since this is part 1 stuff and extensibility has been reworked anyway. | 
| 20020621 | JJM | Corrected link to issues lists | 
| 20020621 | JJM | Updated title from "WSDL" to "Web Services Description Language". Now refer to part 1 as "Web Services... Part 1: Framework | 
| 20020621 | JJM | Added Jeffrey as an editor :-). Removed Gudge (now on Part 2) :-( | 
| 20020411 | JJM | Fixed typos noticed by Kevin Liu | 
| 20020301 | JJM | Converted the "Schemas" sections | 
| 20020301 | JJM | Converted the "Wire WSDL examples" sections | 
| 20020301 | JJM | Converted the "Notes on URIs" sections | 
| 20020301 | JJM | Converted the "Notational Conventions" sections | 
| 20020301 | JJM | Converted the "References" sections | 
| 20020301 | JJM | Converted the "MIME Binding" section to XML | 
| 20020221 | JJM | Converted the "HTTP Binding" section to XML | 
| 20020221 | JJM | Added placeholders for the "Wire examples" and "Schema" sections | 
| 20020221 | JJM | Converted the "SOAP Binding" section to XML | 
| 20020221 | JJM | Added the Change Log | 
| 20020221 | JJM | Added the Status section | 
| 20020221 | JJM | Simplified the introduction; referred to Part1 for a longer introduction | 
| 20020221 | JJM | Renamed to "Part 2: Bindings" | 
| 20020221 | JJM | Created from http://www.w3.org/TR/2001/NOTE-wsdl-20010315 | 
The encoding schema has been updated to be compliant with the XML Schema Recommendations ([XML Schema Structures] and [XML Schema Datatypes]). The table below shows the categories of change.
| Class | Meaning | 
|---|---|
| @@@ | @@@ | 
The table below lists the changes to the encoding schema.
| Class | Description | 
|---|---|
| @@@ | @@@ |