This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: RE: sequence numbering.
- From: "william locksman" <vsd18 at rediffmail dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: 27 Mar 2002 11:01:23 -0000
- Subject: Re: RE: [xsl] sequence numbering.
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi the solution Michael Suggested seems to fit my purpose, But
Since i am a newbie to XSL , I do not know how to form a temporary
tree that contains sorted sequence.
Michael's explaination made me pretty much clear of what has to be
done. But i do not know how it has to be done.
If any one can please suggest me how to go about doing it or give
me a link to any reference document, It should be of much help to
me
Thanks
William
On Tue, 26 Mar 2002 Michael Kay wrote :
><xsl:number> gives you the position of the element in the source
>tree, not
>in the sorted sequence. To get the number in the sorted sequence,
>do a
>two-phase transformation: create a temporary tree that contains
>the sorted
>products, then process this (using xx:node-set()) to add the
>numbers. To get
>the number for a product among all the products of the same
>colour, use
><xsl:number count="product[color=$this_color]"/>
>
>Michael Kay
>Software AG
>home: Michael.H.Kay@ntlworld.com
>work: Michael.Kay@softwareag.com
>
> > -----Original Message-----
> > From: owner-xsl-list@lists.mulberrytech.com
> > [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of
>william
> > locksman
> > Sent: 26 March 2002 16:34
> > To: xsl-list@lists.mulberrytech.com
> > Subject: [xsl] sequence numbering
> >
> >
> > <products>
> > <product id = "1">
> > <name>product1</name>
> > <weight>56</weight>
> > <color>blue</color>
> > </product>
> > <product id = "2">
> > <name>product2</name>
> > <weight>56</weight>
> > <color>red</color>
> > </product>
> > <product id = "3">
> > <name>product3</name>
> > <weight>56</weight>
> > <color>red</color>
> > </product>
> > <product id = "4">
> > <name>product4</name>
> > <weight>56</weight>
> > <color>blue</color>
> > </product>
> > <product id = "5">
> > <name>product5</name>
> > <weight>56</weight>
> > <color>blue</color>
> > </product>
> > </products>
> >
> > for the above xml for all the color elements in the xml
>file,
> > get the products.. in other words group the products based
>on
> > there colors
> > and then assosiate the products with a serial num . This
>serial id
> > is
> > in the series of 1,2,3... 1 for the first product that is of
>a
> > perticular color, 2 for the next product and so on..
> >
> > xsl i wrote..
> >
> > <?xml version="1.0"?>
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > <xsl:template match="/">
> > <xsl:for-each select="//product/color">
> > <xsl:sort select="." data-type="text" order="descending"/>
> > <xsl:number format="1" count="product"/> ...<xsl:value-of
> > select="."/>..<xsl:value-of select="../name"/>
> > <br></br>
> > </xsl:for-each>
> > </xsl:template>
> > </xsl:stylesheet>
> >
> > with above xsl , I am getting an out put
> >
> > 3 ...red..product3
> >
> > 2 ...red..product2
> >
> > 5 ...blue..product5
> >
> > 4 ...blue..product4
> >
> > 1 ...blue..product1
> >
> > which is quite understandable... But i wanted the output
>which
> > should look like
> >
> > 1 ...red..product3
> >
> > 2 ...red..product2
> >
> > 1 ...blue..product5
> >
> > 2 ...blue..product4
> >
> > 3 ...blue..product1
> >
> > that is for each of the colors of the same type i need the
> > sequence number to start from 1
> >
> > any suggestions and ideas will be most appreciated and
>helpful
> > many thanks in advance
> > bill..
> >
> >
> > XSL-List info and archive:
>http://www.mulberrytech.com/xsl/xsl-list
> >
>
>
> XSL-List info and archive:
>http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list