Re: Change the value of global variables/params ??

Subject: Re: Change the value of global variables/params ??
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 7 Dec 1999 15:40:24 GMT


> Is it possible to assigne or change the value of a global variable or param 
> within a template? 

variables never change their value, parameters can be given new values
when the template is called (not inside the template)


> <xsl:variable name="variable.lang"/>

There's no point doing this as this variable will always have value
the empty string. Perhaps you wanted a top level xsl:param in which case
the value could be set when the stylesheet is called.


<xsl:template name="i18n">
    <xsl:choose>
      <xsl:when test="$variable.lang='en'">Abstract</xsl:when>
      <xsl:when test="$variable.lang='fr'">Résumé</xsl:when>
      ...
    </xsl:choose>
</xsl:template>

This doesn't work as the variable.lang is the variable declared at the
top level, which is always ''. If you want the template to take a
parameter called variable.lang, you must have a <xsl:param statement
at the start of _this_ template.



<xsl:template match="langset">
  <!-- Set the value of language -->
  <xsl:param name="variable.lang"><value-of select="@xml:lang"/></xsl:param>
  ...
  <call-template name="i18n"/>
  ...
</xsl:template>

you see variable.lang need not be a parameter of your langset template
as this template does not depend on this parameter, but you could pass
on the value as a parameter to the cal-template


<xsl:template match="langset">
  <call-template name="i18n">
    <xsl:with-param  name="variable.lang" select="@xml:lang"/>
  </call-template>
   ...
</xsl:template>



However there is no real need to pass this information down as a
parameter, as all templates can get the information in the original
source tree.

so you could not bother with parameters and just have

<xsl:template name="i18n">
  <xsl:variable name="variable.lang" select=
  "ancestor-or-self::*/@xml:lang"/>
    <xsl:choose>
      <xsl:when test="$variable.lang='en'">Abstract</xsl:when>
      <xsl:when test="$variable.lang='fr'">Résumé</xsl:when>
      ...
    </xsl:choose>
</xsl:template>

David


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


Current Thread