- From: Jonathan Marsh <jmarsh@microsoft.com>
- Date: Tue, 17 May 2005 16:42:12 -0700
- To: "Arthur Ryman" <ryman@ca.ibm.com>, "Hugo Haas" <hugo@w3.org>
- Cc: <www-ws-desc@w3.org>, <www-ws-desc-request@w3.org>
- Message-ID: <7DA77BF2392448449D094BCEF67569A507955762@RED-MSG-30.redmond.corp.microsoft.com>
Casting Hugo's option 2 into the existing wsdl.extension mechanism: wsdl.extension <http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/wsdl20.html?con tent-type=text/html;%20charset=utf-8#wsdl.extension#wsdl.extension> (extension-namespace, extension-specific-syntax) wsoap:header: extension-namespace = http://www.w3.org/@@@@/@@/wsdl/soap extension-specific-syntax = header(parent/element)) where: - parent: Pointer Part - element: {element} QName (xmlns pointer part required to define namespace part) Example: http://example.org/TicketAgent.wsdl20#xmlns(x=http://example.org/myns)ws dl.extension(http://www.w3.org/@@@@/@@/wsdl/soap,header(bindingFault(myb inding/myfault)/x:foo)) whttp:header: same as wsoap:header, except extension-namespace = http://www.w3.org/@@@@/@@/wsdl/http Example: http://example.org/TicketAgent.wsdl20#xmlns(x=http://example.org/myns)ws dl.extension(http://www.w3.org/@@@@/@@/wsdl/soap,header(bindingFault(myb inding/myfault)/x:foo)) wsoap:module: extension-namespace = http://www.w3.org/@@@@/@@/wsdl/soap extension-specific-syntax = module(parent/element)) where: - parent: Pointer Part - element: {uri} URI (now IRI) Example: http://example.org/TicketAgent.wsdl20#wsdl.extension(http://www.w3.org/@ @@@/@@/wsdl/soap,module(bindingFault(mybinding/myfault)/http://example.o rg/SoapModuleURI)) That seem about right? ________________________________ From: www-ws-desc-request@w3.org [mailto:www-ws-desc-request@w3.org] On Behalf Of Arthur Ryman Sent: Friday, May 13, 2005 10:36 AM To: Hugo Haas Cc: www-ws-desc@w3.org; www-ws-desc-request@w3.org Subject: Re: LC80: frag id extensions for wsoap:header, whttp:header, wsoap:module Hugo, There is already an generic escape hatch for extension fragments [1]. This is like your #2 but uses two arguments: one is the extension URI, the other is defined by the extension. [1] http://www.w3.org/TR/2005/WD-wsdl20-20050510/#wsdl.extension Arthur Ryman, Rational Desktop Tools Development phone: +1-905-413-3077, TL 969-3077 assistant: +1-905-413-2411, TL 969-2411 fax: +1-905-413-4920, TL 969-4920 mobile: +1-416-939-5063, text: 4169395063@fido.ca intranet: http://labweb.torolab.ibm.com/DRY6/ Hugo Haas <hugo@w3.org> Sent by: www-ws-desc-request@w3.org 05/11/2005 11:04 PM To www-ws-desc@w3.org cc Subject LC80: frag id extensions for wsoap:header, whttp:header, wsoap:module As per my action item, I have been thinking about defining fragment identifiers for the modules that we define in Part 2. However, the following issue crossed my mind: in order to have meaningful fragment identifiers, they need to be defined for a particular Internet media type. This is what we are doing in Part 1 for application/wsdl+xml. However, Part 2 defines extensions of WSDL 2.0, and other specs will be defining similar extensions that may in turn define WSDL 2.0 components and that will need a fragment identifier. We will not be able to define all those fragment identifiers in our application/wsdl+xml media type declaration in Part 1. I see three ways forward: 1. change the way we build our URI references; e.g. have an XPointer syntax that is generic enough that we can use it in an extensible way: e.g. http://example.org/TicketAgent.wsdl20#wsdl.interface(TicketAgent) http://example.org/TicketAgent.wsdl20#wsdl.feature(wsdl.interface(Ticket Agent)/http://example.com/secure-channel) could become: http://example.org/TicketAgent.wsdl20#wsdl.id(interface(TicketAgent)) http://example.org/TicketAgent.wsdl20#wsdl.id(feature(wsdl.interface(Tic ketAgent)/http://example.com/secure-channel)) i.e.: http://example.org/TicketAgent.wsdl20#wsdl.id(<whatever>) 2. keep the current syntax, but add an extensibility point for extensions: http://example.org/TicketAgent.wsdl20#wsdl.extension(<whatever>) 3. keep the status quo and not allow for extension components to be identified with a URI. 1 is more symmetrical than 2, but I don't think that I have a real preference between them. 3 seems to go against our requirement R120. However, considering the first two solutions, it seems that this brings additional issues on the table: if I find something I don't know in either #wsdl.id() or #wsdl.extension(), how do I know what this means? We would probably need to have some rules for defining identifiers, and have some text about when you get something you don't know. This is similar to XPointer schemes: we're defining such a scheme, and people may define additional syntax for it. Now, with such a mechanism, identifying the components defined in Part 2 could be done with the following syntax: * wsoap:header: <whatever> = wsoap.header(parent/element) with: - parent: Pointer Part - element: {element} QName serialized as <namespace URI>#<local name> Example: - Proposal 1: http://example.org/TicketAgent.wsdl21#wsdl.id(wsoap.header(bindingFault( mybinding/myfault)/http://example.org/myns#foo)) - Proposal 2: http://example.org/TicketAgent.wsdl20#wsdl.extension(wsoap.header(wsdl.b indingFault(mybinding/myfault)/http://example.org/myns#foo)) * whttp:header: same as wsoap:header * wsoap:module: <whatever> = wsoap.module(parent/uri) with: - parent: Pointer Part - element: {uri} URI (now IRI) I am afraid that the syntax for extensions is starting to be fairly complex, with 3 levels of parenthesis. Cheers, Hugo -- Hugo Haas - W3C mailto:hugo@w3.org - http://www.w3.org/People/Hugo/
Received on Tuesday, 17 May 2005 23:42:30 UTC