RE: [xsl] string parameter to node-set?

Subject: RE: [xsl] string parameter to node-set?
From: "Passin, Tom" <tpassin@xxxxxxxxxxxx>
Date: Fri, 3 Jan 2003 12:04:34 -0500
[bernd@xxxxxxxxxxxxx]

> I am at a loss, and wonder if anybody can help: I pass two parameter 
> from Javascript into XSLT, the URI of an XML document and an XPath 
> expression. Both parameters are strings as far as JavaScript 
> is concerned.
> 
> I can load the XML data with document($para-xml) just fine:
> 
>     <xsl:param name="para-xml"/>
>     <xsl:param name="para-xpath" select="'/'"/>
> 
>     <xsl:template match="/">
>         <xsl:apply-templates select="document($para-xml)" 
> mode="transform"/>
>     </xsl:template>
> 
> Next, I would like to use the XPath expression to select the 
> node(s) the 
> subsequent transformation should apply to. Something along 
> the lines of 
> this:
> 
>     <xsl:template match="/" mode="transform">
>         <xsl:apply-templates select="/root/data[@id='whatever']"/>
>     </xsl:template>
> 
> That works great, too. However, I find myself unable to using 
> the XPath 
> parameter instead of the constant XPath expression, as in
> 
>     <xsl:template match="/" mode="transform">
>         <xsl:apply-templates select="$para-xpath"/>
>     </xsl:template>
> 
> I suppose this is because the parameter is of type string, and the 
> select attribute requires a node set. How do I solve this?

You cannot use a parameter or variable in a path expression - not in
xslt 1.0.  For a general xpath expression, your best bet is probably to
have your stylesheet create another stylesheet that contains the desired
xpath expression, then run the second one to do the actual
transformation that you want.

Cheers,

Tom P


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread