[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Pivot Reports
This is my XSL template:
<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: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> In result i have right view of first table, in second table i have only columns and rows which not exists in first table etc. Seems I have version 1.0 Abel Braaksma wrote: Vitaliy Paykov wrote:I need xsl template for crosstab building. -- */Best regards, Vitaliy Paykov/* e-mail: vpay@xxxxxxxxx ext: 1120 ICQ: 220022522 */ISD QA/*
|
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
|