Re: [xsl] Using a parameter in a condition

Subject: Re: [xsl] Using a parameter in a condition
From: Ian Lang <ianplang@xxxxxxxxx>
Date: Tue, 24 Feb 2004 09:32:58 -0800 (PST)
That's what I thought.  So I added a <xsl:message> to
see what the result of the look up was and realized
that the logic to check for missing value was messing
up the whole thing:

  <xsl:template name="getLocalizedString">
    <xsl:param name="key"/>
    <xsl:variable name="lookupString"
select="$stringTable/strings/string[@key=$key]"/>
    <xsl:message><xsl:text>   In getLocalizedString
value of lookupString is: '</xsl:text><xsl:value-of
select="$lookupString"></xsl:value-of><xsl:text>'</xsl:text></xsl:message>
    <xsl:choose>
      <xsl:when test="lookupString != ''">
        <!-- Return the found string -->
        <xsl:value-of select="$lookupString"/>
      </xsl:when>
      <xsl:otherwise>
        <!-- Return a string indicating what key could
not be found -->
        <xsl:text>!</xsl:text><xsl:value-of
select="$key"/><xsl:text>!</xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

Notice the lack of a '$' in front of what I meant to
be a variable name in the test:
      <xsl:when test="lookupString != ''">
changing to
      <xsl:when test="$lookupString != ''">
makes it all work.

Thanks for the help,

IL

> David wrote on
> 2004-02-24 08:43:21:
> 
> >          <xsl:with-param name="key"
> select="'String.One'"/>
> > 
> > That should work
> > 
> >        <xsl:with-param
> name="key"><xsl:text>String.One</xsl:
> > text></xsl:with-param>
> > 
> > That should work as well, although it's less
> efficient, forces the
> > creation of a result tree fragment which then has
> to be coerced back to
> > a string when you use it in a string context
> within the template.
> > 
> >        <xsl:with-param name="key"
> select="String.One"/>
> > 
> > that will set the param to the node set consisting
> of all child elements
> > with name String.One, this is probably an empty
> node set and so will act
> > as the string "" when you use the param in a
> string context.
> > 
> > 
> > David


__________________________________
Do you Yahoo!?
Yahoo! Mail SpamGuard - Read only the mail you want.
http://antispam.yahoo.com/tools

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


Current Thread