Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

For each group

File: Data.xml <?xml version="1.0"?> <addressbook>   <address>     <first-name>Doris</first-name>     <last-name>Smith</last-name>     <city>New York</city>     <state>WI</state>   </address>   <address>     <first-name>Mary</first-name>     <last-name>Smith</last-name>     <city>Vancouver</city>     <state>MA</state>   </address> </addressbook> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="2.0"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="text"/>   <xsl:template match="/">     <xsl:text>Customers grouped by state&#xA;&#xA;</xsl:text>     <xsl:for-each-group select="/addressbook/address" group-by="state">       <xsl:sort select="state"/>       <xsl:text>  State = </xsl:text>       <xsl:value-of select="current-grouping-key()"/>       <xsl:text>&#xA;</xsl:text>       <xsl:for-each select="current-group()">         <xsl:text>&#x9;</xsl:text>         <xsl:value-of select="(first-name, last-name)" separator=" "/>         <xsl:text>, </xsl:text>         <xsl:value-of select="city"/>         <xsl:text>&#xA;</xsl:text>       </xsl:for-each>     </xsl:for-each-group>   </xsl:template> </xsl:stylesheet> Output: Customers grouped by state   State = MA   Mary Smith, Vancouver   State = WI   Doris Smith, New York