xsl-list
[Top] [All Lists]

Re: [xsl] Variable Substitution In A Select Statement

2011-05-24 08:16:29
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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--