- 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