[
Lists Home |
Date Index |
Thread Index
]
Le mercredi 21 juin 2006 à 14:21 +0100, Marielou a écrit :
> Funny thing is, the description used to be written in
> a DTD, but my boss now wants a schema!
Did he tell which one? If not, give him a RELAX NG schema, that will
make your life much easier :) ...
> When I use <choice> in a schema, I find it works when
> all element occurrences are unrestricted,
Yes, that's how I understood your requirements in your first mail.
> but I have
> several child elements to describe each with different
> cardinality, all are unrestricted in the order. So I
> tried with maxOccurs="unbounded" on the <choice> and a
> limit on the elements but I find that the maxOccurs on
> the <choice> takes priortiy over element occurrences
> so maxOccurs e.g below
>
> <xs:element name="parentA">
> <xs:complexType>
> <xs:choice minOccurs="0" maxOccurs="unbounded">
> <xs:element ref="childB" minOccurs="1" maxOccurs="1"/>
> <xs:element ref="childC" minOccurs="1"
> maxOccurs="7"/>
> <xs:element ref="childD" minOccurs="1" maxOccurs="4"/>
> <xs:element ref="childE" minOccurs="1"
> maxOccurs="unbounded"/>
> ...
> </xs:choice>
> </xs:complexType>
> </xs:element>
>
> lets all elements occur unbounded and ignores that
> e.g. B should only occur 1x. If I remove "unbounded"
> from the <choice>, I cant get past the first element!
Yep, that's how xs:choice is supposed to work. What you need would be
xs:all without the restrictions imposed to this composer in the W3C XML
Schema recommendation but such a thing doesn't exist.
If you can use RELAX NG, this is trivial using an interleave pattern.
Eric
--
GPG-PGP: 2A528005
Weblog:
http://eric.van-der-vlist.com/blog?t=category&a=English
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
Ceci est une partie de message=?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=
|