[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: grouping and counting of elements
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> When the above stylesheet is applied to XML: <All_Results> <Result> <Name>John</Name> <Country>UK</Country> <!-- other upto 100 elements --> <Color>Red</Color> </Result> <Result> <Name>John</Name> <Country>US</Country> <!-- other upto 100 elements --> <Color>Green</Color> </Result> <Result> <Name>Thomas</Name> <Country>Estonia</Country> <!-- other upto 100 elements --> <Color> </Color> </Result> <Result> <Name> </Name> <Country>UK</Country> <!-- other upto 100 elements --> <Color>Red</Color> </Result> </All_Results> The output produced is: <?xml version="1.0" encoding="UTF-8"?> <Totals> <Name> <Tag value="John" count="2"/> <Tag value="Thomas" count="1"/> </Name> <Country> <Tag value="UK" count="2"/> <Tag value="US" count="1"/> <Tag value="Estonia" count="1"/> </Country> <Color> <Tag value="Red" count="2"/> <Tag value="Green" count="1"/> </Color> </Totals> On 4/20/07, Leonid Lyublinski <llyublin@xxxxxxxxx> wrote: Hi experts, I have seen similar questions to mine, yet didn't find a good mach. Please point to the right thread if exists. I have a source Xml: -- Regards, Mukul Gandhi
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|