Re: string table lookup w/ and w/o temporary variable
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
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format