This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: sort | uniq via keys


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]