Re: [xsl] Nesting XPath predicates

Subject: Re: [xsl] Nesting XPath predicates
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Thu, 24 Apr 2008 09:17:05 +0100
On 24/04/2008, Liam Quin <liam@xxxxxx> wrote:
> Easier might be
>    <xsl:template match="dataset">
>      <xsl:variable name="sn" select="serviceName" />
>      <xsl:value-of select="//service/[@name = $sn]/@base" />
>    </xsl:template>

It is easier to use a variable when you're learning, but this is what
the current() function is for:

//service[@name = current()/serviceName]

(I've also dropped the odd / after service)

The current() function changes the context node to what is was outside
of the XPath, so the <dataset> element in this case.

Ultimately though, you should use a key here:

<xsl:key name="service-by-name" match="service" use="@name"/>

with

key('service-by-name', serviceName)


cheers
-- 
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

Current Thread