This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Converting a string to node test
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] Converting a string to node test
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Sat, 21 Apr 2001 22:34:49 +0100
- References: <87bspqd1le.fsf_-_@online.fr>
- Reply-To: xsl-list at lists dot mulberrytech dot com
> 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()"/>
by
<xsl:copy-of select="$y/node()"/>
David
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet delivered
through the MessageLabs Virus Control Centre. For further information visit
http://www.star.net.uk/stats.asp
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list