我最近一直在使用XPath,并且一直在寻找有关哪些浏览器支持XPath 2.0而没有太多运气的信息。我能找到的最好的是各种渲染引擎的query technologies comparison table。
这清楚地告诉我,Firefox和IE(两者的所有版本)都不支持XPath 2.0,但是Chrome,Safari等的其他渲染引擎呢?有没有人有这方面的信息或者知道哪里可以找到它?
答案 0 :(得分:5)
我不知道,official list of implementations也不包含任何一个。
另一种选择 - 当然比本机实现更低效 - 将是XQIB,它是JavaScript中的XQuery实现。 XPath 2.0作为XQuery 1.0的子集完全包含在内,因此您可以在所有支持JavaScript的浏览器中使用所有XPath 2.0功能(以及更多)。
从他们的网站上获取short sample如何使用它:
<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>
答案 1 :(得分:2)
大多数浏览器不支持XPATH 2.0 ,请参阅Comparison of layout engines以获取更多信息。
但是,通过使用Saxon-CE,您可能会在Firefox中获得XPATH 2.0的支持,有关更多信息,请访问MDN XSLT_2.0 page.
答案 2 :(得分:1)
还有Saxon CE,一个XSLT 2.0的开源Javascript实现。由于XSLT 2.0包含XPath 2.0,因此在浏览器中提供了XPath 2.0实现。但它并不是内置的。
我刚刚尝试了当前版本的Safari(7.0.6)并且它没有接受我给它的XPath 2.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)目前还不支持XPath 2.0。
答案 3 :(得分:1)