Re: [xsl] substitute variable value into xpath expression - problem

Subject: Re: [xsl] substitute variable value into xpath expression - problem
From: David Carlisle <davidc@xxxxxxxxx>
Date: Mon, 11 Apr 2005 15:29:08 +0100
This is a FAQ.

msxsl:node-set($TRAINING_TYPE_XMLDOC)/$XML_PARENT/$XML_CHILD">

$XML_PARENT contains a string as does XML child
so your expression is equivalent to

msxsl:node-set($TRAINING_TYPE_XMLDOC)/'training_types'/'training_type'">

which is a syntax error. people often seem to expect this to work in
XSLT but it is just the same as having 
x = " + 1"
y = 1
in C
and hoping that
y x
expands to
1 + 1
and evaluates to 2.

In general you need an extension function that evaluates strings as
Xpaths, but here you can do


<xsl:for-each select="msxsl:node-set($TRAINING_TYPE_XMLDOC)/*[name()=$XML_PARENT]/*[name()=$XML_CHILD}">

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread