Subject: RE: Sorting and re-ordering down a hierarchy
From: Américo Albuquerque <melinor@xxxxxxx>
Date: Tue, 22 Jul 2003 14:20:53 +0100
|
Hi
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Ragulf Pickaxe
> Sent: Tuesday, July 22, 2003 9:21 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: 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
|