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 |