Элемент <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>