RE: [xsl] Find the node with maximum elements

Subject: RE: [xsl] Find the node with maximum elements
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 3 Nov 2007 19:34:30 -0000
Easiest (even in 2.0) is to sort elements according to the number of
children and take the last:

<xsl:for-each select="Sample/*">
  <xsl:sort select="count(child::*)" data-type="number"/>
  <xsl:if test="position()=last()">
    <xsl:value-of select="name()"/>
  </
</

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Avaneesh Ramprasad [mailto:avaneesh@xxxxxxxxxxxxxx] 
> Sent: 03 November 2007 19:05
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Find the node with maximum elements
> 
> Hello,
> I have a requirement to write a xsl transformation to find 
> the node which has the maximum number of elements
> 
> Below is a sample xml file 
> 
> <Sample>
>     <Toyota>
>           <Car>Camry</Car>
>           <Car>Corrola</Car>
>      </Toyota>
>      <Honda>
>             <Car>Accord></Car>
>           <Car>Civic</Car>
>           <Car>Pilot</Car>
>      </Honda>
>      <Mitsubishi>
>         <Car>Lancer</Car>
>         <Car>Lancer</Car>
>         <Car>Lancer</Car>
>      </Mitsubishi>
>     <Hyundai>
>         <Car>Sonata</Car>
>         <Car>Accent</Car>
> </Hyundai>
> </Sample>
> 
> The xsl should return Honda and Mitsubishi
> 
> Would appreciate your help.
> 
> Thanks
> Avaneesh

Current Thread