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
|