В XPath 1.0 оператор сравнения, отличный от сравнения на равенство, работает только для чисел.Это потому, что в XML вы имеете дело с UNICODE.Итак, чтобы сделать строку полным упорядоченным типом данных, вам нужно понятие сопоставления, которое было добавлено в XPath 2.0.
Первое выражение очевидно верно.Почему второй работает?Потому что оператор «больше чем» приводит оба аргумента к функции number()
.
С http://www.w3.org/TR/xpath/#booleans
Во-первых, сравнения, которые включают наборы узлов, определяются в терминах сравнений, которые не включают наборы узлов;это определяется равномерно для =,! =, <=, <,> = и>.
И после описания экзистенциального сравнения для наборов узлов (сравнение верно только в том случае, если внабор узлов, для которого выполняется сравнение):
Когда ни один объект для сравнения не является набором узлов и оператором является <=
, <
, >=
или >
затем объекты сравниваются путем преобразования обоих объектов в числа и сравнения чисел согласно IEEE 754