Subject: Re: Output sorted XHTML table for a subset of elements
From: "Erik Vullings" <erik.vullings@xxxxxxxxx>
Date: Sun, 25 May 2008 09:44:41 +0200
|
Hi,
I'm not familiar with your XSLT library, but the following XSLT worked for me:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Windows-1252" />
<xsl:template match="/users">
<html>
<body>
<table>
<tr>
<xsl:for-each select="user">
<xsl:sort select="lines" data-type="number"
order="descending"/>
<xsl:if test = "lines > 25">
<td><xsl:value-of select="@name"
/>(<xsl:value-of select="lines" />)</td>
</xsl:if>
</xsl:for-each>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Cheers
Erik
On Sat, May 24, 2008 at 4:45 PM, Steven Davies <xsl-list@xxxxxxxxxxx> wrote:
> Hi,
>
> I've been having a problem with a stylesheet I'm creating and need some
> help with a part of it - given the following XML snippet:
>
> <users>
> <user name="alf">
> <lines>7</lines>
> </user>
> <user name="bert">
> <lines>78</lines>
> </user>
> <user name="charlie">
> <lines>731</lines>
> </user>
> <user name="derek">
> <lines>62</lines>
> </user>
> </users>
>
> ..what I'm trying to achieve is an XHTML table with 5 columns and
> however many rows are necessary (imagine there may be a hundred or so
> users) where the items in the table consist of only the users where the
> user's line count is above 25 and is sorted by their line count.
>
> So for the above snippet the output should be:
>
> <table>
> <tr>
> <td>charlie (731)</td>
> <td>bert (78)</td>
> <td>derek (62)</td>
> </tr>
> </table>
>
> ..obviously with more columns per row and more rows depending on the
> size of the input document.
>
> I've tried to do this using a template matching the next-siblings of the
> users to achieve the grouping, but then I can't sort the items or select
> the ones I want because the XPath works on the input node set and not a
> node set I've selected myself (using for-each or a template).
>
> If it makes any difference I'm using libXSLT 1.1.22 to do the
> transformation.
>
> Can anyone give me any pointers with this?
>
> Thanks,
> Steve
|