XPath 式を使用して XML からノードを選択するアプリケーションに取り組んでいます。Microsoft Edge プレビューでテストすると、これが機能しないように見えることがわかりました。問題を示す短いスニペットにコードを切り詰めました。
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);
Chrome では、これはログアウトされ1
、nodes.snapshotItem
正しいノードが含まれますが、Edge では、ログアウトされて0
ノードが返されません。
この条件の半分"//f[@id='some_id']"
または"//f[f]"
を個別に実行すると、ブラウザ間で一貫して機能し、Edge は正しいノードを返します。これら 2 つの条件 (両方とも問題のノードに当てはまる) がand
. 私は決して XPath の専門家ではないので、このスニペット内で標準外のことを行っているのか、それとも Edge プレビューの XPath 実装に問題があるように見えるのか、誰か教えてもらえますか?