How about the following. If you change 3 to some other "N"
value for the <xsl:variable> named "n" at the root, then
it should work for you for any n = 1 ... ?
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:variable name="n">3</xsl:variable>
<xsl:template match="/">
<table border="1">
<xsl:apply-templates select="doc/data"/>
</table>
</xsl:template>
<xsl:template match="*[(position()-1) mod $n = 0]">
<tr>
<td>
<xsl:value-of select="@value"/>
</td>
<xsl:for-each select="from-following-siblings(*[not(position() > ( $n - 1
))])">
<td>
<xsl:value-of select="@value"/>
</td>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
____________________________________________________________
Steve Muench, Consulting Product Manager & XML Evangelist
Java Business Objects Dev't Team - http://www.oracle.com/xml
--- Begin Message ---
We have a document like this:
<doc>
<data value="AA"/> <data value="BB"/>
<data value="CC"/> <data value="DD"/>
<data value="EE"/> <data value="FF"/>
<data value="GG"/> <data value="HH"/>
<data value="II"/> <data value="JJ"/>
<data value="KK"/> <data value="LL"/>
</doc>
What we want is to put the data values into
an n by m HTML table with n being a hardcoded
constant and m being driven by the data:
<table>
<tr><td>AA</td><td>BB</td><td>CC<td></tr>
<tr><td>DD</td><td>EE</td><td>FF<td></tr>
<tr><td>GG</td><td>HH</td><td>II<td></tr>
<tr><td>JJ</td><td>KK</td><td>KK<td></tr>
</table>
We've tried about every permutation possible
but haven't come up with the right one yet.
Any help or example would be greatly appreciated.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
--- End Message ---