XSD Schema Authoring Question

M

Mike

I'd like to create a complex type that behaves like an <xs:all> but
has unbounded cardinality of its children. Or, another way to say it,
is I'd like an <xs:sequence> that doesn't really care about order.
For instance:

<foo>
<bar/>
<bar/>
<baz/>
<bar/>
</foo>

and

<foo>
<baz/>
</foo>

would both match

<xs:element name="foo">
<xs:complexType>
<xs:all>
<xs:element name="bar" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="baz" />
</xs:all>
</xs:complexType>
</xs:element>

except of course for the fact that maxOccurs can only be "1" in
<xs:all>.

Do you see what I mean? I want to specify that these particular
children elements can occur in their parent, in no particular (known
to the schema) order, each with their own possibly unbounded
cardinality. No other types of children can occur, and I want a
validating parser to keep track of the cardinality of the children to
ensure they're not happening too (in)frequently.

There must be a way to do this, I just can't figure out how. Any help
much appreciated!

Mike
 
P

P. Lepin

Mike said:
<foo>
<bar/>
<bar/>
<baz/>
<bar/>
</foo>

and

<foo>
<baz/>
</foo>

would both match

<xs:element name="foo">
<xs:complexType>
<xs:all>
<xs:element name="bar" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="baz" />
</xs:all>
</xs:complexType>
</xs:element>

except of course for the fact that maxOccurs can only be "1" in
<xs:all>.

Do you see what I mean? I want to specify that these particular
children elements can occur in their parent, in no particular (known
to the schema) order, each with their own possibly unbounded
cardinality. No other types of children can occur, and I want a
validating parser to keep track of the cardinality of the children to
ensure they're not happening too (in)frequently.

I believe this isn't possible. Either specify a strict ordering of elements
(xs:sequence), or allow any number of applicable elements (xs:choice with
minOccurs/maxOccurs). Check semantics on the application-side if necessary,
and/or use a more powerful schema definition language. W3C's XML Schema
Definition Language was not designed to define arbitrarily complex
grammars.
There must be a way to do this, I just can't figure out how. Any help
much appreciated!

The fact that you want to do something doesn't yet mean it's possible.
 

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

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,742
Latest member
AshliMayer

Latest Threads

Top