XML Schema defines that the elements should be in that order with that complextype definition in the WSDL. I think, if it is not, then it is an error even if some tools do not care.
Upul On Feb 13, 2008 6:29 AM, Ram Thakkalapalli (rthakkal) <[EMAIL PROTECTED]> wrote: > Should the client ensure the order of the elements inside the Soap > envelope? > > Ram > > ------------------------------ > *From:* Ram Thakkalapalli (rthakkal) > *Sent:* Tuesday, February 12, 2008 2:29 AM > *To:* [email protected] > *Subject:* Axis2 1.3 -- Is ordering of elements madatory in SOAP BODY > > Hello, > > Here is a Java API and generated WSDL snippet. Does the order of the > elements in WSDL is mandatory when constructing the SOAP envelope? > In my test setup, I have encountered that the order of the elements seems > to be mandatory? If Yes, Can we make the order optional and read the values > from element name instead of element index? > > Java Class Snippet: > > *public stats[] retrieveCPUUtilization(String name, String timeframe )* > *{* > *return stats[]; > }* > > WSDL snippet : > *<xs:element name="retrieveCPUUtilization"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/> > <xs:element minOccurs="0" name="timeframe" nillable="true" type="xs:string > "/> > </xs:sequence> > </xs:complexType> > </xs:element>* > > > Scenario 1: > For the a SOAP request ( generated from WSDL2Java Utillity )of the format > below with the order of the paramters matching the Java API above, the > values are parsed correctly on the server side ( the java api sets name= > xy-server and timeframe=hour ) > *<soapenv:Body>* > *<retrieveCPUUtilization>* > *<xs:name>xy-server</xs:name>* > *<xs:timeframe>hour</xs:timeframe>* > *</retrieveCPUUtilization>* > *</soapenv:Body>* > ** > > Scenario 2 : > For the a SOAP request ( generated using SOAPpy )of the format below with > the order of the paramters are NOT matching the Java API above, the values > are parsed INCORRECTLY on the server side( the Java API sets name=hour, > timeframe =xy-server ) > *<soapenv:Body>* > *<retrieveCPUUtilization>* > *<xs:timeframe>hour</xs:timeframe>* > *<xs:name>xy-server</xs:name>* > *</retrieveCPUUtilization>* > *</soapenv:Body>* > ** > ** > *Please let me know nif I am missing anything here.* > ** > *Thanks* > *Ram* > ** > ** >
