You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Gregor Weiske <gw...@progress.com> on 2010/05/10 23:45:25 UTC

WSDL validator - bug?

Hello,

If I understand http://www.w3.org/TR/wsdl#_soap:body specifically ...
<definitions .... >
    <binding .... >
        <operation .... >
           <input>
               <soap:body parts="nmtokens"? use="literal|encoded"?
                          encodingStyle="uri-list"? namespace="uri"?>
           </input>
           <output>
               <soap:body parts="nmtokens"? use="literal|encoded"?
                          encodingStyle="uri-list"? namespace="uri"?>
           </output>
        </operation>
    </binding>
</definitions>

... correctly, then e.g. ...

  <wsdl:binding name...
    <soap:binding ...>
    <wsdl:operation ...>
      <soap:operation style="document"/>
      <wsdl:input>
        <soap:body use="literal" parts="part1 part2 part3"/>
      </wsdl:input>
      <wsdl:output>
       ...
... should be valid WSDL. However, the apache-cxf-2.2.6\bin\wsdlvalidator tells me:

WSDLValidator Error : WSI-BP-1.0 R2201 violation: Operation 'MultiPartStringInt' more than one part bound to body

If I change the WSDL fragment to the following, there are no complaints from the validator.
  <wsdl:binding name...
    <soap:binding ...>
    <wsdl:operation ...>
      <soap:operation style="document"/>
      <wsdl:input>
        <soap:body use="literal" parts="part1"/>
        <soap:body use="literal" parts="part2"/>
        <soap:body use="literal" parts="part3"/>
      </wsdl:input>
      <wsdl:output>

Bug?

Thanks

Gregor

Re: WSDL validator - bug?

Posted by Daniel Kulp <dk...@apache.org>.
Just because it's a valid wsdl does NOT mean it's a valid service according to 
WS-I Basic Profile rules.   The WS-I BP specifically sets out to define a 
strict subset of the various rules that are there to help interopability.

In your first case, yes, it's a valid wsdl, but no, it's not WSI BP compliant 
which is why the validator flags it.   According to the WSI-BP, the body 
should have a single part.

Ironically, your second wsdl is invalid.   Only a single soap:body element 
should be allowed there.   

Dan



On Monday 10 May 2010 5:45:25 pm Gregor Weiske wrote:
> Hello,
> 
> If I understand http://www.w3.org/TR/wsdl#_soap:body specifically ...
> <definitions .... >
>     <binding .... >
>         <operation .... >
>            <input>
>                <soap:body parts="nmtokens"? use="literal|encoded"?
>                           encodingStyle="uri-list"? namespace="uri"?>
>            </input>
>            <output>
>                <soap:body parts="nmtokens"? use="literal|encoded"?
>                           encodingStyle="uri-list"? namespace="uri"?>
>            </output>
>         </operation>
>     </binding>
> </definitions>
> 
> ... correctly, then e.g. ...
> 
>   <wsdl:binding name...
>     <soap:binding ...>
>     <wsdl:operation ...>
>       <soap:operation style="document"/>
>       <wsdl:input>
>         <soap:body use="literal" parts="part1 part2 part3"/>
>       </wsdl:input>
>       <wsdl:output>
>        ...
> ... should be valid WSDL. However, the apache-cxf-2.2.6\bin\wsdlvalidator
> tells me:
> 
> WSDLValidator Error : WSI-BP-1.0 R2201 violation: Operation
> 'MultiPartStringInt' more than one part bound to body
> 
> If I change the WSDL fragment to the following, there are no complaints
> from the validator. <wsdl:binding name...
>     <soap:binding ...>
>     <wsdl:operation ...>
>       <soap:operation style="document"/>
>       <wsdl:input>
>         <soap:body use="literal" parts="part1"/>
>         <soap:body use="literal" parts="part2"/>
>         <soap:body use="literal" parts="part3"/>
>       </wsdl:input>
>       <wsdl:output>
> 
> Bug?
> 
> Thanks
> 
> Gregor

-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog