xsl-list
[Top] [All Lists]

RE: Ordering nodes by number of children

2004-02-22 07:20:24
-----Original Message-----
From: Smilen Dimitrov 

I'm a newbie with XSL, and after long searching, and mainly 
thanks to the information in the list, I finally managed to solve 
the problem. Consider the following structure:


Hi,

This bit:
   
   <xsl:for-each select="./*">
   
    <xsl:sort select="count(child::*)" data-type="number" 
order="descending"/>
    
    <xsl:call-template name="ArrangeDirectory">
     <xsl:with-param name="CurrentNode" select="."/>
    </xsl:call-template>
    
   </xsl:for-each>
   

would, with the given input, actually have exactly the same output as:

<xsl:apply-templates>
  <xsl:sort select="count(*)" data-type="number"
    order="descending" />
</xsl:apply-templates>


So the complete solution revised:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="xml" version="1.0" indent="yes" />

<xsl:template match="/">
  <xsl:apply-templates />
</xsl:template>

<xsl:template match="node">
  <xsl:copy>
    <xsl:copy-of select="@*" />
    <xsl:apply-templates>
      <xsl:sort select="count(*)" data-type="number"
                order="descending" />
    </xsl:apply-templates>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>


Cheers,

Andreas

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>