6.6. Advanced Techniques

At this point, you are ready to become an XSLT power user. This section introduces some spiffy techniques such as naming and passing parameters to template rules, using modes to change the behavior of rules, and handling whitespace.

6.6.1. Named Templates

All the template rules we've seen so far are specified by their match patterns. Sometimes, however, we want to call a template rule explicitly; XSLT provides the named template for this purpose. A named template is an advantage for repetitive tasks, as it simplifies the code and makes it more readable. Software developers may think of named templates as subroutines, which perform a similar role in programming languages.

A named template is the same as any other rule, except instead of a match attribute, it has a name attribute, which gives it a label. You use an element called <xsl:call-template> to jump to that rule. Unlike a regular template rule, the context node and node set do not change upon invocation of a named template.

Here's an example of a named template that generates a bank of navigation links for an HTML page:

<xsl:template name="navbar">
  <div class="navbar">
    <xsl:text>Current document: </xsl:text>
    <xsl:value-of select="title"/>
    <br/>
    <a href="index.htm">Home</a> |
    <a href="help.htm">Help</a> |
    <a href="toc.htm">Contents</a>
  </div>
</xsl:template>

Before the links, we've placed two lines to print the current document's title. This demonstrates that the current node is the same as it ...

Get Learning XML now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.