- From: Jonathan Marsh <jmarsh@microsoft.com>
- Date: Mon, 15 Sep 2003 13:06:02 -0700
- 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 UTC