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 -->
<xsd:element name="code">
<xsd:complexType>
<!-- 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:sequence
minOccurs="0" maxOccurs="2">
<xsd:element
name="party">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="account" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
HTH,
Bryce K. Nielsen
Makers of xmlArchitect, the Smart XML Schema
Editor
----- Original Message -----
Sent: Wednesday, February 04, 2004 8:59
AM
Subject: [xml-dev] Problems with schema
creation, help!!
I have XML of a structure similar to this:
<code>
...
<party>
<name>blah</name>
<account>blah blah</account>
</party>
...
<party>
<name>deBlah</name>
<account>deBlah
deBlah</account>
</party>
...
</code>
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>
element
- <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?
Thanks!
Chris