Skip to content

XSLT <xsl:apply-templates> Instruction

How to use the <xsl:apply-templates> instruction in XSLT to process current or child nodes, with examples of the select and mode attributes for targeted transformations.

XSLT <xsl:xsl:apply-templates>

The <xsl:apply-templates> element applies a template to the current element or to the current element's child nodes.

If we add a select attribute to the <xsl:apply-templates> element, it will process only the child element that matches the value of the attribute.

We can use the select attribute to specify in what order the child nodes should be processed.

Syntax

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

Attributes

Attribute Value Required/Optional Description
select expression Optional Specifies the nodes to be processed. An asterisk selects the entire node-set. If this attribute is omitted, all child nodes of the current node will be selected
mode name Optional If there are multiple ways of processing defined for the same element, distinguishes among them

Example

Let's see some examples:

Example 1

Wrap a single <h1> element around each title element in the document:

example1.xslxml
<?xml version="1.0"  encoding="UTF-8"?>  
<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>

Example 2

Wrap a single <h1> element around all the title elements which are children of message:

example2.xslxml
<?xml version="1.0"  encoding="UTF-8"?>  
<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>

Example 3

Wrap a single <h1> element around all the child nodes of message that have the mode attribute set to "big":

example3.xslxml
<?xml version="1.0"  encoding="UTF-8"?>  
<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>
Navigation