浏览器中的 XPath 3

Ann*_*nie 3 javascript xml browser xpath dom

当我们看到一致性图表时,例如https://caniuse.com/#search=xpathhttps://developer.microsoft.com/en-us/microsoft-edge/platform/status/domlevel3xpath/?q=xpath,它通常是关于DOM Level 3 XPath 的,重点是使用 XPath 1.0访问 DOM 对象,但不一定是 XPath 3.0 或更高版本。

问题 1 - W3C 等对浏览器是否有明确的版本要求以支持较新版本的 XPath?

此 XPath 1.0 功能有效:

document.evaluate(
  'normalize-space(" X  ")',
  document, null, XPathResult.ANY_TYPE, null ).stringValue

// => "X"
Run Code Online (Sandbox Code Playgroud)

但是这个 XPath 3.0 内联函数功能 ( ref ) 会抛出:

document.evaluate(
  'let $incr := function($n as xs:integer) as xs:integer { $n +1 } return $incr(2)',
  document, null, XPathResult.ANY_TYPE, null ).stringValue
Run Code Online (Sandbox Code Playgroud)

边缘:

XPATH15001:不支持 XPath 查询“let $incr := function($n as xs:integer) as xs:integer { $n +1 } return $incr(2)”

火狐浏览器:

语法错误:该表达式不是合法表达式。

问题 2 - 如果浏览器允许 XPath 3.0,假设我的代码中存在错误;那么 v3.1 的功能(例如arrow-functions)怎么样,这些功能也被允许吗?

kjh*_*hes 5

没有浏览器本身支持 XPath 2.0,更不用说 XPath 3.0。

另请注意,与 XSLT 不同,XPath 没有确定 XPath 实现版本的内在方法,除了尝试给定版本支持的函数并观察是否发生错误(如您所做的那样)。

  • 标准可以规定合规条款,但不能强制采用。 (4认同)