Инструкция xsl:apply-templates
отдает указание процессору обрабатывать потомков текущего узла (т.е. узла исходного документа, к которому применим шаблон, содержащий данную инструкцию) и применять к ним шаблоны, содержащиеся в стиле. Если данная инструкция не содержится в шаблоне, то все потомки текущего узла будут исключены из конечного дерева, даже если в стиле для них заданы шаблоны. Один шаблон может содержать несколько инструкций xsl:apply-templates
. В этом случае потомки текущего узла будут обработаны (и включены в конечное дерево) несколько раз.
Синтаксис:
1 2 3 4 5 | <xsl:apply-templates select = "XPath" mode = "строка"> Другие инструкции, такие как xsl:sort, xsl:with-param </xsl:apply-templates> |
Или укороченный:
1 | <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
.
Синтаксис:
1 2 3 4 | <xsl:call-template name = "строка"> Другие инструкции, такие как xsl:with-param </xsl:call-template> |
Или укороченный:
1 | <xsl:call-template name = "строка" /> |
Атрибуты:
name
– указывает имя вызываемого шаблона (обязательный атрибут).
Вызванный шаблон будет применен к текущему узлу, т.е. узлу являющемуся текущим для шаблона, который содержит инструкцию xsl:call-template
.