Re: [xsl] value of variable inside a condition doesn't work?

Subject: Re: [xsl] value of variable inside a condition doesn't work?
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Tue, 28 Jan 2003 20:20:45 +0100
Hello Hubert,

you have two errors in your code:

Hubert Holtz wrote:
Hy,

first of all I know there is this <i18n> thing to make multilanguage sites, but that's not the topic.

I have enabled xslt-with-parameter in my sitemap, in my xsl file i have a global parameter 'lang' this is the parameter which should
contain the value of the equal url-parameter, so far so good.

Now I want to output text fragments in 2 languages, depending on this parameter, so I thought of sth. like this:

-- code --

<xsl:if test="($lang)='1' ">
    <xsl:variable name="stadt" select="Stadt"/>
     <xsl:variable name="Texteingabe" select="Hier Text eingeben"/>
    <xsl:variable name="berichtstatus" select="aktuell"/>
</xsl:if>

<xsl:if test="($lang)='2' ">
    <xsl:variable name="stadt" select="city"/>
    <xsl:variable name="Texteingabe" select="Please enter text"/>
    <xsl:variable name="berichtstatus" select="current"/>
</xsl:if>

The variables are out of scope. In scope means they are only used in descendants of its parent. So outside your <xsl:if/> they are out of scope.


Change it to:

<xsl:variable name="stadt">
  <xsl:if test="$lang=1">city</xsl:if>
</xsl:variable>

With this approach you don't make the second error.
<xsl:variable name="stadt" select="city"/> means, that you are searching for the text value of a child node with name 'city'. But you want a string, which must be written as select="'city'"/>.


With my above solution you have a result tree fragment in your variable, that is converted into a string when using <xsl:value-of select="$stadt"/>.

Regards,

Joerg

<td><xsl:value-of select="$stadt"/></td>

-- code --


But I get an error message, that there is no 'stadt' variable, if I delete the <xsl.if> part then there is no error message, but then I can't change the value of the variable depending on the 'lang' paramter, of course.

So could it be that variables can't be set in an if statement and if that's true what would be the solution?


thanks Homer30


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


Current Thread