WS-I BP1.1 advises against the guidance of WSDL 1.1 spec, on the point
of arrays.  

Go to http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html
And search for soapenc:Array (section 4.3.3) :

*** Begin Excerpt ***
The recommendations in WSDL 1.1 Section 2.2 for declaration of array
types have been interpreted in various ways, leading to interoperability
problems. Further, there are other clearer ways to declare arrays. 

R2110 In a DESCRIPTION, declarations MUST NOT extend or restrict the
soapenc:Array type. 

R2111 In a DESCRIPTION, declarations MUST NOT use wsdl:arrayType
attribute in the type declaration. 

R2112 In a DESCRIPTION, elements SHOULD NOT be named using the
convention ArrayOfXXX. 

R2113 An ENVELOPE MUST NOT include the soapenc:arrayType attribute. 

*** End Excerpt *** 


AXIS seems to comply with the WS-I BP1.1 recommendation. 

-Dino




-----Original Message-----
From: jayachandra [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, March 15, 2005 3:28 AM
To: [email protected]; [email protected]
Subject: WSDL generation

Trying to analyse some problem, I had to refer to wsdl 1.1 spec. There
under the 'Types' section [http://www.w3.org/TR/wsdl#_types , 3rd bullet
point], there is this mention.

** Begin of Excerpt **
Array types should extend the Array type defined in the SOAP v1.1
encoding schema (http://schemas.xmlsoap.org/soap/encoding/)
(regardless of whether the resulting form actually uses the encoding
specified in Section 5 of the SOAP v1.1 document). Use the name
ArrayOfXXX for array types (where XXX is the type of the items in the
array).  The type of the items in the array and the array dimensions are
specified by using a default value for the soapenc:arrayType attribute.
At the time of this writing, the XSD specification does not have a
mechanism for specifying the default value of an attribute which
contains a QName value.  To overcome this limitation, WSDL introduces
the arrayType attribute (from namespace
http://schemas.xmlsoap.org/wsdl/) which has the semantic of providing
the default value.  If XSD is revised to support this functionality, the
revised mechanism SHOULD be used in favor of the arrayType attribute
defined by WSDL.
** End of Excerpt **

So does this mean even in DOCUMENT/LITERAL and WRAPPED/LITERAL kind of
wsdl we should have for an array type (e.g: public Point[] myPoints;) a
wsdl that reads as

<complexType name="ArrayOfPoint">
    <complexContent>
         <restriction base="soapenc:Array">
          <attribute ref="soapenc:arrayType"
wsdl:arrayType="impl:Point[]"/>
         </restriction>
    </complexContent>
</complexType>

Currently in axis we get a wsdl fragment that looks like

<complexType name="ArrayOfPoint">
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item"
type="impl:Point"/>
    </sequence>
</complexType>

Which one is correct?
Any insight into this issue will be very much appreciated.

Thanks in advance
Jaya

Reply via email to