- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 27 Jun 2001 11:52:28 +0100
- To: bjornh@nada.kth.se
- Cc: xmlschema-dev@w3.org, fredrik.fallstrom@mwm.se
bjornh@nada.kth.se writes:
> The question was about deriving from anySimpleType which, as far as I
> can understand, doesn't work correctly in XSV. I have made an example to
> illustrate:
>
> The schema, test.xsd
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <schema xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:test="http://www.demo.com/test"
> targetNamespace="http://www.demo.com/test">
>
> <element name="test">
> <complexType>
> <sequence>
> <element ref="test:abstract_element" minOccurs="1"
> maxOccurs="unbounded" />
> </sequence>
> </complexType>
> </element>
>
> <element name="abstract_element" type="anySimpleType" abstract="true"
> />
>
> <element name="test1" type="integer"
> substitutionGroup="test:abstract_element" />
> <element name="test2" type="test:FooBar"
> substitutionGroup="test:abstract_element" />
> <element name="test3" type="test:Integer"
> substitutionGroup="test:abstract_element" />
>
> <simpleType name="Integer">
> <restriction base="anySimpleType">
> <simpleType>
> <union memberTypes="integer"/>
> </simpleType>
> </restriction>
> </simpleType>
This is somewhere between misleading and not allowed.
Just use
<simpleType name="Integer">
<union memberTypes="integer"/>
</simpleType>
>
> <simpleType name="FooBar">
> <restriction base="string">
> <enumeration value="foo" />
> <enumeration value="bar" />
> </restriction>
> </simpleType>
> </schema>
>
>
>
> The instance document, example.xml
>
> <?xml version="1.0"?>
> <test xmlns="http://www.demo.com/test"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.demo.com/test
> http://datan.gt.kth.se/test/test.xsd">
>
> <test1>4711</test1>
> <test2>foo</test2>
> <test3>4711</test3>
> </test>
>
> And the output from validating the instance document with XSV (when
> validating
> the schema itself there are no error messages).
>
> Schema representation errors
> Detected during instance validation
> http://datan.gt.kth.se/test/test.xsd:16:89: Invalid: type {
> http://www.demo.com/test}FooBar not subtype of type {
> http://www.w3.org/2001/XMLSchema}anySimpleType of exemplar {
> http://www.demo.com/test}:abstract_element
That's an XSV bug.
> http://datan.gt.kth.se/test/test.xsd:14:75: Invalid: type {
> http://www.w3.org/2001/XMLSchema}integer not subtype of type {
> http://www.w3.org/2001/XMLSchema}anySimpleType of exemplar {
> http://www.demo.com/test}:abstract_element
That's the same bug.
> If I understand everything correctly this is exactly the opposite of the
> way it
> is supposed to work:-)
>
> <test1> is an defined as an integer, which is derived from
> anySimpleType, and
> should work but doesn't (line 14)
bug.
> <test2> is derived from a string, which in turn is derived from
> anySimpleType,
bug.
> and should also work, but doesn't (line 16). I assume that derivation is
> transitive, so if A is derived from B and B is derived from C, then A is
> derived from C. Is that correct?
Yes.
> <test3> shouldn't work since it isn't allowed to directly derive user
> defined
> types from anySimpleType, but this one works fine.
What XSV prohibits is deriving anything by restriction _with facets_
from anySimpleType. That's the spirit, but not the letter, of the
REC. I'll ask for clarification.
ht
--
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
W3C Fellow 1999--2001, part-time member of W3C Team
2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/
Received on Wednesday, 27 June 2001 06:52:25 UTC