- From: Mukul Gandhi <gandhi.mukul@gmail.com>
- Date: Sun, 19 Feb 2006 13:08:40 +0530
- To: "Ramkumar Menon" <ramkumar.menon@gmail.com>
- Cc: xmlschema-dev@w3.org
You can try something like this. i.e. use xs:choice to select one
among all the permutations.
<xs:element name="x">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="a" type="xs:string"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
This works for this simple case. But once I make it slightly more
complex as shown below (by introducing another element c), the XSD
validator(XMLSpy 2006) reports that schema is not valid. It says
"content model is non-deterministic. Possible causes: name equality,
overlapping occurence or substitution groups".
<xs:element name="x">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="c" type="xs:string"/>
</xs:sequence>
<xs:sequence>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="a" type="xs:string"/>
<xs:element name="c" type="xs:string"/>
</xs:sequence>
<xs:sequence>
<xs:element name="a" type="xs:string"/>
<xs:element name="c" type="xs:string"/>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element name="c" type="xs:string"/>
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="c" type="xs:string"/>
<xs:element name="a" type="xs:string"/>
</xs:sequence>
<xs:sequence>
<xs:element name="c" type="xs:string"/>
<xs:element name="b" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="a" type="xs:string"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
I am curious, is the validation happening correctly(for the case a, b,
c), or is this bug in the validator?
Regards,
Mukul
On 2/18/06, Ramkumar Menon <ramkumar.menon@gmail.com> wrote:
> Hi,
>
> is it possible to ignore the document order while using schema validator to
> validate an XSD ?
> If not, is there an alternative to the following issue ?
> I have an element that has a set of elements witihn it, one of them being
> maxOccurs="unbounded". Since I wanted to use the "xsd:all" group so that I
> can assume unordered child nodes, the node with maxOccurs="unbounded"
> prevents me from making such a definition.
>
> Any help will be appreciated.
> pls reply direcly to my email id, since I am not on this mailing list.
>
> rgds,
> Ram
>
> --
> Shift to the left, shift to the right!
> Pop up, push down, byte, byte, byte!
>
> -Ramkumar Menon
> A typical Macroprocessor
Received on Sunday, 19 February 2006 10:06:19 UTC