|
Subject: Re: [xsl] string table lookup w/ and w/o temporary variable From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 14 Aug 2002 10:42:55 +0100 |
Hi Bernd,
> I can work out a template like this:
>
> <xsl:template match="name-string">
> <xsl:variable name="s-id" select="@id"/>
> <xsl:value-of select="/root/strings/string[@id=$s-id]"/>
> </xsl:template>
>
> This works perfect for me. I couldn't work out a working expression
> without the variable "s-id", but I wonder if that variable is really
> required?
Within the template, the "current node" is the name-string element --
that's the one the template's processing. You can always get hold of
this current node, even if you're within a predicate, using the
current() function. So your alternative is:
<xsl:template match="name-string">
<xsl:value-of select="/root/strings/string[@id = current()/@id]" />
</xsl:template>
The other thing that you could do is to set up a key that enabled you
to jump to the string elements you were interested in quickly. This is
a good idea if you have lots of name-string elements that you want to
dereference. Set up the key to match the string elements and use their
id attributes:
<xsl:key name="strings" match="string" use="@id" />
then you can get the value by calling the key; since you don't use a
predicate with this method, you don't need a variable or to use the
current() function, just:
<xsl:template match="name-string">
<xsl:value-of select="key('strings', @id)" />
</xsl:template>
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] string table lookup w/ and w/, Bernd Gauweiler | Thread | [xsl] xsl/xslt coding standard, Marcin Jackowski |
| Re: [xsl] position accross multiple, Jeni Tennison | Date | RE: [xsl] Global Variable, aruniima . chakrabar |
| Month |