[
Lists Home |
Date Index |
Thread Index
]
On Wed, 2004-04-07 at 15:11, Michael Kay wrote:
> You need to do restriction and extension in two separate steps, via an
> intermediate named type.
>
> I don't think it's possible to declare that only one element can have
> default="true" and at the same time allow multiple elements to specify
> default="false". The XPath expression allowed in unique/key constraints
> aren't rich enough. However, if default="false" is never specified (or is
> only specified once), then I think it can probably be done.
Yes, that's a hack prone to interoperability issues, but this schema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="computer-list">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="computer"/>
</xs:sequence>
</xs:complexType>
<xs:key name="atLeastOnedefault">
<xs:selector xpath="."/>
<xs:field xpath="computer/@default"/>
</xs:key>
<xs:unique name="atMostOnedefault">
<xs:selector xpath="computer"/>
<xs:field xpath="@default"/>
</xs:unique>
</xs:element>
<xs:element name="computer">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="xs:anyType">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="Dell"/>
<xs:enumeration value="HP"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="default">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
works fine with Xerces2-J.
Eric
--
Tired to type XML tags?
http://wikiml.org
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
------------------------------------------------------------------------
|