Перейти к содержанию

xsl:fork

Результатом инструкции xsl:fork является последовательность, сформированная путем объединения результатов оценки каждой из содержащихся в ней инструкций в порядке убывания.

Доступно в XSLT 3.0. Начиная с версии Saxon 9.8, доступна во всех редакциях. Реализована в Saxon-PE и Saxon-EE начиная с Saxon 9.7.

  • Категория: инструкция
  • Содержимое: ( xsl:fallback*, ( ( xsl:sequence, xsl:fallback* )* | ( xsl:for-each-group, xsl:fallback* ) ) )
  • Допустимые родительские элементы: любой элемент XSLT, модель содержимого которого - sequence-constructor; любой литеральный элемент результата
  • Элемент не имеет атрибутов

Заметки по реализации Saxon

Эта инструкция бессмысленна, когда не используется потоковая передача, но она по-прежнему поддерживается.

Полностью реализована с версии Saxon 9.7. Потоковая передача xsl:for-each-group, как дочернего элемента xsl:fork, с атрибутом group-by была введена в релизах сопровождения 9.7 и полностью поддерживается в Saxon 9.8.

В Saxon 9.6 инструкция была реализована с ограничениями: в частности, содержимое xsl:fork должно состоять из последовательности инструкций xsl:sequence и не может включать элементы xsl:for-each-group.

Реализация xsl:fork в Saxon 9.6 в потоковом режиме фактически не использует несколько потоков: скорее, события, о которых уведомляет парсер XML (такие как startElement и endElement), сообщаются каждому участку xsl:fork по очереди. Каждое звено накапливает свой результат во временном дереве, хранящемся в памяти, и эти временные деревья объединяются по завершении. Инструкция наиболее эффективна, когда каждое звено состоит из вызова xsl:result-document; в этом случае вывод может быть немедленно сериализован, не оставляя временных данных в памяти.

Ссылки

См. также

Комментарии