[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] Problem setting variable in if statement
Subject: RE: [xsl] Problem setting variable in if statement From: cknell@xxxxxxxxxx Date: Mon, 02 Feb 2004 15:12:41 -0500 |
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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Problem setting variable , Martinez, Brian | Thread | RE: [xsl] Problem setting variable , Michael Kay |
RE: [xsl] hard problem, Jim Fuller | Date | RE: [xsl] Problem setting variable , Michael Kay |
Month |
Keywords