In the case where operations are all bound in the same way, the existing
SOAP binding is repetitious. A straightforward way to simplify this for
the common case is to allow the SOAP binding attribute information items
(AII) to be placed as defaults on the soap:binding element information
item (EII) define that AII placed on children of soap:binding would
override the default, and allow the soap:operation EII to be omitted if
they do not override any defaults.
This is not a proposal to eliminate the ability to define an
operation-by-operation binding; it is only a proposal to simplify the
default case where all operations within a portType are bound the same
way.
The table below summarizes where WSDL 1.1 defines the SOAP binding AII.
EII \ AII @style @use @encodingStyle @namespace
--------------------------------------------------------
soap:binding OK
soap:operation OK[*]
soap:body OK OK OK
soap:header OK OK OK
soap:fault OK OK OK
soap:headerFault OK OK OK
Where [*] overrides value from parent.
The proposal is to change the definition of the SOAP binding AII as
shown in the table below.
EII \ AII @style @use @encodingStyle @namespace
--------------------------------------------------------
soap:binding OK OK OK OK
soap:operation OK[*]
soap:body OK[*] OK[*] OK[*]
soap:header OK[*] OK[*] OK[*]
soap:fault OK[*] OK[*] OK[*]
soap:headerFault OK[*] OK[*] OK[*]
EXAMPLE
In the default case, where all the operations are bound the same way,
this should simplify the binding significantly. For example, in WSDL
1.1, a SOAP rpc/encoded example in WSDL 1.1 would look like:
<binding name="StockQuoteSoapBinding"
type="tns:StockQuotePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="rpc" />
<operation name="GetTradePrice">
<input>
<soap:body use="encoded"
namespace="http://example.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://example.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
...
</binding>
Where ... has to be repeated for each operation in the portType.
By contrast, the same example given the proposal would look like:
<binding name="StockQuoteSoapBinding"
type="tns:StockQuotePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="rpc"
use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://example.com/stockquote" />
</binding>
A SOAP document/literal example given the proposal would look like:
<binding name="StockQuoteSoapBinding"
type="tns:StockQuotePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"
use="literal" />
</binding>
EOF