Две функции true и false возвращают тождественную 'истину' и тождественную 'ложь' соответственно. В XPath нет констант и, тем более, логических констант, определяющих 'истину' и 'ложь', как в других языках. Функции true и false восполняют эту нехватку.

Примеры:

true() or $var true

Это выражение всегда будет истинным вне зависимости от значения переменной var, поскольку дизъюнкция (логическая операция 'или') с тождественной 'истиной' всегда будет 'истиной'.

false() and $var false

Это выражение всегда будет ложным вне зависимости от значения переменной var, поскольку конъюнкция (логическая операция 'и') с тождественной 'ложью' всегда будет 'ложью'.

Функция lang

boolean lang(string)

Функция lang может использоваться для того, чтобы определить языковой контекст контекстного узла. В элементах XML можно использовать атрибут lang пространства имен xml для определения языка содержимого узла, например;

<text xml:lang='en-gb'>

Yet no living human being have been ever blessed with seeing...

</text>

Пространство имен, соответствующее префиксу xml, не требуется объявлять. Это служебное пространство имен, которое неявно задано во всех XML-документах.

Функция lang возвратит 'истину', если идентификатор языка, который передан ей в виде строкового параметра, соответствует языковому контексту контекстного узла. Это определяется следующим образом.

□ Если ни один из предков контекстного узла не имеет атрибута xml:lang, функция возвращает 'ложь'.

□ Иначе строковый параметр проверяется на соответствие значению атрибута xml:lang ближайшего предка. Если эти значения равны в любом регистре символов, или атрибут начинается как значение параметра функции и имеет суффикс, начинающийся знаком '- ', функция возвращает 'истину'.

□ В противном случае функция возвращает 'ложь'.

Примеры:

Функция lang('en') возвратит 'истину' в контексте любого из следующих элементов:

<body xml:lang='EN'/>

<body xml:lang='en-GB'/>

<body xml:lang='en-us'/>

<body xml:lang='EN-US'/>

Функция lang('de') возвратит 'истину' в контексте элемента b и 'ложь' — в контексте элементов а и с:

<а>

 <b xml:lang='de'>

  <c xml:lang='en'/>

 </b>

</a>

Числовые функции

Функция number

number number(object?)

Функция number явным образом конвертирует свой аргумент в числовой тип. Если аргумент не указан, функции передается множество узлов, состоящее из единственного контекстного узла. Коротко напомним правила преобразования в числовой тип.

□ Значения булевого типа преобразуются в 0 или 1 следующим образом: 'ложь' преобразуется в 0, 'истина' в 1.

□ Строковое значение преобразуется в число, которое оно представляет.

□ Множество узлов сначала преобразуется в строку, а затем, как строка в число. Фактически численным значением множества узлов является численное значение его первого узла.

□ Объекты других типов преобразуются в число в соответствии с собственными правилами. Например, результирующий фрагмент дерева так же как и множество узлов сначала преобразуется к строке, а затем в численный формат.

Примеры

number($to_be or not($to_be)) 1

Значение этого выражения будет 1, поскольку $to_be or not($to_be) будет истинным вне зависимости от значения переменной to_be.

number(false()) 0

number('00015.0001000') 15.0001

number('.0001000') 0.0001

number('1.') 1

number('-.1') -0.1

number('-5') -5

Функция sum

number sum(node-set)

Функция sum суммирует значения узлов из переданного ей множества. Строковые значения узлов сначала преобразуются в числа, а затем все полученные числа складываются.

Пример Листинг 6.3. Входящий документ

<list>

 <item>1</item>

 <item>3</item>

 <item>5</item>

</list>

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату