- From: Don Box <dbox@microsoft.com>
- Date: Wed, 5 Mar 2003 07:01:28 -0800
- To: "Marc Hadley" <Marc.Hadley@Sun.COM>, "Rich Salz" <rsalz@datapower.com>
- Cc: "Jonathan Marsh" <jmarsh@microsoft.com>, <xml-dist-app@w3.org>
+1
Marc nailed it IMO. A small set of types and/or conventions go a long way here.
DB
________________________________
From: Marc Hadley [mailto:Marc.Hadley@Sun.COM]
Sent: Wed 3/5/2003 6:31 AM
To: Rich Salz
Cc: Jonathan Marsh; xml-dist-app@w3.org
Subject: Re: WSDL 1.2 drops use="encoded"
On Sunday, Mar 2, 2003, at 21:32 America/Boston, Rich Salz wrote:
>
> 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, you are indeed correct.
> 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.
>
Note that the SOAP encoding schema includes a set of simple types for
just this purpose, e.g.
<xs:attributeGroup name="commonAttributes" >
<xs:annotation>
<xs:documentation>
Attributes common to all elements that function as accessors or
represent independent (multi-ref) values. The ref attribute is
intended to be used in a manner like CONREF. That is, the
element
content should be empty iff the ref attribute appears
</xs:documentation>
</xs:annotation>
<xs:attribute ref="tns:id" />
<xs:attribute ref="tns:ref" />
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:attributeGroup>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="ref" type="xs:IDREF" />
<xs:element name="string" type="tns:string" />
<xs:complexType name="string" >
<xs:simpleContent>
<xs:extension base="xs:string" >
<xs:attributeGroup ref="tns:commonAttributes" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
So for simple types you can use the SOAP encoding variants. For complex
types you can re-use the attributeGroup. Not a perfect solution but
better than nothing.
Marc.
--
Marc Hadley <marc.hadley@sun.com>
Web Technologies and Standards, Sun Microsystems.
Received on Wednesday, 5 March 2003 10:01:44 UTC