O'Reilly logo

Learning XML by Erik T. Ray

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required