Instructs the XSLT processor to apply the appropriate templates to a node-set or sequence.



Required Attributes


Optional Attributes


Contains an XPath expression that selects the nodes to which templates should be applied. Valid values include * to select all the element children of the current node. Without this attribute, <xsl:apply-templates> selects all of the children of the current node, including text, processing instructions, and comments. The instructions <xsl:apply-templates /> and <xsl:apply-templates select="node()"/> are equivalent.


Defines a processing mode, which is a convenient syntax that lets you write specific templates for specific purposes. For example, you could write an <xsl:template> with mode="toc" to process a node for the table of contents of a document, and write other <xsl:template>s with mode="print", mode="online", mode="index", etc. to process the same information for different purposes.

[2.0] In XSLT 2.0, there are two special values for the mode attribute when used with the <xsl:apply-templates> element:


Matches the default mode


Matches the current mode


The <xsl:apply-templates> element can contain any number of <xsl:sort> and <xsl:with-param> elements. In many cases, <xsl:apply-templates> is an empty element.

Appears in

<xsl:apply-templates> appears inside a template.

Defined in

[1.0] XSLT section 5.4, “Applying Template Rules.”

[2.0] XSLT section 6.3, “Applying Template Rules.” ...

Get XSLT, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.