问题描述
我在大学课程(确切地说是XPath 1.0)中学习XML和XPath,但偶然发现了一些东西。 F.e.如果我写一个表达式:
NaN < true()
它返回true。这很奇怪。当我这样做的时候。
NaN < 1
它返回false。 AFAIK XPath 1.0比较(不带节点集)首先将值转换为数字,然后才进行比较。所以,在第一个表达式中它是这样的
NaN < number(true())
-> NaN < 1
第二个
NaN < 1
我想深入了解这一点,因此任何信息都将有所帮助。在docs中我没有发现任何有关此情况的信息。也许我错过了一些事情。
谢谢!
解决方法
令牌NaN不代表双精度值NaN,它是child::NaN
的缩写,它返回一个空节点集(除非您的XML文档当然包含一个名为NaN的元素)。
我对一所大学应该教授XPath 1.0感到有些惊讶,而XPath 1.0早已被新版本所取代。当然,仍然有很多人在使用它,但是我本以为一所大学会教一个新版本。