Subject: RE: [xsl] Incrementing a variable in XSL From: "Roger Glover" <glover_roger@xxxxxxxxx> Date: Thu, 16 Jan 2003 01:04:50 -0600 |
Before the flood starts, I just saw my mistake. :-( I wrote the tail recursion expression incorrectly... "following-sibling::a" should be "following-sibling::a[1]" -- Roger Glover > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Roger Glover > Sent: Thursday, January 16, 2003 12:51 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [xsl] Incrementing a variable in XSL > > > Ken Ross wrote: > > In short you can't. > > > > You can simulate it by using <xsl:value-of > > select="count(preceding::a)+1"/>. > > Wouldn't something like this (admittedly ad hoc, untested code) work too? > > <xsl:template match="docroot"> > <xsl:variable name="var">1</xsl:variable> > <xsl:apply-templates select="a[1]" mode="tailRecurseSibs"/> > </xsl:template> > > <xsl:template match="a" mode="tailRecurseSibs"> > <xsl:param name="var" select="1"/> > <xsl:value-of select="$var"/> > <xsl:apply-templates select="following-sibling::a" > mode="tailRecurseSibs"> > <xsl:with-param name="var" select="$var + 1"/> > </xsl:apply-templates> > </xsl:template> > > In other words, while direct iteration using a variable will not allow the > desired operation, tail recursion using a parameter should. Right? > > -- Roger Glover > glover_roger@xxxxxxxxx > > > > -----Original Message----- > > From: Mukul [mailto:mukulw3@xxxxxxxxx] > > Sent: Thursday, 16 January 2003 3:37 PM > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Subject: [xsl] Incrementing a variable in XSL > > > > > > Hello , > > I have a simple XML file as below: > > <?xml version="1.0" encoding="UTF-8"?> > > <docroot> > > <a>1</a> > > <a>2</a> > > <a>3</a> > > <a>4</a> > > </docroot> > > > > I have written a XSL stylesheet as below: > > <?xml version="1.0" encoding="UTF-8"?> > > <xsl:stylesheet version="1.0" > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > > > <xsl:template match="docroot"> > > <xsl:variable name="var">1</xsl:variable> > > <xsl:for-each select="a"> > > <xsl:value-of select="$var"/> > > <!-- incrementing $var ?? --> > > </xsl:for-each> > > </xsl:template> > > </xsl:stylesheet> > > > > I want to increment a variable in <xsl:for-each .., > > and print it with <xsl:value-of .. > > > > There is a situation where in the XML file, a tag > > repeats and I want to output the no's 1, 2, 3 etc in > > the output with each tag instance. > > > > How can I do this? > > > > Regards, > > Mukul > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Incrementing a variable i, Roger Glover | Thread | RE: [xsl] Incrementing a variable i, Edward . Middleton |
RE: [xsl] Incrementing a variable i, Ross Ken | Date | RE: [xsl] Register Marks, Funny Cha, Edward . Middleton |
Month |