|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Counting unique node values using XSLT?
This stylesheet works correctly on your example. The method is a simplified
version of the so-called Muenchian method. The idea is that the xsl:key
returns node sets that match each unique value of the key, in this case the
trunk number. You do a for-each, but only on those nodes that match the
***first*** one of the nodes returned by the unique keys. (Note - I wrapped
your example in a top-level element called "root").
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
version='1.0'>
<xsl:output method='html'/>
<xsl:key name='tr' match='tg' use='.'/>
<xsl:template match="/root">
<html>
<xsl:for-each
select="trunk-groups/tg[generate-id()=generate-id(key('tr',.)[1])]">
<xsl:value-of select="."/><br/>
</xsl:for-each>
</html>
</xsl:template>
</xsl:stylesheet>
Cheers,
Tom P
[Brucato, Greg]
> I am using the count() function to successfully count the number of nodes
> produced in XML data created using Java.
>
> However, I now have a situation where some of the values are duplicates.
Is
> there any way to count only unique values?
>
> Example: The count should be 6 not 8 since there are two duplicates in the
> second fragment.
>
> <xsl:value-of select="count(trunk-groups/tg)"/>
> ...
> <trunk-groups>
> <tg>T1-1-1-1</tg>
> <tg>T1-1-1-2</tg>
> <tg>T1-1-1-3</tg>
> <tg>T1-1-1-4</tg>
> </trunk-groups>
> ...
>
> <trunk-groups>
> <tg>T1-1-1-2</tg>
> <tg>T1-1-2-3</tg>
> <tg>T1-1-1-4</tg>
> <tg>T1-1-2-8</tg>
> </trunk-groups>
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|

Cart








