[bernd(_at_)gauweiler(_dot_)net]
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[(_at_)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