为什么document.evaluate('。',document.body,null,XPathResult.ANY_TYPE,null).singleNodeValue抛出异常?

时间:2012-11-24 04:14:25

标签: dom xpath document.evaluate

如果我告诉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的属性都表示同样的错误。)

1 个答案:

答案 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)”。实现遵循该规范。