[
Lists Home |
Date Index |
Thread Index
]
I remember that errata, it causes a few problems for XQuery and IMHO shouldn't have been accepted. A simple type being the derived type of a complex type is just weird.
________________________________
From: Jeni Tennison [mailto:jeni@jenitennison.com]
Sent: Tue 9/9/2003 7:52 AM
To: Dare Obasanjo
Cc: Chiusano Joseph; GARNIER Pierre; xml-dev@lists.xml.org
Subject: Re: [xml-dev] Re: RE : [xml-dev] Text or tags choice with XSD
Hi Dare,
> Actually I was wrong. I've never thought about solving the problem
> using xsi:type before. Using xsi:type makes it possible, schema and
> instances follow
I would make the simple version explicitly a complex type with
*simple* content, as follows:
<!-- abstract base type is mixed and emptiable -->
<xs:complexType name="baseTime" mixed="true" abstract="true">
<xs:sequence minOccurs="0">
<xs:element name="hour" type="xs:integer" />
<xs:element name="min" type="xs:integer" />
</xs:sequence>
</xs:complexType>
<!-- complex derived type is not mixed and must have element content
-->
<xs:complexType name="complexTime">
<xs:complexContent>
<xs:restriction base="baseTime">
<xs:sequence>
<xs:element name="hour" type="xs:integer" />
<xs:element name="min" type="xs:integer" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- simple derived type has simple content -->
<xs:complexType name="simpleTime">
<xs:simpleContent>
<xs:restriction base="baseTime">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:pattern value="\d{2}:\d{2}" />
</xs:restriction>
</xs:simpleType>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
This gives you a control over the format of the simple version.
Note that there was a contradiction in the spec about whether this is
actually allowed or not, but this has been resolved, in favour of
allowing it, by Erratum E1-27 at:
http://www.w3.org/2001/05/xmlschema-errata#e1-27
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
|