W3C home > Mailing lists > Public > xml-dist-app@w3.org > March 2003

Re: WSDL 1.2 drops use="encoded"

From: Jacek Kopecky <jacek@systinet.com>
Date: 06 Mar 2003 21:19:17 -0500
To: Sanjiva Weerawarana <sanjiva@watson.ibm.com>
Cc: Rich Salz <rsalz@datapower.com>, XMLP Dist App <xml-dist-app@w3.org>
Message-Id: <1046986560.1926.33.camel@localhost.localdomain>

I have been fighting to make sure that WSDL 1.2 supports other type
systems than XML Schema type system. The dropping of use="encoded" does
not mean that one must use XML Schema to describe SOAP Encoding data
with all the ensuing complexity or restrictions.

It is true that the message must exactly match the message schema now,
but that schema needn't be an XML Schema schema!

An example of WSDL using SOAP Encoding:

<definitions xmlns:tns="http://example.org"
             xmlns:ses="http://jacek.cz/SOAPDataModelSchemaLanguage"
             targetNamespace="http://example.org">
  <types>
    <ses:schema targetNamespace="http://example.org/">
      <ses:simpleValueType name="StringType" xmlSchemaType="xs:string"/>
      <ses:simpleValueType name="IntType" xmlSchemaType="xs:integer"/>
    </ses:schema>
  </types>
  <message name="Message">
    <part name="a" ses:type="tns:StringType"/>
    <part name="b" ses:type="tns:StringType"/>
  </message>
  <message name="Message2">
    <part name="result" ses:type="tns:IntType"/>
  </message>
  <portType name="FooInterface">
    <operation name="foo">
      <input message="tns:Message">
      <output message="tns:Message2">
    </operation>
  </portType>
  <binding name="FooBinding" type="tns:FooInterface">
    <soap:binding ...>
    <operation name="foo">
      <input>
        <soap:body encodingStyle="...soapEncoding..." style="rpc">
      </input>
      ...
    </operation>
  </binding>
  ...
</definitions>

In the actual messages, the a and b parameters can share the string with
no problem _because SOAP Data Model permits it_ and because SOAP RPC is
based on SOAP Data Model:

<SOAP:Body>
  <foo ...>
    <a enc:id="a">shared string</a>
    <b enc:ref="a"/>
  </foo>
</SOAP:Body>

This message piece exactly follows the schemas in the WSDL. Basically,
use="literal".

The only problem is that in order to be able to use SOAP Encoding,
somebody has to come up with a (potentially quite simple) SOAP Data
Model Schema Language. I've been saying this for at least a year now.
Does anyone want to go to XMLP WG or to WS-Desc WG and ask them to do
this? 8-)

Best regards,

                   Jacek Kopecky
                   Systinet Corporation
                   http://www.systinet.com/


On Mon, 2003-03-03 at 11:51, Sanjiva Weerawarana wrote:
> Hi Rich,
> 
> > The definitive tone of Don's message made me go back and re-read the
> > proposal.  I still think I'm right.  If only "literal" is supported, than
> > the message schema must exactly describe the message: no multiref strings,
> > etc., unless explicit encoded into the schema.  Is that correct?
> 
> Yes.
> 
> > If I have an operation
> >     int foo(const char* a, const char* b)
> > then using SOAP encoding, the body would look like
> >    <SOAP:Body>
> >     <foo xmlns="....">
> >      <a href="#b"/>
> >      <b>cloned string</b>
> >    </foo>
> >
> > But the schema would look like foo as a complex element with sub-elements
> > a and b as xsd:string.
> >
> > Doesn't this become impossible with "encoded" is dropped?  Even if "this"
> > just means the paragraph before this one?
> 
> Yes - the argument was that if if graph structures are to be serialized
> then it must be done so by picking a serialization in the schema. IMHO
> that's lousy and stinks, but that's the decision. It actually originated
> in WS-I when it picked doc/lit (and rpc/lit? - not sure) as the supported
> approaches.
> 
> Sanjiva.
> 
Received on Friday, 7 March 2003 03:48:32 GMT

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