JxPath: оценка '' = 0 - PullRequest
       39

JxPath: оценка '' = 0

1 голос
/ 13 декабря 2011

Я оцениваю выражение '' = 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 не пытается преобразовать их в числа, как определяет спецификация.

Это ошибка?

1 Ответ

0 голосов
/ 13 декабря 2011

Да, если ваша информация верна, то я думаю, что это ошибка.

...