我正在评估JxPath 1.3中的表达式'' = 0
,我期望结果是错误的。这是我的代码:JxPath:评估''= 0
JXPathContext.newContext(ctaSectionABean).getValue("'' = 0");
但是,结果返回是真的!如果我评价在Eclipse的JXPath工具,我得到错误的,这是我希望是正确的同样的表情,因为documentation of xpath1.0 3.4节说以下内容:
如果要比较没有一个对象是节点集合和运营商是= 或!=,则通过将对象转换为如下共同的 类型进行比较,然后对它们进行比较。如果要比较的至少一个对象是布尔值,则每个要比较的对象都将被转换为布尔值,如同应用布尔函数一样。否则,如果在 至少有一个要比较的对象是一个数字,那么比较每个对象 将被转换为数字,就好像通过应用数字 函数一样。否则,两个要比较的对象都将转换为 字符串,就像应用字符串函数一样。当且仅当对象相等时= =比较将为 ;当且仅当对象不相等时,!=比较将为 为真。根据IEEE 754 [IEEE 754],将数字比较为 。如果两者都为真或者两者都为假,则两个布尔值相等 。如果 和只有它们包含相同的UCS字符序列,则两个字符串相等。
因此,由于没有对象是布尔值,其中一个是数字,我希望JxPath尝试将它们都转换为数字。 0
为0
和NaN
为''
,我测试JxPath确实将它们转换为number()
函数。这意味着JxPath不会尝试将它们转换为数字,正如规范所定义的那样。
这是一个错误?
'''= NaN'有效吗? (不是很熟悉xpath的更精细的点,但似乎NaN≠0?) – BRFennPocock