From: florian [mailto:csshsh(_at_)structbench(_dot_)com]
Sent: Thursday, April 17, 2003 5:46 AM
Subject: [xsl] conditional declaretion of a variable
hi!
im wondering why something like this doesnt work:
<xsl:variable name="field" select="@field" />
<xsl:choose>
<xsl:when test="@valueField">
<xsl:variable name="valueField" select="@valueField" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="valueField" select="@field" />
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$field" />
The scope of an xsl:variable binding is its immediate parent element. So
when you declare a variable inside an xsl:when (or xsl:if or xsl:for-each,
etc.), the variable no longer exists once you exit the block where it's
declared. What you want is:
<xsl:variable name="valueField">
<xsl:choose>
<xsl:when test="@valueField">
<xsl:value-of select="@valueField"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@field"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
This is a bit cumbersome (although easier to read), and creates the variable
as an RTF, but another post in the thread gives a more efficient solution.
hth,
b.
| brian martinez
brian(_dot_)martinez(_at_)cendant(_dot_)com |
| lead gui programmer 303.708.7248 |
| cheap tickets, part of trip network fax 303.790.9350 |
| 6436 s. racine cir. englewood, co 80111 |
| cendant travel distribution services http://www.cheaptickets.com/ |
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list