users@jax-rpc.java.net

Re: WS-I problem in my WSDl

From: Vivek Pandey <Vivek.Pandey_at_Sun.COM>
Date: Thu, 07 Aug 2003 19:22:26 -0700

The WSDL appears incorrect. For a document/literal operation, the part
should refer a schema element using the 'element' attribute.

from your wsdl,

<message name="IPurchaseOrder_acceptPO">
                <part name="PurchaseOrder_1" type="ns2:PurchaseOrder"/>

Here you should have 'element' attribute instead of 'type' and element should refer to an schema element. Its pointing to a schema tpye, ns2:PurchaseOrder is a complexType.

see, http://www.w3.org/TR/wsdl#_soap:body and http://www.w3.org/TR/wsdl#_messages.


-vivek.




Sam D wrote:

>Hello
>
>I defined a WSDL file and when use the wsi option I get a non-conforming
>error
>in wscompile
>
>"warning: ignoring operation "acceptPO": message part does not refer to
>a schema element declaration"
>
>The operation is defined as document/literal
>
>Help.
>
>=sam
>
>
>------------------------------------------------------------------------
>
><?xml version="1.0" encoding="UTF-8"?>
><definitions name="PurchaseOrderService" targetNamespace="http://foobar.com/wsdl/PurchaseOrderService" xmlns:tns="http://foobar.com/wsdl/PurchaseOrderService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://foobar.com/types/PurchaseOrderService">
> <types>
> <schema targetNamespace="http://foobar.com/types/PurchaseOrderService" xmlns:tns="http://foobar.com/types/PurchaseOrderService" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
> <complexType name="PurchaseOrder">
> <sequence>
> <element name="billTo" type="tns:Address"/>
> <element name="createDate" type="dateTime"/>
> <element name="items" type="tns:ArrayOfLineItem"/>
> <element name="poID" type="string"/>
> <element name="shipTo" type="tns:Address"/>
> </sequence>
> </complexType>
> <complexType name="Address">
> <sequence>
> <element name="address" type="string"/>
> <element name="city" type="string"/>
> <element name="name" type="string"/>
> <element name="state" type="string"/>
> <element name="zipCode" type="string"/>
> </sequence>
> </complexType>
> <complexType name="ArrayOfLineItem">
> <complexContent>
> <restriction base="soap11-enc:Array">
> <attribute ref="soap11-enc:arrayType" wsdl:arrayType="tns:LineItem[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="LineItem">
> <sequence>
> <element name="name" type="string"/>
> <element name="price" type="decimal"/>
> <element name="quantity" type="int"/>
> </sequence>
> </complexType>
> </schema>
> </types>
> <message name="IPurchaseOrder_acceptPO">
> <part name="PurchaseOrder_1" type="ns2:PurchaseOrder"/>
> </message>
> <message name="IPurchaseOrder_acceptPOResponse">
> <part name="AcceptanceID" type="xsd:string"/>
> </message>
> <portType name="IPurchaseOrder">
> <operation name="acceptPO" parameterOrder="PurchaseOrder_1">
> <input message="tns:IPurchaseOrder_acceptPO"/>
> <output message="tns:IPurchaseOrder_acceptPOResponse"/>
> </operation>
> </portType>
> <binding name="IPurchaseOrderBinding" type="tns:IPurchaseOrder">
> <operation name="acceptPO">
> <input>
> <soap:body use="literal" parts="PurchaseOrder_1"/>
> </input>
> <output>
> <soap:body use="literal" parts="AcceptanceID"/>
> </output>
> <soap:operation soapAction=""/>
> </operation>
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
> </binding>
> <service name="PurchaseOrderService">
> <port name="IPurchaseOrderPort" binding="tns:IPurchaseOrderBinding">
> <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
> </port>
> </service>
></definitions>
>
>
>