Issue 17: support for SOAP role attribute

I took a todo to provide a resolution for issue 17.

Issue

The issue, as raised by Simon Fell [1], is that there is no way
to specify the "role" attribute for a SOAP header block. For the
record, the SOAP "role" [2] AII is used to target a SOAP header
block to a particular SOAP node along the SOAP message path.

Discussion summary

Sanjiva has pointed out [3] that a SOAP role can be specified
indirectly via a WSDL schema, but that this does not work for
complex types.

Matt Long has proposed [4] to add a "soap:role" AII to the
"soap:header" EII. Simon Fell has suggested [5] a value of type
"anyURI".

Matt Long has later suggested [6] to decouple the role from any
specific header to which it applies, and to list instead in a
WSDL file all the roles supported by a specific binding/endpoint
(a SOAP node in the SOAP terminology).

Personally, I think this is wrong, since a SOAP header block is
not targeted at any random SOAP node, but at a very specific SOAP
node. As far as I understand Matt's proposal, it essentially
allows a SOAP client to pick and choose the role for a header
block from the list offered by a server. So, for example, a
client could choose to target a caching block to a
".../securityManager" role instead of ".../cacheManager" role,
assuming the server supports both roles.

Proposal

I suggest that we go with Matt's original proposal [4] as amended
by Simon [5]. I.e. that we introduce a mandatory soap:role AII on
each soap:header.

Changes to the spec

Example 1

Update the example

* <soap:header message="tns:SubscribeToQuotes"
part="subscribeheader" use="literal"
role="http://www.w3.org/2002/soap-envelope/role/ultimateReceiver"/>

Section 2.2

Update the grammar for <input> and <output>

* <soap:header message="qname" part="nmtoken"
use="literal|encoded"
                                        encodingStyle="uri-list"?
namespace="uri"
                                        role="uri"?>*
* <soap:header message="qname" part="nmtoken"
use="literal|encoded"
                                        encodingStyle="uri-list"?
namespace="uri"
                                        role="uri"?>*

Section 2.7

Update the grammar as above, for both <input> and <output>

Insert the text below between the penultimate and ultimate
paragraph for that section.

* The soap:role attribute information item identifies the SOAP
role to which a SOAP header block is targeted. The soap:role
attribute information item has:
   - A [local name] of role.
   - A [namespace name] of
   - A [specified] property with a value of "true".
The type of the role attribute information item is anyURI in the
namespace named "http://www.w3.org/2001/XMLSchema". The value of
the role attribute information item is a URI that names a role
that a SOAP node can assume.
Omitting the SOAP role attribute information item is equivalent
to indicating value of
"http://www.w3.org/2001/12/soap-envelope/role/ultimateReceiver".
An empty value is equivalent to omitting the attribute
completely, i.e. targeting the SOAP header block to an ultimate
SOAP receiver.

Jean-Jacques.

[1] http://www.w3.org/2002/ws/desc/2/06/issues.html#x17
[2]
http://www.w3.org/2000/xp/Group/1/10/11/soap12-part1.html#targettingblocks

[3] http://groups.yahoo.com/group/wsdl/message/641
[4] http://groups.yahoo.com/group/wsdl/message/643
[5] http://groups.yahoo.com/group/wsdl/message/645
[6] http://groups.yahoo.com/group/wsdl/message/646

Received on Wednesday, 26 June 2002 09:27:31 UTC