[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Multi-level Sort


Subject: Re: [xsl] Multi-level Sort
From: David Carlisle <davidc@xxxxxxxxx>
Date: Mon, 7 Feb 2005 17:48:36 GMT

  I was hoping someone might be able to help me with a sort problem.  I
  would like to sort on a presorted node in the same stylesheet.


I can't understand that description (or at least match it to the
example) what do you mean by a pre-sorted node? The example you give
doesn't have any sorting based on anything in the stylesheet, as far as
I can see.

In your example the ranges of brands in each if the document elements
did not overlap, I'll assume that is always the case so you can order
document/brands elements on their first brand:


<x>

<document>
	<brands>
		<brand>Brand F</brand>
		<brand>Brand E</brand>
	</brands>
</document>
<document>
	<brands>
		<brand>Brand B</brand>
		<brand>Brand A</brand>
	</brands>
</document>
<document>
	<brands>
		<brand>Brand C</brand>
		<brand>Brand D</brand>
	</brands>
</document>
</x>






<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">



<xsl:output indent="yes"/>

<xsl:template match="x">
<x>
<xsl:apply-templates select="document/brands">
<xsl:sort select="brand[1]"/>
</xsl:apply-templates>
</x>
</xsl:template>

<xsl:template match="brands">
<document><brands>
<xsl:apply-templates select="brand">
<xsl:sort select="."/>
</xsl:apply-templates>
</brands></document>
</xsl:template>


<xsl:template match="brand">
 <xsl:copy-of select="."/>
</xsl:template>


</xsl:stylesheet>




<x>
   <document>
      <brands>
         <brand>Brand A</brand>
         <brand>Brand B</brand>
      </brands>
   </document>
   <document>
      <brands>
         <brand>Brand C</brand>
         <brand>Brand D</brand>
      </brands>
   </document>
   <document>
      <brands>
         <brand>Brand E</brand>
         <brand>Brand F</brand>
      </brands>
   </document>
</x>



________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________


Current Thread