Re: [xsl] how to store node in variable?

Subject: Re: [xsl] how to store node in variable?
From: "Joe Fawcett" <joefawcett@xxxxxxxxxxx>
Date: Thu, 21 Oct 2004 21:16:30 +0100
----- Original Message ----- From: "John" <john-xsl-list@xxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, October 21, 2004 8:39 PM
Subject: [xsl] how to store node in variable?



Sorry to trouble the list with this one which seems so simple and yet somehow I am banging my head against the wall for hours and I can't even think what to search for. The worst part is I think I've done this before...

How do I store a reference to a node in a variable or what am I doing wrong? Here is what I have (maybe oversimplified) :

<xsl:variable name="me">
  <xsl:choose>
    <xsl:when test="<some condition>">
      <xsl:copy-of select=".." />
    </xsl:when>
    <xsl:otherwise>
      <xsl:copy-of select="." />
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable> <xsl:call-template name="<some template>">
  <xsl:with-param name="myid" select="$me/@id" />
</xsl:call-template>

The with-param is always throwing an error, expression should result in a node-set.

If I add msxsl:node-set around my selects in the variable definition I get cannot convert result tree fragment to node-set.

Alternatively, is there any way to explicitly set the context node without using for-each?

Again my apologies.

-John

In XSLT 1 I believe you need to covert $me to a node-set using an extension function. In version 2 you can use the variable directly or simplify the code to use an XPtah expression like "if <some condition> then . else .."

--

Joe

Current Thread