EXSLT - set:distinct

Implementer Page: set.distinct.html
Function Package: set.distinct.zip

Function Syntax

node-set set:distinct(node-set)

Template Syntax

<xsl:call-template name="set:distinct"> <xsl:with-param name="nodes" select="node-set" /> </xsl:call-template>

The set:distinct function returns a subset of the nodes contained in the node-set NS passed as the first argument. Specifically, it selects a node N if there is no node in NS that has the same string value as N, and that precedes N in document order.

The set:distinct template applies templates to these nodes in set:distinct mode. By default, the nodes are copied by this template, so that a result tree fragment consisting of the nodes is returned.

Implementations

The following XSLT processors support set:distinct:

Implementations of set:distinct are available in the following languages:

Examples

Function

The following example shows how to use the set:distinct function:

Source

<doc> <city name="Paris" country="France" /> <city name="Madrid" country="Spain" /> <city name="Vienna" country="Austria" /> <city name="Barcelona" country="Spain" /> <city name="Salzburg" country="Austria" /> <city name="Bonn" country="Germany" /> <city name="Lyon" country="France" /> <city name="Hannover" country="Germany" /> <city name="Calais" country="France" /> <city name="Berlin" country="Germany" /> </doc>

Stylesheet

<!-- Test exslt:distinct --> <xsl:template match="/"> <out> <all-countries> : <xsl:for-each select="//@country"> <xsl:value-of select="." /> ; </xsl:for-each> </all-countries> : <distinct-countries> : <xsl:for-each select="set:distinct(//@country)"> <xsl:value-of select="." /> ; </xsl:for-each> </distinct-countries> </out> </xsl:template>

Result

<out xmlns:set="http://exslt.org/sets"> <all-countries>: France; Spain; Austria; Spain; Austria; Germany; France; Germany; France; Germany; </all-countries> : <distinct-countries>: France; Spain; Austria; Germany; </distinct-countries> </out>

http://www.exslt.org/set/functions/distinct/index.html last modified 2002-11-12