Subject: RE: conditional declaretion of a variable
From: "Martinez, Brian" <brian.martinez@xxxxxxxxxxx>
Date: Thu, 17 Apr 2003 10:24:06 -0600
|
> From: florian [mailto:csshsh@xxxxxxxxxxxxxxx]
> Sent: Thursday, April 17, 2003 5:46 AM
> Subject: 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.martinez@xxxxxxxxxxx |
| 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
|