Re: [xsl] Variable Substitution In A Select Statement

Subject: Re: [xsl] Variable Substitution In A Select Statement
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Tue, 24 May 2011 15:16:14 +0200
Raymond Lillibridge wrote:
xsl-list Members,

Using Saxon-PE 9.3.0.5J from Saxonica (XSLT 2.0):

The following template matches on the specified @id in $FileA. Just what I need.

<xsl:apply-templates select="$FileA/book/level1[2]/level2[4]/section[2]/@id" />

However, if I have a variable, $Axpath_new, valued at "book/level1[2]/level 2[4]/section[2]", the following template returns nothing:

<xsl:apply-templates select ="$FileA/$Axpath_new/@id" />

Testing a multitude of methods, I could never get a variable to work in the select statement.
After much studying about how to make the template work properly, I read that I could try using the extension function node-set().  Further research stated that my free version of Saxon9 doesn't include those extensions but the Saxon9pe version does.  So, I purchased a copy of Saxon9pe and installed it yesterday.  (Also, I believe I read that if I was using XSLT 2.0, I wouldn't need to use the node-set() function.)

Any way, it seems like such a simple thing but I'm at a loss, and I'm asking for your kind assistance.

Well node-set is an extension function that is not needed at all in XSLT 2.0.
You need evaluate instead
<xsl:apply-templates xmlns:saxon="http://saxon.sf.net/"; select ="$FileA/saxon:evaluate($Axpath_new)/@id" />





--


	Martin Honnen --- MVP Data Platform Development
	http://msmvps.com/blogs/martin_honnen/

Current Thread