[
Lists Home |
Date Index |
Thread Index
]
On Wed, 2004-04-07 at 14:51, Tom Gaven wrote:
> Peter, I don't know if this can be done in XSD, but here is a RELAX NG
> schema ( compact syntax ) that can handle it:
>
> start = computer_list
> computer_list = element computer_list { computer* & computerDefault }
> computer = element computer { computerNames }
> computerDefault = element computer { attribute default { xsd:boolean },
> computerNames }
> computerNames = 'HP' | 'Dell'
>
> You can interleave ('&' connector) the single 'computer with default
> attribute' with one or more 'computers without default attribute'.
Very nice.
What is needed here is probably to require one default attribute equal
to "true" and others either missing or equal to "false", but your schema
can easily be adapted:
start = computer_list
computer_list = element computer_list { computer* & computerDefault }
computer =
element computer {
attribute default { xsd:boolean "false"}?,
computerNames
}
computerDefault =
element computer {
attribute default { xsd:boolean "true"},
computerNames
}
computerNames = 'HP' | 'Dell'
And that can't be done with WXS :) ...
Eric
--
Weblog:
http://eric.van-der-vlist.com/blog?t=category&a=English
Upcoming XML schema languages tutorial:
- Amsterdam -half day- (18/04/2004) http://masl.to/?P220516D7
------------------------------------------------------------------------
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
------------------------------------------------------------------------
|