Elo: Parameter erhöhen

Beitrag lesen

guten tag,

ich suche schon seid einiger zeit eine lösung für folgendes problem:

input: fußnoten in docbook 5.0, d.h. in der form <footnote><para>hier steht der Fußnotentext</para></footnote> - diese steht direkt im text.

output: im text steht nur die referenzzahl in form von <a id="fn_texti" href="fn_footi">(i)</a> , wobei i die Fußnotenzahl ist.
        am seitenende entsprechend:
<a id="fn:footi" href="fn:texti">und der Fußnotentext</a>

mein erster gedanke war eine for-each schleife, jedoch ergab sich da das problem, dass ich nicht wusste, wie ich den Parameter i beim nächsten schritt erhöhen sollte, z.b. in dem ich das definierte template (name=bulid_anchor) in sich selbst aufrufe. nun habe ich es auf choose umgemünzt und eine for-each schleife drum gesetzt, aber es funktioniert nicht richtig (denn fußnotentext habe ich bisher noch nicht verarbeitet, also keinen rückwärtigen anker erstellt - bitte berücksichtigen):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://docbook.org/ns/docbook" exclude-result-prefixes="d">
...
<xsl:template match="/">
  <html  xmlns="http://www.w3.org/1999/xhtml">
    <head>
     <title></title>
    </head>
  <body>
 <xsl:call-template name="build_anchor"/>
  </body>
 </html>
</xsl:template>

...

<xsl:template name="build_anchor">
   <xsl:param name="i" select="1"></xsl:param>
 <xsl:for-each select="*">
  xsl:choose
   <xsl:when test="name()='d:footnote'">
    <xsl:element name="a">
     <xsl:attribute name="id">
       xsl:textfn_text</xsl:text>
       <xsl:value-of select="$i"/>
     </xsl:attribute>
     <xsl:attribute name="href">
       xsl:text#fn_foot</xsl:text>
       <xsl:value-of select="$i"/>
     </xsl:attribute>
    xsl:text(</xsl:text><xsl:value-of select="$i"/>xsl:text)</xsl:text>
    <xsl:call-template name="build_anchor">
      <xsl:with-param name="i" select="$i+1"></xsl:with-param>
    </xsl:call-template>
   </xsl:element>
  </xsl:when>
  xsl:otherwise
   <xsl:apply-templates select="current()"/>
  </xsl:otherwise>
 </xsl:choose>
 </xsl:for-each>
</xsl:template>

dieser weg erscheint mir jedoch äußerst umständlich. ist eine erhöhung des parameters i in einer einfach for-each schleife möglich?

ich bitte um tipps und anregungen

mfg elo