xsl-list
[Top] [All Lists]

Re: Sorting and re-ordering down a hierarchy

2003-07-22 01:21:24
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?

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