Subject: RE: [xsl] 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: [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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Sorting and re-ordering d, Ragulf Pickaxe | Thread | RE: [xsl] Sorting and re-ordering d, McNally, David |
RE: [xsl] Sorting and re-ordering d, McNally, David | Date | [xsl] Need xml dir list by dc:title, hgadm |
Month |