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

Re: Output sorted XHTML table for a subset of elements

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
Re:  Output sorted XHTML table for a subset of elements
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

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.