[Bug 10207] [XPath] Matching abstract schema-element tests

http://www.w3.org/Bugs/Public/show_bug.cgi?id=10207


Michael Kay <mike@saxonica.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mike@saxonica.com




--- Comment #1 from Michael Kay <mike@saxonica.com>  2010-07-20 13:12:10 ---
I have some sympathy with this: if the declaration of E is abstract, then an
element named E shouldn't be attributed to that element declaration, and if it
meets all the stated conditions then it only does so by accident. However, I
have some concern about compatibility: this is an accident that can and does
happen, for example if someone writes <element name="x"/> in the schema when
they intended <element ref="x"/>, thus creating confusion between local and
global element declarations, and I'm not convinced it's enough of a bug to
justify changing the rules.

If we follow this logic further we would start having to look at the "block"
and "final" attributes to determine whether the element can validly appear as a
member of the substitution group. That's surprisingly complex logic and I would
really rather avoid it. 

Note that technically I think we are talking about potential rather than actual
membership of the substitution group: from XSD 1.0:

<quote>
Element declarations are potential members of the substitution group, if any,
identified by {substitution group affiliation}. Potential membership is
transitive but not symmetric; an element declaration is a potential member of
any group of which its {substitution group affiliation} is a potential member.
Actual membership may be blocked by the effects of {substitution group
exclusions} or {disallowed substitutions}, see below.
</quote>

Two specific points about comment #0:

(a) "In both cases if the name of an abstract element is matched then ET is not
defined." I don't follow the logic. Just because an element declaration is
abstract doesn't mean it has no declared type.

(b) "The substituted element is not abstract": it's not the element that is
abstract, but the element declaration. The same criticism applies to the
"existing proposed" text "If the substituted element is not nillable". I
suggest changing rule 1 to 

"The name of the candidate node matches the specified ElementName or matches
the name of an element declaration that is a potential member of the
substitution group headed by an element named ElementName.  Call this element
declaration ED."

and then using ED accordingly, for example "ED is not nillable". (The term
"substituted element" is in any case very confusing: if sugar substitutes for
honey then properly, sugar is "substituting" and honey is "substituted", though
many people might say "I substituted sugar").

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Tuesday, 20 July 2010 13:12:12 UTC