- From: Frans Englich <frans.englich@telia.com>
- Date: Wed, 10 Nov 2004 11:12:32 +0000
- To: "Xmlschema-dev" <xmlschema-dev@w3.org>
On Monday 01 November 2004 13:26, Jeni Tennison wrote:
> Hi Frans,
>
> > How do I achieve this -- allow multiple unbounded elements to be
> > freely mixed with each others and simple elements?
>
> This is probably the most frequent of FAQs.
>
> DTDs have a similar restriction, and the traditional approach is to
> define the model using something like:
>
> ((include | group)*, kcfgfile, (include | group)*)
I have a similar problem again, but this time a DTD expression validates for
it. It looks like this:
<!ELEMENT Menu (title | Action | ActionList | Separator | WeakSeparator |
TearOffHandle | Merge | MergeLocal | DefineGroup | Menu )*>
My DTD knowledge is smaller than what I know about XML Schema, but to me that
reads like Menu may contain zero or more of those listed items, in any order.
I tried to replicate it in XML Schema(snipped and compacted):
<xsd:element name="Menu">
<xsd:complexType>
<xsd:all>
<xsd:element minOccurs="0" name="title" type="caption" />
<xsd:element ref="Action" maxOccurs="unbounded" />
<xsd:element ref="ActionList" maxOccurs="unbounded" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="TearOffHandle">
</xsd:element>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="DefineGroup">
</xsd:element>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="MergeLocal">
</xsd:element>
<xsd:element minOccurs="0" maxOccurs="unbounded" ref="Separator" />
<xsd:element minOccurs="0" maxOccurs="unbounded"
ref="WeakSeparator" />
<xsd:element minOccurs="0" maxOccurs="unbounded" ref="Menu" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="Merge" />
</xsd:all>
This obviously doesn't work since 'all' indicator and maxOccurs="unbounded" is
combined, but it illustrates what I want. Is it impossible to express such
constructs, which works in DTD, in XML Schema, or have I missed something?
Cheers,
Frans
Received on Wednesday, 10 November 2004 11:05:33 UTC