【发布时间】:2018-06-11 03:02:15
【问题描述】:
当我们看到一致性图表时,例如https://caniuse.com/#search=xpath 和https://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"
但是这个 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
边缘:
XPATH15001:不支持 XPath 查询“让 $incr := function($n as xs:integer) as xs:integer { $n +1 } return $incr(2)”
火狐:
SyntaxError: 该表达式不是合法表达式。
问题 2 - 如果浏览器中允许使用 XPath 3.0,假设我的代码中有错误;那么 v3.1 的特性(如arrow-functions)怎么样,是否也允许?
【问题讨论】:
标签: javascript xml dom xpath browser