This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: sort | uniq via keys
- From: "Thomas B. Passin" <tpassin at mitretek dot org>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 14 Feb 2002 12:32:02 -0500
- Subject: Re: [xsl] sort | uniq via keys
- References: <Pine.OSF.4.33.0202141145030.12991-100000@csgrad.cs.vt.edu>
- Reply-to: xsl-list at lists dot mulberrytech dot com
My post from February 11,2002, with the title "Re: [xsl] Many sets of eyes "
shows how to get a unique list of elements sorted by names (unique meaning
that each element name occurs once). That should be close enough to get you
started.
Cheers,
Tom P
[Saverio Perugini]>
> I am interested in a sorted and uniqed list of all element names in
> an XML file (except for the root), similar to `sort | uniq' in UNIX.
>
> e.g., in the following data,
>
> <db>
> <a>...</a>
> <z>...</z>
> <g>...</g>
> <j>
> <f>...</f>
> <z>...</z>
> <a><o>...</o></a>
> </j>
> <b>...</b>
> <b>...</b>
> </db>
>
> I'd like the following list
>
> a
> b
> f
> g
> j
> o
> z
>
> I am trying to achieve this with keys (unless someone can direct me to
> a simpler method). The following is an initial attempt.
>
> <xsl:key name="features" match="*" use="name()"/>
>
> <xsl:template match="/db">
>
> <xsl:for-each select="following::*[count (. | key('features', name())[1])
= 1]">
> <xsl:sort select="name()" />
> <xsl:value-of select="name()" /><xsl:text>
> </xsl:text>
> </xsl:for-each>
>
> </xsl:template>
>
> <xsl:template match="text()"/>
>
> This is not working out however. It returns an empty file. Does this
> appear to be correct?
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list