document WSDL SOAP binding research notes
Researched into which namespace should be used to qualify SOAP message tags corresponding to WSDL message parts when using the document/literal binding style.
This commit is contained in:
parent
fd611a9b70
commit
de541a2c31
|
@ -0,0 +1,73 @@
|
||||||
|
================================
|
||||||
|
WSDL SOAP binding research notes
|
||||||
|
================================
|
||||||
|
:Authors: Jurko Gospodnetiæ
|
||||||
|
:Date: 2014-06-30
|
||||||
|
|
||||||
|
|
||||||
|
WS-I Basic Profile notes
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Operations defined using the document/literal SOAP binding style should use at
|
||||||
|
most one message part and, if such a message part is defined, it should
|
||||||
|
reference an existing top-level XSD schema element and not a type.
|
||||||
|
|
||||||
|
There are different interpretations as to what to do about SOAP web service
|
||||||
|
operations that do not comply with WS-I Basic Profile recommendations and
|
||||||
|
either:
|
||||||
|
|
||||||
|
* use document/literal binding style with multiple message parts
|
||||||
|
* use document/literal binding style operations with a message part referencing
|
||||||
|
an XSD type
|
||||||
|
|
||||||
|
|
||||||
|
WSDL message parts referencing an XSD type
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
When a WSDL message part references an XSD type and not an element, as in::
|
||||||
|
|
||||||
|
<wsdl:message name="MyMessage">
|
||||||
|
<wsdl:part name="parameter" type="MyElement"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
as opposed to::
|
||||||
|
|
||||||
|
<wsdl:message name="MyMessage">
|
||||||
|
<wsdl:part name="parameter" element="MyElement"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
then it acts as an XSD element of that type, as if it referenced an actual
|
||||||
|
top-level XSD element defined in the XSD schema.
|
||||||
|
|
||||||
|
|
||||||
|
XML namespace for SOAP message tags corresponding to a WSDL message part
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
If a WSDL message part references an actual XSD element then the namespace is
|
||||||
|
defined by the XSD element's ``target namespace`` property and by whether the
|
||||||
|
element is considered qualified or not.
|
||||||
|
|
||||||
|
If a WSDL message part references an XSD type, then we have not been able to
|
||||||
|
find a clear standard specification stating what namespace corresponding SOAP
|
||||||
|
message tags should be qualified with. Since such WSDL message parts do not live
|
||||||
|
inside a specific XSD schema, there are no schema ``targetNamespace`` or
|
||||||
|
``elementFormDefault`` attributes to consult, and since it does not have a
|
||||||
|
``form`` attribute, there does not seem to be a way to explicitly state whether
|
||||||
|
and which namespace its instances should be qualified with.
|
||||||
|
|
||||||
|
There seem to be several options here on how to qualify the corresponding SOAP
|
||||||
|
message tags:
|
||||||
|
|
||||||
|
* with the WSDL schema's target namespace
|
||||||
|
* with the WSDL schema's default namespace
|
||||||
|
* with no namespace
|
||||||
|
|
||||||
|
Both SoapUI (checked using versions 4.6.1 & 5.0.0) & the original suds
|
||||||
|
implementation choose to use the 'no namespace' version in this case.
|
||||||
|
|
||||||
|
Some other sources suggest different handling for single-part messages whose
|
||||||
|
operations use document/literal SOAP binding and whose single message part
|
||||||
|
references an XSD type - simply using the type to define the SOAP envelope's
|
||||||
|
``<body>`` element structure instead of adding an additional wrapper element
|
||||||
|
beneath it. Note though that this usage contradicts WS-I Basic Profile
|
||||||
|
recommendation ``R2204``.
|
Loading…
Reference in New Issue