Re: [xsl] Error when params are in Xpath expression

Subject: Re: [xsl] Error when params are in Xpath expression
From: Dmitri Snytkine <d.snytkine@xxxxxxxxx>
Date: Tue, 12 May 2009 08:25:46 -0400
OK, so how do I find an element named tr_string that has attribute
@str with a value $str

I have a param declared like this
<xsl:param name="str" select="'recent_albums'"/>

Then I need to use $str in the Xpath
This does not work:

<xsl:value-of select="document('')/*/trans:tr/tr_string[@str=$str]"/>



On Tue, May 12, 2009 at 7:13 AM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
>
> Variable references such as $toLang can be used in place of literal values.
> They can't be used in place of arbitrary fragments of XPath expression text
> (they aren't macros). If $toLang is an element name, then you can find
> elements of that name using *[name()=$toLang].
>
> Regards,
>
> Michael Kay
> http://www.saxonica.com/
> http://twitter.com/michaelhkay
>
>
>
>> -----Original Message-----
>> From: Dmitri Snytkine [mailto:d.snytkine@xxxxxxxxx]
>> Sent: 12 May 2009 12:06
>> To: xsl-list
>> Subject: [xsl] Error when params are in Xpath expression
>>
>> <!-- get translation of a string -->
>>     <xsl:template name="translateString">
>>         <xsl:param name="str" select="'recent_albums'"/>
>>         <xsl:param name="toLang"/>
>>         <xsl:param name="fallback" select="'en'"/>
>>
>>         <xsl:choose>
>>             <xsl:when test="true()">
>>
>>                               <xsl:value-of
>> select="document('')/*/trans:tr/tr_string[@str=$str]/$toLang"/>
>>             </xsl:when>
>>             <xsl:otherwise>
>>                 <xsl:value-of select="'not found'"/>
>>             </xsl:otherwise>
>>         </xsl:choose>
>>     </xsl:template>
>>
>>
>> I get errors when running this template.
>> If I manually replace the $str and $toLang, then I am getting
>> the correct result.
>>
>> <xsl:value-of
>> select="document('')/*/trans:tr/tr_string[@str='recent_images']/ru"/>
>>
>> What is wrong with my syntax that uses params? Are params
>> allowed in Xpath expression?

Current Thread