Re: [xsl] Converting a string to node test

Subject: Re: [xsl] Converting a string to node test
From: David Carlisle <davidc@xxxxxxxxx>
Date: Sat, 21 Apr 2001 22:34:49 +0100
> Do you know the secret?
this is a FAQ I think.

>   <xsl:copy-of select="$x[@$y=$z]/node()"/>

@$y doesn't mean anything as you observed.

If $y is a string with a name of an attribute then you can go
  <xsl:copy-of select="$x[@*[name()=$y and .=$z]]/node()"/>
but usually it's more fun to pass in the node you want rather than 
mess with names. Variables in XSLT are not restricted to strings
so you can pass nodes around.
You didn't show how you were calling your template but rather than pass
<xsl:with-param name="x" select="foo"/>
<xsl:with-param name="y" select="'attr'"/>

you may be able to do

<xsl:with-param name="x" select="foo"/>
<xsl:with-param name="y" select="foo[@attr']/>
 in which case your template just needs to replace

  <xsl:copy-of select="$x[@*[name()=$y and .=$z]]/node()"/>


  <xsl:copy-of select="$y/node()"/>


This message has been checked for all known viruses by Star Internet delivered
through the MessageLabs Virus Control Centre. For further information visit

 XSL-List info and archive:

Current Thread