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 |