|
Subject: Re: [xsl] Error when params are in Xpath expression From: Dmitri Snytkine <d.snytkine@xxxxxxxxx> Date: Tue, 12 May 2009 13:23:35 -0400 |
I think you forgot to provide the correct example of how I would use
the path, you said:
> In this case you could have
>
> document('')/*/trans:tr/tr_string[@str=$str]/*[@lang=$toLang]"
But that's how I am using it now. How would I use it if I change the
xml format to use 'lang' attribute of a string?
Then there is a question of which format would be faster for Xpath to
test to see if string exists in a desired language?
On Tue, May 12, 2009 at 11:00 AM, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
wrote:
> Dmitri,
>
> 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: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?
>
> 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:
>
> <de>Halt<de>
> <fr>Arretez</fr>
> <en>Stop</en>
>
> 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
>
> document('')/*/trans:tr/tr_string[@str=$str]/*[@lang=$toLang]"
>
> I hope that helps,
> Wendell
>
>
>
> ======================================================================
> Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx
> Mulberry Technologies, Inc. http://www.mulberrytech.com
> 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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Error when params are in , Wendell Piez | Thread | Re: [xsl] Error when params are in , Wendell Piez |
| Re: [xsl] Need help with using look, Dmitri Snytkine | Date | [xsl] anyone has template to do pre, Dmitri Snytkine |
| Month |