Hi
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Ragulf Pickaxe
Sent: Tuesday, July 22, 2003 9:21 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Sorting and re-ordering down a hierarchy
Hi,
I did not see any response on this (except for one who said
he used Perl
instead), so I tried myself.
The templates below, I thought would do what was wanted, but
I only get it
to sort on the 1st level, not on the second level. I do not know why.
Does anybody else have a solution, and can anyone tell me why
my solution
does not work?
In your stylesheet you have:
<xsl:apply-templates select="node">
<xsl:sort select="node/rank" ... />
</xsl:apply-templates>
Here you are saying:
Apply templates to node "node" and sort it buy child::node/child::rank
Basicaly you are using node and sorting by node/node/rank (path from the
same parent)
What you want is
<xsl:apply-templates select="node">
<xsl:sort select="rank" ... />
</xsl:apply-templates>
That way you select node and sort it by node/rank (path from the same
parent)
Hope this helps you.
Regards,
Ragulf Pickaxe :)
<xsl:template match="/">
<output>
<xsl:apply-templates select="input"/>
</output>
</xsl:template>
<xsl:template match="input">
<xsl:apply-templates select="node">
<xsl:sort select="node/rank" data-type="number"
order="ascending"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="node">
<node>
<xsl:copy-of select="rank"/>
<xsl:apply-templates select="node">
<xsl:sort select="node/rank" data-type="number"
order="ascending"/>
</xsl:apply-templates>
</node>
</xsl:template>
<input>
<node>
<rank>2</rank>
<node>
<rank>88</rank>
</node>
<node>
<rank>7</rank>
</node>
<node>
<rank>66</rank>
</node>
</node>
<node>
<rank>1</rank>
<node>
<rank>3</rank>
</node>
<node>
<rank>2</rank>
</node>
<node>
<rank>1</rank>
</node>
</node>
</input>
The output I get on this is:
<output>
<node>
<rank>1</rank>
<node>
<rank>3</rank>
</node>
<node>
<rank>2</rank>
</node>
<node>
<rank>1</rank>
</node>
</node>
<node>
<rank>2</rank>
<node>
<rank>88</rank>
</node>
<node>
<rank>7</rank>
</node>
<node>
<rank>66</rank>
</node>
</node>
</output>
_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE*
http://join.msn.com/?page=features/virus
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list