1 <?xml version="1.0" ?> 2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 3 <xsl:output method="xml" indent="yes"/> 4 <xsl:template match="/"> 5 <xsl:variable name="unique-countries" 6 select="/cities 7 /city[not(@country=preceding-sibling::city/@country)] 8 /@country" 9 /> 10 <countries> 11 <xsl:for-each select="$unique-countries"> 12 <country name="{.}"> 13 <xsl:for-each select="//city[@country=current()]"> 14 <city><xsl:value-of select="@name"/></city> 15 </xsl:for-each> 16 </country> 17 </xsl:for-each> 18 </countries> 19 </xsl:template> 20 </xsl:stylesheet> 21