Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Use for-each-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:for-each-group select="town"         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>