□ Если ни один из предков контекстного узла не имеет атрибута
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
суммирует значения узлов из переданного ей множества. Строковые значения узлов сначала преобразуются в числа, а затем все полученные числа складываются.