The WSDL 2.0 XSD for Root Element is Too Loose

The wsdl20.xsd definition [1] for the root element doesn't constrain the 
order of the top level elements as described in the spec.[2]

The current xsd is like:

  <xs:complexType name="DefinitionsType" mixed="false">
    <xs:annotation>
      <xs:documentation>
        Please refer to the WSDL 2.0 specification for
        additional constraints on the contents of this type.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="wsdl:ExtensibleDocumentedType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="wsdl:import"/>
          <xs:element ref="wsdl:include"/>
          <xs:element ref="wsdl:types"/>
          <xs:element ref="wsdl:interface"/>
          <xs:element ref="wsdl:binding"/>
            <xs:element ref="wsdl:service"/>
          <xs:any namespace="##other" processContents="lax" minOccurs="1" 
maxOccurs="1"/>
        </xs:choice>
        <xs:attribute name="targetNamespace" type="xs:anyURI" use=
"required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

It should be like:

  <xs:complexType name="DefinitionsType" mixed="false">
    <xs:annotation>
      <xs:documentation>
        blah, blah, blah ...
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="wsdl:ExtensibleDocumentedType">
                <xs:sequence>
                        <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element ref="wsdl:import"/>
                                <xs:element ref="wsdl:include"/>
                                <xs:any namespace="##other" 
processContents="lax" minOccurs="1" maxOccurs="1"/>
                        </xs:choice>
                        <xs:element ref="wsdl:types" minOccurs="0" 
maxOccurs="1"/>
                        <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element ref="wsdl:interface"/>
                                <xs:element ref="wsdl:binding"/>
                                <xs:element ref="wsdl:service"/>
                                <xs:any namespace="##other" 
processContents="lax" minOccurs="1" maxOccurs="1"/>
                        </xs:choice>
                </xs:sequence>
                <xs:attribute name="targetNamespace" type="xs:anyURI" use=
"required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


[1] http://www.w3.org/2004/08/wsdl
[2] http://www.w3.org/TR/2004/WD-wsdl20-20040803/#Definitions_XMLRep

Arthur Ryman,
Rational Desktop Tools Development

phone: +1-905-413-3077, TL 969-3077
assistant: +1-905-413-2411, TL 969-2411
fax: +1-905-413-4920, TL 969-4920
mobile: +1-416-939-5063, text: 4169395063@fido.ca
intranet: http://labweb.torolab.ibm.com/DRY6/

Received on Sunday, 9 January 2005 21:11:55 UTC