Элемент <xsl:apply-templates> XSLT

Определение и использование

Элемент <xsl:apply-templates> может применить шаблон к текущему элементу или его подэлементам.

Если мы добавим атрибут select к элементу <xsl:apply-templates>, то он будет обрабатывать только подузлы, соответствующие значению этого атрибута. С помощью атрибута select можно определить порядок обработки подузлов.

Грамматика

<xsl:apply-templates select="expression" mode="name">
  <!-- Content:(xsl:sort|xsl:with-param)* -->
</xsl:apply-templates>

Атрибут

Атрибут Значение Описание
select Выражение Опционально. Определяет узел, который нужно обработать. Звездочка (*) выбирает весь узел. Если атрибут опущен, то выбираются все подузлы текущего узла.
mode Название Опционально. Если для одного и того же элемента определено несколько методов обработки, то их можно отличить с помощью mode.

Пример

Пример 1

Обернуть каждый элемент title элементом h1:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="title">
  <h1><xsl:apply-templates/></h1>
</xsl:template>
</xsl:stylesheet>

Пример 2

Обернуть все элементы title, принадлежащие всем подузлам message, элементом h1:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="message">
  <h1><xsl:apply-templates select="title"/></h1>
</xsl:template>
</xsl:stylesheet>

Пример 3

Обернуть все подузлы message, у которых атрибут mode установлен в "big", элементом h1:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="message">
  <h1><xsl:apply-templates select="*" mode="big"/></h1>
</xsl:template>
</xsl:stylesheet>