Subject: Re: [xsl] grouping and counting of elements From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Sat, 21 Apr 2007 18:36:16 +0100 |
Hi Leonid, Below is a XSLT 2.0 solution for this:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/"> <Totals> <xsl:for-each select="All_Results/Result[1]/*"> <xsl:variable name="name" select="name()" /> <xsl:element name="{$name}"> <xsl:for-each-group select="../../Result/*[name() = $name]" group-by="."> <xsl:if test="not(normalize-space(.) = '')"> <Tag value="{.}" count="{count(current-group())}" /> </xsl:if> </xsl:for-each-group> </xsl:element> </xsl:for-each> </Totals> </xsl:template>
</xsl:stylesheet>
Heres another way which doesn't rely on all elements being present in the first <Result>:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <Totals> <xsl:for-each-group select="/All_Results/Result/*[normalize-space()]" group-by="name()"> <xsl:element name="{current-grouping-key()}"> <xsl:for-each-group select="current-group()" group-by="."> <Tag value="{current-grouping-key()}" count="{count(current-group())}"/> </xsl:for-each-group> </xsl:element> </xsl:for-each-group> </Totals> </xsl:template> </xsl:stylesheet>
cheers andrew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] grouping and counting of , Mukul Gandhi | Thread | Re: [xsl] grouping and counting of , Mukul Gandhi |
Re: [xsl] grouping and counting of , Mukul Gandhi | Date | [xsl] Regular Expressions in XPath , Rashmi Rubdi |
Month |