Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Sort with current-grouping-key() function

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <employees>   <employee>     <FirstName>A</FirstName>     <LastName>B</LastName>     <Country>USA</Country>   </employee>   <employee>     <FirstName>C</FirstName>     <LastName>D</LastName>     <Country>UK</Country>   </employee> </employees> File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="2.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:template match="/">     <html>       <body>         <h3>header 3</h3>         <xsl:for-each-group select="employees/employee"           group-by="Country">           <xsl:sort select="current-grouping-key()" />           <paragraph>             :             <b>               <xsl:value-of                 select="current-grouping-key()" />             </b>             <ul>               <xsl:apply-templates                 select="current-group()">                 <xsl:sort select="LastName" />               </xsl:apply-templates>             </ul>           </paragraph>         </xsl:for-each-group>       </body>     </html>   </xsl:template>   <xsl:template match="employee">     <li>       <xsl:value-of select="LastName" />       ,       <xsl:value-of select="FirstName" />     </li>   </xsl:template> </xsl:stylesheet> Output: <html>    <body>       <h3>header 3</h3>       <paragraph>                      :                      <b>UK</b><ul>             <li>D                      ,                      C             </li>          </ul>       </paragraph>       <paragraph>                      :                      <b>USA</b><ul>             <li>B                      ,                      A             </li>          </ul>       </paragraph>    </body> </html>