Re: [xsl] A newbie question in XSL - Using variables

Subject: Re: [xsl] A newbie question in XSL - Using variables
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 25 Jan 2005 21:55:55 -0500
At 2005-01-25 18:28 -0800, prasannap@xxxxxx wrote:
I have a simple question that Im trying to solve:

This is a FAQ


<xsl-if test="some condition">
           <font color="red"> Hello 1</font>
</xsl-if>
<xsl-if test="some other condition">
           <font color="blue"> Hello 1</font>
</xsl-if>

Now, is there a way to obtain the above criteria something like,

<xsl-if test="some condition">
           $somevariable = "red";
</xsl-if>
<xsl-if test="some other condition">
           $somevariable = "blue";
</xsl-if>
<font color=$somevariable> Hello 1</font>

I understand that I cannot use <xml:param> and <xml:variable> as they are constants. Please let me know a solution to this trivial problem.

Put the conditional around the value assigned, not around the assignment:


<xsl:variable name="use-color">
  <xsl:choose>
     <xsl:when test="some condition">red</xsl:when>
     <xsl:when test="other condition">blue</xsl:when>
     <xsl:otherwise>green</xsl:otherwise>
  </xsl:choose>
</xsl:variable>
...
<font color="$use-color">Hello</font>

Some caveats when testing result-tree-fragment variables, they always test true() until you cast them to the data type that you need.

I hope this helps.

......................... Ken

--
World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread