I'm working on an application that uses XPath expressions to select nodes from XML. We've noticed that this seems to break down for us when testing in the Microsoft Edge preview. I've cut down our code to a brief snippet that demonstrates the issue:
var xml = "<xml id='relationships'><Relationships><f id='some_id' ><f id='some_other_id' /></f></Relationships></xml>"; var doc = (new DOMParser).parseFromString(xml, "text/xml"); var nodes = doc.evaluate("//f[@id='some_id' and f]", doc, doc.createNSResolver(doc.documentElement), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); console.log(nodes.snapshotLength);
In Chrome, this will log out
1 and the
nodes.snapshotItem will contain the correct node, but in Edge, it's logging out
0 and returning no nodes.
If I run either half of this condition separately,
"//f[f]", it works consistently across browsers and Edge returns the correct node. It only fails when these two conditions, both true for the node in question, are combined with the
and. I'm not an XPath expert by any stretch, so can anyone tell me if I'm doing anything nonstandard within this snippet, or if this looks like an issue with the Edge preview's XPath implementation?