Subject: [xsl] Writer needs help in generalizing stylesheet From: cknell@xxxxxxxxxx Date: Tue, 09 Jan 2007 09:51:30 -0500 |
This message was sent to my email address. I believe it should have been sent to the XSL list for general review, so I'm forwarding it. The original writer's email address appears below. paykoff@xxxxxxx My problem in unsteady XML. Only I can know that my XML has next structure (example) * <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type='text/xsl' href='New Text Document.xsl'?> <notice><records><record> <row> <VALUE>ST_ARGUI_SYNCH</VALUE> <pivot1> <item> <pivotrow>Closed</pivotrow> <pivotcol>1.0.0.5</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Closed</pivotrow> <pivotcol>4.0.3.5</pivotcol> <TOTALS>22</TOTALS> </item> <item> <pivotrow>Closed</pivotrow> <pivotcol>4.0.3.x</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Closed</pivotrow> <pivotcol>4.0.4.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Closed</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>7</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>1.0.0.5</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.3.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.3.1</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.3.2</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.3.5</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.3.x</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.4.0</pivotcol> <TOTALS>9</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.0.3.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.0.3.3</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.0.3.5</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.0.4.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>5</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.0.5.x</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.0.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.1.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.3.5</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.4.0</pivotcol> <TOTALS>12</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Open</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Reviewed</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>3</TOTALS> </item> </pivot1> <pivot2> <item> <pivotrow>Critical</pivotrow> <pivotcol>4.0.3.5</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>1.0.0.5</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.0.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.1.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.3.0</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.3.1</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.3.2</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.3.3</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.3.5</pivotcol> <TOTALS>26</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.3.x</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.4.0</pivotcol> <TOTALS>23</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.5.0</pivotcol> <TOTALS>20</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.5.x</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>2</TOTALS> </item> </pivot2> </row> <row> <VALUE>ST_COMMONPROD_SYNCH</VALUE> <pivot1> <item> <pivotrow>Closed</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.1.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.0.1.23</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.0.21</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.0.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.1.2</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.1.4</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.1.6</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.1.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>5</TOTALS> </item> <item> <pivotrow>Evaluated</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Fixed</pivotrow> <pivotcol>4.1.0.9</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Implemented</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Loaded</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Loaded</pivotrow> <pivotcol>4.1.2.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Loaded</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.1.23</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.0.1.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.1.0.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.1.1.4</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>4.1.2.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>New</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Open</pivotrow> <pivotcol>4.1.0.19</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Open</pivotrow> <pivotcol>4.1.1.4</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Open</pivotrow> <pivotcol>4.1.2.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Reviewed</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.0.2.10</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.1.0.21</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.1.0.8</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.1.1.4</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>6</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.1.2.1</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>4.1.2.X</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Tested</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>2</TOTALS> </item> </pivot1> <pivot2> <item> <pivotrow>Critical</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.1.0</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.1.23</pivotcol> <TOTALS>3</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.1.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.0.2.10</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.0.19</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.0.21</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.0.8</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.0.9</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.0.X</pivotcol> <TOTALS>2</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.1.2</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.1.4</pivotcol> <TOTALS>5</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.1.6</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.1.X</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.2.0</pivotcol> <TOTALS>17</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.2.1</pivotcol> <TOTALS>1</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>4.1.2.X</pivotcol> <TOTALS>6</TOTALS> </item> <item> <pivotrow>Non Critical</pivotrow> <pivotcol>N/A</pivotcol> <TOTALS>9</TOTALS> </item> </pivot2> </row> </record></records></notice> *And i have next XSL template (for XML written above):* <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="b" match="pivotrow" use="."/> <xsl:key name="c" match="pivotcol" use="."/> <xsl:template match="/"> <xsl:for-each select="/notice/records/record/row"> <br/> <xsl:value-of select="VALUE"/> <xsl:for-each select="pivot1"> <table border="1" cellspacing="0" class="stn"> <tr> <th>*</th> <xsl:for-each select="item/pivotrow"> <xsl:sort select="."/> <xsl:variable name="vpivotrow" select="."/> <th> <xsl:value-of select="."/> </th> </xsl:for-each> <th>total</th> </tr> <xsl:for-each select="item/pivotcol[generate-id(.)=generate-id(key('c',.)[1])]"> <xsl:sort select="."/> <xsl:variable name="vpivotcol" select="."/> <tr> <th><xsl:value-of select="."/></th> <xsl:for-each select="../../item/pivotrow[generate-id(.)=generate-id(key('b',.)[1])]"> <xsl:variable name="vpivotrow" select="."/> <td> <xsl:if test="not(../../item[pivotcol=$vpivotcol and pivotrow=$vpivotrow])">-</xsl:if> <xsl:if test="../../item[pivotcol=$vpivotcol and pivotrow=$vpivotrow]"><xsl:value-of select="../../item[pivotcol=$vpivotcol and pivotrow=$vpivotrow]/TOTALS"/></xsl:if> </td> </xsl:for-each> <td><xsl:value-of select="sum(../../item[pivotcol=$vpivotcol]/TOTALS)"/></td> </tr> </xsl:for-each> <tr> <th>total</th> <xsl:for-each select="item/pivotrow[generate-id(.)=generate-id(key('b',.)[1])]"> <xsl:sort select="."/> <xsl:variable name="vpivotrow" select="."/> <td> <xsl:value-of select="sum(../../item[pivotrow=$vpivotrow]/TOTALS)"/> </td> </xsl:for-each> <td><xsl:value-of select="sum(item/TOTALS)"/></td> </tr> </table> </xsl:for-each> <xsl:for-each select="pivot2"> <table border="1" cellspacing="0" class="stn"> <tr> <th>*</th> <xsl:for-each select="item/pivotrow"> <xsl:sort select="."/> <xsl:variable name="vpivotrow" select="."/> <th> <xsl:value-of select="."/> </th> </xsl:for-each> <th>total</th> </tr> <xsl:for-each select="item/pivotcol[generate-id(.)=generate-id(key('c',.)[1])]"> <xsl:sort select="."/> <xsl:variable name="vpivotcol" select="."/> <tr> <th><xsl:value-of select="."/></th> <xsl:for-each select="../../item/pivotrow[generate-id(.)=generate-id(key('b',.)[1])]"> <xsl:variable name="vpivotrow" select="."/> <td> <xsl:if test="not(../../item[pivotcol=$vpivotcol and pivotrow=$vpivotrow])">-</xsl:if> <xsl:if test="../../item[pivotcol=$vpivotcol and pivotrow=$vpivotrow]"><xsl:value-of select="../../item[pivotcol=$vpivotcol and pivotrow=$vpivotrow]/TOTALS"/></xsl:if> </td> </xsl:for-each> <td><xsl:value-of select="sum(../../item[pivotcol=$vpivotcol]/TOTALS)"/></td> </tr> </xsl:for-each> <tr> <th>total</th> <xsl:for-each select="item/pivotrow[generate-id(.)=generate-id(key('b',.)[1])]"> <xsl:sort select="."/> <xsl:variable name="vpivotrow" select="."/> <td> <xsl:value-of select="sum(../../item[pivotrow=$vpivotrow]/TOTALS)"/> </td> </xsl:for-each> <td><xsl:value-of select="sum(item/TOTALS)"/></td> </tr> </table> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> *As result i have next sequence of tables first table - right result! second table - receive table which rows and cols non-recurrent with first table but tables have intersection cols and rows third table - **receive table which rows and cols non-recurrent with first and second tables ETC So this is my problem :( Maybe problem in keys?
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Nested List, siarom egrub | Thread | Re: [xsl] Writer needs help in gene, Vitaliy Paykov |
Re: [xsl] text indent problem, David Carlisle | Date | Re: [xsl] Dynamic numbering of list, xslt . new |
Month |