- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Wed, 17 Jul 2002 18:37:46 +0100
- To: xmlschema-dev@w3.org, Brenda Bell <bbell@juicesoftware.com>
Hi Brenda, > Method 2: > > <xs:complexType name="DoubleArray"> > <xs:complexContent> > <xs:restriction base="soapenc:Array"> > <xs:sequence/> > <xs:attribute ref="soapenc:arrayType" n1:arrayType="xs:double[]" > xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/> > </xs:restriction> > </xs:complexContent> > </xs:complexType> > </xs:schema> [snip] > However, method 2 has me baffled... given the following element declaration: > > <xs:element name="TestDoubles"> > <xs:complexType> > <xs:sequence> > <xs:element name="Data" type="tns:DoubleArray"></xs:element> > </xs:sequence> > </xs:complexType> > </xs:element> > > I haven't been able to come up with a valid document. The Data > element isn't allowed to have text, but the sequence on DoubleArray > is empty and doesn't allow child elements. What am I missing? Well, the DoubleArray type is definitely missing a content model. It should look more like: <xs:complexType name="DoubleArray"> <xs:complexContent mixed="false"> <xs:restriction base="soapenc:Array"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="Double" type="xs:double"/> </xs:sequence> <xs:attribute ref="soapenc:arrayType" n1:arrayType="xs:double[]" xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/> </xs:restriction> </xs:complexContent> </xs:complexType> such that your Data element can be: <Data xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="xs:double[]"> <Double>1.2</Double> <Double>3.4</Double> </Data> (I'm by no means a WSDL expert, but I think that the StringArray type should also have the soapenc:arrayType attribute specified on it.) Briefly glancing through the WSDL/SOAP encoding specs, I think that the authors of those specs might be missing the fact that when you derive a type by restriction you must specify a content model for the type, or specify that it's mixed, otherwise elements of that type can't legally contain anything. But *you* don't seem to be missing anything -- your description of what the DoubleArray type definition is doing is absolutely correct. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Wednesday, 17 July 2002 13:37:48 UTC