- From: Sanjiva Weerawarana <sanjiva@watson.ibm.com>
- Date: Thu, 20 May 2004 19:57:49 +0600
- To: <www-ws-desc@w3.org>
I'd like to make an alternate proposal for collapsing the bindings.
The basic idea is to avoid repeating similarly named elements in the
wsoap: namespace if one exists in the wsdl: namespace. This can be
achieved by using qualified attributes and placing them on the
corresponding wsdl: namespaced element and eliminating the wsoap:
namespaced element.
Here's what our binding looks like now:
<binding name="xs:NCName" interface="xs:QName"? >
<documentation />?
<wsoap:binding protocol="xs:anyURI"
mepDefault="xs:anyURI"?
webMethodDefault="xs:string"? />
<wsoap:module uri="xs:anyURI" required="xs:boolean"? >
<property ... />?
</wsoap:module>*
<feature ... />*
<property ... />*
<fault ref="xs:QName"
wsoap:code="xs:QName"
wsoap:subcodes="list of xs:QName" />
<documentation />?
</fault>*
<operation ref="xs:QName" >
<documentation />?
<wsoap:module ... />*
<wsoap:operation mep="xs:anyURI"?
webMethod="xs:string"?
action="xs:anyURI"? />?
<input messageLabel="xs:NCName"? >
<documentation />?
<wsoap:module ... />*
<feature ... />*
<property ... />*
</input>*
<output messageLabel="xs:NCName"? >
<documentation />?
<wsoap:module ... />*
<feature ... />*
<property ... />*
</output>*
</operation>*
</binding>
<service>
<endpoint name="xs:NCName" binding="xs:QName" >
<documentation />?
<wsoap:address location="xs:anyURI" />
<endpoint>
</service>
Note that the <fault> element contains some attributes from the
wsoap: namespace already .. that's actually beyond what the WG
has agreed to already (JJM go a bit edit happy apparently ;-)).
I propose we change this to:
<binding name="xs:NCName" interface="xs:QName"?
wsoap:protocol="xs:anyURI"
wsoap:mepDefault="xs:anyURI"?
wsoap:webMethodDefault="xs:string"? >
<documentation />?
<wsoap:module uri="xs:anyURI" required="xs:boolean"? >
<property ... />?
</wsoap:module>*
<feature ... />*
<property ... />*
<fault ref="xs:QName"
wsoap:faultCode="xs:QName"
wsoap:faultSubcodes="list of xs:QName" >
<documentation />?
</fault>*
<operation ref="xs:QName"
wsoap:mep="xs:anyURI"?
wsoap:webMethod="xs:string"?
wsoap:action="xs:anyURI"? >
<documentation />?
<wsoap:module ... />*
<input messageLabel="xs:NCName"? >
<documentation />?
<wsoap:module ... />*
<feature ... />*
<property ... />*
</input>*
<output messageLabel="xs:NCName"? >
<documentation />?
<wsoap:module ... />*
<feature ... />*
<property ... />*
</output>*
</operation>*
</binding>
<service>
<endpoint name="xs:NCName" binding="xs:QName"
wsoap:address location="xs:anyURI" >
<documentation />?
<endpoint>
</service>
Let's consider an example. Consider an interface "foo" with operations
"bar" and "baz" and one fault "fooey." A binding for SOAP/HTTP which
wishes to specify per-operation soapAction values and no per-input/
output bindig details (which IMO is the likely case with WSDL 2.0)
will look like this:
<binding name="b1" interface="x:foo">
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/">
<fault ref="x:fooey" wsoap:faultCode="y:whatever"/>
<operation ref="x:bar" wsoap:action="some-uri-that-I-want" />
<operation ref="x:baZ" wsoap:action="some-other-uri-that-I-want" />
</binding>
The corresponding <service> declaraction could look like this:
<service interface="x:foo">
<endpoint name="e1" binding="x:b1"
wsoap:address location="http://example.com/soapserver"/>
</service>
Sanjiva.
Received on Thursday, 20 May 2004 10:00:29 UTC