[xsl] string parameter to node-set?

Subject: [xsl] string parameter to node-set?
From: "bernd@xxxxxxxxxxxxx" <bernd@xxxxxxxxxxxxx>
Date: Fri, 03 Jan 2003 16:41:06 +0000
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?

The key problem is that I need to transform a subset of a larger XML stream, where the subset is defined through an XPath expression and all this must happen within XSL in order to avoid cross-domain security constrains in JavaScript. Any recommendations welcome.

TIA
Bernd


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



Current Thread