Subject: Re: [xsl] Another Alternate table-row background color question - Using filters From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Tue, 31 May 2005 06:37:31 +1000 |
A pure XSLT 1.0 solution: This shows how to create a N-column table from the nodes of a node-set. N and the node-set are passed as parameters. No extension function is referenced (and no "following-sibling" axis is used) The rows are displayed in alternate colours. http://www.topxml.com/code/default.asp?p=3&id=v20020514091249 Hope this helped. Cheers, Dimitre Novatchev On 5/31/05, GNallan@xxxxxxxxxxx <GNallan@xxxxxxxxxxx> wrote: > Sorry if this question has been addressed before. I'm trying to create a > XSL, that will transform a XML into a HTML document (report); the > stylesheet will extract only some information (filter) from the XML and > create a table. I want the rows in this table to have alternate background > color. Because of the filter condition in the XSL, I cannot use the > position() to check for odd/even rows. I need to (essentially) check the > row number inserted into the HTML <TABLE>. > > Here is my xml.. > > <Codes> > <Code> > <Name>10</Name> > <Description>Decription 10</Description> > </Code> > <Code> > <Name>20</Name> > <Description> Description 20</Description> > </Code> > <Code> > <Name>30</Name> > <Description>description 30</Description> > </Code> > <Code> > <Name>40</Name> > <Description> Description 40</Description> > </Code> > <Code> > <Name>50</Name> > <Description> Description 50 </Description> > </Code> > <Code> > <Name>60</Name> > <Description> Description 60 </Description> > </Code> > <Code> > <Name>70</Name> > <Description> Description 70 </Description> > </Code> > </Codes> > > And here is my stylesheet (it extracts only codes 30, 50 & 60). The output > should contain the first and third rows in one bg color and the second row > in a different color. I tried the position() in this XSL, but it does not > work... > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > <xsl:output method="html"/> > > <xsl:template match="/"> > <html> > <head> > <title>Code Report</title> > <style> > .row0 {background-color:#CCCCCC;} > .row1 {background-color:#FFFFFF;} > </style> > </head> > <body> > <p> > <font face="Arial" size="2"> > <b>Code Decription Report</b> > </font> > </p> > <table border="1" width="90%" cellspacing="0"> > <tr> > <td width="50%" align="center" bgcolor="#808080"> > <font face="Arial" size="2" color="#FFFFFF"> > <b>Code Name</b> > </font> > </td> > <td width="50%" align="center" bgcolor="#808080"> > <font face="Arial" size="2" color="#FFFFFF"> > <b>Code Description</b> > </font> > </td> > </tr> > <xsl:for-each select="Codes/Code"> > <xsl:choose> > <xsl:when test="Name[. = '30']"> > <tr class="{name(.)} row{position() mod > 2}"> > <xsl:apply-templates select="."/> > </tr> > </xsl:when> > <xsl:when test="Name[. = '50']"> > <tr class="{name(.)} row{position() mod > 2}"> > <xsl:apply-templates select="."/> > </tr> > </xsl:when> > <xsl:when test="Name[. = '60']"> > <tr class="{name(.)} row{position() mod > 2}"> > <xsl:apply-templates select="."/> > </tr> > </xsl:when> > </xsl:choose> > </xsl:for-each> > </table> > </body> > </html> > </xsl:template> > <xsl:template match="Code"> > <td width="50%" align="center"> > <xsl:value-of select="Name"/> > </td> > <td width="50%" align="left">   > <font face="Arial" size="2"> > <xsl:choose> > <xsl:when test="Description[string-length(.) > 0]"> > <xsl:value-of select="Description"/> - > [<xsl:value-of select="Name"/>] > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="Description"/> > </xsl:otherwise> > </xsl:choose> > </font> > </td> > </xsl:template> > </xsl:stylesheet> > > Any help in this regard is appreciated. Thank you for your time. > > Regards, > Gowtham
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Another Alternate table-r, Aron Bock | Thread | Re: [xsl] Another Alternate table-r, Aron Bock |
Re: [xsl] Substrings, Karl Stubsjoen | Date | Re: [xsl] Substrings, Dimitre Novatchev |
Month |