Resolution of issue 195

I have the responsibility of reporting on the resolution of issue 195 
from the last teleconference.

I have not had the time to focus and produce complete text that 
incorporates all the related clean-up, especially that proposed by Jacek 
Kopecky.[1]  I repeatedly refer back to his proposal as a basis because 
there is much there that should not be lost.  Performing that entire 
update is a bigger task, and even his proposal has not specifically 
given all the wording of this essential cleanup.

The agreement on the resolution of 195 focuses on a small contentious 
part as identified by Jacek[1].  Instead of either requiring a fixed 
namespaceURI/name element for the return value, which negatively affects 
the ability to use schema to describe the types of arguments of a rpc 
call (issue 195), or just not identifying the return value at all, the 
return value is by the resolution now identified in the return struct as 
follows:

The fixed namespaceURI/name, if present in the struct, contains the 
qname of the another actual struct member which is the return value, 
which will always be unique within the struct.  If the fixed 
namespaceURI/name is not present then there was no return value (void 
return).

Here are examples of the return of an RPC call which returns two out 
arguments a and b and one actual return value which has a value of 
"rval".  first I show how those would look under the two parts of 
Jacek's proposal, and then under the adopted resolution of issue 195.

First part of Jacek's proposal, with the special fixed namespaceURI/name 
used by the return value
<...>
<foo:bar>
<rpc:result>rval</rpc:result>
<a>one</a>
<b>two</b>
</foo:bar>
<...>

Second part of Jacek's proposal, with no special namespaceURI/name used 
to identify the return value
<...>
<foo:bar>
<r>rval</r>
<a>one</a>
<b>two</b>
</foo:bar>
<...>

The adopted resolution, which uses the special fixed namespaceURI/name 
to contain the qname of the return, roughly half-way between Jacek's 
part one and part two.
<...>
<foo:bar>
<rpc:result>r</rpc:result>
<r>rval</r>
<a>one</a>
<b>two</b>
</foo:bar>
<...>

Notice that the special fixed namespaceURI/namespace element now 
contains the qname of the return value instead of being the return 
value.  The actual return value is an element like any other return 
value that can have its own schema type.  The fixed namespace/name 
element is now clearly of a fixed type containing a qname, with the 
constraint that it must be the qname of one of the struct accessors, 
which we already know are unique within a struct.  Using this technique, 
it is also possible to use SOAP encoding names for types, as follows:

<...>
<foo:bar>
<rpc:result>enc:string</rpc:result>
<enc:string>rval</enc:string>
<a>one</a>
<b>two</b>
</foo:bar>
<...>

I apologize for not offering a more complete description incorporating 
all of the exact changes required in the specification integrated with 
Jacek's proposed clarifications.  I may be able to offer this later, but 
I didn't want others to be waiting on me when I was able to more quickly 
give this simpler explanation relating specifically to the resolution of 
195 adopted in the teleconference.

Thanks,

Ray Whitmer
rayw@netscape.com

[1] http://lists.w3.org/Archives/Public/xml-dist-app/2002Apr/0236.html

Received on Tuesday, 14 May 2002 07:50:12 UTC