- From: Prasad Yendluri <pyendluri@webmethods.com>
- Date: Tue, 04 Jun 2002 13:48:59 -0700
- To: Web Service Description <www-ws-desc@w3.org>
- Message-ID: <3CFD27BA.99EA9582@webmethods.com>
I should also add that the Spec also contains examples that violate this requirement of abstract parts be defined using type if use is "encoded". See Example 4 in section 3.1. <message name="GetTradePriceInput"> <part name="tickerSymbol" element="xsd:string"/> <part name="time" element="xsd:timeInstant"/> </message> <message name="GetTradePriceOutput"> <part name="result" type="xsd:float"/> </message> <portType name="StockQuotePortType"> <operation name="GetTradePrice"> <input message="tns:GetTradePriceInput"/> <output message="tns:GetTradePriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetTradePrice"> <soap:operation soapAction="http://example.com/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> The parts of the message GetTradePriceInput are defined using "element" form and the one in GetTradePriceOutput is defined using "type" form. Where as at the binding level both specify use=encoded. See the highlighted areas above. Regards, Prasad Prasad Yendluri wrote: > Section 2.3 (Messages) of WSDL spec permits defining parts of a > message using either "type" or "element" attribute: > > <definitions .... > > <message name="nmtoken"> * > <part name="nmtoken" element="qname"? type="qname"?/> * > </message> > </definitions> > > Section '2.3.2 Abstract vs. Concrete Messages' also states: > > Message definitions are always considered to be an abstract definition > of the message content. A message binding describes how the abstract > content is mapped into a concrete format. > > However, section '3.5 soap:body' in the SOAP bindings section requires > that the parts be defined using the "type" if the "use" is "encoded": > > The required use attribute indicates whether the message parts are > encoded using some encoding rules, or whether the parts define the > concrete schema of the message. > > If use is encoded, then each message part references an abstract type > using the type attribute. These abstract types are used to produce a > concrete message by applying an encoding specified by the > encodingStyle attribute. > > If use is literal, then each part references a concrete schema > definition using either the element or type attribute. > > No explanation is given why the parts need to be defined using "type" > if "use" is "encoded". The SOAP binding scheme is therefore requiring > that things be defined in a particular way at the abstract level, > violating the separation of abstract definitions and applying multiple > concrete bindings to the same abstract level definitions. > > We should either remove the restriction or clearly state why this > restriction needs to be there. No justification is provided in the > spec for this, other than simply having one statement that calls for > it. > > Regards, Prasad
Received on Tuesday, 4 June 2002 16:47:20 UTC