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.
But not for one table, i need several crosstabs in one xsl template.
My XML:
Where is your XSLT that you've got so far and where did you get stuck?
What is the XSLT version you use?
-- Abel
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--
*/Best regards,
Vitaliy Paykov/*
e-mail: vpay(_at_)isd(_dot_)dp(_dot_)ua
ext: 1120
ICQ: 220022522
*/ISD QA/*
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--