Hi,
I want to write a XSLT which displays serial no.s as
the <tag> TAGs are found
I have written a XSL 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="rootelem/tag">
<xsl:value-of select="count(preceding::tag) + 1"
/>
<xsl:if test="total">
<xsl:value-of select="count(preceding::tag)
+ 1" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
I want that when <total> tag comes , an extra serial
no. gets generated which is one more than the previous
one. After the serial no. of <total> tag is o/p, the
next serial no. resumes as 1 more than this.
The above stylesheet is generating output as 122345566
. I want the o/p to come as 123456789(this includes
serial no.s for <total> tag).
<xsl:template match="tag">
<xsl:variable name="x" select="count(preceding::tag) +
count(preceding::tag[total]) + 1" />
<xsl:value-of select="$x"/>
<xsl:if test="total">
<xsl:value-of select="$x + 1" />
</xsl:if>
</xsl:template>
But you might want to consider writing e.g. a recursive template to generate
the serial number to eliminate the use of preceding axis.
Cheers,
Jarno - Assemblage 23: Document (Endanger Mix)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list