- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Wed, 12 Feb 2003 18:40:40 +0000
- To: "Hugh Wallis" <hugh_wallis@hyperion.com>
- CC: xmlschema-dev@w3.org
Hi Hugh, > Hmm - but at > http://www.w3.org/TR/xmlschema-1/#Type_Definition_Summary it says: > > [Definition:] Except for a distinguished ·ur-type definition·, every > ·type definition· is, by construction, either a ·restriction· or an > ·extension· of some other type definition. The graph of these > relationships forms a tree known as the Type Definition Hierarchy. Yes. That's what I meant when I said that if you went by the "spirit" of the rules, you'd say that it was legal to substitute xs:anyType with xs:string. However the legality of substitution groups is actually defined in this case by Schema Component Constraint: Type Derivation OK (Simple), which says: For a simple type definition (call it D, for derived) to be validly derived from a simple type definition (call this B, for base) given a subset of {extension, restriction, list, union} (of which only restriction is actually relevant) one of the following must be true: 1 They are the same type definition. 2 All of the following must be true: 2.1 restriction is not in the subset, or in the {final} of its own {base type definition}; 2.2 One of the following must be true: 2.2.1 D's ·base type definition· is B. 2.2.2 D's ·base type definition· is not the ·simple ur-type definition· and is validly derived from B given the subset, as defined by this constraint. 2.2.3 D's {variety} is list or union and B is the ·simple ur-type definition·. 2.2.4 B's {variety} is union and D is validly derived from a type definition in B's {member type definitions} given the subset, as defined by this constraint. and this falls down because none of the conditions from 2.2 are met: xs:string is an atomic type whose base type definition is the simple ur-type definition. I'd view this as a bug in the spec, personally. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Wednesday, 12 February 2003 13:40:48 UTC