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

xsl:accumulator-rule

Определяет правило для xsl:accumulator.

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

  • Содержимое: sequence-constructor
  • Допустимые родительские элементы: xsl:accumulator

Атрибуты

match
pattern
Шаблон, определяющий набор узлов, к которым применяется правило накопления.
phase?
"start" | "end"
Определяет, срабатывает ли правило до или после обработки потомков, указывая phase="start" (по умолчанию) или phase="end" соответственно.
select?
expression
Выражение, которое должно быть оценено правилом, может быть задано либо атрибутом select, либо вложенным конструктором последовательности.
saxon:capture?
boolean
Значение "yes|true|1" в правиле phase="end" для потокового накопителя устраняет требование, чтобы атрибут select (или конструктор последовательности) был неподвижным. Вместо этого выражение имеет доступ к снимку потокового узла (в смысле функции fn:snapshot). Например, запись select="($value, .)" гарантирует, что значение аккумулятора содержит последовательность моментальных копий всех узлов элементов, соответствующих правилу аккумулятора. Подробнее см. в saxon:capture.

Примеры

Пример использования правила захвата аккумуляторов для построения глоссария документа см. в статье блога Capturing Accumulators.

Пример

1
2
3
4
5
6
7
8
9
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- Declare accumulator for calculating minimum salary -->
  <xsl:accumulator name="min-salary" initial-value="10000000">
    <!-- Define rule for employee elements -->
    <xsl:accumulator-rule match="employee" select="if (@salary lt $value) then @salary else $value"/>
  </xsl:accumulator>

  <!-- The rest of the style -->
</xsl:stylesheet>

Ссылки

См. также

Комментарии