Subject: RE: [xsl] alternate row color in a table From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 10 Mar 2005 23:25:53 -0000 |
No, if you are processing a sorted sequence, then position() gives you the position of the item in the sorted sequence, not its position before sorting. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Jason Tripanier [mailto:jtrepanier@xxxxxxxxxxx] > Sent: 10 March 2005 20:47 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] alternate row color in a table > > How can a real "alternate row color in XSLT" be done?? > I'll outline the problems with examples below, but I am hoping > someone will offer a solution to this problem. > > > The problem with using position() to alternate rows; is that > if you are > doing a query > on the data, you are not getting the data order. Selectively > choosing data > will mess up > the row colors because there are missing positions. > > <?xml version="1.0" encoding="ISO-8859-1" ?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="html" encoding="ISO-8859-1" indent="yes"/> > > <xsl:param name="keyword">none</xsl:param> > > <xsl:template match="/"> > <xsl:for-each select="//books"> > <xsl:sort order="ascending" select="title"/> > <xsl:if test="title/*= $keyword"> > <table width="100%" border="0" cellspacing="0" cellpadding="0"> > <tr class="myBkgnd_{position() mod 2}"> > > <td width="*" class="pad"> > <xsl:value-of select="title" /> > </td> > </tr> > </table> > </xsl:if> > </xsl:for-each> > </xsl:template> > > if you pass this a keyword, it will display the results, > however, seeing > as how the results are not in sequential order, the > position() does not work > as one may wish. You will end up with several <tr>'s that are > style1 and > several <tr>'s that are style2 (in whatever order). > > so lets take an example > > say you have an xml file with this > > <books> > <title>Book A</title> > <title>Pamphlet 1</title> > <title>Book B</title> > <title>Book C</title> > <title>Pamphlet 2</title> > </books> > > and your keyword is "Book", the results will show > > Book A (with style1) - actual position value = 1 > Book B (with style1) - actual position value = 3 > Book C (with style2) - actual position value = 4
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] alternate row color in a , Kevin Rodgers | Thread | RE: [xsl] Variables and HTML, Pieter Reint Siegers |
RE: [xsl] current-group () function, Michael Kay | Date | RE: [xsl] Variables and HTML, Michael Kay |
Month |