2011-12-13 90 views
1

我正在评估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尝试将它们都转换为数字。 00NaN'',我测试JxPath确实将它们转换为number()函数。这意味着JxPath不会尝试将它们转换为数字,正如规范所定义的那样。

这是一个错误?

+0

'''= NaN'有效吗? (不是很熟悉xpath的更精细的点,但似乎NaN≠0?) – BRFennPocock

回答

0

是的,如果您的信息是正确的,那么我认为这是一个错误。

+0

我在邮件列表中发布了完全相同的问题:http://markmail.org/search/?q=fragkakis%20list%3Aorg .apache.commons.users%2F#查询:fragkakis%20list%3Aorg.apache.commons.user +页面:1 +中期:xdvqw254uknpuadu +状态:结果 –