[soaptf] style, use, encodingStyle

I took an action item at the first soaptf telcon
to review the WSDL 1.1 "style", "use" and "encodingStyle"
attributes and propose necessary generalizations to
cover SOAP 1.2 bindings.
I also have some reasoning about the implicit/explicit
linkage of the WSDL SOAP binding to SOAP 1.1 and 1.2.

[soaptf] style, use, encodingStyle Attribbutes
==============================================

soap:binding
------------

The SOAP WSDL binding schema has no explicit reference to
a specific version of SOAP (except for a namespace declaration
xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope" which
is never used and thus redundant). The assumption that SOAP 1.1
is meant is implicit.
   
If we assume that for each version of SOAP there is
a corresponding WSDL SOAP binding schema, this is not a problem.
However, it is at least clearer, if a given WSDL SOAP binding
is explicitely associated with the SOAP version it corresponds. 
In order to distinguish between different SOAP bindings (SOAP 1.1,
SOAP 1.2 and future versions) an explicit reference to the
respective version of SOAP seems appropriate.

Choices:
a. in the WSDL SOAP binding schema; implicit as in WSDL 1.1 or explicit,
e.g.
    for SOAP 1.1:
    <import namespace="http://schemas.xmlsoap.org/soap/envelope">
    for SOAP 1.2:
    <import namespace="http://www.w3.org/2002/06/soap-envelope">
b. in the WSDL document, e.g. using a new attribute "envelope",
    for SOAP 1.1:
    <soap:binding envelope="http://schemas.xmlsoap.org/soap/envelope"...>
    for SOAP 1.2:
    <soap:binding envelope="http://www.w3.org/2002/06/soap-envelope"...>

If the WSDL document (not the schema) explicitely specifies the used
version of SOAP, this would give us a chance to to have a common WSDL
SOAP 1.1 and 1.2 binding schema.

Proposal: let the WSDL document specify the required version of SOAP
          (choice b). 

style attribute
---------------

The WSDL 1.1 (optional) soap:style attribute (for binding and operation
elements) has two possible values, "rpc" and "document". The binding of
these values to SOAP 1.1 style RPC or document format is implicit.

SOAP 1.2 defines a URI which uniquely defines the SOAP 1.2 RPC,
"http://www.w3.org/2002/06/soap-rpc". Using URIs as values for
the style attribute would allow for explicitely identifying the
RPC style, be it the default RPC defined by SOAP or a custom one.

Proposal:
  for SOAP 1.1:
  <soap:binding ... style="rpc">
  for SOAP 1.2:
  <soap:binding ... style="http://www.w3.org/2002/06/soap-rpc">

Related SOAP 1.2 feature: Web method specification feature,
http://www.w3.org/2002/06/soap/features/web-method/.

See also: issues 27, 40.

encodingStyle attribute
-----------------------

The possible values for the encodingStyle attribute (soap:body, soap:header
and soap:headerfault element) is a list of anyURI in SOAP 1.1 and a single
anyURI in SOAP 1.2 (see issue 30).

Thought: why not using the definition of this attribute from
the SOAP envelope schema, e.g.
  <attibute ref="soap-env:encodingStyle" ...>

Proposal:
  For SOAP 1.2 encodingStyle values must be a single URI or an empty string
  to denote no special encoding (literal XML).
  Usage examples:
  <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding" ...>
  <soap:body encodingStyle="http://www.w3.org/2002/06/soap-encoding" ...>

See also: issues 5, 30.

use attribute
-------------

The "use" attribute (soap:body, soap:header and soap:headerfault element)
has possible values: "literal" and "encoded". The following combinations
of style/use are possible:
  document/literal - makes sense
  document/encoded - makes sense (e.g. for documents using the SOAP data
model)
  rpc/literal      - does this make sense? SOAP 1.2 RPC requires SOAP Struct
                     and Array
  rpc/encoded      - makes sense (rpc even requires encoded)

Given that there can be used different encoding styles, and when
use="encoded"
also encodingStyle="..." has to be specified, isn't use="encoded" redundant?
Even more, isn't
  encodingStyle="" equivalent to use="literal" and
  encodingStyle="someURI" equivalent to use="encoded"
encodingStyle="someURI" ?

Proposal:
  Eliminate the "use" attribute and just use the "encodingStyle" attribute
to
  express "literal" via an empty string value and "encoded" via a non-empty
  string value.

Received on Sunday, 7 July 2002 17:03:54 UTC