NaN 和任何其他值的 XPath 1.0 比较

XPath 1.0 comparison of NaN and any other value

我在大学课程中学习 XML 和 XPath(准确地说是 XPath 1.0),我偶然发现了一些东西。 F.e。如果我写一个表达式:

NaN < true()

它 returns 是的。这很奇怪。当我做的时候。

NaN < 1

它 returns 错误。 AFAIK XPath 1.0 比较(没有节点集)首先将值转换为数字,然后才比较它们。所以,在第一个表达式中它是这样的

NaN < number(true()) -> NaN < 1

第二个

NaN < 1

我想弄个水落石出,所以任何信息都会有所帮助。我在 docs 中没有找到任何关于这种情况的信息。也许我错过了什么。

提前致谢!

令牌 NaN 不代表双精度值 NaN,它是 child::NaN 的缩写,其中 returns 一个空的 node-set(当然,除非您的 XML 文档包含一个名为 NaN 的元素)。

令我惊讶的是,一所大学竟然教授 XPath 1.0,它早已被新版本所取代。当然很多人还在使用它,但我本以为大学会教更新的版本。