Книга: Технология XSLT
Функции
Кроме операций, которые обеспечивают примитивные базовые действия, в XPath можно использовать функции. Спецификация языка XPath определяет базовую библиотеку функций, которую должны поддерживать все XSLT-процессоры. В XSLT эта библиотека дополняется еще несколькими полезными функциями. Кроме этого, большинство процессоров реализуют механизм расширений, при помощи которого можно использовать в XSLT собственные функции.
В этой главе мы будем рассматривать только функции базовой библиотеки XPath. Функции, которые добавляются в XSLT, будут разбираться чуть позже, а функции-расширения и их создание вообще является достаточно сложной темой, вынесенной в отдельную главу.
Прежде, чем разбирать функции, рассмотрим синтаксис их вызова. Он описывается правилом FunctionCall
:
[XP16] FunctionCall ::= FunctionName
'(' ( Argument ( ',' Argument )* )? ')'
Таким образом, вызов функции состоит из имени и перечисленных в круглых скобках аргументов, которых может в принципе и не быть. С точки зрения синтаксиса аргументом функции может быть любое выражение, однако на практике функции предъявляют к своим аргументам определенные требования. Мы будем записывать правила вызова той или иной функции прототипом вида
тип1 функция(тип2, тип3, тип4?)
где тип1
— тип возвращаемого значения, тип2
, тип3
, тип4
— типы передаваемых параметров, символ "?
" обозначает аргумент, который может быть опущен. Также может быть использован символ *
для обозначения аргумента, который может повторяться несколько раз. Например,
string concat(string, string, string*)
определяет функцию concat
, которая возвращает строку, а на вход принимает два или более строковых параметра.
Аргументы функции отвечают EBNF-продукции Argument
:
[XP17] Argument ::= Expr
Имя функции определяется синтаксическим правилом FunctionName
. Функция может иметь любое корректное с точки зрения XML имя, кроме названий типов узлов (comment
, processing-instruction
, text
и node
):
[XP35] FunctionName ::= QName - NodeType
В базовой библиотеке XPath выделяют четыре типа функций: функции для работы с булевыми значениями, с числами, со строками и с множествами узлов.
- Аргументы функции в Python
- 3. Функции
- Новые функции API для работы с Blob и массивами
- Математические функции
- Размытые функции
- 7.3. Финансовые функции
- 4.3. Логические функции и таблицы истинности
- B1.7. Функции обработки ошибок
- 9.1.4.2. Функции-оболочки: execl() и др.
- 11.5. Функции getservbyname и getservbyport
- Функции dup(2) и dup2(2)
- Применение функции scanf( )