XML Tutorial/XSLT stylesheet/Grouping — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
 
м (1 версия)
 
(нет различий)

Текущая версия на 11:26, 26 мая 2010

for each group

   <source lang="xml">

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

</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>
</xsl:text>
     <xsl:for-each select="current-group()">
       <xsl:text>	</xsl:text>
       <xsl:value-of select="(first-name, last-name)" separator=" "/>
       <xsl:text>, </xsl:text>
       <xsl:value-of select="city"/>
       <xsl:text>
</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</source>