W3C home > Mailing lists > Public > www-ws-desc@w3.org > September 2003

Updating WSDL Component Designators

From: Jonathan Marsh <jmarsh@microsoft.com>
Date: Mon, 15 Sep 2003 13:06:02 -0700
Message-ID: <DF1BAFBC28DF694A823C9A8400E71EA201211DA0@RED-MSG-30.redmond.corp.microsoft.com>
To: <www-ws-desc@w3.org>

Appendix C [1] of our spec describes a mechanism for assigning URIs to
WSDL components using fragment identifiers to combine the
targetNamespace with an XPointer-like component identifier.  The
technical problems with this approach were referred to the TAG [2].  The
heart of the issue is the inappropriateness of using fragment
identifiers in conjunction with abstract URIs such as namespaces.  By
abstract I mean URIs without an expectations that dereferencing will
return a representation of a resource.

To avoid that problem, I propose using the query component of URI [3]
instead of fragment identifiers.  The syntax would be:

  <targetNamespace>?wsdl-<componentName>=<path1>.<path2>.<path3>

Note that this is not recursive, nor accommodates target namespaces with
query parameters in it.  If these are desirable, the algorithm could
look for a query component '?' and if one exists, use ':' as a delimiter
instead:

  <targetNamespace>;wsdl-<componentName>=<path1>.<path2>.<path3> if the
targetNamespace does contain a query component.

Here's what such a proposal would do to the URIs in example C-2 [1]:

http://airline.wsdl/ticketagent/?wsdl-interface=TicketAgent 
http://airline.wsdl/ticketagent/?wsdl-operation=TicketAgent.listFlights 
http://airline.wsdl/ticketagent/?wsdl-input=TicketAgent.listFlights.list
FlightsRequest
http://airline.wsdl/ticketagent/?wsdl-output=TicketAgent.listFlights.lis
tFlightsResponse 
http://airline.wsdl/ticketagent/?wsdl-operation=TicketAgent.reserveFligh
t 
http://airline.wsdl/ticketagent/?wsdl-input=TicketAgent.reserveFlight.re
serveFlightRequest
http://airline.wsdl/ticketagent/?wsdl-output=TicketAgent.reserveFlight.r
eserveFlightResponse

With the additional recursive functionality, and if the targetNamespace
for some reason was a WSDL Component Designator such as
"http://airline.wsdl/ticketagent/?wsdl-interface=TicketAgent", here's
what you'd get:

http://airline.wsdl/ticketagent/?wsdl-interface=TicketAgent;wsdl-input=s
omething

And if the targetNamespace already had a query param, like
"http://airline.wsdl/ticketagent?wsdl", you'd get:

http://airline.wsdl/ticketagent?wsdl;wsdl-interface=TicketAgent

I think this mechanism is reversible.  Comments?

[1]
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl12/wsdl12.html#wsdl
-uri-references
[2] http://lists.w3.org/Archives/Public/www-tag/2003Feb/0042.html
[3] http://www.ietf.org/rfc/rfc2396.txt
Received on Monday, 15 September 2003 16:06:40 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:26 GMT