[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
that allows me to group stuff, but how do I "merge" them once grouped?
to rephrase, I still get a line for EACH node in the original data, rather than one line for all nodes with any given matching @title.
Thanks for your help! - Yossie
---
On Mar 26, 2004, at 2:52 AM, Brian Chrisman wrote:
Re: [xsl] How do I "merge" nodes based on a common key?
Subject: Re: [xsl] How do I "merge" nodes based on a common key? From: Joseph Silverman <yossie@xxxxxxxxxxxxxxxxx> Date: Fri, 26 Mar 2004 14:21:59 -0800 |
that allows me to group stuff, but how do I "merge" them once grouped?
to rephrase, I still get a line for EACH node in the original data, rather than one line for all nodes with any given matching @title.
Thanks for your help! - Yossie
---
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method="html" encoding="UTF-8" indent="yes" /> <xsl:key name="title" match="http_load | httpload" use="@title" /> <xsl:template match="run"> <table border="1" cellpadding="6"> <xsl:for-each select="httpload[count(. | key('title', @title)[1]) = 1]"> <xsl:for-each select="key('title',@title)"> <tr> <td><xsl:value-of select="@title"/></td> <td><xsl:value-of select="@cache"/></td> <td><xsl:value-of select="@gzip"/></td> <td><xsl:value-of select="fetches/text()"/></td> <td><xsl:value-of select="max_parallel/text()"/></td> <td><xsl:value-of select="mbytes_sec/text()"/></td> </tr> </xsl:for-each> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
On Mar 26, 2004, at 2:52 AM, Brian Chrisman wrote:
A grouping question everybody asks... a good 'grouping' solution: http://www.jenitennison.com/xslt/grouping/muenchian.html
Joseph Silverman wrote:
I have a xml file I would like to process into a html table. I figure that xslt is the way to go. The file contains various nodes (results from load testing) that all share a single attribute, title, that identifies and links them in groups. See snippet below.
So, I can't figure out some code to process this file and "merge" the
nodes based on the title attribute so I can print each "merged" node as
a single line in a table. sub-nodes AS well as attributes (though there
is no overlap in the latter!) should be merged. Then I can use a
<xsl:for-each ..> to process the merged list.
I tried some stuff on my own and it is getting me nowhere (see below).
Any ideas?
Thanks - Yossie
<run> <http_load title="X">
<url>http://delenn-g:8080/lps/sample-apps/calendar/calendar.lzo? lzt=swf</url> <rr>delenn-g</rr> <fetches>94851</fetches> <max_parallel>50</max_parallel> <mbytes>111.443</mbytes> <elapsed>180.406</elapsed> <mean_kbytes_connection>1.20312</mean_kbytes_connection> <fetches_sec>525.763</fetches_sec> <mbytes_sec>0.617733</mbytes_sec> <msec_connect_mean>0.400405</msec_connect_mean> <msec_connect_max>66.577</msec_connect_max> <msec_connect_min>0.211</msec_connect_min> <msec_first_mean>94.5393</msec_first_mean> <msec_first_max>3768.62</msec_first_max> <msec_first_min>2.111</msec_first_min> <http_result> <code>404</code> <count>94851</count> </http_result> </http_load> <httpload gzip="true" title="X" seconds="180" path="/sample-apps/calendar/calendar.lzo?lzt=swf" parallel="50" cache="false" lps="lps" datapath="" backend="" /> <fetch-curl title="X">
<url>http://delenn-g:8080/lps/sample-apps/calendar/calendar.lzo?
lzt=swf</url>
<status>HTTP/1.1 404 Not Found</status>
<size>1232</size>
<http-headers>
<Date>Wed, 24 Mar 2004 19:04:12 GMT</Date>
<Server>Jetty/4.2.17 (Linux/2.4.18-26.8.0 i386
java/1.4.1_02)</Server>
<Content-Type>text/html</Content-Type>
<Content-Length>1232</Content-Length>
</http-headers>
</fetch-curl>
<!--
...
... more httpload, http_load, fetch-curl nodes with different title
attributes, no more than one of each with a given title.
...
-->
</run>
---
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method="html" encoding="UTF-8" indent="yes" /> <xsl:template match="/run"> <xsl:key name="bleh" match="http_load | httpload | fetch_curl" use="@title" /> <html> <head> <title> Title </title> </head> <body> <table border="1" cellpadding="6"> <tr> <th>Title</th> <th>Cache</th> <th>Gzip</th> <th>Fetches</th> <th>Parallel</th> <th>Mbytes/Sec</th> </tr> <xsl:for-each select="key('bleh',.)"> <tr> <td><xsl:value-of select="@title"/></td> <td><xsl:value-of select="@cache"/></td> <td><xsl:value-of select="@gzip"/></td> <td><xsl:value-of select="fetches/text()"/></td> <td><xsl:value-of select="max_parallel/text()"/></td> <td><xsl:value-of select="mbytes_sec/text()"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Yossie Silverman - ENTP "Leave the bearded one for me" I'NET: yossie@xxxxxxxxxxxxxx - Flesh Gordon HTTP: http://www.blacksteel.com/~yossie/ B3 f- t dc g++ k++ s++ p m e+
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How do I "merge" nodes ba, Brian Chrisman | Thread | RE: [xsl] How do I "merge" nodes ba, M. David Peterson |
Re: [xsl] increment variable with x, Tuan Luu | Date | Re: [xsl] escaping quotes in a tran, Wendell Piez |
Month |