|
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 |