Dom 为什么document.evaluate(';';';,document.body,null,XPathResult.ANY_TYPE,null)。singleNodeValue引发异常?
如果我告诉XPath计算器我想要一个Dom 为什么document.evaluate(';';';,document.body,null,XPathResult.ANY_TYPE,null)。singleNodeValue引发异常?,dom,xpath,document.evaluate,Dom,Xpath,Document.evaluate,如果我告诉XPath计算器我想要一个XPathResult.FIRST\u ORDERED\u NODE\u TYPE(8)或者ANY\u UNORDERED\u NODE\u TYPE(9),我会得到body元素,正如预期的那样–但是所有其他结果类型都会产生一个表达式无法转换为返回指定的类型。异常(在Firefox中,WebKit和Opera似乎不那么慷慨,只将其命名为TYPE\u ERR:DOM XPath Exception 52) 到底发生了什么?为了清楚起见,重新表述这个问题:为什么选
XPathResult.FIRST\u ORDERED\u NODE\u TYPE
(8)或者ANY\u UNORDERED\u NODE\u TYPE
(9),我会得到body
元素,正如预期的那样–但是所有其他结果类型都会产生一个表达式无法转换为返回指定的类型。
异常(在Firefox中,WebKit和Opera似乎不那么慷慨,只将其命名为TYPE\u ERR:DOM XPath Exception 52
)
到底发生了什么?为了清楚起见,重新表述这个问题:为什么选择上下文节点是一个类型错误,而不是明确地推断为单个节点的结果,这从XPath表达式本身(“
”,是“self::node()”
)可以明显看出,至少对我个人来说是这样
(作为参考,触发错误的并不是访问.singleNodeValue
,而是所有XPathResult的属性都指示了相同的错误。)有一个规范明确规定了singleNodeValue
“类型错误(is)”如果resultType不是任何无序的节点类型或第一有序的节点类型,则引发。实现遵循该规范。好的,有一个规范明确说明了关于singleNodeValue
“如果resultType不是任何无序的节点类型或第一有序的节点类型,则引发类型错误”。实现遵循该规范