XSD: Order irrelevant but choice required

S

Stephan Mann

Hi,

I'm relatively new to XSD but I did not think that my requirement would
prove to be such a problem. But after two hours of trying and searching
I'm now thoroughly confused. Maybe someone could point me into the right
direction.

Requirement: There are three elements. One is optional, while the other
two are exclusively to each other. One of the latter might appear
multiple times.

Therefore, I wrote the following XSD, which is working perfectly:

<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="One" type="xs:string" maxOccurs="unbounded" />
<xs:element name="Two" type="xs:string" />
</xs:choice>
<xs:element name="Description" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

It allows <One> multiple times OR <Two> once and <Description> is
optional. The problem I can't get my head around is how to achieve that
the order of the choice group and the description tag is irrelevant.
<Description> should be allowed to occur first.

All my attempts to do that have failed. I'm not allowed to use <all>
instead of <sequence>, because <all> is only allowed to contain
elements. And if I replace the <sequence> with an

<xs:choice maxOccurs="unbounded">

the order is no longer relevant, but also an *empty* XML document is now
valid (which had me surprised for a moment, but I think I understand it
now).

I'm completely in the dark on how to achieve my additional requirement.
Specifying all possible permutations in a choice of sequences is
obviously no solution, since I need a lot more elements in the final
XSD. It seems simple to me but I can't get it to work, so any help would
be greatly appreciated.

tia, stephan
 
J

Joe Kesselman

Is it really a requirement that your schema allow what amounts to a
covert channel for the export of undocumented information?


Well phrased, Michael. Mind if I archive that answer for possible
re-quoting in the future?

Sandard reminder: Schema isn't intended to do everything possible to
check your document. Sometimes the simplest answer really is to leave
the schema a bit looser than would be ideal and have application code
impose the additional constraints.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top