- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Tue, 19 Feb 2002 12:33:29 +0000
- To: Simon.Cox@csiro.au
- CC: vdv@dyomedea.com, xmlschema-dev@w3.org
Hi Simon, > But in Structures it says at [2] > > "[Definition:] Through the new mechanism of element substitution > groups, XML Schemas provides a more powerful model supporting > substitution of one named element for another. Any top-level element > declaration can serve as the defining element, or head, for an > element substitution group. Other *top-level* element declarations, > regardless of target namespace, can be designated as members of the > substitution group headed by this element. " > > Is this the normative restriction in the spec? I cannot find any > other reference requiring substitutionGroup members or heads to be > global/top-level ... I think that this is a normative restriction in the spec. Substitution groups are actually defined as follows: Schema Component Constraint: Substitution Group [Definition:] Every element declaration in the {element declarations} of a schema defines a substitution group, a subset of those {element declarations}, as follows: 1 The element declaration itself is in the group; 2 The group is closed with respect to {substitution group affiliation}, that is, if any element declaration in the {element declarations} has a {substitution group affiliation} in the group, then it is also in the group itself. http://www.w3.org/TR/xmlschema-1/#cos-equiv-class What's relevant here is that the substitution group is made up of a subset of element declarations from the {element declarations} of the schema. The {element declarations} of the schema are defined as: A set of named (top-level) element declarations. http://www.w3.org/TR/xmlschema-1/#element_declarations So substitution groups can only contain global element declarations. This is backed up by the fact that the schema for schemas only allows substitutionGroup attributes on top-level element declarations, not on local element declarations. The head of the substitution group must be a global element declaration; otherwise it would be impossible for the schema validator to locate it when it's referred to through the substitutionGroup attribute. I hope that clarifies things for you, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Tuesday, 19 February 2002 07:33:36 UTC