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

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

Шрифт:
Пример

'not' = 'no&#х74;'
→
true

Не следует также забывать, что один символ в строке — это необязательно один байт. Более того, это необязательно некое фиксированное число байт, ведь модель символов Unicode позволяет использовать для записи символа коды переменной длины.

Строка может быть приведена к булевому и численному типу.

В булевом представлении пустой строке соответствует

false
, непустой —
true
. Содержимое непустой строки при этом никакой роли не играет. Булевое значение строки "
false
" будет "истиной", равно, как и булевое значение строки "
true
".

Примеры

'То be' or 'not to be'
→
true

'Full' and ''
→
false

'true' and 'false'
→
true

При приведении к численным значениям строки разбираются как числа в десятичном формате. Если строка не является представлением числа, ее численным значением будет

NaN
. В свою очередь, результатом любых вычислений, в которых участвует
NaN
, будет также
NaN
.

Примеры

'2' * '2'
→
4

'one' + 'two'
→
NaN

'2/3' + '5/6'
→
NaN

'2' div '3' + '5' div '6'
→
1.5

При работе с численными значениями можно использовать следующие операторы:

□ 

–
, унарный оператор, который выполняет отрицание своего единственного операнда — эта операция равносильна вычитанию числа из нуля;

□ 

+
, бинарный оператор сложения, возвращает сумму своих операндов;

□ 

–
, бинарный оператор вычитания, возвращает разность своих операндов;

□ 

*
, бинарный оператор умножения, возвращает произведение своих операндов;

□ 

div
, бинарный оператор деления, возвращает частное от деления первого операнда на второй;

□ 

mod
, бинарный оператор, возвращающий остаток от деления первого операнда на второй.

Обратим внимание на то, что оператор

div
в отличие от его трактовки в языке Pascal, выполняет нецелое деление. Результатом вычисления выражения
3 div 2
будет
1.5
, а не
1
.

Динамическая типизация в XSLT позволяет использовать в выражениях значения разных типов — например, складывать строки и булевые значения или производить логические операции над числами. В тех случаях, когда тип данных значения отличается от типа данных, который требуется для операции, значения будут неявным образом приведены к требуемому типу, если это, конечно, возможно.

Множество узлов (node-set)

Несмотря на то, что XSLT оперирует логической моделью XML-документа как деревом с узлами, в XSLT нет типа данных, который соответствовал бы одному узлу. Вместо этого используется гораздо более мощный и гибкий тип данных, называемый множеством узлов (англ. node-set).

Множество узлов — это чистое математическое множество, состоящее из узлов дерева: оно не содержит повторений и не имеет внутреннего порядка элементов. Множества узлов выбираются особым видом XPath-выражений, которые называются путями выборки (англ. location path).

Пример
Листинг 3.1. Документ

<А>

 <В/>

 <С>

<D>

<G/>

</D>

<E/>

<F>

<H/>

<I/>

</F>

 </C>

</A>

Предположим, что в этом документе мы хотим выбрать все узлы, являющиеся потомками элемента

C
, который находился бы в элементе
A
, который находится в корне документа. Соответствующее XPath-выражение будет записано в виде
/A/C//node
.

Для наглядности представим наш документ в виде дерева (рис. 3.12) и выделим в нем соответствующее множество узлов.

Рис. 3.12. Выбор множества узлов

Выбранное множество состоит из узлов элементов

D
,
G
,
E
,
F
,
H
, I (рис. 3.13):

Рис. 3.13. Выбранное множество

Выбор множества не означает "клонирования", создания копий узлов, которые в него входят. Это просто выбор из всех узлов входящего документа некоторого набора, удовлетворяющего критериям, заданным путем выборки. С точки зрения программиста, множество узлов может быть представлено, как неупорядоченный список ссылок на узлы. При этом практическая реализация зависит от разработчиков конкретного процессора.

  • Читать дальше
  • 1
  • ...
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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