Subject: Re: [xsl] How do I "merge" nodes based on a common key? From: Joseph Silverman <yossie@xxxxxxxxxxxxxxxxx> Date: Fri, 26 Mar 2004 15:50:35 -0800 |
Hi Jopseph,
Take a look at the following xsl, which does not use a key but uses three
different templates, and processes those three different templates within
one row for your table. The key to this is using <xsl:apply-templates>. The
XSL is:
<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"> <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> <tr> <xsl:apply-templates select="http_load" /> <xsl:apply-templates select="httpload" /> <xsl:apply-templates select="fetch-curl" /> </tr> </table> </body> </html> </xsl:template>
<xsl:template match="http_load" > <td><xsl:value-of select="@title"/></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> </xsl:template>
<xsl:template match="httpload" > <td><xsl:value-of select="@cache"/></td> <td><xsl:value-of select="@gzip"/></td> </xsl:template>
<xsl:template match="fetch-curl" > </xsl:template>
</xsl:stylesheet>
This XSL outputs the following when using your XML:
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <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> <tr> <td>X</td> <td>94851</td> <td>50</td> <td>0.617733</td> <td>false</td> <td>true</td> </tr> </table> </body> </html>
Note that you did not specify data to extract from the node-set 'fetch-curl'
so that's why the template is an empty one. You can now add any element or
attribute as you like.
Hope this helps you in the right direction :-)
<prs/> http://www.pietsieg.com http://www.pietsieg.com/dotnetnuke
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, Pieter Reint Siegers | Thread | RE: [xsl] How do I "merge" nodes ba, Pieter Reint Siegers |
RE: [xsl] How do I "merge" nodes ba, Pieter Reint Siegers | Date | RE: [xsl] How do I "merge" nodes ba, Pieter Reint Siegers |
Month |