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>
Related examples in the same category