Subject:xsd:choice maxOccurs="unbounded" Author:Minollo I. Date:13 Oct 2004 11:09 PM
The min/maxOccurs in <choice> control how many of the specified elements (in this case) can be used: 1 would model an exclusive "or"; unbounded an inclusive "or". The min/maxOccurs on the elements control how many of *those* elements can be repeated.
So, for example, assume you have this schema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="test">
<xsd:complexType>
<xsd:choice maxOccurs="2">
<xsd:element name="ele1" minOccurs="0" maxOccurs="3"/>
<xsd:element name="ele2" minOccurs="0" maxOccurs="3"/>
<xsd:element name="ele3" minOccurs="0" maxOccurs="3"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
...this document is valid, because you only use two elements part of the choice group:
<test>
<ele1/><ele1/><ele1/>
<ele3/>
</test>
...this XML document would be invalid, because you use three elements part of the choice group, but choice maxOccurs is 2:
<test>
<ele1/>
<ele2/>
<ele3/>
</test>
...and this XML document would be invalid because ele1 maxOccurs is 3:
<test>
<ele1/><ele1/><ele1/><ele1/>
<ele2/>
</test>
Subject:xsd:choice maxOccurs= Author:Travis Armstrong Date:28 Jan 2011 06:58 AM
This thread is returned near the top if you do a google search for XSD Choice maxocccurs and as it is incorrect I thought I should update it (despite it being an old one) so that no one else is mislead.
Maxoccurs on Choice does not refer to the number of elements you can choose within that choice. It refers to the number of times you can repeat the choice itself. You can only ever choose 1 type of element within a choice. This makes a very subtle difference. Take the following choice:
choice maxOccurs="2"
element name="ele1" maxOcccurs="3"
element name="ele2" maxOcccurs="3"
This does not mean you can choose either "ele1" or "ele2" or "ele1 & ele2", this means you can choose ele1 or ele2 once and then repeat the choice of ele1 or ele2 again.
So, contrary to the 3rd example above, an XML document with up to 6 ele1 elements is perfectly legal despite maxOccurs for ele1 being set to 3. The 3rd example above fails because you have repeated the choice 3 times (1st ele1x3, 2nd ele1x1, 3rd ele2x1).
Subject:Re: xsd:choice maxOccurs= Author:Minollo I. Date:13 Oct 2004 11:57 PM Originally Posted: 13 Oct 2004 11:53 PM
Peter,
there are many more or less good sources of information about XML
Schema; if you have the stomach for it, I would go to the source:
http://www.w3.org/TR/xmlschema-0/ and related documents
I've also found some of the materials listed in the "
Presentations, guides, and tutorial materials
" section on http://www.w3.org/XML/Schema quite well done, especially the
tutorials.
And of course there is a large amount of books available out there...