Я оцениваю выражение '' = 0
в JxPath 1.3, и я ожидаю, что результат будет ложным. Это мой код:
JXPathContext.newContext(ctaSectionABean).getValue("'' = 0");
Тем не менее, возвращенный результат будет верным! Если я оцениваю то же выражение в инструменте Eclipse jxpath, я получаю false, что, как я ожидаю, будет правильным, так как документация в разделе 3.4 xpath1.0 говорит следующее:
Когда ни один объект для сравнения не является набором узлов, а оператор =
или! =, тогда объекты сравниваются путем преобразования их в общую
напечатайте следующим образом и затем сравните их. Если хотя бы один объект будет
сравнивается логическое значение, тогда каждый сравниваемый объект преобразуется в
логическое, как будто с применением логической функции. В противном случае, если в
хотя бы один объект для сравнения является числом, тогда каждый объект должен быть
сравнивается преобразуется в число, как будто путем применения числа
функция. В противном случае оба объекта для сравнения преобразуются в
Строки, как будто, применяя строковую функцию. = Сравнение будет
быть истинным тогда и только тогда, когда объекты равны; ! = сравнение будет
быть истинным, если и только если объекты не равны. Числа сравниваются
на равенство согласно IEEE 754 [IEEE 754]. Два логических равны
если либо оба истинны, либо оба ложны. Две строки равны, если
и только если они состоят из одной и той же последовательности символов UCS.
Итак, поскольку ни один объект не является логическим, а один из них является числом, я ожидаю, что JxPath попытается преобразовать их оба в числа. Это будет 0
для 0
и NaN
для ''
, и я проверил, что JxPath конвертирует их таким образом с помощью функции number()
. Это означает, что JxPath не пытается преобразовать их в числа, как определяет спецификация.
Это ошибка?