Книга: Технология XSLT

Операции сравнения

Операции сравнения

XPath позволяет сравнивать числа при помощи операторов, перечисленных в табл. 6.4.

Таблица 6.4. Операторы сравнения

Оператор Значение
= Равно
!= Не равно
< Меньше
> Больше
<= Меньше или равно (не больше)
>= Больше или равно (не меньше)

XPath-выражения чаще всего используются в значениях атрибутов, символ "<" в которых в соответствии с синтаксисом XML использовать нельзя. Поэтому операторы сравнения "меньше" ("<") и "не больше" ("<=") нужно записывать с использованием сущностей. Оператор "меньше" может быть записан как "&lt;", а оператор "не больше" как "&lt;=".

Пример

Результатом обработки элемента

<xsl:value-of select="1&lt;2"/>

будет строка "true".

Сравнение всегда требует наличия двух операндов числового типа. Если операнды не являются числами, они будут соответствующим образом преобразованы.

В XPath вполне корректным будет выражение вида A > B > C. Однако результат его будет довольно неожиданным. В XPath действует правило левой ассоциативности операторов сравнения, поэтому A > B > C будет равносильно (А > B) > C. То есть A будет сравнено с B, затем результат, истина или ложь, будет преобразован в числовой тип (получится 1 или 0) и затем сравнен со значением C.

Пример:

3 > 2 > 1 ? (3 > 2) > 1 ? 1 > 1 ? false
3 > 2 > 0
? (3 > 2) > 0 ? 1 > 0 ? true

Неравенствам в XPath соответствует продукция RelationalExpr:

[XP24] RelationalExpr ::= AdditiveExpr
                          | RelationalExpr '<' AdditiveExpr
                          | RelationalExpr '>' AdditiveExpr
                          | RelationalExpr '<=' AdditiveExpr
                          | RelationalExpr '>=' AdditiveExpr

Операции "равно" и "не равно" записываются при помощи продукции

EqualityExpr:
[XP23] EqualityExpr ::= RelationalExpr
                        | EqualityExpr '=' RelationalExpr
                        | EqualityExpr '!=' RelationalExpr

Оглавление книги


Генерация: 0.034. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз