如果我告诉 XPath 评估器我想要一个 XPathResult.FIRST_ORDERED_NODE_TYPE
(8),或者 ANY_UNORDERED_NODE_TYPE
(9),我会得到 body
元素,如预期的那样 - 但所有其他结果类型都会产生 表达式无法转换为返回指定类型。
异常(在 Firefox 中;WebKit 和 Opera 似乎不太慷慨,只是将其命名为 TYPE_ERR: DOM XPath Exception 52
改为。
这是怎么回事?并且,为了清楚起见,重新表述问题:为什么选择上下文节点是一个类型错误,而不是明确推断为单节点结果,这从 XPath 表达式本身("."
,中显而易见),是“self::node()”
的同义词),至少对于我自己来说是这样?
(作为引用,它不是专门访问 .singleNodeValue
触发错误的 - 所有 XPathResult 的属性都指示相同的错误。)
最佳答案
嗯,有一个规范 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”。实现遵循该规范。
关于dom - 为什么 document.evaluate ('.' , document.body, null, XPathResult.ANY_TYPE, null).singleNodeValue 抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538197/