Subject: [xsl] Strange grouping behavior From: Adam Van Den Hoven <Adam.Hoven@xxxxxxxxxxxx> Date: Thu, 3 May 2001 12:18:44 -0700 |
I have the following XML: <report> <header> <title>Test Header1</title> <creationdate>20010405</creationdate> <parameter name="Start Date">20001201</parameter> <parameter name="End Date">20001201</parameter> <parameter name="Property">val1</parameter> <parameter name="Property">val2</parameter> <parameter name="Property">val3</parameter> <parameter name="Property">val4</parameter> <parameter name="Property">val5</parameter> <parameter name="Platform">Web1</parameter> <parameter name="Platform">Web2</parameter> <parameter name="Platform">Web3</parameter> <parameter name="Platform">Web4</parameter> <parameter name="Platform">Web5</parameter> <parameter name="Platform">Web6</parameter> </header> </report> To which I am applying the following template: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="Windows-1252" indent="yes"/> <xsl:key name="ReportParam" match="parameter[@name]" use="@name" /> <xsl:template match="/"> <html><body> <xsl:apply-templates select="/report/header" /> </body></html> </xsl:template> <xsl:template match="header"> <table> <xsl:apply-templates select="parameter[generate-id(.)=generate-id(key('ReportParam', @name))]" /> </table> </xsl:template> <xsl:template match="parameter"> <tr class="reportparameter"> <xsl:if test="not(preceding-sibling::parameter[@name = current()/@name])"> <td> <xsl:attribute name="rowspan"> <xsl:value-of select="count(key('ReportParam', @name))" /> </xsl:attribute> <xsl:value-of select="@name" /> </td> </xsl:if> <td><xsl:value-of select="normalize-space(.)" /></td> <td><xsl:value-of select="count(following-sibling::parameter[@name = current()/@name])" /></td> </tr> <xsl:apply-templates select="following-sibling::parameter[@name = current()/@name]" /> </xsl:template> </xsl:stylesheet> Produces the following output (I'm running from cooktop but using the MSXML parser setting): <html> <body> <table> <tr class="reportparameter"><td rowspan="1">Start Date</td><td>20001201</td><td>0</td></tr> <tr class="reportparameter"><td rowspan="1">End Date</td><td>20001201</td><td>0</td></tr> <tr class="reportparameter"><td rowspan="5">Property</td><td>val1</td><td>4</td></tr> <tr class="reportparameter"><td>val2</td><td>3</td></tr> <tr class="reportparameter"><td>val3</td><td>2</td></tr> <tr class="reportparameter"><td>val4</td><td>1</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val4</td><td>1</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val3</td><td>2</td></tr> <tr class="reportparameter"><td>val4</td><td>1</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val4</td><td>1</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td>val5</td><td>0</td></tr> <tr class="reportparameter"><td rowspan="6">Platform</td><td>Web1</td><td>5</td></tr> <tr class="reportparameter"><td>Web2</td><td>4</td></tr> <tr class="reportparameter"><td>Web3</td><td>3</td></tr> <tr class="reportparameter"><td>Web4</td><td>2</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web4</td><td>2</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web3</td><td>3</td></tr> <tr class="reportparameter"><td>Web4</td><td>2</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web4</td><td>2</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web5</td><td>1</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> <tr class="reportparameter"><td>Web6</td><td>0</td></tr> </table> </body></html> Ok, I reformatted the output but that is not the problem. The problem is that if I have more than 2 items in a group, I get this behaviour. Any ideas? > Adam van den Hoven > Internet Application Developer > Blue Zone > tel. 604.685.4310 ext 260 > fax. 604.685.4391 > Blue Zone makes you interactive.(tm) http://www.bluezone.net/ > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] xsl:include - problem set, Michael Kay | Thread | RE: [xsl] Strange grouping behavior, Adam Van Den Hoven |
[xsl] xsl:include - problem setting, Lo, May F [IT] | Date | Re: [xsl] How can i transform outpu, Thomas B. Passin |
Month |