This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: counting again


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]