[
Lists Home |
Date Index |
Thread Index
]
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/
|