Re: [xsl] Find the node with maximum elements

Subject: Re: [xsl] Find the node with maximum elements
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Sun, 4 Nov 2007 12:03:14 +0530
Hi Mike,
   IMHO, there seems to be a slight flaw in this logic. This program
will return only the last instance (i.e. only 1) of the maximum, and
not all maximum instances.

I think, Ken's answer meets exactly the OP's requirements.

On 11/4/07, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> 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


-- 
Regards,
Mukul Gandhi

Current Thread