Subject: Re: [xsl] muliple level sorting using xsl:sort From: "Joris Gillis" <roac@xxxxxxxxxx> Date: Mon, 05 Sep 2005 11:43:03 +0200 |
when i tried to sort the data using <xsl:for-each select="Part"> <xsl:sort data-type="number" select="descendant-or-self::code/name"/> it is doing e first level sorting correctly, ie data is sorted in 1,2,5 order (code/name) . but sub parts of <part> 5 ie 5-3 and 5-4 are not getting sorted , similarly for children of 5-4 also.
Any idea how we can sort sub parts ie (child <Part> ) also in this case .
Somehow, you'd need to extract the last number of the 'n(-n)*' sequence, One possible solution is to rely on the fact that the sequence is the same as the previous level + '-n' :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes"/>
<xsl:template match="AAAA|child"> <level> <xsl:for-each select="Part"> <xsl:sort data-type="number" select="substring(code/name,string-length(ancestor::Part[1]/code/name) +1+boolean(ancestor::Part))"/> <xsl:copy-of select="code/name"/> <xsl:apply-templates select="child"/> </xsl:for-each> </level> </xsl:template>
Will return this result: <level> <name>1</name> <name>2</name> <name>5</name> <level> <name>5-3</name> <name>5-4</name> <level> <name>abc</name> <name>def</name> </level> </level> </level>
regards, -- Joris Gillis (http://users.telenet.be/root-jg/me.html) Ceterum censeo XML omnibus esse utendum
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] muliple level sorting using x, Aravind J | Thread | Re: [xsl] muliple level sorting usi, Aravind J |
[xsl] muliple level sorting using x, Aravind J | Date | RE: [xsl] muliple level sorting usi, Michael Kay |
Month |