|
Subject: Re: [xsl] Transform list of elements to a sorted and dynamic HTML table From: Geert Josten <Geert.Josten@xxxxxxxxxxx> Date: Sun, 12 Dec 2004 09:35:12 +0100 |
<xsl:template match="item">
<xsl:if test="position() mod $columns = 1 or $columns = 1">
<tr>
<xsl:variable name="nextpos" select="position() + $columns" />
<xsl:apply-templates select=".|following-sibling::item[$nextpos > position()]" mode="column"/>
</tr>
</xsl:if>
</xsl:template><xsl:template match="item" mode="column">
<td>
<xsl:apply-templates select="node()"/>
</td>
</xsl:template>Cheers, Geert
Good morning,
I have a list of items, e.g.:
<item> <name>Adoreable</name> <date>2004-12-11</date> </item> <item> <name>Adjustable</name> <date>2004-12-11</date> </item> <item> <name>Bulk</name> <date>2004-12-10</date> </item> <item> <name>Condensed</name> <date>2004-12-12</date> </item> <item> <name>Compromise</name> <date>2004-11-08</date> </item>
and I want them to be transformed to a sorted and dynamic (columns and rows adjustable by variables - $Columns and $Rows) HTML table (using recent Version of Saxon and XSLT2.0). The sort element are the <date/>-Elements (descending), so the table output had to look like this ($Columns = 2, $Rows = 2):
<table> <tr> <td>Condensed</td> <td>Adjustable</td> </tr> <tr> <td>Adoreable</td> <td>Bulk</td> </tr> <tr> <td colspan="2">Compromise</td> </tr> </table>
If there are not enough items to fill the columns of the last row its last <td> should
have a "colspan" attribute in order to satisfy layout requirements. No empty
rows should be created (e.g. if there are not enough items to fill all <$Rows> rows).
As you may see there exists a second sort element (<name/>, ascending) in my example
but this is no must-have feature.
An alternative way might be to select the first <$Columns * $Rows> items (sorted descendingly by <date/>, of course) - but I see no solution for this, right now.
Is there a way to handle this problem with the power of XSLT? Regards, Jannis
-- Geert.Josten@xxxxxxxxxxx IT-consultant at Daidalos BV, Zoetermeer (NL)
http://www.daidalos.nl/ tel:+31-(0)79-3316961 fax:+31-(0)79-3316464
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Transform list of elements to, Jannis Pohlmann | Thread | Re: [xsl] Transform list of element, Jannis Pohlmann |
| Re: [xsl] How to use xPath expressi, Niclas Hedhman | Date | Re: [xsl] Transform list of element, Jannis Pohlmann |
| Month |