xsl:sequence¶
Используется для построения произвольных последовательностей. Он может выбирать любую последовательность узлов и/или атомарных значений и, по сути, добавляет их к результирующей последовательности.
Доступен в XSLT 2.0 и более поздних версиях. Доступен во всех изданиях Saxon.
- Категория: инструкция
- Содержимое: sequence-constructor
- Допустимые родительские элементы: любой элемент XSLT, модель содержимого которого - sequence-constructor; любой литеральный элемент результата
Атрибуты¶
select?- expression
- Определяет вход. Обязательный атрибут в XSLT 2.0, но в XSLT 3.0 (и реализованном начиная с Saxon 9.5) вход может быть указан либо атрибутом
select, либо вложенным конструктором последовательности.
Подробности¶
Элемент xsl:sequence может использоваться для создания любой последовательности узлов и/или атомарных значений. Они включаются в последовательность результатов напрямую. В отличие от xsl:copy-of, копирование не производится.
Наиболее распространенное использование - возврат результата из функции (см. пример 1).
Есть еще два интересных сценария использования. Первый - это копирование атомарных значений в дерево (см. пример 2). Второй, более важный, - построение переменной с порядковым значением (см. пример 3). Переменная является последовательно-оценочной, если элемент привязки переменной (например, xsl:variable) имеет непустое содержимое, атрибут as и не имеет атрибута select.
Если узлы строятся внутри переменной с порядковым значением, они будут без родителей. Пример переменной с последовательным значением, содержащей узлы без родителей, приведен в примере 4.
Примеры¶
Пример 1¶
Возвращение результата из функции:
1 2 3 4 | |
Пример 2¶
Копирование атомарных значений в дерево:
1 2 3 4 5 | |
Это приводит к выводу <e>1 2 3 4 5<br/>6 7 8 9 10</e>.
Пример 3¶
Конструирование переменной с последовательным значением:
1 2 3 4 5 | |
В качестве значения переменной получается последовательность (1, 4, 9, 16, 25).
Пример 4¶
Создание переменной, значением которой является последовательность из трех атрибутов без родителей:
1 2 3 4 5 | |
Вполне законно иметь два атрибута в последовательности с одинаковыми именами; конфликта не возникает до тех пор, пока не будет сделана попытка добавить их оба в один и тот же элемент. Атрибуты могут быть добавлены в элемент с помощью <xsl:copy-of select="$seq"/> в инструкции xsl:element или в буквальном элементе результата. На этом этапе действует обычное правило: если атрибуты дублируются, побеждает последний.