This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
sort | uniq via keys
- From: Saverio Perugini <sperugin at csgrad dot cs dot vt dot edu>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 14 Feb 2002 12:09:24 -0500 (EST)
- Subject: [xsl] sort | uniq via keys
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hello,
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?
Thank You and Best Regards,
Saverio Perugini
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list