哪些浏览器支持 Xpath 2.0?
Posted
技术标签:
【中文标题】哪些浏览器支持 Xpath 2.0?【英文标题】:What browsers support Xpath 2.0? 【发布时间】:2013-05-15 13:24:43 【问题描述】:我最近一直在使用 XPath,并且一直在寻找有关哪些浏览器支持 XPath 2.0 的信息,但运气不佳。我能找到的最好的是各种渲染引擎的query technologies comparison table。
这清楚地告诉我 Firefox 和 IE(两者的所有版本)都不支持 XPath 2.0,但是 Chrome、Safari 等的其他渲染引擎呢?有没有人知道这方面的任何信息或知道在哪里可以找到它?
【问题讨论】:
【参考方案1】:我不知道,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>
【讨论】:
【参考方案2】:大部分浏览器不支持 XPATH 2.0,请查看Comparison of layout engines 了解更多信息。
但是,您可以通过使用 Saxon-CE 在 Firefox 中获得对 XPATH 2.0 的支持,请参阅 MDN XSLT_2.0 page. 上的更多信息
【讨论】:
【参考方案3】:有一个Open source XPath 2.0 implementation in JavaScript,也包装为jQuery XPath plugin。
【讨论】:
【参考方案4】:还有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。
2020 年 8 月更新:Saxon-CE 的当前继任者是 Saxon-JS 2,它支持 XPath 3.1。
【讨论】:
以上是关于哪些浏览器支持 Xpath 2.0?的主要内容,如果未能解决你的问题,请参考以下文章