Get current group
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:variable name="sorted-towns" as="element()*"> <xsl:perform-sort select="town"> <xsl:sort /> </xsl:perform-sort> </xsl:variable> <xsl:for-each-group select="$sorted-towns" group-adjacent="(position()-1) 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: <?xml version="1.0" encoding="UTF-8"?> <table> <tr> <td>A</td> <td>B</td> <td>C</td> <td>D</td> </tr> <tr> <td>E</td> <td>F</td> <td>G</td> <td>H</td> </tr> <tr> <td>I</td> <td>J</td> <td>K</td> <td>L</td> </tr> </table>