This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: counting again
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] counting again
- From: Christoph dot Oberle at mlp-ag dot com
- Date: Fri, 13 Jul 2001 18:55:59 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hallo Michael,
for numbering you should use <xsl:number>:
If you just use this
<xsl:number level="any" count="*[name() = $name]"/>
instead of
<xsl:value-of select="count(preceding-sibling::*[name()=$name])" />
in your code, it will count all preceding nodes of name = $name at any level in
the document tree.
The counting at the end can be done with count():
<xsl:value-of select="count(//EL1)"/>
The modified stylesheet looks like this:
<xsl:template match="/">
<xsl:apply-templates/>
<xsl:call-template name="countings"/>
</xsl:template>
<xsl:template match="EL1 | EL2">
<xsl:variable name="name" select="name()"/>
<xsl:copy>
<xsl:element name="{$name}_NR">
<xsl:number level="any" count="*[name() = $name]"/>
<!-- instead of: xsl:value-of
select="count(preceding-sibling::*[name()=$name])" / -->
</xsl:element>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template name="countings">
<COUNTINGS>
<EL1_LNR><xsl:value-of select="count(//EL1)"/></EL1_LNR>
<EL2_LNR><xsl:value-of select="count(//EL2)"/></EL2_LNR>
</COUNTINGS>
</xsl:template>
Caution: Numbering is starting with 1 not with 0!
Greetings | Grüße ;-)
Christoph
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list