Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Group by department

File: Data.xml <?xml version="1.0"?> <staff>   <employee name="J" department="sales" />   <employee name="B" department="personnel" />   <employee name="C" department="transport" />   <employee name="W" department="personnel" />   <employee name="M" department="sales" /> </staff> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="2.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="html" indent="yes" />   <xsl:template match="staff">     <xsl:for-each-group select="employee" group-by="@department">       <h2>         <xsl:value-of select="current-grouping-key()" />         <xsl:text> department</xsl:text>       </h2>       <xsl:for-each select="current-group()">         <p>           <xsl:value-of select="@name" />         </p>       </xsl:for-each>     </xsl:for-each-group>   </xsl:template> </xsl:stylesheet> Output: <h2>sales department</h2> <p>J</p> <p>M</p> <h2>personnel department</h2> <p>B</p> <p>W</p> <h2>transport department</h2> <p>C</p>