Re: [xsl] Marking every second row

Subject: Re: [xsl] Marking every second row
From: Sorin Marti <mas@xxxxxxxxxx>
Date: Mon, 06 Jan 2003 15:25:41 +0100
Thanks to everyone who helped me! Now it works!!



Greets

Sorin

Jeni Tennison wrote:

Hi Sorin,

I got an very simple XSL-File wich produces following output from a very
simple XML-File

<table>
<tr><td>aaa</td></tr>
<tr><td>bbb</td></tr>      <-- X
<tr><td>ccc</td></tr>
<tr><td>ddd</td></tr>      <-- X
<tr><td>eee</td></tr>
<tr><td>fff</td> </tr>      <-- X
</table>

Now I want the background of the lines which are marked with an X in another color.

So how do I select every second row of my output?


Using this output as the input for a transformation, you can do something like:

<xsl:template match="table">
 <table>
   <xsl:for-each select="tr">
     <tr>
       <xsl:if test="position() mod 2 = 0">
         <xsl:attribute name="bgcolor">blue</xsl:attribute>
       </xsl:if>
       <xsl:copy-of select="*" />
     </tr>
   </xsl:for-each>
 </table>
</xsl:template>

This loops over the tr elements, creates a copy and adds a bgcolor
attribute if the position of the tr element is even (which is tested
with position() mod 2 = 0).

You could probably do something similar when you're actually creating
this table in your stylesheet, but without seeing the input to that
transformation I can't be certain.
Cheers,


Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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







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



Current Thread