如果我告诉XPath评估者我想要XPathResult.FIRST_ORDERED_NODE_TYPE
(8)或ANY_UNORDERED_NODE_TYPE
(9),我会按预期得到body
元素 - 但所有其他结果类型产生The expression cannot be converted to return the specified type.
异常(在Firefox中; WebKit和Opera看起来不那么慷慨,只需将它命名为TYPE_ERR: DOM XPath Exception 52
。
发生了什么事?并且,为了清楚地重新解释这个问题:为什么选择上下文节点是一个类型错误,而不是明确推断为单节点结果,这从XPath表达式本身("."
,"self::node()"
的同义词是显而易见的。 1}}),至少对我自己是一个人?
(作为参考,它没有特别访问.singleNodeValue
触发错误 - 所有XPathResult的属性都表示同样的错误。)
答案 0 :(得分:1)
有一个规范http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult-singleNodeValue明确说明singleNodeValue
如果resultType不是ANY_UNORDERED_NODE_TYPE或FIRST_ORDERED_NODE_TYPE则会引发“TYPE_ERR(is)”。实现遵循该规范。