28

我最近一直在使用 XPath,并且一直在寻找有关哪些浏览器支持 XPath 2.0 的信息,但运气不佳。我能找到的最好的是各种渲染引擎的查询技术比较表。

这清楚地告诉我 Firefox 和 IE(两者的所有版本)都不支持 XPath 2.0,但是 Chrome、Safari 等的其他渲染引擎呢?有没有人有这方面的任何信息或知道在哪里可以找到它?

4

4 回答 4

5

我不知道,官方的实现列表也不包括一个。

另一种选择——当然性能不如原生实现——是XQIB,它是 JavaScript 中的 XQuery 实现。XPath 2.0 作为一个子集完全包含在 XQuery 1.0 中,因此您将能够在所有支持 JavaScript 的浏览器中使用所有 XPath 2.0 特性(以及更多特性)。

从他们的网站上获取的关于如何使用它的简短示例:

<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>
于 2013-05-20T22:24:49.100 回答
2

大多数浏览器不支持 XPATH 2.0,请参阅布局引擎比较以获取更多信息。

但是,您可以通过使用Saxon-CE在 Firefox 中获得对 XPATH 2.0 的支持,请参阅MDN XSLT_2.0 页面上的更多信息。

于 2018-08-30T12:43:41.907 回答
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。

2020 年 8 月更新:Saxon-CE 的当前继任者是 Saxon-JS 2,它支持 XPath 3.1。

于 2014-08-28T22:07:07.777 回答
1

在 JavaScript 中有一个开源 XPath 2.0 实现,也被包装为一个jQuery XPath 插件

于 2015-06-23T17:51:51.950 回答