RE: LC80: frag id extensions for wsoap:header, whttp:header, wsoap:module

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