哪些浏览器支持 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?的主要内容,如果未能解决你的问题,请参考以下文章

哪些浏览器支持 XSLT 2.0?

支持 XPath 2.0 的 Java XSLT 处理器

Xpath选择操作web元素

.Net Core 3.1 和 .Net 5.0 是不是支持 XPath 2.0?

.NET 的 XPath 和 XSLT 2.0? [关闭]

第18章 JavaScript 与 XML