Subject: Re: 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: 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
|