- From: Jeff Greif <jgreif@alumni.princeton.edu>
- Date: Tue, 29 Jul 2003 15:05:27 -0700
- To: <www-xml-schema-comments@w3.org>
- Message-ID: <026201c3561d$84a39820$ae00a8c0@jmg>
Lots of Web Services using SOAP 1.1 contain XML Schema type definitions like
this:
<xsd:complexType name="ResultElementArray">
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:attribute ref="soapenc:arrayType" wsdl:arrayType
="typens:ResultElement[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
(The base type is given below).
When a SOAP/WSDL processor reads this type, it can determine via special
knowledge (out of band as far as WXS is concerned) based on presence of the
soapenc:arrayType attribute and the wsdl:arrayType attribute value that an
element of type ResultElementArray may contain an unrestricted number of
child elements (with any name allowed -- see the base type) of type
ResultElement.
When an instance document is encountered (e.g. returned from the web service), it might look like this
<return arrayType="ResultElement[3]" xsi:type="ResultElementArray">
<item xsi:type="ResultElement">...</item>
<item xsi:type="ResultElement">...</item>
<item xsi:type="ResultElement">...</item>
</return>
and the SOAP processor can determine from the arrayType value that there
will be three child elements of type ResultElement.
It does not appear that the wsdl:arrayType attribute appears anywhere in the PSVI for the complex type. Is it supposed to be accessible, and how? Is this supposed to change in XSD 1.1?
Jeff
Note:
The base type, somewhat simplified, is from the SOAP-Encoding 1.1 spec:
<xs:complexType name="Array" >
<xs:sequence>
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
<xs:attribute name="arrayType" type="xs:string" />
<xs:attribute name="arrayOffset" type="xs:string"/>
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType>
Received on Tuesday, 29 July 2003 18:05:29 UTC