[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Setting table row color with xsl:choose and xsl:variable


Subject: RE: [xsl] Setting table row color with xsl:choose and xsl:variable
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 31 Oct 2005 17:20:43 -0000

You need to write

<xsl:variable name="rowClass">
  <xsl:choose>
    <xsl:when test="condition1">value1</xsl:when>
    <xsl:when test="condition2">value2</xsl:when>
  </xsl:choose>
</xsl:variable>

Alternatively, write:

  <tr>
    <xsl:attribute name="rowClass">
      <xsl:choose>
        <xsl:when test="condition1">value1</xsl:when>
        <xsl:when test="condition2">value2</xsl:when>
      </xsl:choose>
    </xsl:attribute>
    <td>
      ....

or in 2.0

  <tr rowClass="{if (condition1) then value1
                 else if (condition2) then value2
                 else default-value}">


Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: aevarga@xxxxxx [mailto:aevarga@xxxxxx] 
> Sent: 31 October 2005 11:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx; aevarga@xxxxxx
> Subject: [xsl] Setting table row color with xsl:choose and 
> xsl:variable
> 
> I would like to set the color of a table row based on the 
> value in one of the data fields.  The long way, which works, 
> is to repeat the entire <tr><td> pattern for each value.  
> Isn't it possible using some variation of the following code 
> to just read the field's value, assign a CSS class to the row 
> and continue with template matching for the <td>'s?
> 
> 
> 
> <xsl:template match="Event">         
> 
> <xsl:choose>
> 
>   <xsl:when test="Required = 'yes'">
> 
>     <xsl:variable name="rowClass">calendarltred</xsl:variable>
> 
>   </xsl:when>
> 
>   <xsl:when test="Special = 'meeting'">
> 
>     <xsl:variable name="rowClass">calendaryellow</xsl:variable>
> 
>   </xsl:when>
> 
>   <xsl:when test="Special = 'candysale'">
> 
>     <xsl:variable name="rowClass">calendarltblue</xsl:variable>
> 
>   </xsl:when>
> 
>   <xsl:otherwise>
> 
>     <xsl:variable name="rowClass">default</xsl:variable>
> 
>   </xsl:otherwise>
> 
> </xsl:choose>
> 
>     <tr class="{$rowClass}">
> 
>       <td>
> 
>         <xsl:apply-templates select="DayOfWeek" />
> 
>         <xsl:apply-templates select="MonthName" />
> 
>         <xsl:apply-templates select="DayNum" />
> 
>       </td>
> 
> ...
> 
> 
> 
> Thanks, Alan


Current Thread