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 [email protected] http://dankulp.com/blog
