Технология XSLT
Шрифт:
Объединение множеств
Множества могут быть объединены при помощи оператора "
Множество всех элементов
Выражению объединения соответствует продукция
Старшинство операций
Теперь, когда мы изучили все типы операций XPath, можно дать синтаксическое определение выражению и выстроить все операции в порядке старшинства.
Выражению, как самой общей конструкции XPath, соответствует продукция
То есть, фактически, выражение в XPath определяется через логическое выражение. Естественно, выражения не обязаны быть логическими. Просто в иерархии синтаксических правил логическое выражение "или" находится выше всего. Верхние правила определяются через более примитивные правила и так далее. В итоге иерархия выражений выстраивается следующим образом (в скобках приведены названия EBNF-правил):
□ выражения (
□ логические выражения "или" (
□ логические выражения "и" (
□ выражения равенства и неравенства (
□ выражения сравнения (
□ выражения сложения и вычитания (
□ выражения умножения и деления (
□ унарные выражения (
□ выражения объединения множеств (
□ выражения путей выборки (
□ пути выборки (
По этой схеме несложно выяснить старшинство операций — чем ниже выражение находится в этой иерархии, тем выше его приоритет. Для полной ясности, перечислим операции в порядке старшинства от старших, с большим приоритетом, к младшим, с меньшим приоритетом выполнения:
□ операции с путями выборки;
□ операция объединения множеств (
□ унарная операция отрицания (
□ умножение, деление и вычисление остатка от деления (
□ операции сложения и вычитания (
□ операции сравнения (
□ операции проверки равенства и неравенства (
□ операция "и" (
□ операция "или" (
Операции одного порядка имеют левую ассоциативность, как это было показано на примере с операциями сравнения (
Функции
Кроме операций, которые обеспечивают примитивные базовые действия, в XPath можно использовать функции. Спецификация языка XPath определяет базовую библиотеку функций, которую должны поддерживать все XSLT-процессоры. В XSLT эта библиотека дополняется еще несколькими полезными функциями. Кроме этого, большинство процессоров реализуют механизм расширений, при помощи которого можно использовать в XSLT собственные функции.
В этой главе мы будем рассматривать только функции базовой библиотеки XPath. Функции, которые добавляются в XSLT, будут разбираться чуть позже, а функции-расширения и их создание вообще является достаточно сложной темой, вынесенной в отдельную главу.
Прежде, чем разбирать функции, рассмотрим синтаксис их вызова. Он описывается правилом
Таким образом, вызов функции состоит из имени и перечисленных в круглых скобках аргументов, которых может в принципе и не быть. С точки зрения синтаксиса аргументом функции может быть любое выражение, однако на практике функции предъявляют к своим аргументам определенные требования. Мы будем записывать правила вызова той или иной функции прототипом вида
где