Re: [xsl] Setting variable based on passed in parameter

Subject: Re: [xsl] Setting variable based on passed in parameter
From: "Hardy Merrill" <HMerrill@xxxxxxxxxxxxxxxx>
Date: Tue, 30 Nov 2004 11:38:57 -0500
I ran into the exact same problem as Matthew.  As Richard said, your
processor probably has a "node-set" function that you can call to turn a
"result tree fragment" into a node set.  In MSXML4 I had to do this:

<xsl:stylesheet
	version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
	xmlns:msxsl="urn:schemas-microsoft-com:xslt">

The last line of that is what matters for using "node-set".

And then I called node-set like this:

   select="msxsl:node-set($fragment_variable)"

or similar.

HTH.

Hardy Merrill

>>> richardlewis@xxxxxxxxxxxxxx 11/30/04 11:24AM >>>

On Tue, 30 Nov 2004 09:12:41 -0700, "Matthew Hailstone"
<mhailstone@xxxxxxxxxx> said:
> I'm trying to assign a variable a node-set that depends on a
parameter
> passed into the stylesheet.
> 
>   <xsl:param name="nodeValue">something</xsl:param>
>   <xsl:param name="valueSearch">false</xsl:param>
>   <xsl:variable name="initialResult">
>       <xsl:choose>
>         <xsl:when test="$valueSearch='false'">
>             <xsl:value-of
> select="/one/two[three/four[contains(text(),$nodeValue)]]"/>
>         </xsl:when>
>         <xsl:otherwise>
>             <xsl:value-of
> select="/one/two[three/four[contains(text(),$nodeValue)]]"/>
>         </xsl:otherwise>
>       </xsl:choose>
>   </xsl:variable>
> <xsl:template match="/">
>       <xsl:apply-templates select="$initialResult"/>
> </xsl:template>
> <xsl:template match="/one/two">
>    ...
> </xsl:template>
> 
> 
> I get an error in oXygen saying, "Cannot process a result tree
fragment
> as a node-set  under XSLT 1.0"
> 
EXSLT provides the function exslt:node-set(some-node-set) (in the
namespace xmlns:exslt="http://exslt.org/common";, but only if your
processor supports it) which turns a variable into a node set. Its
quite
expensive, though.

Richard.

-- 
  Richard Lewis
  richardlewis@xxxxxxxxxxxxxx 

Current Thread