[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Writer needs help in generalizing stylesheet

Subject: Re: Writer needs help in generalizing stylesheet
From: Vitaliy Paykov <vpay@xxxxxxxxx>
Date: Wed, 10 Jan 2007 12:54:38 +0200
Re:  Writer needs help in generalizing stylesheet
Yes! Thank you. It was my mistake ;-)

cknell@xxxxxxxxxx wrote:
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?




--
*/Best regards,
Vitaliy Paykov/*
e-mail: vpay@xxxxxxxxx
ext: 1120
ICQ: 220022522
*/ISD QA/*

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.