Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts
Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts
Please refer to the errata for this document, which may include some normative corrections.
This document is also available in these non-normative formats: PDF, PostScript, XML, and plain text.
Copyright © 2007 W3C ® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and
document use rules apply.
Abstract
WSDL 2.0 is the Web Services Description Language, an XML language for describing Web services.
This document, "Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts", specifies
predefined extensions for use in WSDL 2.0:
Operation safety
1
Status of this Document
Operation styles
This is the W3C Recommendation of Web Services Description Language (WSDL) Version 2.0 Part 2:
Adjuncts for review by W3C Members and other interested parties. It has been produced by the Web
Services Description Working Group, which is part of the W3C Web Services Activity.
Please send comments about this document to the public [email protected] mailing list
(public archive).
The Working Group released a test suite along with an implementation report. A diff-marked version
against the previous version of this document is available.
This document has been reviewed by W3C Members, by software developers, and by other W3C groups
and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document
and may be used as reference material or cited from another document. W3C’s role in making the
Recommendation is to draw attention to the specification and to promote its widespread deployment. This
enhances the functionality and interoperability of the Web.
This document is governed by the 24 January 2002 CPP as amended by the W3C Patent Policy Transition
Procedure. W3C maintains a public list of any patent disclosures made in connection with the deliverables
of the group; that page also includes instructions for disclosing a patent. An individual who has actual
knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the
information in accordance with section 6 of the W3C Patent Policy.
Table of Contents
1. Introduction [p.6]
1.1 Notational Conventions [p.6]
1.2 Assertions [p.8]
2. Predefined Message Exchange Patterns [p.8]
2.1 Template for Message Exchange Patterns [p.9]
2.1.1 Pattern Name [p.9]
2.2 Fault Propagation Rules [p.9]
2.2.1 Fault Replaces Message propagation rule [p.10]
2.2.2 Message Triggers Fault propagation rule [p.10]
2.2.3 No Faults propagation rule [p.10]
2.3 Message Exchange Patterns [p.10]
2.3.1 In-Only message exchange pattern [p.11]
2.3.2 Robust In-Only message exchange pattern [p.11]
2
Table of Contents
3
Table of Contents
4
Appendices
Appendices
A. Acknowledgements [p.72] (Non-Normative)
B. Component Summary [p.73] (Non-Normative)
C. Assertion Summary [p.75] (Non-Normative)
5
1. Introduction
1. Introduction
The Web Services Description Language Version 2.0 (WSDL 2.0) [WSDL 2.0 Core Language [p.70] ]
provides a model and an XML format for describing Web services. WSDL 2.0 enables one to separate the
description of the abstract functionality offered by a service from concrete details of a service description
such as "how" and "where" that functionality is offered.
This document, "Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts", specifies
predefined extensions for use in WSDL 2.0:
Binding extensions:
A SOAP 1.2 [SOAP 1.2 Part 1: Messaging Framework (Second Edition) [p.70] ] binding
extension: 5. WSDL SOAP Binding Extension [p.19]
An HTTP/1.1 [IETF RFC 2616 [p.69] ] binding extension: 6. WSDL HTTP Binding
Extension [p.39]
This document depends on "Web Services Description Language (WSDL) Version 2.0 Part 1: Core
Language" [WSDL 2.0 Core Language [p.70] ]. See also the "Web Services Description Language
(WSDL) Version 2.0 Part 0: Primer" [WSDL 2.0 Primer [p.71] ] for more information and examples.
This specification uses a number of namespace prefixes throughout; they are listed in Table 1-1 [p.6] .
Note that the choice of any namespace prefix is arbitrary and not semantically significant (see [XML
Information Set [p.71] ]).
6
1.1 Notational Conventions
7
2. Predefined Message Exchange Patterns
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. They provide visual help for the XML [XML 1.0 [p.70] ] serialization.
The syntax of BNF pseudo-schemas is the same as the one used in [WSDL 2.0 Core Language [p.70] ].
1.2 Assertions
Assertions about WSDL 2.0 documents and components that are not enforced by the normative XML
schema for WSDL 2.0 are marked by a dagger symbol (†) at the end of a sentence. Each assertion has
been assigned a unique identifier that consists of a descriptive textual prefix and a unique numeric suffix.
The numeric suffixes are assigned sequentially and never reused so there may be gaps in the sequence.
The assertion identifiers MAY be used by implementations of this specification for any purpose, e.g. error
reporting.
The assertions and their identifiers are summarized in section C. Assertion Summary [p.75] .
A node is an agent (section 2.3.2.2 Agent of the Web Services Architecture [Web Services Architecture
[p.70] ]) that can transmit and/or receive message(s) described in WSDL description(s) and process them.
Note:
A node MAY be accessible via more than one physical address or transport. † [p.85]
WSDL message exchange patterns describe the interaction at the abstract (interface) level, which may be
distinct from the pattern used by the underlying protocol binding (e.g. SOAP Message Exchange Patterns;
section 5.10.3 SOAP 1.2 Binding Rules [p.35] contains the binding rules for the selection of a SOAP 1.2
message exchange pattern, based on the WSDL message exchange pattern in use for the SOAP binding
extension defined in section 5. WSDL SOAP Binding Extension [p.19] ).
By design, WSDL message exchange patterns abstract out specific message types. Patterns identify
placeholders for messages, and placeholders are associated with specific message types by the operation
using the pattern.
Unless explicitly stated otherwise, WSDL message exchange patterns also abstract out binding-specific
information such as timing between messages, whether the pattern is synchronous or asynchronous, and
whether the messages are sent over a single or multiple channels.
Like interfaces and operations, WSDL message exchange patterns do not exhaustively describe the set of
messages exchanged between a service and other nodes; by some prior agreement, another node and/or the
service MAY send messages (to each other or to other nodes) that are not described by the pattern. † [p.85]
8
2.1 Template for Message Exchange Patterns
For instance, even though a pattern can define a single message sent from a service to one other node, the
Web service can in practice multicast that message to other nodes.
To maximize reuse, WSDL message exchange patterns identify a minimal contract between other parties
and Web services, and contain only information that is relevant to both the Web service and another party.
This specification defines several message exchange patterns for use with WSDL Version 2.0 Part 1: Core
Language [WSDL 2.0 Core Language [p.70] ]. Additional, non-normative patterns are available in [WSDL
2.0 Additional MEPs [p.71] ].
1. indicated by an Interface Message Reference component whose {message label} is "[label]" and
{direction} is "[direction]"
An Interface Operation using this message exchange pattern has a {message exchange pattern} property
with the value "[pattern IRI]".
Note: In the template, the bracketed items indicate a replacement operation. Substitute the correct terms
for each bracketed item.
Note: the "received from" and "sent to" are always from the point of view of the service, and participating
nodes other than the service are implicitly identified as the originators of or destinations for messages in
the exchange.
9
2.3 Message Exchange Patterns
WSDL patterns specify propagation of faults, not their generation. Nodes that generate faults MUST
attempt to propagate the faults in accordance with the governing ruleset, but it is understood that any
delivery of a network message is best effort, not guaranteed. † [p.85] The rulesets establish the direction of
the fault message and the fault recipient; they do not provide reliability or other delivery guarantees. When
a fault is generated, the generating node MUST attempt to propagate the fault, and MUST do so in the
direction and to the recipient specified by the ruleset. † [p.85] However, extensions or binding extensions
MAY modify these rulesets. † [p.76] For example, WS-Addressing [WSA 1.0 Core [p.71] ] defines a
"FaultTo" address for messages, which is used in lieu of the recipient nominated by the ruleset.
Binding extensions, features, or extension specifications can override the semantics of a fault propagation
ruleset, but this practice is strongly discouraged.
The Fault Replaces Message propagation rule is identified by the following URI:
http://www.w3.org/ns/wsdl/fault-replaces-message
The Message Triggers Fault propagation rule is identified by the following URI:
http://www.w3.org/ns/wsdl/message-triggers-fault
10
2.3 Message Exchange Patterns
1. A message:
indicated by a Interface Message Reference component whose {message label} is "In" and
{direction} is "in"
The in-only message exchange pattern uses the rule 2.2.3 No Faults propagation rule [p.10] . † [p.85]
An operation using this message exchange pattern has a {message exchange pattern} property with the
value "http://www.w3.org/ns/wsdl/in-only".
1. A message:
indicated by a Interface Message Reference component whose {message label} is "In" and
{direction} is "in"
The robust in-only message exchange pattern uses the rule 2.2.2 Message Triggers Fault
propagation rule [p.10] . † [p.85]
An operation using this message exchange pattern has a {message exchange pattern} property with the
value "http://www.w3.org/ns/wsdl/robust-in-only".
1. A message:
indicated by a Interface Message Reference component whose {message label} is "In" and
{direction} is "in"
2. A message:
indicated by a Interface Message Reference component whose {message label} is "Out" and
{direction} is "out"
11
3. Predefined Extensions
sent to node N
The in-out message exchange pattern uses the rule 2.2.1 Fault Replaces Message propagation rule
[p.10] . † [p.85]
An operation using this message exchange pattern has a {message exchange pattern} property with the
value "http://www.w3.org/ns/wsdl/in-out".
Such responses can be used in attempts to disrupt, attack, or map a network, host, or services. When such
responses are directed to an address other than that originating the initial message, the source of an attack
can be obscured, or blame laid on a third party, or denial-of-service attacks can be enabled or exacerbated.
Security mechanisms addressing such attacks can prevent the delivery of response messages to the
receiving node. Conformance to the message exchange pattern is measured prior to the application of
these security mechanisms.
3. Predefined Extensions
3.1 Operation safety
This section defines an extension to WSDL 2.0 [WSDL 2.0 Core Language [p.70] ] that allows marking
an operation as a safe interaction, as defined in section 3.4. Safe Interactions of [Web Architecture [p.70]
].
This extension MAY be used for setting defaults in bindings, such as in the HTTP binding (see 6.5.5
Mapping from XML Representation to Component Properties [p.49] ).
{safe} REQUIRED. An xs:boolean indicating whether the operation is asserted to be safe for users to
invoke. If this property is "false", then no assertion has been made about the safety of the operation,
thus the operation MAY or MAY NOT be safe. However, an operation SHOULD be marked safe if it
meets the criteria for a safe interaction defined in Section 3.4 of [Web Architecture [p.70] ]. † [p.81]
12
4. Predefined Operation Styles
The XML representation for the safety extension is an attribute information item with the following
Infoset properties:
An OPTIONAL safe attribute information item with the following Infoset properties: † [p.75]
A type of xs:boolean
Table 3-1. Mapping from XML Representation to Interface Operation component Extension Properties
Property Value
{safe [p.12] The actual value of the safe attribute information item, if present; otherwise the value
} "false".
An Interface Operation component conforming to the RPC style MUST obey the constraints listed further
below. Also, if the wrpc:signature extension is engaged simultaneously, the corresponding attribute
information item MUST be valid according to the schema for the extension and additionally MUST obey
the constraints listed in 4.1.1 wrpc:signature Extension [p.15] and 4.1.2 XML Representation of the
wrpc:signature Extension [p.16] .
13
4.1 RPC Style
Furthermore, the associated messages MUST conform to the rules below, described using XML Schema
[XML Schema Structures [p.71] ]. Note that operations containing messages described by other type
systems may also indicate use of the RPC style, as long as they are constructed in such a way as to follow
these rules.
If the RPC style is used by an Interface Operation component then its {message exchange pattern}
property MUST have the value either "http://www.w3.org/ns/wsdl/in-only" or
"http://www.w3.org/ns/wsdl/in-out". † [p.81]
If the Interface Operation component uses a {message exchange pattern} for which there is no output
element, i.e. "http://www.w3.org/ns/wsdl/in-only", then the conditions stated below that refer to output
elements MUST be considered to be implicitly satisfied.
The value of the {message content model} property for the Interface Message Reference components
of the {interface message references} property MUST be "#element". † [p.81]
The content model of input and output {element declaration} elements MUST be defined using a
complex type that contains a sequence from XML Schema. † [p.81]
The input sequence MUST only contain elements and element wildcards. † [p.81] It MUST NOT
contain other structures such as xs:choice. The input sequence MUST NOT contain more than
one element wildcard. † [p.81] The element wildcard, if present, MUST appear after any elements. †
[p.81]
The output sequence MUST only contain elements. † [p.81] It MUST NOT contain other structures
such as xs:choice.
Both the input and output sequences MUST contain only local element children. † [p.81] Note that
these child elements MAY contain the following attributes: nillable, minOccurs and
maxOccurs.
The local name of input element’s QName MUST be the same as the Interface Operation
component’s name. † [p.81]
Input and output elements MUST both be in the same namespace. † [p.81]
The complex type that defines the body of an input or an output element MUST NOT contain any
local attributes. † [p.81] Extension attributes are allowed for purposes of managing the message
infrastructure (e.g. adding identifiers to facilitate digitally signing the contents of the message). They
must not be considered as part of the application data that is conveyed by the message. Therefore,
they are never included in an RPC signature (see 4.1.1 wrpc:signature Extension [p.15] ).
If elements with the same qualified name appear as children of both the input and output elements,
then they MUST both be declared using the same named type. † [p.81]
The input or output sequence MUST NOT contain multiple children elements declared with the same
name. † [p.82]
14
4.1 RPC Style
When present, the wrpc:signature extension contributes the following property to the Interface
Operation component it is applied to:
{rpc signature} OPTIONAL, but MUST be present when the style is RPC † [p.83] . A list of pairs (q, t)
whose first component is of type xs:QName and whose second component is of type xs:token. Values
for the second component MUST be chosen among the following four: "#in", "#out", "#inout"
"#return". † [p.83]
The value of the {rpc signature [p.15] } property MUST satisfy the following conditions:
The value of the first component of each pair (q, t) MUST be unique within the list. † [p.83]
For each child element of the input and output messages of the operation, a pair (q, t), whose first
component q is equal to the qualified name of that element, MUST be present in the list, with the
caveat that elements that appear with cardinality greater than one MUST be treated as a single
element. † [p.83]
For each pair (q, #in), there MUST be a child element of the input element with a name of q. There
MUST NOT be a child element of the output element with the name of q. † [p.84]
For each pair (q, #out), there MUST be a child element of the output element with a name of q. There
MUST NOT be a child element of the input element with the name of q. † [p.84]
For each pair (q, #inout), there MUST be a child element of the input element with a name of q.
There MUST also be a child element of the output element with the name of q. † [p.84]
For each pair (q, #return), there MUST be a child element of the output element with a name of q.
There MUST NOT be a child element of the input element with the name of q. † [p.84]
1. Start with the value of the {rpc signature [p.15] } property, a (possibly empty) list of pairs of this
form:
2. Filter the elements of this list into two lists, the first one (L1) comprising pairs whose t component is
one of {#in, #out, #inout}, the second (L2) pairs whose t component is #return. During the
composition of L1 and L2, the relative order of members in the original list MUST be preserved.
15
4.1 RPC Style
and
respectively.
3. Then, if the input sequence ends with an element wildcard, the formal signature of the function is:
f([d0] a0, [d1] a1, ..., rest) => (r0, r1, ...)
where rest is a formal parameter representing the elements in the input message matched by the
element wildcard.
i.e.:
the direction d of each formal argument a is one of [in], [out], [inout], determined according to
the value of its corresponding u token;
the list of formal return parameters of the function is [r0, r1, ...];
each formal argument and formal return parameter is typed according to the type of the child
element identified by it (unique per the conditions given above).
Note:
The wrpc:signature extension allows the specification of multiple return values for an operation.
Several popular programming languages support multiple return values for a function. Moreover, for
languages which do not, the burden on implementers should be small, as typically multiple return values
will be mapped to a single return value of a structure type (or its closest language-specific equivalent).
16
4.2 IRI Style
The type of the signature attribute information item is a list type whose item type is the union of the
xs:QName type and the subtype of the xs:token type restricted to the following four values: "#in", "#out",
"#inout", "#return". See Example 4-1 [p.17] for an excerpt from the normative schema definition of this
type.
Additionally, each even-numbered item (0, 2, 4, ...) in the list MUST be of type xs:QName and each
odd-numbered item (1, 3, 5, ...) in the list MUST be of the subtype of xs:token described in the previous
paragraph. † [p.76]
<xs:simpleType name="signatureType">
<xs:list itemType="wrpc:signatureItemType"/>
</xs:simpleType>
<xs:simpleType name="signatureItemType">
<xs:union memberTypes="xs:QName wrpc:directionToken"/>
</xs:simpleType>
<xs:simpleType name="directionToken">
<xs:restriction base="xs:token">
<xs:enumeration value="#in"/>
<xs:enumeration value="#out"/>
<xs:enumeration value="#inout"/>
<xs:enumeration value="#return"/>
</xs:restriction>
</xs:simpleType>
17
4.3 Multipart style
When using this style, the value of the {message content model} property of the Interface Message
Reference component corresponding to the initial message of the message exchange pattern MUST be
"#element". † [p.80]
Use of this value indicates that XML Schema [XML Schema Structures [p.71] ] was used to define the
schema of the {element declaration} property of the Interface Message Reference component of the
Interface Operation component corresponding to the initial message of the message exchange pattern. This
schema MUST adhere to the rules below:
The content model of this element is defined using a complex type that contains a sequence from
XML Schema.
The sequence MUST only contain elements. † [p.80] It MUST NOT contain other structures such as
xs:choice. There are no occurrence constraints on the sequence.
The sequence MUST contain only local element children. † [p.80] Note these child elements can
contain the nillable attribute.
The localPart of the element’s QName MUST be the same as the Interface Operation component’s
{name}. † [p.80]
The complex type that defines the body of the element or its children elements MUST NOT contain
any attributes. † [p.80]
The children elements of the sequence MUST derive from xs:simpleType, and MUST NOT be
of the type or derive from xs:QName, xs:NOTATION, xs:hexBinary or
xs:base64Binary. † [p.80]
When using this style, the value of the {message content model} property of the Interface Message
Reference component corresponding to the initial message of the message exchange pattern MUST be
"#element". † [p.80]
Use of this value indicates that XML Schema [XML Schema Structures [p.71] ] was used to define the
schema of the {element declaration} property of the Interface Message Reference component of the
Interface Operation component corresponding to the initial message of the message exchange pattern. This
schema MUST adhere to the rules below:
The content model of this element is defined using a complex type that contains a sequence from
XML Schema.
The sequence MUST only contain elements. † [p.80] It MUST NOT contain other structures such as
xs:choice.
18
5. WSDL SOAP Binding Extension
The sequence MUST contain only local element children. † [p.80] The attributes minOccurs and
maxOccurs for these child elements MUST have a value 1. † [p.80] Note these child elements can
contain the nillable attribute.
The localPart of the element’s QName MUST be the same as the Interface Operation component’s
{name}. † [p.81]
The complex type that defines the body of the element or its children elements MUST NOT contain
any attributes. † [p.81]
The sequence MUST NOT contain multiple children element declared with the same local name. †
[p.81]
As allowed in [WSDL 2.0 Core Language [p.70] ], a Binding component can exist without indicating a
specific Interface component that it applies to. In this case, no Binding Operation or Binding Fault
component can be present in the Binding component.
The SOAP binding extension is designed with the objective of minimizing what needs to be explicitly
declared for common cases. This is achieved by defining a set of default rules that affect all Interface
Operation components of an Interface component to which the SOAP binding extension is applied, unless
specifically overridden by a Binding Operation component. Thus, if a given Interface Operation
component is not referred to specifically by a Binding Operation component, then all the default rules
apply to that Interface Operation component. As a result, in accordance with the requirements of [WSDL
2.0 Core Language [p.70] ], all operations of an Interface component will be bound by this binding
extension.
Note: As in other parts of this specification, one could have done away with "default" properties at the
component model level, and have set the value for the corresponding non-default properties in the XML
mapping section. However, default properties are required for interface-less binding. Indeed, an
interface-less binding has no means to set the non-default version of the property at the operation-level,
since there is precisely no operation (there is not even an interface). Hence the mapping needs to be done
elsewhere.
A subset of the HTTP properties specified in the HTTP binding extension defined in section 6. WSDL
HTTP Binding Extension [p.39] are present in a SOAP binding when the SOAP binding uses HTTP as
the underlying protocol, for example, when the value of the {soap underlying protocol [p.24] } property of
the Binding component is "http://www.w3.org/2003/05/soap/bindings/HTTP/". These properties MUST
NOT be used unless the underlying protocol is HTTP. † [p.82] The allowed properties are the ones that
describe the underlying protocol (HTTP):
19
5.1 SOAP Syntax Summary (Non-Normative)
{http location [p.46] } and {http location ignore uncited [p.60] } on Binding Operation components,
as defined in 6.5 Binding Operations [p.45] and 6.8.2.2.2 Controlling the serialization of the
query string in the request IRI [p.60] , respectively.
{http headers [p.50] } on Binding Message Reference and Binding Fault components, as defined in
6.6 Declaring HTTP Headers [p.50]
{http query parameter separator default [p.46] } on Binding components, {http query parameter
separator [p.47] } on Binding Operation components, as defined in 6.5.2 Relationship to WSDL
Component Model [p.46]
{http content encoding default [p.64] } on Binding and Binding Operation components, {http content
encoding [p.65] } on Binding Message Reference and Binding Fault components, as defined in 6.9
Specifying the Content Encoding [p.64]
{http cookies [p.66] } on Binding components, as defined in 6.10 Specifying the Use of HTTP
Cookies [p.66] .
{http authentication scheme [p.67] } and {http authentication realm [p.67] } on Endpoint
components, as defined in 6.11 Specifying HTTP Access Authentication [p.67]
<fault ref="xs:QName"
wsoap:code="union of xs:QName, xs:token"?
wsoap:subcodes="union of (list of xs:QName), xs:token"?
whttp:contentEncoding="xs:string"?? >
<documentation />*
</fault>*
20
5.1 SOAP Syntax Summary (Non-Normative)
<operation ref="xs:QName"
whttp:location="xs:anyURI"??
whttp:contentEncodingDefault="xs:string"??
whttp:queryParameterSeparator="xs:string"??
whttp:ignoreUncited="xs:boolean"??
wsoap:mep="xs:anyURI"?
wsoap:action="xs:anyURI"? >
<documentation />*
<input messageLabel="xs:NCName"?
whttp:contentEncoding="xs:string"?? >
<documentation />*
<wsoap:module ... />*
<wsoap:header ... />*
<whttp:header ... />*??
</input>*
<output messageLabel="xs:NCName"?
whttp:contentEncoding="xs:string"?? >
<documentation />*
<wsoap:module ... />*
<wsoap:header ... />*
<whttp:header ... />*??
</output>*
<infault ref="xs:QName"
messageLabel="xs:NCName"?>
<documentation />*
<wsoap:module ... />*
</infault>*
<outfault ref="xs:QName"
messageLabel="xs:NCName"?>
<documentation />*
<wsoap:module ... />*
</outfault>*
</operation>*
</binding>
<service>
<endpoint name="xs:NCName" binding="xs:QName" address="xs:anyURI"?
whttp:authenticationScheme="xs:token"??
whttp:authenticationRealm="xs:string"?? >
<documentation />*
</endpoint>
</service>
</description>
21
5.2 Identifying the use of the SOAP Binding
Note:
The double question marks ("??") after the attributes in the whttp namespace indicates that those
optional attributes only make sense when the SOAP binding uses HTTP as the underlying protocol, for
example, when the value of the wsoap:protocol attribute is
"http://www.w3.org/2003/05/soap/bindings/HTTP/".
If the value of the {message content model} property of the Interface Message Reference
component is "#any", then the payload MAY be any one XML element.
If the value is "#element", then the payload MUST be the element information item identified by
the {element declaration} property of the Interface Message Reference component. † [p.84]
If the Interface Message Reference component is declared using a non-XML type system (as
considered in the Types section of [WSDL 2.0 Core Language [p.70] ]), then additional binding
rules MUST be defined to indicate how to map those components into the SOAP envelope. †
[p.82]
Note:
This SOAP binding extension only allows one single element in the SOAP body.
SOAP Header Construction. If the {soap headers [p.31] } property as defined in section 5.9
Declaring SOAP Header Blocks [p.31] exists and is not empty in a Binding Message Reference or
Binding Fault component, then an element information item conforming to the element declaration of
a SOAP Header Block [p.32] component’s {element declaration [p.32] } property, in the {soap
headers [p.31] } property, MAY be turned into a SOAP header block for the corresponding message.
If the value of the SOAP Header Block [p.32] component’s {required [p.32] } property is "true", the
inclusion of this SOAP header block is REQUIRED, otherwise it is OPTIONAL.
22
5.4 Specifying the SOAP Version
And, if the SOAP Header Block [p.32] component’s {mustUnderstand [p.32] } property is present
and its value is "true", that particular SOAP header block MUST be marked with a
mustUnderstand attribute information item with a value of "true" or "1" as per the SOAP
specification.
SOAP header blocks other than the ones declared in the {soap headers [p.31] } property may be
present at run-time, such as the SOAP header blocks resulting from SOAP modules declared as explained
in section 5.8 Declaring SOAP Modules [p.28] .
By default, SOAP 1.2 [SOAP 1.2 Part 1: Messaging Framework (Second Edition) [p.70] ] is used.
The XML representation for specifying the SOAP version is an optional attribute information item with
the following Infoset properties:
A type of xs:string
23
5.5 Specifying the SOAP Underlying Protocol
Table 5-1. Mapping from XML Representation to Binding component Extension Properties
Property Value
{soap version The actual value of the wsoap:version attribute information item, if present;
[p.23] } otherwise "1.2".
{soap underlying protocol} REQUIRED. A xs:anyURI, which is an absolute IRI as defined by [IETF
RFC 3987 [p.70] ], to the Binding component. This IRI refers to an appropriate SOAP underlying
protocol binding (see SOAP Protocol Binding Framework in [SOAP 1.2 Part 1: Messaging
Framework (Second Edition) [p.70] ]), which is to be used for any of the SOAP interactions
described by this binding.
The XML representation for specifying the SOAP protocol is a REQUIRED attribute information item
with the following Infoset properties:
A type of xs:anyURI
24
5.6 Binding Faults
Table 5-2. Mapping from XML Representation to Binding component Extension Properties
Property Value
{soap underlying protocol [p.24] The actual value of the wsoap:protocol attribute information
} item.
{soap fault code} REQUIRED. A union of xs:QName and xs:token, to the Binding Fault component,
where:
when the value of the {soap version [p.23] } is "1.2", the allowed QNames MUST be the ones
defined by [SOAP 1.2 Part 1: Messaging Framework (Second Edition) [p.70] ], section 5.4.6 †
[p.82] ;
The value of this property identifies a possible SOAP fault for the operations in scope. If the value of
this property is "#any", no assertion is made about the possible value of the SOAP fault code.
{soap fault subcodes} REQUIRED. A union of list of xs:QName, and xs:token where the allowed
token value is "#any", to the Binding Fault component. The value of this property identifies one or
more subcodes for this SOAP fault. The list of subcodes is the nested sequence of subcodes. An
empty list represents a fault code without subcodes.
25
5.7 Binding Operations
The XML representation for binding a SOAP Fault are two attribute information items with the following
Infoset properties:
A type of union of xs:QName and xs:token where the allowed token value is "#any"
A type of union of list of xs:QName, and xs:token where the allowed token value is "#any"
Table 5-3. Mapping from XML Representation to SOAP Fault component Properties
Property Value
The actual value of the code attribute information item, if present;
{soap fault code [p.25] }
otherwise "#any".
{soap fault subcodes The actual value of the subcodes attribute information item, if present;
[p.25] } otherwise "#any".
26
5.7 Binding Operations
{soap mep default} OPTIONAL. A xs:anyURI, which is an absolute IRI as defined by [IETF RFC
3987 [p.70] ], to the Binding component. † [p.83] The value of this property identifies the default
SOAP Message Exchange Pattern (MEP) for all the Interface Operation components of any Interface
component to which this Binding is applied.
{soap mep} OPTIONAL. A xs:anyURI, which is an absolute IRI as defined by [IETF RFC 3987
[p.70] ], to the Binding Operation component. † [p.83] The value of this property identifies the SOAP
Message Exchange Pattern (MEP) for this specific operation (see 5.10.3 SOAP 1.2 Binding Rules
[p.35] , paragraph "SOAP MEP Selection", for constraints on bindings).
{soap action} OPTIONAL. A xs:anyURI, which is an absolute IRI as defined by [IETF RFC 3987
[p.70] ], to the Binding Operation component. † [p.82] The value of this property identifies the value of
the SOAP Action Feature for the initial message of the message exchange pattern of the Interface
Operation bound, as specified in the binding rules of bindings to specific versions of SOAP (see
5.10.3 SOAP 1.2 Binding Rules [p.35] for the SOAP 1.2 binding when the value of the {soap
version [p.23] } property of the Binding component is "1.2").
The XML representation for binding a Binding Operation are two attribute information items with the
following Infoset properties:
A type of xs:anyURI
A type of xs:anyURI
The following attribute information item for the binding element information item is defined:
27
5.8 Declaring SOAP Modules
A type of xs:anyURI
Table 5-4. Mapping from XML Representation to SOAP Operation Component Properties
Property Value
{soap mep default The actual value of the wsoap:mepDefault attribute information item, if
[p.27] } present.
{soap mep [p.27] } The actual value of the wsoap:mep attribute information item, if present.
{soap action [p.27] } The actual value of the wsoap:action attribute information item, if any.
{soap modules} OPTIONAL. A set of SOAP Module [p.29] components as defined in 5.8.3 SOAP
Module component [p.29] to the Binding component
28
5.8 Declaring SOAP Modules
The SOAP modules applicable for a particular operation of any service, consists of all the modules
specified in the input or output Binding Message Reference components, the infault or outfault Binding
Fault Reference components, those specified within the Binding Fault components, those specified within
the Binding Operation components and those specified within the Binding component. If any module is
declared in multiple components, then the requiredness of that module is defined by the closest
declaration, where closeness is defined by whether it is specified directly at the Binding Message
Reference component or Binding Fault Reference component level, the Binding Fault level or the Binding
Operation component level or the Binding component level, respectively.
{ref} REQUIRED. A xs:anyURI, which is an absolute IRI as defined by [IETF RFC 3987 [p.70] ]. †
[p.83] The value of this property uniquely identifies the SOAP module that is in use (as per the SOAP
1.2 [SOAP 1.2 Part 1: Messaging Framework (Second Edition) [p.70] ] processing model).
{parent} REQUIRED. The Binding, Binding Operation, Binding Message Reference, Binding Fault
or Binding Fault Reference components that contains this component in its {soap modules [p.28] }
property.
29
5.8 Declaring SOAP Modules
</outfault>
</operation>
</binding>
</description>
The XML representation for a SOAP Module [p.29] component is an element information item with the
following Infoset properties:
A REQUIRED ref attribute information item with the following Infoset properties:
A type of xs:anyURI
An OPTIONAL required attribute information item with the following Infoset properties:
A type of xs:boolean
Zero or more namespace qualified attribute information items. The [namespace name] of such
attribute information items MUST NOT be "http://www.w3.org/ns/wsdl" and MUST NOT be
"http://www.w3.org/ns/wsdl/soap".
Zero or more element information item amongst its [children], in order, as follows:
1. Zero or more documentation element information items as defined in [WSDL 2.0 Core
Language [p.70] ].
2. Zero or more namespace-qualified element information items amongst its [children]. The
[namespace name] of such element information items MUST NOT be
"http://www.w3.org/ns/wsdl" and MUST NOT be "http://www.w3.org/ns/wsdl/soap".
30
5.9 Declaring SOAP Header Blocks
Table 5-5. Mapping from XML Representation to SOAP Module component-related Properties
Property Value
{soap The set of SOAP Module [p.29] components corresponding to all the module element
modules information item in the [children] of the binding, operation, fault, input,
[p.28] } output, infault, outfault element information items, if any.
{ref [p.29] } The actual value of the ref attribute information item.
{required The actual value of the required attribute information item, if present; otherwise
[p.29] } "false".
The Binding, Binding Operation, Binding Message Reference, Binding Fault or Binding
{parent
Fault Reference component corresponding to the binding, operation, fault,
[p.29] }
input, output, infault or outfault element information item in [parent].
A SOAP Module [p.29] component can be identified using the wsdl.extension XPointer Framework
scheme:
wsdl.extension(http://www.w3.org/ns/wsdl/soap,
wsoap.module(parent/ref))
1. parent is the pointer part of the {parent [p.29] } component, as specified in appendix A.2,
Fragment Identifiers in [WSDL 2.0 Core Language [p.70] ]. parts.
{soap headers} OPTIONAL. A set of SOAP Header Block [p.32] components as defined in 5.9.3
SOAP Header Block component [p.32] , to the Binding Message Reference component.
31
5.9 Declaring SOAP Header Blocks
{mustUnderstand} REQUIRED. A xs:boolean. When its value is "true", the SOAP header block
MUST be decorated with a SOAP mustUnderstand attribute information item with a value of
"true"; if so, the XML element declaration referenced by the {element declaration [p.32] } property
MUST allow this SOAP mustUnderstand attribute information item. † [p.83] Otherwise, no
additional constraint is placed on the presence and value of a SOAP mustUnderstand attribute
information item.
{required} REQUIRED. A xs:boolean indicating if the SOAP header block is required. If the value is
"true", then the SOAP header block MUST be included in the message. † [p.83] If it is "false", then the
SOAP header block MAY be included.
{parent} REQUIRED. The Binding Fault or Binding Message Reference component that contains
this component in its {soap headers [p.31] } property.
32
5.9 Declaring SOAP Header Blocks
</output>*
</operation>*
</binding>
</description>
The XML representation for a SOAP Header Block [p.32] component is an element information item with
the following Infoset properties:
A REQUIRED element attribute information item with the following Infoset properties:
A type of xs:QName
A type of xs:boolean
An OPTIONAL required attribute information item with the following Infoset properties:
A type of xs:boolean
Zero or more namespace qualified attribute information items. The [namespace name] of such
attribute information items MUST NOT be "http://www.w3.org/ns/wsdl" and MUST NOT be
"http://www.w3.org/ns/wsdl/soap".
Zero or more element information item amongst its [children], in order, as follows:
1. Zero or more documentation element information items as defined in [WSDL 2.0 Core
Language [p.70] ].
33
5.9 Declaring SOAP Header Blocks
2. Zero or more namespace-qualified element information items amongst its [children]. The
[namespace name] of such element information items MUST NOT be
"http://www.w3.org/ns/wsdl" and MUST NOT be "http://www.w3.org/ns/wsdl/soap".
Table 5-6. Mapping from XML Representation to SOAP Header Block component-related Properties
Property Value
The set of SOAP Header Block [p.32] components corresponding to all the
{soap headers
header element information item in the [children] of the fault, input or
[p.31] }
output element information item, if any.
The element declaration from the {element declarations} resolved to by the value
{element of the element attribute information item. The value of the element attribute
declaration [p.32] } information item MUST resolve to a global element declaration from the {element
declarations} property of the Description component. † [p.83]
{mustUnderstand The actual value of the mustUnderstand attribute information item, if present;
[p.32] } otherwise "false".
The actual value of the required attribute information item, if present;
{required [p.32] }
otherwise "false".
The Binding Fault or Binding Message Reference component corresponding to the
{parent [p.32] }
fault, input or output element information item in [parent].
A SOAP Header Block [p.32] component can be identified using the wsdl.extension XPointer Framework
scheme:
wsdl.extension(http://www.w3.org/ns/wsdl/soap,
wsoap.header(parent/element declaration))
1. parent is the "wsdl.*" pointer part of the {parent [p.32] } component, as specified in appendix A.2,
Fragment Identifiers in [WSDL 2.0 Core Language [p.70] ], i.e. without the xmlns() pointer parts.
2. element declaration is the value of the {name} of the Element Declaration component that is
referred to by the {element declaration [p.32] } property of the SOAP Header Block component.
34
5.10 WSDL SOAP 1.2 Binding
5.10.2 Description
The WSDL SOAP 1.2 binding extension defined in this section is an extension of the SOAP binding
defined in section 5. WSDL SOAP Binding Extension [p.19] to enable Web service applications to use
SOAP 1.2 [SOAP 1.2 Part 1: Messaging Framework (Second Edition) [p.70] ].
The WSDL SOAP 1.2 binding extension supports the SOAP 1.2 HTTP binding defined by the [SOAP 1.2
Part 2: Adjuncts (Second Edition) [p.70] ] specification. This is indicated by assigning the URI
"http://www.w3.org/2003/05/soap/bindings/HTTP/" (as defined by [SOAP 1.2 Part 2: Adjuncts (Second
Edition) [p.70] ]) to the {soap underlying protocol [p.24] } property. Other values MAY be used for this
property in conjunction with the SOAP 1.2 binding extension defined by this specification provided that
the semantics of such protocols are consistent with this binding extension.
Default rules in section 5.10.3 SOAP 1.2 Binding Rules [p.35] define the relationship between SOAP
message exchange patterns defined in [SOAP 1.2 Part 2: Adjuncts (Second Edition) [p.70] ] and WSDL
message exchange patterns defined in section 2. Predefined Message Exchange Patterns [p.8] .
SOAP Action Feature. The value of the SOAP Action Feature for the initial message of the message
exchange pattern of the Interface Operation bound is specified by the {soap action [p.27] } property
of this Binding Operation component. If the Binding Operation component does NOT have a {soap
action [p.27] } property defined, then the SOAP Action Feature (see [SOAP 1.2 Part 2: Adjuncts
(Second Edition) [p.70] ]) has NO value. Otherwise, its value is the value of the SOAP Action
Feature for the initial message of the message exchange pattern. The {soap action [p.27] } property
has NO effect when binding to the SOAP-Response MEP.
35
5.10 WSDL SOAP 1.2 Binding
SOAP MEP Selection. For a given Interface Operation component, if there is a Binding Operation
component whose {interface operation} property matches the component in question and its {soap
mep [p.27] } property has a value, then the SOAP MEP is the value of the {soap mep [p.27] }
property. Otherwise, the SOAP MEP is the value of the Binding component’s {soap mep default
[p.27] }, if any. Otherwise, the Interface Operation component’s {message exchange pattern}
property MUST have the value "http://www.w3.org/ns/wsdl/in-out", and the SOAP MEP is the URI
"http://www.w3.org/2003/05/soap/mep/request-response/" identifying the SOAP Request-Response
Message Exchange Pattern as defined in [SOAP 1.2 Part 2: Adjuncts (Second Edition) [p.70] ]. † [p.83]
SOAP Detail Element. If any, the value of the SOAP "Detail" element MUST be the element
information item identified by the {element declaration} property of the Interface Fault component. †
[p.84]
HTTP Method Selection. This default binding rule is applicable when the value of the {soap
underlying protocol [p.24] } property of the Binding component is
"http://www.w3.org/2003/05/soap/bindings/HTTP/". If the SOAP MEP selected as specified above has the
value "http://www.w3.org/2003/05/soap/mep/request-response/" then the HTTP method used is "POST".
If the SOAP MEP selected has the value "http://www.w3.org/2003/05/soap/mep/soap-response/" then the
HTTP method used is "GET". † [p.82]
This section describes the mapping from the WSDL "http://www.w3.org/ns/wsdl/in-out" Message
Exchange Pattern (MEP) to the SOAP "http://www.w3.org/2003/05/soap/mep/request-response/" MEP (as
would be the case for a usual SOAP-over-HTTP In-Out operation). Extensions (such as [WSA 1.0 Core
[p.71] ]) MAY alter these mappings.
36
5.10 WSDL SOAP 1.2 Binding
This section describes the mapping from the WSDL "http://www.w3.org/ns/wsdl/in-out" MEP to the
"http://www.w3.org/2003/05/soap/mep/soap-response/" SOAP MEP. Extensions (such as [WSA 1.0 Core
[p.71] ]) MAY alter these mappings.
The value of the {message content model} property for the Interface Message Reference components of
the {interface message references} property MUST be either "#element" or "#none". When the value is:
"#element", the WSDL "In" message is mapped to the destination URI, as per the rules in section
6.8.2 Serialization as application/x-www-form-urlencoded [p.58] .
The WSDL "In" message is constructed from the destination URI as per the rules in section 6.8.2
Serialization as application/x-www-form-urlencoded [p.58] , WHEN the value of the {message content
model} property for the Interface Message Reference components of the {interface message references}
37
5.10 WSDL SOAP 1.2 Binding
property is "#element".
This section describes the mapping from the WSDL "http://www.w3.org/ns/wsdl/in-only" MEP to the
SOAP "http://www.w3.org/2003/05/soap/mep/request-response/" MEP. Extensions (such as [WSA 1.0
Core [p.71] ]) MAY alter these mappings.
This section describes the mapping from the WSDL "http://www.w3.org/ns/wsdl/robust-in-only" MEP to
the SOAP "http://www.w3.org/2003/05/soap/mep/request-response/" MEP. Extensions (such as [WSA 1.0
Core [p.71] ]) MAY alter these mappings.
38
6. WSDL HTTP Binding Extension
5.11 Conformance
An element information item whose namespace name is "http://www.w3.org/ns/wsdl" and whose local part
is description conforms to this binding extension specification if the element information items and
attribute information items whose namespace is http://www.w3.org/ns/wsdl/soap conform to the XML
Schema for that element or attribute as defined by this specification and additionally adheres to all the
constraints contained in this specification.
As allowed in [WSDL 2.0 Core Language [p.70] ], a Binding component can exist without indicating a
specific Interface component that it applies to and, in this case, no Binding Operation or Binding Fault
components can be present in the Binding component.
The HTTP binding extension is designed with the objective of minimizing what needs to be explicitly
declared for common cases. This is achieved by defining a set of default rules that affect all Interface
Operation components of an Interface component to which the HTTP binding extension is applied, unless
specifically overridden by a Binding Operation component. Thus, if a given Interface Operation
component is not referred to specifically by a Binding Operation component, then all the default rules
apply to that Interface Operation component. As a result, in accordance with the requirements of [WSDL
39
6.1 Identifying the use of the HTTP Binding
2.0 Core Language [p.70] ], all operations of an Interface component will be bound by this binding
extension.
Note: As in other parts of this specification, one could have done away with "default" properties at the
component model level, and have set the value for the corresponding non-default properties in the XML
mapping section. However, default properties are required for interface-less binding. Indeed, an
interface-less binding has no means to set the non-default version of the property at the operation-level,
since there is precisely no operation (there is not even an interface). Hence the mapping needs to be done
elsewhere.
[Definition: The internal tree representation of an input, output or fault message is called an instance
data, and is constrained by the schema definition associated with the message: the XML element
referenced in the {element declaration} property of the Interface Message Reference component for input
and output messages (unless the {message content model} is "#any"), and in the {element declaration}
property of an Interface Fault component for faults.]
<fault ref="xs:QName"
whttp:code="union of xs:int, xs:token"?
whttp:contentEncoding="xs:string"? >
<documentation />*
<whttp:header name="xs:string" type="xs:QName"
required="xs:boolean"? >
<documentation />*
</whttp:header>*
</fault>*
<operation ref="xs:QName"
whttp:location="xs:anyURI"?
whttp:method="xs:string"?
whttp:inputSerialization="xs:string"?
whttp:outputSerialization="xs:string"?
whttp:faultSerialization="xs:string"?
whttp:queryParameterSeparator="xs:string"?
whttp:contentEncodingDefault="xs:string"?
whttp:ignoreUncited="xs:boolean"? >
<documentation />*
40
6.3 Supported Extensions
<input messageLabel="xs:NCName"?
whttp:contentEncoding="xs:string"? >
<documentation />*
<whttp:header ... />*
</input>*
<output messageLabel="xs:NCName"?
whttp:contentEncoding="xs:string"? >
<documentation />*
<whttp:header ... />*
</output>*
<infault ref="xs:QName"
messageLabel="xs:NCName"? >
<documentation />*
</infault>*
<outfault ref="xs:QName"
messageLabel="xs:NCName"? >
<documentation />*
</outfault>*
</operation>*
</binding>
<service>
<endpoint name="xs:NCName" binding="xs:QName" address="xs:anyURI"?
whttp:authenticationScheme="xs:token"?
whttp:authenticationRealm="xs:string"? >
<documentation />*
</endpoint>
</service>
</description>
For a given Interface Operation component, if there is a Binding Operation component whose
{interface operation} property matches the component in question and its {http method [p.46] }
property has a value, then the value of the {http method [p.46] } property.
41
6.4 HTTP Binding Rules
Otherwise, the value of the Binding component’s {http method default [p.46] }, if any.
Otherwise, if a {safe [p.12] } property as defined in 3.1 Operation safety [p.12] is present on the
bound Interface Operation component and has a value of "true", the value "GET".
If the {http content encoding [p.65] } property has a non-empty value, a Content-Encoding
header-field MUST be inserted with the value of this property.
Otherwise, if the value of the parent Binding Operation component’s {http content encoding default
[p.64] } property has a non-empty value, a Content-Encoding header-field MUST be inserted
with the value of this property.
Otherwise, if the value of the grandparent Binding component’s {http content encoding default [p.64]
} property has a non-empty value, a Content-Encoding header-field MUST be inserted with the
value of this property.
When formulating the HTTP fault message to be transmitted, content encoding for a given Binding Fault
component is determined as follows: † [p.76]
If the {http content encoding [p.65] } property has a non-empty value, then a Content-Encoding
header-field MUST be inserted with the value of this property.
If the {http content encoding default [p.64] } property has a non-empty value, then a
Content-Encoding header-field MUST be inserted with the value of this property.
The body of the response message is encoded using the specified content encoding.
[Definition: The serialization format is a media type token ("type/subtype"). It identifies rules to serialize
the payload in an HTTP message. Its value is defined by the following rules. The HTTP request
serialization format MUST be in the media type range specified by the {http input serialization [p.46] }
property. The HTTP response serialization format MUST be in the media type range specified by the {http
output serialization [p.46] } property. The HTTP serialization format of a fault MUST be in the media
type range specified by the {http fault serialization [p.46] } property. The concept of media type range is
defined in Section 14.1 of [IETF RFC 2616 [p.69] ]. The serialization format MAY have associated
media type parameters (specified with the parameter production of media-range in Section 14.1
of [IETF RFC 2616 [p.69] ]. ]
42
6.4 HTTP Binding Rules
Section 6.8 Serialization Format of Instance Data [p.55] defines serialization formats supported by this
binding extension along with their constraints.
If the value of the {message content model} property of the Interface Message Reference bound
is "#any" or "#element", the serialization of the instance data is specified as defined in section
6.4.3.1 Serialization rules for XML messages [p.43] .
If the value is "#none", then the payload MUST be empty and the value of the corresponding
serialization property ({http input serialization [p.46] } or {http output serialization [p.46] }) is
ignored. † [p.76]
If the value is "#other", then the serialization format [p.42] and its associated media type
parameters, if any, specifies the value of the HTTP Content-Type entity-header field as
defined in section 14.17 of [IETF RFC 2616 [p.69] ]. The serialization of the payload is
undefined.
Interface Fault component: the serialization of the instance data is specified as defined in section
6.4.3.1 Serialization rules for XML messages [p.43] .
If the Interface Message Reference component or the Interface Fault component is declared using a
non-XML type system (as considered in the Types section of [WSDL 2.0 Core Language [p.70] ]), then
additional binding rules MUST be defined in an extension specification to indicate how to map those
components into the HTTP envelope. † [p.76]
The serialization rules for messages whose {message content model} is either "#element" or "#any", AND
the serialization rules for fault messages, are as follows: † [p.76]
If the serialization format [p.42] is "multipart/form-data", then the serialization of the instance data
[p.40] is defined by section 6.8.4 Serialization as multipart/form-data [p.62] .
If the serialization format [p.42] is "application/xml", then the serialization of the instance data [p.40]
is defined by section 6.8.3 Serialization as application/xml [p.62] .
Otherwise, then the serialization of the instance data [p.40] is defined by section 6.8.3 Serialization
as application/xml [p.62] with the following additional rule: the value of the HTTP
Content-Type entity-header field is the value of the serialization format [p.42] and its associated
media type parameters, if any.
43
6.4 HTTP Binding Rules
Table 6-1. Default values for GET, POST, PUT and DELETE
Default Output
HTTP Method Default Input Serialization
Serialization
Selected in 6.4.1 HTTP
{http output serialization
Method Selection {http input serialization [p.46] }
[p.46] }
[p.41]
GET application/x-www-form-urlencoded application/xml
POST application/xml application/xml
PUT application/xml application/xml
DELETE application/x-www-form-urlencoded application/xml
Note:
The default value for the {http input serialization [p.46] } and {http output serialization [p.46] } properties
for any other HTTP method selected is application/xml.
Mechanisms other than setting the serialization properties MAY modify the serialization format of the
instance data [p.40] corresponding to the message. An example of such modification is the WSDL SOAP
Binding HTTP IRI Serialization rules specified in 5.3 SOAP Binding Rules [p.22] . This binding
extension specifies that the SOAP-Response Message Exchange Pattern ([SOAP 1.2 Part 2: Adjuncts
(Second Edition) [p.70] ], Section 6.3) supports input message serialization only as
application/x-www-form-urlencoded. Other examples are other message exchange patterns or
binding extensions.
44
6.5 Binding Operations
The HTTP header field name used is the value of the {name [p.51] } property of the HTTP Header
[p.51] component. The HTTP binding MUST NOT set an HTTP header field corresponding to the
value of the {name [p.51] } property already set by another mechanism, such as the HTTP stack or
another feature. † [p.77]
The HTTP header field value, whose XML Schema type is declared by the {type definition [p.51] }
property of the HTTP Header [p.51] component, is serialized following the rules of the
field-value production of section 4.2 of [IETF RFC 2616 [p.69] ].
If the value of an HTTP Header [p.51] component’s {required [p.51] } property is "true", the inclusion of
this HTTP header field is REQUIRED † [p.77] , otherwise it is OPTIONAL.
If the resulting IRI uses the https scheme, then HTTP over TLS [IETF RFC 2818 [p.69] ] is used to
send the HTTP request.
The HTTP Request IRI identifies the resource upon which to apply the request and is transmitted using the
Request-URI, and optionally the Host header field, as defined in [IETF RFC 2616 [p.69] ].
"http://www.w3.org/ns/wsdl/in-only"
"http://www.w3.org/ns/wsdl/robust-in-only"
"http://www.w3.org/ns/wsdl/in-out"
This HTTP binding extension MAY be used with other message exchange patterns, such as outbound
message exchange patterns, provided that additional semantics are defined, for example through an
extension.
45
6.5 Binding Operations
Each of the three supported message exchange patterns above involves one or two messages or faults
being exchanged. The first one is transmitted using an HTTP request, and the second one is transmitted
using the corresponding HTTP response. † [p.77] In cases where only one single message is being sent, the
message body of the HTTP response MUST be empty. † [p.77]
For every Binding Operation component corresponding to such Interface Operation components, this
binding extension specification allows the user to indicate the HTTP method to use, the input, output and
fault serialization, and the location of the bound operation.
{http location} OPTIONAL. An xs:anyURI, to the Binding Operation component. It MUST contain
an IRI reference and MUST NOT include a fragment identifier component. † [p.77]
{http method default} OPTIONAL. A xs:string, to the Binding component, indicating the default
value for the HTTP Request Method for all the Interface Operation components of any Interface
component to which this Binding is applied.
{http method} OPTIONAL. A xs:string, to the Binding Operation component, indicating the value
for the HTTP Request Method for this specific Binding Operation.
{http input serialization} REQUIRED. A xs:string, to the Binding Operation component, indicating
allowed serialization rules of the HTTP Request message for this specific operation, as described in
section 6.5.3 Specification of serialization rules allowed [p.47] .
{http output serialization} REQUIRED. A xs:string, to the Binding Operation component, indicating
allowed serialization rules of the HTTP Response message for this specific operation, as described in
section 6.5.3 Specification of serialization rules allowed [p.47] .
{http fault serialization} REQUIRED. A xs:string, to the Binding Operation component, indicating
allowed serialization rules of the HTTP Response message for this specific operation in case a fault is
returned, as described in section 6.5.3 Specification of serialization rules allowed [p.47] .
{http query parameter separator default} REQUIRED. A xs:string, to the Binding component,
indicating the default query parameter separator character for all the Interface Operation components
of any Interface component to which this Binding is applied to.
46
6.5 Binding Operations
{http query parameter separator} OPTIONAL. A xs:string, to the Binding Operation component,
indicating the query parameter separator character for this Binding Operation.
to:
These properties indicate the range of media types and associated parameters with which an instance
MAY be serialized. The value of the serialization format [p.42] used for a message is a media type which
MUST be covered by this range. † [p.77] Wild cards (for example, "application/*") SHOULD NOT be
used in this attribute information item since they may lead to interoperability problems. † [p.77]
The use of {http input serialization [p.46] }, {http output serialization [p.46] } and {http fault serialization
[p.46] } is specified in section 6.4.3 Payload Construction And Serialization Format [p.42] .
The XML representation for binding an Operation are six attribute information items with the following
Infoset properties:
47
6.5 Binding Operations
An OPTIONAL location attribute information item with the following Infoset properties:
A type of xs:anyURI
An OPTIONAL method attribute information item with the following Infoset properties:
A type of xs:string
A type of xs:string
A type of xs:string
A type of xs:string
48
6.5 Binding Operations
The following attribute information items for the binding element information item are defined:
An OPTIONAL methodDefault attribute information item with the following Infoset properties:
A type of xs:string
A type of xs:string whose length facet value is "1". The allowed characters are the same as for
the {http query parameter separator [p.47] } property above.
49
6.6 Declaring HTTP Headers
Table 6-2. Mapping from XML Representation to Binding Operation component Extension Properties
Property Value
{http location [p.46]
The actual value of the whttp:location attribute information item, if present.
}
{http method The actual value of the whttp:methodDefault attribute information item, if
default [p.46] } present.
{http method [p.46]
The actual value of the whttp:method attribute information item, if present.
}
{http input The actual value of the whttp:inputSerialization attribute information
serialization [p.46] item, if present; otherwise, the default value as defined in 6.4 HTTP Binding
} Rules [p.41] .
{http output The actual value of the whttp:outputSerialization attribute information
serialization [p.46] item, if present; otherwise, the default value as defined in 6.4 HTTP Binding
} Rules [p.41] .
{http fault
The actual value of the whttp:faultSerialization attribute information
serialization [p.46]
item, if present; otherwise "application/xml".
}
{http query
The actual value of the whttp:queryParameterSeparatorDefault
parameter separator
attribute information item, if present; otherwise, "&".
default [p.46] }
{http query
The actual value of the whttp:queryParameterSeparator attribute
parameter separator
information item, if present.
[p.47] }
{http headers} OPTIONAL. A set of HTTP Header [p.51] components as defined in 6.6.3 HTTP
Header component [p.51] , to the Binding Message Reference component.
50
6.6 Declaring HTTP Headers
A Binding Message Reference or a Binding Fault component’s {http headers [p.50] } property MUST
NOT contain multiple HTTP Header [p.51] components with the same {name [p.51] } property. † [p.78]
{name} REQUIRED. An xs:string whose pattern facet is "[!#-’*+\-.0-9A-Z^-z|~]+", the name of the
HTTP header field. The value of this property follows the field-name production rules as
specified in section 4.2 of [IETF RFC 2616 [p.69] ].
{type definition} REQUIRED. A Type Definition component, in the {type definitions} property of
the Description component, constraining the value of the HTTP header field. This type MUST be a
simple type. † [p.78]
{required} REQUIRED. An xs:boolean indicating if the HTTP header field is required. If the value is
"true", then the HTTP header field MUST be included in the message. † [p.78] If it is "false", then the
HTTP header field MAY be included.
{parent} REQUIRED. The Binding Fault or Binding Message Reference component that contains
this component in its {http headers [p.50] } property.
51
6.6 Declaring HTTP Headers
</output>*
</operation>*
</binding>
</description>
The XML representation for a HTTP Header [p.51] component is an element information item with the
following Infoset properties:
A REQUIRED name attribute information item with the following Infoset properties:
A REQUIRED type attribute information item with the following Infoset properties:
A type of xs:QName
An OPTIONAL required attribute information item with the following Infoset properties:
A type of xs:boolean
Zero or more namespace qualified attribute information items. The [namespace name] of such
attribute information items MUST NOT be "http://www.w3.org/ns/wsdl" and MUST NOT be
"http://www.w3.org/ns/wsdl/http".
Zero or more element information item amongst its [children], in order, as follows:
1. Zero or more documentation element information items as defined in [WSDL 2.0 Core
Language [p.70] ].
2. Zero or more namespace-qualified element information items amongst its [children]. The
[namespace name] of such element information items MUST NOT be
"http://www.w3.org/ns/wsdl" and MUST NOT be "http://www.w3.org/ns/wsdl/http".
52
6.7 Specifying HTTP Error Code for Faults
Table 6-3. Mapping from XML Representation to HTTP Header component-related Properties
Property Value
The set of HTTP Header [p.51] components corresponding to all the header element
{http headers
information item in the [children] of the fault, input or output element
[p.50] }
information item, if any.
{name [p.51] } The value of the name attribute information item.
The Type Definition component from the {type definitions} property of the
{type definition
Description component resolved to by the value of the type attribute information
[p.51] }
item.
{required The actual value of the required attribute information item, if present; otherwise
[p.51] } "false".
{parent [p.51] The Binding Fault or Binding Message Reference component corresponding to the
} fault, input or output element information item in [parent].
An HTTP Header [p.51] component can be identified using the wsdl.extension XPointer Framework
scheme:
wsdl.extension(http://www.w3.org/ns/wsdl/http,
whttp.header(parent/name))
1. parent is the pointer part of the {parent [p.51] } component, as specified in WSDL Version 2.0
Part 1: Core Language.
53
6.7 Specifying HTTP Error Code for Faults
The fault definition SHOULD agree with the definition of the HTTP error codes, as specified in section 8
of [IETF RFC 3205 [p.69] ]. † [p.77]
{http error status code} REQUIRED. A union of xs:int and xs:token where the allowed token value is
"#any", to the Binding Fault component. An integer value of this property identifies the error
Status-Code as defined by [IETF RFC 2616 [p.69] ] that the service will use in case the fault is
returned. † [p.77] If the value of this property is "#any", no claim is made by the service.
The XML representation for binding an HTTP Fault is an attribute information item with the following
Infoset properties:
A type of union of xs:int and xs:token where the allowed token value is "#any"
Table 6-4. Mapping from XML Representation to Binding Fault component Extension Properties
Property Value
{http error status code The actual value of the whttp:code attribute information item, if present;
[p.54] } otherwise "#any".
54
6.8 Serialization Format of Instance Data
Other serialization formats may be defined. Those MAY place restrictions on the style of the Interface
Operation bound.
Table 6-5. Applicability of the serialization formats defined in this section for this HTTP binding
Serialization of the instance data in parts of an HTTP message
55
6.8 Serialization Format of Instance Data
Table 6-6. Operation styles required for using serialization formats defined below as input serialization
Request
Request
HTTP URI: query Input serialization
Method parameters
or path application/x-www-form-urlencoded multipart/form-data application/xml
components
Without
message
body:
IRI style IRI style - -
GET,
DELETE,
…
IRI style, if
With any data is
message serialized as
body: path IRI style Multipart style None required
POST, components
PUT, … or query
parameters
6.8.1 Serialization of the instance data in parts of the HTTP request IRI
This section defines templating rules for the {http location [p.46] } property of the Binding Operation
component. Templating is used by the serialization formats defined in section 6.8 Serialization Format of
Instance Data [p.55] , and MAY be reused by other serialization formats.
With this HTTP binding, part of the instance data for HTTP requests MAY be serialized in the HTTP
request IRI, and another part MAY be serialized in the HTTP message body.
The resulting IRI MUST be mapped to an URI for use in the HTTP Request as per section 3.1 "Mapping
of IRIs to URIs" of the IRI specification [IETF RFC 3987 [p.70] ]. † [p.78] Additional rules for the
serialization of the HTTP request IRI MAY be defined by a serialization format.
56
6.8 Serialization Format of Instance Data
6.8.1.1 Construction of the request IRI using the {http location} property
The {http location [p.46] } property MAY cite local names of elements from the instance data [p.40] of
the message to be serialized in request IRI. Citing is performed:
either by enclosing the element name within curly braces. For example, "temperature/{town}". See
Example 6-1 [p.60] for additional details;
or by enclosing the element name within exclamated-curly braces, to include the element without
percent-encoding. For example, "temperature/{!town}". Detailed rules follow.
The {http location [p.46] } property MUST conform to the following EBNF [ISO/IEC 14977:1996 [p.69]
] grammar, which represents the patterns for constructing the request IRI: † [p.78]
httpLocation ::= charData? (( openBrace | closeBrace | template ) charData?)*
charData ::= [^{}]*
openBrace ::= ’{{’
closeBrace ::= ’}}’
template ::= rawTemplate | encodedTemplate
rawTemplate ::= ’{!’ NCName ’}’
encodedTemplate ::= ’{’ NCName ’}’
The request IRI is constructed as follows (ALPHA and DIGIT below are defined as per [IETF RFC 4234
[p.70] ]):
The local name in a template SHOULD match at least one element from the instance data [p.40] of
the input message. † [p.78] When there is no match, the template is replaced by an empty string.
Otherwise, the template consumes the first non-consumed matching element from the instance data
[p.40] . The next occurrence of the template consumes the next non-consumed matching element, and
so on until all templates are processed. Matching elements are consumed in the order in which they
appear in the instance data [p.40] . Cited elements (i.e. elements referenced in templates) MUST
NOT carry an xs:nil attribute whose value is "true" † [p.84] .
Each raw template (rawTemplate production in the grammar above) is replaced by the possibly
empty single value of the corresponding element from the instance data [p.40] . No percent-encoding
is performed.
Each encoded template (encodedTemplate production in the grammar above) NOT preceded in
the {http location [p.46] } property by a "?" character is replaced by the possibly empty single value
of the corresponding element from the instance data [p.40] . Encoding is performed as follows:
The characters in the range: "&" | ";" | "!" | "$" | "’" | "(" | ")" | "*"
| "+" | "," | "=" | ":" | "@" SHOULD be percent-encoded.
The other characters, EXCEPT the ones in the range: ALPHA | DIGIT | "-" | "." |
"_" | "~", MUST be percent-encoded.
57
6.8 Serialization Format of Instance Data
Each encoded template (encodedTemplate production in the grammar above) preceded in the
{http location [p.46] } property by a "?" character is replaced by the possibly empty single value of
the corresponding element from the instance data [p.40] . Encoding is performed as follows:
The value of the {http query parameter separator [p.47] } property, if present; otherwise the
value of the {http query parameter separator default [p.46] } property, MUST be
percent-encoded.
The characters in the range: "&" | ";" | "!" | "$" | "’" | "(" | ")" | "*"
| "+" | "," | "=" | ":" | "@" | "?" | "/" SHOULD be percent-encoded.
The other characters, EXCEPT the ones in the range: ALPHA | DIGIT | "-" | "." |
"_" | "~", MUST be percent-encoded.
Each uncited element (i.e. each element not referenced in a template) to be serialized, if any, is
encoded as for an encoded template.
Percent-encoding MUST be performed using the UTF-8 representation of the character as prescribed
by section 6.4 of [IETF RFC 3987 [p.70] ].
Each double curly brace (openBrace or closeBrace production in the grammar above) is
replaced by a single literal curly brace ("{" or "}" respectively). This provides a simple escaping
mechanism.
Note that the mechanism described in this section could be used to indicate the entire absolute IRI,
including the scheme, host, or port, for example:
{scheme}://{host}:{port}/temperature/{town}
or even:
{!myIRI}
If this format is used then the {style} property of Interface Operation component being bound MUST
contain a value of "http://www.w3.org/ns/wsdl/style/iri" as defined in 4.2 IRI Style [p.17] , i.e. this
serialization format may only be used to serialize the HTTP request corresponding to the initial message
of an interface operation. † [p.79]
For the HTTP binding defined in this section (6. WSDL HTTP Binding Extension [p.39] ),
"application/x-www-form-urlencoded" MAY be used as a serialization format [p.42] for an input message
(HTTP Request), but MUST NOT be used as a serialization format [p.42] for an output or fault message
(HTTP Response). † [p.79]
58
6.8 Serialization Format of Instance Data
In this serialization, the rules for constructing the HTTP request IRI using elements cited in the {http
location [p.46] } property defined in 6.8.1 Serialization of the instance data in parts of the HTTP
request IRI [p.56] apply. Additional rules for constructing the HTTP request IRI follow.
6.8.2.2 Serialization of content of the instance data not cited in the {http location} property
If not all elements from the instance data [p.40] are cited in the {http location [p.46] } property, or if the
property is not present on the Binding Operation component, then additional serialization rules apply. †
[p.79]
The remainder of the instance data is formatted as a query string as defined in 6.8.2.2.1 Construction of
the query string [p.59] .
If the HTTP method used for the request does not allow a message body, then this query string is
serialized as parameters in the request IRI (see 6.8.2.2.3 Serialization in the request IRI [p.61] ),
otherwise it is serialized in the message body (see 6.8.2.2.4 Serialization in the message body [p.61] ).
For elements of the instance data not cited in the {http location [p.46] } property, a query string is
constructed as follows. † [p.79]
Non-nil elements with a possibly empty single value of the instance data [p.40] not cited are serialized as
query parameters in the order they appear in the instance data.
The instance data [p.40] MUST NOT contain elements with an xs:nil attribute whose value is "true". †
[p.78]
Each parameter pair is separated by the value of the {http query parameter separator [p.47] } property, if
present, or the value of the {http query parameter separator default [p.46] } property.
Uncited elements with single values (non-list) are serialized as a single name-value parameter pair.
The name of the parameter is the local name of the uncited element, and the value of the parameter is
the value of the uncited element.
Uncited elements with list values are serialized as one name-value parameter pair per-list value. The
name of each parameter is the local name of the uncited element, and the value of each parameter is
the corresponding value in the list. The order of the list values is preserved.
Replacement values falling outside the range (ALPHA and DIGIT below are defined as per [IETF
RFC 4234 [p.70] ]): ALPHA | DIGIT | "-" | "." | "_" | "~" | "!" | "$" |
"&" | "’" | "(" | ")" | "*" | "+" | "," | ";" | "=" | ":" | "@",
MUST be percent-encoded. Percent-encoding MUST be performed using the UTF-8 representation
of the character as prescribed by section 6.4 of [IETF RFC 3987 [p.70] ].
59
6.8 Serialization Format of Instance Data
and the following value of the {http query parameter separator default [p.46] } property:
’&’
6.8.2.2.2 Controlling the serialization of the query string in the request IRI
This serialization format adds the following property to the Binding Operation component:
{http location ignore uncited} REQUIRED. A xs:boolean. This boolean indicates whether elements
not cited in the {http location [p.46] } property MUST be appended to the request IRI or ignored. If
the value of this property is "false", the rules defined in section 6.8.2.2.3 Serialization in the request
IRI [p.61] dictate how to serialize elements not cited in {http location [p.46] } in the request IRI.
Otherwise, those are NOT serialized in the request IRI.
When serializing an HTTP request that does not allow an HTTP message body, and when {http location
ignore uncited [p.60] } is "true", any element NOT cited in the {http location [p.46] } property MUST be
defined in the schema as nillable, or have a default value, or appear no less frequently than
specified by the minOccurs value. The element declaration SHOULD NOT combine a default value
with nillable. † [p.78]
The XML representation for this property is an attribute information item with the following Infoset
properties:
An OPTIONAL ignoreUncited attribute information item with the following Infoset properties:
A type of xs:boolean
60
6.8 Serialization Format of Instance Data
Table 6-7. Mapping from XML Representation to Binding Operation component Extension Properties
Property Value
{http location ignore The actual value of the whttp:ignoreUncited attribute information
uncited [p.60] } item, if present; otherwise, "false".
If the HTTP request method used does not allow HTTP message body (e.g. "GET" and "DELETE"), and if
the value of the {http location ignore uncited [p.60] } property is "false", then the following rules apply. †
[p.79]
If the {http location [p.46] } property is not present, or if it is present and its value does not contain a "?"
(question mark) character, a "?" is appended to the request IRI. If it does already contain a question mark
character, then the value of the {http query parameter separator [p.47] } property, if present, or the value
of the {http query parameter separator default [p.46] } property otherwise, is appended.
Finally, the query string computed in 6.8.2.2.1 Construction of the query string [p.59] is appended.
The instance data defined in Example 6-1 [p.60] with the following operation declaration:
<operation ref=’t:data’
whttp:location=’temperature/{town}’
whttp:method=’GET’ />
If the HTTP request method used does allow an HTTP message body (e.g. "POST" and "PUT"), then the
following rules apply. † [p.79]
Finally, the query string computed in 6.8.2.2.1 Construction of the query string [p.59] is used as the
value of the HTTP message body.
61
6.8 Serialization Format of Instance Data
Example 6-3. Instance data serialized in the HTTP Request IRI and message body
The instance data defined in Example 6-1 [p.60] with the following operation declaration:
<operation ref=’t:data’
whttp:inputSerialization=’application/x-www-form-urlencoded’
whttp:location=’temperature/{town}’
whttp:method=’POST’ />
date=2007-06-26&unit=C
The instance data [p.40] of the input, output or fault message is serialized as an XML document in the
message body of the HTTP message, following the serialization defined in [Canonical XML [p.70] ].
Therefore, it is only suitable for HTTP requests using methods allowing message bodies (i.e., for the
HTTP binding defined in this specification, input messages where the HTTP method selected has a body),
and for HTTP responses (i.e. output and fault messages for the HTTP binding defined in this
specification).
The Content-Type HTTP header MUST have the value application/xml [IETF RFC 3023
[p.69] ], or a media type compatible with application/xml as specified in section 6.4.3.1
Serialization rules for XML messages [p.43] . † [p.79] Other HTTP headers MAY be used.
62
6.8 Serialization Format of Instance Data
This format is for legacy compatibility to permit the use of XForms clients with [IETF RFC 2388 [p.69] ]
servers. This serialization format may only be used when binding Interface Operation components whose
{style} property has a value of "http://www.w3.org/ns/wsdl/style/multipart" as defined in 4.3 Multipart
style [p.18] , i.e. this serialization format may only be used to serialize the HTTP request corresponding to
the initial message of an interface operation. † [p.79]
Specifically, for the HTTP binding defined in this section (6. WSDL HTTP Binding Extension [p.39] ),
"multipart/form-data" MAY be used as a serialization format [p.42] for an input message (HTTP Request),
but MUST NOT be used as a serialization format [p.42] for an output or fault message (HTTP
Response). † [p.79] This format serializes the instance data in the HTTP message body, making it only
suitable for HTTP requests using methods allowing message bodies.
1. The Content-Disposition header MUST have the value form-data, and its name
parameter is the local name of the element. † [p.80]
text/plain if the element has a simple type; The charset MUST be set appropriately. UTF-8
or UTF-16 MUST be at least supported.
The instance data [p.40] MUST NOT contain elements with an xs:nil attribute whose value is "true". †
[p.80]
63
6.9 Specifying the Content Encoding
<operation ref=’t:data’
whttp:location=’temperature’
whttp:method=’POST’
whttp:inputSerialization=’multipart/form-data’/>
--AaB03x
Content-Disposition: form-data; name="town"
Content-Type: application/xml
<town>
<name>Fréjus</name>
<country>France</country>
</town>
--AaB03x
Content-Disposition: form-data; name="date"
Content-Type: text/plain; charset=utf-8
2007-06-26
--AaB03x--
The HTTP binding extension provides a mechanism for indicating a default value at the Binding
component and Binding Operation levels.
{http content encoding default} OPTIONAL. A xs:string to the Binding component. This property
indicates the default content encodings available for all Binding Message Reference and Binding
Fault components of this Binding.
{http content encoding default} OPTIONAL. A xs:string to the Binding Operation component. This
property indicates the default content encodings available for all Binding Message Reference of this
Binding Operation.
64
6.9 Specifying the Content Encoding
{http content encoding} OPTIONAL. A xs:string to the Binding Message Reference component.
This property indicates the content encodings available for this Binding Message Reference
component. If this property does not have a value, the value of the {http content encoding default
[p.64] } property of the parent Binding Operation component is used instead. If that itself has no
value, the value from the Binding Operation component’s parent Binding component is used instead.
<fault ref="xs:QName"
whttp:contentEncoding="xs:string"? >
</fault>*
<operation location="xs:anyURI"?
whttp:contentEncodingDefault="xs:string"? >
<input messageLabel="xs:NCName"?
whttp:contentEncoding="xs:string"? />
<output messageLabel="xs:NCName"?
whttp:contentEncoding="xs:string"? />
</operation>
</binding>
</description>
The XML representation for specifying the content encoding is an OPTIONAL attribute information item
for the input, output, and fault element information items with the following Infoset properties:
A type of xs:string
The XML representation for specifying the default content encoding is an OPTIONAL attribute
information item for the binding element information item or binding’s child operation element
information items with the following Infoset properties:
A type of xs:string
65
6.10 Specifying the Use of HTTP Cookies
Table 6-8. Mapping from XML Representation to Interface Message Reference component Extension
Properties
Property Value
{http content encoding default The actual value of the whttp:contentEncodingDefault
[p.64] } of the Binding attribute information item of the binding element information item, if
component present.
{http content encoding default The actual value of the whttp:contentEncodingDefault
[p.64] } of the Binding attribute information item of the operation element information item,
Operation component if present.
{http content encoding [p.65] The actual value of the whttp:contentEncoding attribute
} of the Binding Message information item of the input or output element information item, if
Reference component present.
{http content encoding [p.65]
The actual value of the whttp:contentEncoding attribute
} of the Binding Fault
information item of the fault element information item, if present.
component
66
6.11 Specifying HTTP Access Authentication
The XML representation for specifying the use of HTTP cookies is an OPTIONAL attribute information
item with the following Infoset properties:
A type of xs:boolean
Table 6-9. Mapping from XML Representation to Binding component Extension Properties
Property Value
The actual value of the whttp:cookies attribute information item; otherwise,
{http cookies
"false". A value of "true" means that the service relies on cookies and that the client
[p.66] }
MUST understand them. † [p.77]
This binding extension specification allows the authentication scheme and realm to be specified.
{http authentication scheme} OPTIONAL. A xs:token with one of the values "basic" or "digest", to
the Endpoint component, corresponding to the HTTP authentication scheme used. When present, this
property indicates the authentication scheme in use: "basic" indicates the Basic Access
Authentication scheme defined in [IETF RFC 2617 [p.69] ], and "digest" indicates the Digest Access
Authentication scheme as defined in [IETF RFC 2617 [p.69] ].
67
6.11 Specifying HTTP Access Authentication
The XML representation for specifying the use of HTTP access authentication is two OPTIONAL
attribute information items with the following Infoset properties:
A type of xs:token where the allowed token values are "basic" and "digest".
A type of xs:string
Table 6-10. Mapping from XML Representation to Endpoint component Extension Properties
Property Value
{http
The actual value of the whttp:authenticationScheme attribute
authentication
information item, if present.
scheme [p.67] }
{http The actual value of the whttp:authenticationRealm attribute information
authentication item, if present; otherwise, if the whttp:authenticationScheme attribute
realm [p.67] } information item is present, "" (the empty value).
68
7. References
6.12 Conformance
An element information item, whose namespace name is "http://www.w3.org/ns/wsdl" and whose local
part is description, conforms to this binding extension specification if: the element information items
and attribute information items, whose namespace is http://www.w3.org/ns/wsdl/http, conform to the
XML Schema for that element or attribute, as defined by this specification and, additionally, adheres to all
the constraints contained in this specification.
7. References
7.1 Normative References
[ISO/IEC 14977:1996]
Extended BNF, IS0 (the International Organization for Standardization) and IEC (the International
Electrotechnical Commission), Dec 1996. Available at
http://isotc.iso.org/livelink/livelink/fetch/2000/2489/Ittf_Home/PubliclyAvailableStandards.htm.
[IETF RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, Author. Internet Engineering
Task Force, March 1997. Available at http://www.ietf.org/rfc/rfc2119.txt.
[IETF RFC 2388]
Returning Values from Forms: multipart/form-data, L. Masinter, Author. Internet Engineering Task
Force, August 1998. Available at http://www.ietf.org/rfc/rfc2388.txt.
[IETF RFC 2616]
Hypertext Transfer Protocol -- HTTP/1.1, R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter,
P. Leach, T. Berners-Lee, Authors. Internet Engineering Task Force, June 1999. Available at
http://www.ietf.org/rfc/rfc2616.txt.
[IETF RFC 2617]
HTTP Authentication: Basic and Digest Access Authentication, J. Franks, P. Hallam-Baker, J.
Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart, June 1999. Available at
http://www.ietf.org/rfc/rfc2616.txt.
[IETF RFC 2818]
HTTP Over TLS, E. Rescorla, Author. Internet Engineering Task Force, May 2000. Available at
http://www.ietf.org/rfc/rfc2818.txt.
[IETF RFC 2965]
HTTP State Management Mechanism, D. Kristol, L. Montulli Authors. Internet Engineering Task
Force, October 2000. Available at http://www.ietf.org/rfc/rfc2965.txt.
[IETF RFC 3023]
XML Media Types, M. Murata, S. St. Laurent, D. Kohn, Authors. Internet Engineering Task Force,
January 2001. Available at http://www.ietf.org/rfc/rfc3023.txt.
[IETF RFC 3205]
On the use of HTTP as a Substrate, K. Moore, Authors. Internet Engineering Task Force, February
2002. Available at http://www.ietf.org/rfc/rfc3205.txt.
[IETF RFC 3986]
Uniform Resource Identifiers (URI): Generic Syntax, T. Berners-Lee, R. Fielding, L. Masinter,
Authors. Internet Engineering Task Force, January 2005. Available at
http://www.ietf.org/rfc/rfc3986.txt.
69
7.1 Normative References
70
7.2 Informative References
71
A. Acknowledgements (Non-Normative)
A. Acknowledgements (Non-Normative)
This document is the work of the W3C Web Service Description Working Group.
Members of the Working Group are (at the time of writing, and by alphabetical order): Charlton Barreto
(Adobe Systems, Inc), Allen Brookes (Rogue Wave Softwave), Dave Chappell (Sonic Software), Helen
Chen (Agfa-Gevaert N. V.), Roberto Chinnici (Sun Microsystems), Kendall Clark (University of
Maryland), Glen Daniels (Sonic Software), Paul Downey (British Telecommunications), Youenn Fablet
(Canon), Ram Jeyaraman (Microsoft), Tom Jordahl (Adobe Systems), Anish Karmarkar (Oracle
Corporation), Jacek Kopecky (DERI Innsbruck at the Leopold-Franzens-Universität Innsbruck, Austria),
Amelia Lewis (TIBCO Software, Inc.), Philippe Le Hegaret (W3C), Michael Liddy (Education.au Ltd.),
Kevin Canyang Liu (SAP AG), Jonathan Marsh (WSO2), Monica Martin (Sun Microsystems), Josephine
Micallef (SAIC - Telcordia Technologies), Jeff Mischkinsky (Oracle Corporation), Dale Moberg (Cyclone
Commerce), Jean-Jacques Moreau (Canon), David Orchard (BEA Systems, Inc.), Gilbert Pilz (BEA
Systems, Inc.), Tony Rogers (Computer Associates), Arthur Ryman (IBM), Adi Sakala (IONA
Technologies), Michael Shepherd (Xerox), Asir Vedamuthu (Microsoft Corporation), Sanjiva
Weerawarana (WSO2), Ümit Yalçınalp (SAP AG), Peter Zehler (Xerox).
Previous members were: Eran Chinthaka (WSO2), Mark Nottingham (BEA Systems, Inc.), Hugo Haas
(W3C), Vivek Pandey (Sun Microsystems), Bijan Parsia (University of Maryland), Lily Liu (webMethods,
Inc.), Don Wright (Lexmark), Joyce Yang (Oracle Corporation), Daniel Schutzer (Citigroup), Dave Solo
(Citigroup), Stefano Pogliani (Sun Microsystems), William Stumbo (Xerox), Stephen White (SeeBeyond),
Barbara Zengler (DaimlerChrysler Research and Technology), Tim Finin (University of Maryland),
Laurent De Teneuille (L’Echangeur), Johan Pauhlsson (L’Echangeur), Mark Jones (AT&T), Steve Lind
(AT&T), Sandra Swearingen (U.S. Department of Defense, U.S. Air Force), Philippe Le Hégaret (W3C),
Jim Hendler (University of Maryland), Dietmar Gaertner (Software AG), Michael Champion (Software
AG), Don Mullen (TIBCO Software, Inc.), Steve Graham (Global Grid Forum), Steve Tuecke (Global
Grid Forum), Michael Mahan (Nokia), Bryan Thompson (Hicks & Associates), Ingo Melzer
(DaimlerChrysler Research and Technology), Sandeep Kumar (Cisco Systems), Alan Davies
(SeeBeyond), Jacek Kopecky (Systinet), Mike Ballantyne (Electronic Data Systems), Mike Davoren (W.
W. Grainger), Dan Kulp (IONA Technologies), Mike McHugh (W. W. Grainger), Michael Mealling
(Verisign), Waqar Sadiq (Electronic Data Systems), Yaron Goland (BEA Systems, Inc.), Ümit
Yalçınalp (Oracle Corporation), Peter Madziak (Agfa-Gevaert N. V.), Jeffrey Schlimmer
(Microsoft Corporation), Hao He (The Thomson Corporation), Erik Ackerman (Lexmark), Jerry Thrasher
(Lexmark), Prasad Yendluri (webMethods, Inc.), William Vambenepe (Hewlett-Packard Company),
David Booth (W3C), Sanjiva Weerawarana (IBM), Asir Vedamuthu (webMethods, Inc.), Igor Sedukhin
72
B. Component Summary (Non-Normative)
The people who have contributed to discussions on [email protected] are also gratefully
acknowledged.
Table B-1. Summary of WSDL 2.0 Adjuncts Components and their Properties
Component Defined Properties
{http content encoding default [p.64] }, {http cookies [p.66] }, {http method
default [p.46] }, {http query parameter separator default [p.46] }, {soap mep
Binding
default [p.27] }, {soap modules [p.28] }, {soap underlying protocol [p.24] }, {soap
version [p.23] }
{http content encoding [p.65] }, {http error status code [p.54] }, {http headers
Binding Fault [p.51] }, {soap fault code [p.25] }, {soap fault subcodes [p.25] }, {soap headers
[p.32] }, {soap modules [p.28] }
Binding Fault
{soap modules [p.29] }
Reference
Binding Message {http content encoding [p.65] }, {http headers [p.50] }, {soap headers [p.31] },
Reference {soap modules [p.28] }
{http content encoding default [p.64] }, {http fault serialization [p.46] }, {http
input serialization [p.46] }, {http location [p.46] }, {http location ignore uncited
Binding Operation [p.60] }, {http method [p.46] }, {http output serialization [p.46] }, {http query
parameter separator [p.47] }, {soap action [p.27] }, {soap mep [p.27] }, {soap
modules [p.28] }
Endpoint {http authentication realm [p.67] }, {http authentication scheme [p.67] }
HTTP Header
{name [p.51] }, {parent [p.51] }, {required [p.51] }, {type definition [p.51] }
[p.51]
Interface Operation {rpc signature [p.15] }, {safe [p.12] }
SOAP Header {element declaration [p.32] }, {mustUnderstand [p.32] }, {parent [p.32] },
Block [p.32] {required [p.32] }
SOAP Module
{parent [p.29] }, {ref [p.29] }, {required [p.29] }
[p.29]
Property Where Defined
73
B. Component Summary (Non-Normative)
element
SOAP Header Block.{element declaration [p.32] }
declaration
http authentication
Endpoint.{http authentication realm [p.67] }
realm
http authentication
Endpoint.{http authentication scheme [p.67] }
scheme
http content Binding Fault.{http content encoding [p.65] }, Binding Message Reference.{http
encoding content encoding [p.65] }
http content Binding.{http content encoding default [p.64] }, Binding Operation.{http content
encoding default encoding default [p.64] }
http cookies Binding.{http cookies [p.66] }
http error status
Binding Fault.{http error status code [p.54] }
code
http fault
Binding Operation.{http fault serialization [p.46] }
serialization
Binding Fault.{http headers [p.51] }, Binding Message Reference.{http headers
http headers
[p.50] }
http input
Binding Operation.{http input serialization [p.46] }
serialization
http location Binding Operation.{http location [p.46] }
http location ignore
Binding Operation.{http location ignore uncited [p.60] }
uncited
http method Binding Operation.{http method [p.46] }
http method default Binding.{http method default [p.46] }
http output
Binding Operation.{http output serialization [p.46] }
serialization
http query
parameter Binding Operation.{http query parameter separator [p.47] }
separator
http query
parameter Binding.{http query parameter separator default [p.46] }
separator default
mustUnderstand SOAP Header Block.{mustUnderstand [p.32] }
name HTTP Header.{name [p.51] }
74
C. Assertion Summary (Non-Normative)
75
C. Assertion Summary (Non-Normative)
76
C. Assertion Summary (Non-Normative)
77
C. Assertion Summary (Non-Normative)
78
C. Assertion Summary (Non-Normative)
79
C. Assertion Summary (Non-Normative)
80
C. Assertion Summary (Non-Normative)
81
C. Assertion Summary (Non-Normative)
82
C. Assertion Summary (Non-Normative)
83
C. Assertion Summary (Non-Normative)
For each pair (q, #in), there MUST be a child element of the input
WRPC-2046 [p.15] element with a name of q. There MUST NOT be a child element
of the output element with the name of q.
For each pair (q, #out), there MUST be a child element of the
WRPC-2047 [p.15] output element with a name of q. There MUST NOT be a child
element of the input element with the name of q.
For each pair (q, #inout), there MUST be a child element of the
WRPC-2048 [p.15] input element with a name of q. There MUST also be a child
element of the output element with the name of q.
For each pair (q, #return), there MUST be a child element of the
WRPC-2049 [p.15] output element with a name of q. There MUST NOT be a child
element of the input element with the name of q.
84
C. Assertion Summary (Non-Normative)
85