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