Passing Parameters
If we invoke a template by name, which is similar to
calling a subroutine, we’ll need to pass parameters to those
templates. We do this with the <xsl:with-param>
element. For example,
let’s say we want to call a template named
draw-box, and then pass the parameters startX
, startY
, endX
, and endY
to it. Here’s what we’d do:
<xsl:call-template name="draw-box"> <xsl:with-param name="startX" select="50"/> <xsl:with-param name="startY" select="50"/> <xsl:with-param name="endX" select="97"/> <xsl:with-param name="endY" select="144"/> </xsl:call-template>
In this sample, we’ve called the template named draw-box
with the four parameters we
mentioned earlier. Notice that up until now, <xsl:call-template>
has always been an
empty tag; here, though, the parameters are the content of the
<xsl:call-template>
element.
(If you want, you can do the same thing with <xsl:apply-templates>
.)
If we’re going to pass parameters to a template, we have to set
up the template so that it expects the parameters we’re passing. To do
this, we’ll use the <xsl:param>
element inside the
template. Here are some examples:
<xsl:template name="draw-box"> <xsl:param name="startX"/> <xsl:param name="startY" select="'0'"/> <xsl:param name="endX"> 10 </xsl:param> <xsl:param name="endY"> 10 </xsl:param> ... </xsl:template>
A couple of notes about the <xsl:param>
element:
If you define any
<xsl:param>
elements in a template, they must be the first thing in the template.The
<xsl:param>
element allows you to define ...
Get XSLT, 2nd Edition 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.