私は最近XPathを使用していて、どのブラウザーがXPath2.0をサポートしているかについての情報を探しています。私が見つけた最高のものは、さまざまなレンダリングエンジンの クエリテクノロジ比較テーブル でした。
これは、FirefoxとIE(両方のすべてのバージョン)がXPath 2.0をサポートしていないことを明確に示していますが、Chrome、Safariなどの他のレンダリングエンジンはどうですか?誰かが情報を持っていますか?これまたはどこでそれを見つけることができるか知っていますか?
私は何も知りません、そして 実装の公式リスト もそれを含みません。
代替案(もちろんネイティブ実装よりもパフォーマンスが低い)は、JavaScriptのXQuery実装である [〜#〜] xqib [〜#〜] です。 XPath2.0はXQuery1.0のサブセットとして完全に含まれているため、JavaScriptをサポートするすべてのブラウザーですべてのXPath 2.0機能(およびそれ以上)を使用できます。
A 短いサンプル それを使用する方法について彼らのウェブサイトから取られました:
<script type="text/javascript" src="mxqueryjs/mxqueryjs.nocache.js"></script>
<script type="application/xquery">
b:alert(
let $x := <a><b>2</b><c>4</c></a>
return xs:string($x/b * $x/c)
)
</script>
大部分のブラウザはXPATH 2.0をサポートしていません。詳細については、 レイアウトエンジンの比較 を参照してください。
ただし、 Saxon-CE を使用すると、FirefoxでXPATH 2.0のサポートを取得できます。詳細については、 MDN XSLT_2.0ページ を参照してください。
JavaScriptでのオープンソースXPath 2.0実装 があり、 jQuery XPathプラグイン としてもラップされています。
XSLT 2.0のオープンソースJavascript実装である Saxon CE もあります。 XSLT2.0にはXPath2.0が含まれているため、これによりブラウザーにXPath2.0の実装が提供されます。ただし、組み込みではありません。
現在のバージョンのSafari(7.0.6)を試しましたが、提供したXPath2.0関数を受け入れませんでした。
> document.evaluate("starts-with('foo', 'f')", document.documentElement, null,
XPathResult.BOOLEAN_TYPE, null);
< XPathResult
> document.evaluate("ends-with('foo', 'o')", document.documentElement, null,
XPathResult.BOOLEAN_TYPE, null);
< Error: INVALID_EXPRESSION_ERR: DOM XPath Exception 51
したがって、WebKit(具体的にはJSエンジン、SquirrelFish/Nitro)は現在XPath2.0をサポートしていないと思います。