I have the following XSLT (well, actually it's a snippet), which formats
some data from XML nicely into an HTML table. However, the data is pasted
left-to-right, while I'd like it better when it's put up-to-down first.
Anyone knows of a solution for this? Thanks in advance!
You've almost got it, you just need a variable to hold the table height (in
rows).
<xsl:variable name="tableHeight" select="4"/>
Then you want a new row for each <model> up to the table height:
<xsl:template match="modellen">
<table border="1">
<xsl:for-each select="model[position() < $tableHeight]">
<tr>
....
</tr>
</xsl:for-each>
</table>
</xsl:template>
Then on each row you want every nth sibling, depending on how many rows you
have:
<xsl:for-each select=".|following-sibling::model[position() mod $tableHeight =
1]">
<td>
<xsl:apply-templates/>
</td>
</xsl:for-each>
So all together it looks like:
<xsl:template match="modellen">
<table border="1">
<xsl:for-each select="model[position() < $tableHeight]">
<tr>
<xsl:for-each select=".|following-sibling::model[position() mod
$tableHeight = 1]">
<td>
<xsl:apply-templates/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
cheers
andrew
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.491 / Virus Database: 290 - Release Date: 18/06/2003
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list