- From: <bugzilla@jessica.w3.org>
- Date: Wed, 30 May 2012 20:21:09 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=17252
Summary: [FO3.0] deep-equal() between typed and untyped nodes
Product: XPath / XQuery / XSLT
Version: Last Call drafts
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Functions and Operators 3.0
AssignedTo: mike@saxonica.com
ReportedBy: mike@saxonica.com
QAContact: public-qt-comments@w3.org
The specification of deep-equal() has always stated that type annotations are
ignored when comparing elements; however if one element has a complex type and
the other a simple type, then they are not deep equal.
(The spec doesn't say this very elegantly: its words are "The two nodes are
both annotated as having simple content or both nodes are annotated as having
complex content.")
(It actually goes beyond this, two nodes that both have complex type but with
different variety, e.g. one mixed and one element-only, cannot be deep-equal)
There has never until now been a test for this in the test suite, but I have
now added one: K2-SeqDeepEqualFunc-39. I have also changed my product to pass
this test. This has an unforeseen and in my view undesirable consequence: as a
result of making this change, an untyped (unvalidated) document is no longer
deep-equal to its validated equivalent, if the validated tree has any elements
with simple content. I discovered this very quickly because my test driver uses
deep-equal() for comparing results - in fact, there may well be tests where we
incorrectly make a deep-equal assertion.
I am raising this bug to invite discussion on whether we should consider
changing the specification in this area. It would be interesting to know how
other implementations handle this test case. I have raised the bug against 3.0,
but making a change here would be an incompatibility with the 2.0
specification, which we could only justify if the overwhelming majority of
implementations have failed to enforce this rule correctly.
One possible solution, short of removing the rule entirely, would be to say
that if one of the nodes is untyped, the other is treated as untyped for
comparison purposes.
--
Configure bugmail: https://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 Wednesday, 30 May 2012 20:21:12 UTC