Subject: RE: Named template param - variable not found
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 27 Oct 2007 09:27:07 +0100
|
It needs to be <xsl:param> rather than <param>.
It's an error in XSLT 2.0 to supply a parameter to a named template that
doesn't declare that parameter. It's not an error in 1.0 - the parameter is
simply ignored - so I'm surprised you're getting error messages from
Sablotron or Xalan-J.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Matthew Lindfield Seager [mailto:matthew@xxxxxxxxxxxxxxx]
> Sent: 27 October 2007 02:34
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Named template param - variable not found
>
> I have previously had no troubles getting named templates to
> work however I am struggling to get a fairly basic navigation
> menu to work. I'm using TestXSLT and when I attempt to
> process the page using Sablotron, Saxon or Xalan-J I get an
> error (along the lines of variable "currentPage" not found).
> Libxslt will process it but the result has a superfluous
> "<param name="currentPage">" in the body of the html.
>
> An extremely cut down version of the xsl file is included
> below. I have tried using a select attribute with the
> supplied parameter
> (select="'Accounts'") but the result is the same. I have also
> tried modifying the test in the <xsl:when> block but that
> hasn't worked either.
>
> Am I making a subtle mistake or am I completely off the rails?
>
> Regards,
> Matthew
>
>
>
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
> Transform">
>
> <xsl:output method="html" indent="yes" />
>
> <xsl:template match="/">
> <html>
> <head><title>myFinances Accounts Page</title></head>
>
> <body>
> <xsl:call-template name="footer">
> <xsl:with-param
> name="currentPage">Accounts</xsl:with-param>
> </xsl:call-template>
> </body>
> </html>
>
> </xsl:template>
>
> <xsl:template name="footer">
> <param name="currentPage" />
> <xsl:choose>
> <xsl:when test="not($currentPage='Start')">
> <a href="index.html"
> class="navigation">Start Page</a>
> </xsl:when>
> <xsl:otherwise>
> Start Page
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
>
> </xsl:stylesheet>
|