RE: [xsl] value-of node test.

Subject: RE: [xsl] value-of node test.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 10 Jul 2006 21:28:36 +0100
If you're using predicates, remember that the context node changes inside
the predicate. Use current() to get around this:

for-each B
  value-of select="//A[@attribute-of-A = current()/@attribute-of-B]

However, using keys is easier and more efficient:

<xsl-key name="k" match="A" use="@attribute-of-A"/>

<xsl:for-each select="B">
   <xsl:value-of select="key('k', @attribute-of-B)" 

Michael Kay
http://www.saxonica.com/



> -----Original Message-----
> From: Steve [mailto:subsume@xxxxxxxxx] 
> Sent: 10 July 2006 20:13
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] value-of node test.
> 
> I'm iterating thu an ordered list of services.
> 
> I have another list of the values of those services, but not in order.
> 
> As I move thru the ordered list, I'd like to get the value of 
> the unordered list which shares meets the service=@title test.
> 
> Is there a shorthand way to do this using value-of? I know I 
> can resort to xsl:when or xsl:if, if need be.
> 
> General gist (doesn't work):
> 
> <xsl:value-of 
> select="$services//Record[child::service=string(@title)]/value" />

Current Thread