RESOLVED FIXED 12340
XPathEvaluator behavior does not match Firefox - name() and attribute nodes
https://bugs.webkit.org/show_bug.cgi?id=12340
Summary XPathEvaluator behavior does not match Firefox - name() and attribute nodes
Jesse Costello-Good
Reported 2007-01-19 22:31:19 PST
// #2 // function name() does not work with attribute nodes var strXML = '<data><record id="-a-" a="v">???</record><record id="a-a">{abc}</record></data>'; var doc = (new DOMParser()).parseFromString(strXML, "text/xml"); var xpe = new XPathEvaluator(); var objResult = xpe.evaluate("//@*[name()='id']", doc, null, 0, null); var itm = null; var objNodes = []; while (itm = objResult.iterateNext()) objNodes.push(itm); assertEquals(2, objNodes.length); // Safari yields 0
Attachments
proposed fix (7.68 KB, patch)
2007-01-27 12:37 PST, Alexey Proskuryakov
no flags
proposed fix (7.60 KB, patch)
2007-01-28 04:55 PST, Alexey Proskuryakov
darin: review+
Alexey Proskuryakov
Comment 1 2007-01-27 12:37:20 PST
Created attachment 12715 [details] proposed fix
Alexey Proskuryakov
Comment 2 2007-01-28 04:55:11 PST
Created attachment 12723 [details] proposed fix Changed the wording of comments in the test a bit - the way name() works with a document that didn't have namespace normalization applied to it may be actually correct (at least, I couldn't find any indication that XPathEvaluator is supposed to normalize the document itself).
Darin Adler
Comment 3 2007-01-28 18:19:53 PST
Comment on attachment 12723 [details] proposed fix r=me Should that be prefix.isEmpty() instead of prefix.isNull()? Is it possible to construct a test that would behave differently depending on which you used? In general, I recommend taking advantage of the null value as distinct from empty only when it's necessary, so if either would work the same I'd prefer isEmpty.
Alexey Proskuryakov
Comment 4 2007-01-29 10:16:42 PST
Committed revision 19226. (In reply to comment #3) > Should that be prefix.isEmpty() instead of prefix.isNull()? Is it possible to > construct a test that would behave differently depending on which you used? I don't know how to make such a test; changed to isEmpty().
Note You need to log in before you can comment on or make changes to this bug.