|
Subject: Re: [xsl] alternating bg colour in nested data From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Tue, 15 Jan 2002 16:17:37 -0500 |
Im trying to get alternating table row background colours from nested xml. ... I currently get alternating row colours using this kind of template for each group:
<xsl:template match="group1"> <xsl:variable name="position" select="position()" />
<xsl:choose> <xsl:when test="$position mod 2 = 1">
<xsl:call-template name="row_even"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="row_odd"/> </xsl:otherwise> </xsl:choose> <xsl:apply-templates select="group2"/> </xsl:template>
Each template is virtually identical apart from the 'groupX' number.
Also, occasionally two adjacent rows share the same colour (where group changes and last elem pos was even)
T:\ftemp>type andrew.xml
<group1>
<data1/>
<data2/>
<group2>
<data1/>
<data2/>
</group2>
<group2>
<data1/>
<data2/>
<group3>
<data1/>
<data2/>
</group3>
<group3>
<data1/>
<data2/>
<group4>
<data1/>
<data2/>
</group4>
</group3>
</group2>
</group1>T:\ftemp>type andrew.xsl <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table>
<xsl:apply-templates select="group1"/>
</table>
</xsl:template>
<xsl:template match="group1|group2|group3|group4"> <xsl:param name="last" select="0"/> <xsl:choose> <xsl:when test="( $last + position() ) mod 2 = 1"> <xsl:call-template name="row_even"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="row_odd"/> </xsl:otherwise> </xsl:choose> <xsl:apply-templates select="group2|group3|group4"> <xsl:with-param name="last" select="$last + last()"/> </xsl:apply-templates> </xsl:template>
<xsl:template name="row_even">
<tr bgcolor="#cccccc">
<xsl:for-each select="*[not(starts-with(name(),'group'))]">
<td><xsl:value-of select="concat(name(..),' ',name(.))"/></td>
</xsl:for-each>
</tr>
</xsl:template><xsl:template name="row_odd">
<tr>
<xsl:for-each select="*[not(starts-with(name(),'group'))]">
<td><xsl:value-of select="concat(name(..),' ',name(.))"/></td>
</xsl:for-each>
</tr>
</xsl:template>T:\ftemp>type andrew.htm <?xml version="1.0" encoding="utf-8"?> <table> <tr bgcolor="#cccccc"> <td>group1 data1</td> <td>group1 data2</td> </tr> <tr> <td>group2 data1</td> <td>group2 data2</td> </tr> <tr bgcolor="#cccccc"> <td>group2 data1</td> <td>group2 data2</td> </tr> <tr> <td>group3 data1</td> <td>group3 data2</td> </tr> <tr bgcolor="#cccccc"> <td>group3 data1</td> <td>group3 data2</td> </tr> <tr> <td>group4 data1</td> <td>group4 data2</td> </tr> </table>
-- Training Blitz: 3-days XSLT/XPath, 2-days XSLFO - Feb 18-22, 2002 - (Early-bird date for discounts is this Friday!)
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 (Fax:-0995) ISBN 0-13-065196-6 Definitive XSLT & XPath ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath ISBN 1-894049-07-1 Practical Formatting Using XSLFO XSL/XML/DSSSL/SGML/OmniMark services, books(electronic, printed), articles, training(instructor-live,Internet-live,web/CD,licensed) Next public training: 2002-01-18,02-11,12,13,15,18,21, - 03-11,14,15,18,19,04-08,09,10,12
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] alternating bg colour in nest, Andrew Welch | Thread | RE: [xsl] alternating bg colour in , Andrew Welch |
| [xsl] saxon:expression and function, Gunther Schadow | Date | [xsl] how to make data fit in a tab, yan bai |
| Month |