RE: [xsl] xsl:param error

Subject: RE: [xsl] xsl:param error
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Thu, 15 Nov 2001 17:26:36 -0000
> I am attempting to set a counter using the XSL:param method.

You can't set counters in XSLT. It's not a procedural programming language.

> The following is my XSL code :-
> <?xml version='1.0'?>
> <!--<xsl:stylesheet xmlns:xsl="";>-->;
> <xsl:stylesheet
> xmlns:xsl="";; version="1.0">
> <xsl:template match="/banners">
> <xsl:param name="count">0</xsl:param>
> <xsl:value-of disable-output-escaping="yes"
> select="count(bannerlist/banner)" />

Why are you doing disable-output-escaping? This is only to be used when you
deliberately want to output ill-formed XML. Here you are outputting a
number, which will never need to be escaped anyway.

> <HTML>
> <BODY>
> <xsl:for-each select="bannerlist/banner">
>     <xsl:param name="count" expr="count+1"></xsl:param>

(a) xsl:param can be used only immediately within xsl:stylesheet or
(b) The xsl:param element does not have an expr attribute
(c) If you want to refer to the count variable in an expression, you have to
write it as $count
(d) You can't refer to a variable within the element that declares that
(e) What you actually want is the position() function

>     <TR>
>     <TD>
> 	<xsl:value-of disable-output-escaping="yes" select="IMAGE" />

(f) Oh dear, I despair.

Mike Kay

 XSL-List info and archive:

Current Thread