xsl-list
[Top] [All Lists]

RE: conditional declaretion of a variable

2003-04-17 09:24:06
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



<Prev in Thread] Current Thread [Next in Thread>