Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

Операции с булевыми значениями

XPath поддерживает только две логические операции —

and
(логическое "и") и
or
(логическое "или"). В XPath нет оператора логического отрицания, вместо него применяется функция
not
, которая возвращает "истину", если аргументом была "ложь" и наоборот.

Логические операторы в XPath бинарны, то есть требуют два операнда булевого типа. Если операнды имеют другой тип, то они будут приведены к булевым значениям.

Логические вычисления в XPath абсолютно стандартны. Мы приведем их для справки в табл. 6.2.

Таблица 6.2. Вычисление логических выражений

Значение Выражение
A
B
A or В
A and В
false
false
false
false
false
true
true
false
true
false
true
false
true
true
true
true

Как и во многих других языках, операция "и" (

and
) старше операции "или" (
or
). Например, такое выражение, как
A and B or C and D or E
эквивалентно выражению
(A and В) or (С and D) or E
.

Приведем синтаксические правила продукций логических операций XPath. Операции "или" соответствует продукция

OrExpr
, операции "и" — продукция
AndExpr
.

[XP21] OrExpr ::= AndExpr | OrExpr 'or' AndExpr

[XP22] AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr

Операции с числами

Перечень арифметических операций в XPath довольно ограничен. К ним относится сложение, вычитание, умножение, деление и унарная операция отрицания, которая меняет значение операнда на противоположное. Кроме того, числа можно сравнивать при помощи операторов сравнения.

Арифметические операции

Арифметические операции XPath сведены в табл. 6.3.

Таблица 6.3. Арифметические операции в XPath-выражениях

Операция Синтаксис
Сложение
A + B
Вычитание
A - B
Умножение
A * B
Деление
A div B
Остаток деления
A mod B
Унарное отрицание
– A

Если операнды, значения, участвующие в операции, не являются числами, они сначала приводятся к этому типу, а уж затем производится операция. Например, можно легко перемножать литералы:

'2' * '2'
→
4

Арифметические действия в XPath работают, что называется, "как обычно", то есть совершенно стандартным образом. Арифметика XPath основывается на стандарте IEEE 754, который был использован и в других распространенных языках программирования, например в Java. Пожалуй, следует лишь обратить внимание на операторы деления, поскольку в разных языках они означают разные действия и потому легко запутаться.

Оператор

div
делит свой первый операнд на второй. Это не целочисленное деление, как в некоторых других языках,
div
осуществляет деление чисел с плавающей точкой. Оператор
div
аналогичен оператору деления "
/
" в таких языках, как Java, С++ и Pascal.

Примеры:

3.2 div 2.5
→
1.28

3.2 div -2.5
→
– 1.28

– 3.2 div -2.5
→
1.28

Оператор

mod
возвращает остаток деления первого своего оператора на второй. Поскольку в разных языках остаток деления вычисляется по-разному, легче всего будет пояснить его функционирование в XPath на примере:

3.2 mod 2
→
1.2

3.2 mod -2
→
1.2

– 3.2 mod 2
→
– 1.2

– 3.2 mod -2
→
– 1.2

Оператор mod аналогичен оператору "

%
" в таких языках, как Java и ECMAScript.

Результат остатка от деления имеет тот же знак, что и делимое. Этот факт можно использовать для того, чтобы выполнять деление без остатка, например число

A
можно нацело разделить на число
B
выражением
(A - (A mod B)) div B
.

Пример:

(3.2 - (3.2 mod 2)) div 2
→
1

  • Читать дальше
  • 1
  • ...
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: