Assuming this is W3C's schema language, the first
requirement to be in any position will be difficult. <xsd:sequence>
doesn't allow this, <xsd:all> sorta does but there are restrictions. You
can mock it by making everything in it's own optional sequence, such as
<xsd:sequence minOccurs='0' maxOccurs='1'>, and that theoretically will
work though some validators have struggled with this.
The second requirement is a snap, just use
minOccurs and maxOccurs. This I think will work for you:
<!-- DISCLAIMER: Written on the fly, may have
syntax errors -->
<!-- put the other elements
in a different xsd:sequence node -->
<!-- this sequence (i.e.
the party node) can now occur up to two times, if at all -->
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="account" type="xsd:string"/>
Bryce K. Nielsen
Makers of xmlArchitect, the Smart XML Schema
----- Original Message -----
Sent: Wednesday, February 04, 2004 8:59
Subject: [xml-dev] Problems with schema
I have XML of a structure similar to this:
and I need to build a schema that can enforce the
following rules on the <party> element:
- <party> can be in any position under the <code>
- <party> can occur
either 0, 1 or 2 times
I wanted initially to use the all compositor but
this will only allow 0 or 1 instances of <party> under <code>.
Does any one have any insights into how this can be achieved?