Speak.Me Учить иностранные слова

XSL: инструкция xsl:apply-templates и xsl:call-template

Инструкция xsl:apply-templates отдает указание процессору обрабатывать потомков текущего узла (т.е. узла исходного документа, к которому применим шаблон, содержащий данную инструкцию) и применять к ним шаблоны, содержащиеся в стиле. Если данная инструкция не содержится в шаблоне, то все потомки текущего узла будут исключены из конечного дерева, даже если в стиле для них заданы шаблоны. Один шаблон может содержать несколько инструкций xsl:apply-templates. В этом случае потомки текущего узла будут обработаны (и включены в конечное дерево) несколько раз.

Синтаксис:

Или укороченный:

Атрибуты:

  • select – задает узлы, которые необходимо обработать. В отсутствие атрибута select инструкция xsl:apply-templates обрабатывает всех детей текущего узла. Если необходимо обработать лишь некоторые из них, может использоваться атрибут select. Его значением является выражение на языке XPath. Допустимо с помощью выражения XPath выбирать не только потомков, но и предков текущего узла.
  • mode – задает режим. Режимы позволяют обрабатывать элемент несколько раз, получая каждый раз другой результат. В стиле может присутствовать несколько шаблонов для одного и того же исходного элемента, но с разными атрибутами mode. Инструкция xsl:apply-templates применит к исходному элементу тот шаблон, режим которого соответствует режиму самой инструкции (или, точнее говоря, значение атрибута mode которого соответствует значению атрибута mode самой инструкции). Если инструкция xsl:apply-templates не содержит атрибута mode, к исходному элементу будет применен шаблон, также не содержащий атрибута mode. Если процессору не удается найти шаблон с соответствующим режимом, то будет применен встроенный шаблон для режимов.

Инструкция xsl:call-template

Шаблоны можно вызывать из другого шаблона по имени. Имя шаблона задается атрибутом name элемента xsl:template. Для вызова шаблона используется инструкция xsl:call-template.

Синтаксис:

Или укороченный:

Атрибуты:

  • name – указывает имя вызываемого шаблона (обязательный атрибут).

Вызванный шаблон будет применен к текущему узлу, т.е. узлу являющемуся текущим для шаблона, который содержит инструкцию xsl:call-template.