[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: alternate row color in a table
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: 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|