[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Problem setting variable in if statement

Subject: RE: Problem setting variable in if statement
From: cknell@xxxxxxxxxx
Date: Mon, 02 Feb 2004 15:12:41 -0500
xsl setting variable
You haven't supplied enough context to help you. Your fragment of a template is fine so far as we can see it, so the problem must be coming from a larger context that contains it.

Generally speaking, variables are one of the most confusing aspects of XSLT to people accustomed to standard, imperative programming languages. Assuming that the <xsl:choose> appears in a context that is repeated (inside a <xsl:for-each> construct or inside a template that is called repeatedly), you could simplify your code like this:

<xsl:variable name="status-color">
  <xsl:when test="status='undelivered'">#ff0000</xsl:when>
  <xsl:when test="status='inprogress'">#33cc33</xsl:when>
  <xsl:when test="status=delivered">#0033ff</xsl:when>
  <xsl:when test="status='escalated'">#ffff33</xsl:when>
  <xsl:otherwise>000000</xsl:otherwise>
</xsl:variable>

<span style="color:{$status-color}">
  <xsl:value-of sect="status"/>
</span>

The reason that a repetition is important is that once a variable is bound to a value in a context, it cannot be changed. Every repetition of a template or a for-each is a new context. In effect, the variable is a new variable each time. The value is not re-assigned, instead the variable is re-created.
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Johnson, Kaerstin <johns218@xxxxxxxxx>
Sent:     Mon, 2 Feb 2004 12:02:31 -0700 (MST)
To:       XSL-List@xxxxxxxxxxxxxxxxxxxxxx
Subject:   Problem setting variable in if statement


I am very new to xsl/xslt and have a basic problem.  I am setting a style
sheet color based on a condition.
I'd like the color to be a variable value, like
<xsl:variable name="statColor" select="#33cc33">
and set this variable in the if/choose condtion.
Then recall it like
<span style="color:{$statColor}"><xsl:value-of select="status"></span>


I have it like this now, but want to simplfiy it:

 <xsl:choose>
        <xsl:when test="status='undelivered'"> <span
style="color:#ff0000">  <xsl:value-of select="status"/></span>
</xsl:when>
        <xsl:when test="status='inprogress'"> <span style="color:#33cc33">
 <xsl:value-of select="status"/></span> </xsl:when>
        <xsl:when test="status='delivered'">  <span style="color:#0033ff">
 <xsl:value-of select="status"/></span> </xsl:when>
        <xsl:when test="status='escalated'">  <span style="color:#ffff33">
 <xsl:value-of select="status"/></span> </xsl:when>
        <xsl:otherwise> <span style="color:#000000">  <xsl:value-of
select="status"/></span></xsl:otherwise>
      </xsl:choose>

I cant seem to get it to work.




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.