mod function
File: Data.xml <?xml version="1.0"?> <towns> <town>A</town> <town>B</town> <town>C</town> <town>D</town> <town>E</town> <town>F</town> <town>G</town> <town>H</town> <town>I</town> <town>J</town> <town>K</town> <town>L</town> </towns> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:param name="cols" select="4" /> <xsl:template match="towns"> <table> <xsl:for-each-group select="town" group-by="position() mod (last() idiv $cols)"> <tr> <xsl:for-each select="current-group()"> <td> <xsl:value-of select="." /> </td> </xsl:for-each> </tr> </xsl:for-each-group> </table> </xsl:template> </xsl:stylesheet> Output: ml version="1.0" encoding="UTF-8"?> <table> <tr> <td>A</td> <td>D</td> <td>G</td> <td>J</td> </tr> <tr> <td>B</td> <td>E</td> <td>H</td> <td>K</td> </tr> <tr> <td>C</td> <td>F</td> <td>I</td> <td>L</td> </tr> </table>