Re: [xsl] the difference between xsl:variable and xsl:param

Subject: Re: [xsl] the difference between xsl:variable and xsl:param
From: Trevor Nash <tcn@xxxxxxxxxxxxx>
Date: Tue, 12 Feb 2002 13:56:27 +0000
Kit,

>Hi, can everyone tell me the difference between xml:param and xml:variable, 
>i got pretty confused over the use of the two.

I think you mean xsl:param and xsl:variable.

The important difference is that the value of an xsl:param could be
set outside the context in which it is declared.  For example if you
see:

<xsl:template ...>
   <xsl:param name="p" select="'x'" />
   <xsl:variable name="v" select="'y'" />
...
then you know that $v will always give you the string 'y' (note the
double set of quotes).  But for $p the string 'x' is only a default:
you will see a different value if the template is invoked with either
xsl:apply-templates or xsl:call-template which contains an instruction
such as:
   <xsl:with-param name="p" select="'not x'" />

<xsl:param> may also be used outside xsl:template, at the top level in
the stylesheet.  The value of such a parameter may be set when the
XSLT processor is called.  How this is done depends on the processor
and whether you call it from the command line or by program.

> Secondly, can anyone tell me 
>how to pass a variable to an xsl (e.g. <xsl:template 
>match=".//c="?variable"/> where as ?variable is pass down to the stylesheet 
>through javascript.

I am not sure what you are trying to do with that match pattern.  What
do you think it means?

Given something like

<xsl:stylesheet ...>
   <xsl:param name="variable" />
   <xsl:template match="c[. = $variable]" ...

With Saxon from the command line you would say:

   saxon in.xml style.xsl variable=z

to select all c nodes whose content was 'z' , e.g.
  <c>z</c>

To see how to do this from Javascript, have a look at the
documentation for your processor.

Regards,
Trevor Nash
--
Traditional training & distance learning,
Consultancy by email

Melvaig Software Engineering Limited
voice:     +44 (0) 1445 771 271 
email:     tcn@xxxxxxxxxxxxx

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread