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

Subject: Re: [xsl] Error when params are in Xpath expression
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 12 May 2009 11:00:04 -0400

At 07:06 AM 5/12/2009, you wrote:
<!-- 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:when test="true()">

                <xsl:value-of select="'not found'"/>

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?

Only the "/$toLang" step will give the error.

You have a couple of options. You could fall back on name testing, and use the step "/*[name()=$toLang]".

If you find that cumbersome (and some of us do), you could remodel somewhat. Instead of using 'de', 'fr', 'en' and so forth as element names:


you could reduce them to values on attributes:

<str lang="de">Halt</str>
<str lang="fr">Arretez</str>
<str lang="en">Stop</str>

In this case you could have


I hope that helps,

Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.      
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
  Mulberry Technologies: A Consultancy Specializing in SGML and XML

Current Thread