Page 1 of 1

Require non-empty sequence

Posted: Thu Jul 29, 2010 12:48 pm
by ra0543
I'm using Schema to define the structure of my XML. At this stage it's not going to be easy to switch to a different metalanguage.

Can I define an element <parent> that has a sequence of child elements which are individually optional (i.e. no specific one is required) but where at least one has to be present?

So the following are OK:

<parent><a/></parent>
<parent><b/></parent>
<parent><c/></parent>
<parent><d/></parent>
<parent><a/><b/></parent>
<parent><b/><d/></parent>
<parent><a/><b/><c/><d/></parent>

but the following are invalid:
<parent><c/><a/></parent>
<parent/>

I think this is impossible using just Schema, but perhaps I'm missing some easy way of doing it.

Re: Require non-empty sequence

Posted: Mon Aug 02, 2010 9:27 am
by george
You can define that as a choice of

a followed by the other optional elements (b, c, d, etc.)
b followed by the other optional elements (c, d, etc.)
c followed by the other optional elements (d, etc.)
etc.

If you have 4 elements then in DTD like notation that will be

(a, b?, c?, d?) | (b, c?, d?) | (c, d?) | d

Best Regards,
George