|
Subject: [xsl] Another Alternate table-row background color question - Using filters From: GNallan@xxxxxxxxxxx Date: Mon, 30 May 2005 20:06:23 +0530 |
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] how to match the absence , Aron Bock | Thread | RE: [xsl] Another Alternate table-r, Aron Bock |
| RE: [xsl] how to match the absence , Aron Bock | Date | RE: [xsl] Another Alternate table-r, Maria Amuchastegui |
| Month |