- From: Priscilla Walmsley <priscilla@walmsley.com>
- Date: Thu, 14 Feb 2002 13:51:05 -0500
- To: "'Jeni Tennison'" <jeni@jenitennison.com>
- Cc: "'Eric van der Vlist'" <vdv@dyomedea.com>, <xmlschema-dev@w3.org>
Hi Jeni, Oops - you're right, I misinterpreted the question. Now that you have clarified it, I agree with your reading of the rec. I don't think this result is what most schema authors would expect, though. Priscilla ------------------------------------------------------------------ Priscilla Walmsley priscilla@walmsley.com Vitria Technology http://www.vitria.com Author, Definitive XML Schema (Prentice Hall PTR) ------------------------------------------------------------------ > -----Original Message----- > From: xmlschema-dev-request@w3.org > [mailto:xmlschema-dev-request@w3.org]On Behalf Of Jeni Tennison > Sent: Thursday, February 14, 2002 12:50 PM > To: Priscilla Walmsley > Cc: Eric van der Vlist; xmlschema-dev@w3.org > Subject: Re: Confirmation needed: block attribute > > > Hi Priscilla, > > >> If I specify an empty string in the element definition and > nothing in > >> the type definition, the actual value for the element will > be "", the > >> actual value for the type definition will be the default one (thus > >> "restriction") and the result will still be "restriction". Can you > >> confirm this (since I find if rather confusing) ? > > > > No, the empty set is different from the attribute being absent. In > > this case, there would be no disallowed substitutions. > > I believe that Eric was talking about how this combines with the > prohibited substitutions from the element's complex type. I think that > he was highlighting the situation where you have: > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > block="restriction"> > > <xs:element name="foo" type="fooType" block="" /> > <xs:complexType name="fooType" /> > > <xs:element name="bar" substitutionGroup="foo"> > <xs:complexType> > <xs:restriction base="fooType" /> > </xs:complexType> > </xs:element> > > </xs:schema> > > Here, the prohibited substitutions for the fooType is the set > containing the keyword 'restriction'. > > This means that, while the element makes no restrictions on what it > can be substituted with, the element's complex type *does* place a > constraint on the allowed substitutions. Specifically, it means that > the foo element cannot be substituted by the bar element, since the > bar element's type is a restriction of the foo element's type. > > At least this is my interpretation of Schema Component Constraint: > Substitution Group OK (Transitive): > > For an element declaration (call it D) together with a blocking > constraint (a subset of {substitution, extension, restriction}, the > value of a {disallowed substitutions}) to be validly substitutable > for another element declaration (call it C) all of the following > must be true: > > 1 The blocking constraint does not contain substitution. > > 2 There is a chain of {substitution group affiliation}s from D to > C, that is, either D's {substitution group affiliation} is C, or > D's {substitution group affiliation}'s {substitution group > affiliation} is C, or . . . > > 3 The set of all {derivation method}s involved in the derivation > of D's {type definition} from C's {type definition} does not > intersect with the union of the blocking constraint, C's > {prohibited substitutions} (if C is complex, otherwise the empty > set) and the {prohibited substitutions} (respectively the empty > set) of any intermediate {type definition}s in the derivation of > D's {type definition} from C's {type definition}. > > http://www.w3.org/TR/xmlschema-1/#cos-equiv-derived-ok-rec > > Cheers, > > Jeni > > --- > Jeni Tennison > http://www.jenitennison.com/ > >
Received on Thursday, 14 February 2002 13:51:29 UTC