This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
Can an abstract element declaration "substitute" another element declaration? The 2 substitution group related constraints give different answers. In the definition of "substitution group" [1], it's clear that abstract element declarations are excluded. But Substitution Group OK (Transitive) doesn't take abstractness into account. Many people consider substitution group as a choice over all members of the "substitution group" of the head. This is currently *not* true given the inconsistency between these constraints. Consider <element name="head" type="date"/> <element name="sub" substitutionGroup="head" abstract="true"/> ... <choice or sequence> <element ref="head"/> <element name="sub" type="int"/> </choice or sequence> It's not clear whether the above <choice> violates "Unique Particle Attribution", and it's not clear whether the <sequence> violates "Element Declaration Consistent". What's the rationale for [1] to exlcude abstract elements from substitution groups? Given the changes in how abstract is handled in schema 1.1 (moving more toward "matched but unfortunately abstract"), maybe [1] should be changed to include abstract elements? [1] http://www.w3.org/TR/xmlschema11-1/#key-eq [2] http://www.w3.org/TR/xmlschema11-1/#cos-equiv-derived-ok-rec
On 23 March, the WG accepted a wording proposal to resolve this issue by aligning our definitions and our usage more consistently. The requirement that an element not be abstract is already enforced elsewhere; it does not need to play a role in the definition of the concept 'substitution group'.