i047: Absolute vs relative URIs

On Jan 26, 2005, at 10:52 AM, Marc Hadley wrote:
>
> I took an action at the last F2F to raise an issue about absolute vs 
> relative URIs in message addressing properties. The following message 
> addressing properties are URIs: [destination], [action], [message id], 
> [relationship/relatesto], [relationship/type]. In addition the message 
> addressing properties [source endpoint], [reply endpoint] and [fault 
> endpoint] each contain [address] properties that are also URIs.
>
> SOAP 1.2 describes a set of conventions for use of URIs in SOAP 
> messages[1] and recommends (in the RFC 2119 sense) that 
> "application-defined data carried within a SOAP envelope use the same 
> mechanisms and guidelines". I think this applies to addressing 
> headers.
>
> WS-Addressing should define which properties MUST be serialized in 
> SOAP messages as absolute URIs and which may be relative and subject 
> to the convention defined by SOAP.
>
I took an action to make a concrete proposal for this issue. My 
suggested resolution hinges on whether its possible to establish a 
useful base URI for the properties in the SOAP message or not. Recall 
that all of these URIs are serialized in SOAP messages as part of SOAP 
header blocks:

<env:SOAP>
   <env:Header>
     <wsa:To>[destination]</wsa:To>
     <wsa:Action>[action]</wsa:Action>
     <wsa:MessageID>[message id]</wsa:MessageID>
     <wsa:RelatesTo RelationshipType="[relationship/type]">
       [relationship/relates to]
     </wsa:RelatesTo>
     <wsa:ReplyTo>
       <wsa:Address>[reply endpoint/address]</wsa:Address>
     </wsa:ReplyTo>
     <wsa:FaultTo>
       <wsa:Address>[fault endpoint/address]</wsa:Address>
     </wsa:FaultTo>
     <wsa:From>
       <wsa:Address>[source endpoint/address]</wsa:Address>
     </wsa:From>
   </env:Header>
   <env:Body>
   </env:Body>
</env:SOAP>

The properties are grouped below by the possibility that they might 
share a common base URI:

(i) [reply endpoint/address], [fault endpoint/address], [source 
endpoint/address], [message id] (possibly)
(ii) [destination], [relationship/relates to]
(iii) [relationship/type], [destination] (when anonymous)

The base URI for group (ii) might be established by the protocol 
binding. The SOAP 1.2 HTTP binding establishes a base URI that is the 
HTTP Request-URI or the value of the HTTP Content-Location header 
field[3].

A base URI for groups (i), (ii) or (iii) could be established using 
xml:base[4], however the xml:base attribute would need to be in scope 
for all of the intended properties and would therefore need to be put 
on either the env:Header or env:Envelope (there's little point putting 
it on each individual header, one might just as well use an absolute 
URI instead). Use of xml:base on the envelope or header would override 
any base URI established by the protocol binding so its not possible to 
use xml:base for one group of properties and the protocol binding for 
another.

Taking the above into account I'd suggest that base URIs are most 
useful when serializing the [*/address] and [destination] properties. I 
therefore propose that we require (in the SOAP binding document) that 
the following properties are serialized as absolute URIs in the 
corresponding infoset representation: [action], [message id], 
[relationship/relates to] and [relationship/type]. I further propose 
that the remaining URIs ([destination], [source endpoint/address], 
[reply endpoint/address] and [fault endpoint/address]) may be relative 
and if so are subject to the standard SOAP rules for converting to 
absolute URIs.

Marc.

>
> [1] http://www.w3.org/TR/2003/REC-soap12-part1-20030624/#useofuris
> [2] http://www.w3.org/2002/ws/addr/wd-issues/#i046
[3] http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#soapinhttp
[4] http://www.w3.org/TR/2001/REC-xmlbase-20010627/

---
Marc Hadley <marc.hadley at sun.com>
Web Technologies and Standards, Sun Microsystems.

Received on Friday, 4 February 2005 16:29:58 UTC