[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] sorting and grouping - can't get it to work
Subject: [xsl] sorting and grouping - can't get it to work From: Andreas Waechter <A.Waechter@xxxxxxxxx> Date: Mon, 2 Jul 2001 10:00:10 +0200 |
Hello all, this is my last attempt to get some reaction to my question - previous attempts to post to this list did not give me any reactions - I did not even see my own posting to the list, perhaps this is normal (though when I answered someones post I got my post back from the list). But I also did not get any answer so I suspect my postings did never arrive. Now for my question I have a little problem with data I want to sort and then place into a two-column table (two of the sorted data items in each row). I am a XML/XSL-Newbie so please forgive me if I ask a too simple question for you experts. Here is my problem in detail - I hope I provided all the info you need. With data like this <data> <item> <name>John</name> </item> <item> <name>Ed</name> </item> <item> <name>Bill</name> </item> <item> <name>Al</name> </item> <item> <name>Tim</name> </item> <item> <name>George</name> </item> </data> I want to get a sorted table with two columns like <table> <tr><td>Al</td><td>Bill</td></tr> <tr><td>Ed</td><td>George</td></tr> <tr><td>John</td><td>Tim</td></tr> </table> By using <xsl:template match="data/item"> <table> <xsl:for-each select="item[position() mod 2 = 1]"> <tr> <xsl:apply-templates select=". | following-sibling::item[position()=1]"/> <xsl:if test="not(following-sibling::item[position()=1])"> <td> </td> </xsl:if> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template match="item"> <td><xsl:value-of select="name"/></td> </xsl:template> I managed to get <table> <tr><td>John</td><td>Ed</td></tr> <tr><td>Bill</td><td>Al</td></tr> <tr><td>Tim</td><td>George</td></tr> </table> i.e. I figured out how to place two consecutive item names in two cells of one row. I even managed to fill the last row with an empty cell should the number of items be odd. I also know - in principle - how to sort (<xsl:sort select="name"/>). I just don't know where to place the sort. If I place it in the existing for-each I get a very confusing "order", if I place it in the existing apply-templates, only the two items within each rows get sorted (as I expected it) But what I really need is that the sorting of the item takes place before I start selecting some of them to start rows. I looked through the FAQ under sorting, grouping and sorting and tables and also searched the archives but did not find a solution. Forgive me if I overlooked something. I don't think it should matter in this case but the software I use to interprete my XML+XSL files is the Apache module from the XALAN software (Xalan C++ version 1.1.0). Could anyone please help? Thanks in advance. Andreas Waechter Andreas Waechter Tel.: +49 (089) 55 24 04-43 Logics Software GmbH Fax: +49 (089) 55 24 04-44 Schwanthalerstr. 9-11 mailto:a.waechter@xxxxxxxxx 80336 München http://www.logics.de XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] passing parameters with I, Rene de Vries | Thread | Re: [xsl] sorting and grouping - ca, Christopher R. Maden |
RE: [xsl] passing parameters with I, Rene de Vries | Date | RE: [xsl] Quark's AVENUE product ??, Dominic J. Blythe |
Month |