Hallo,
ich habe folgende Eingangsdaten:
<step>123</step>
<step>foo</step>
<step>bar</step>
<step clear="clear">hehe</step>
<step>bla</step>Die einzelnen steps gehe ich per <xsl:for-each select=".//slide">... durch. Innerhalb der Schleife möchte ich einem anderen Template die Position (position()) des step's übergeben, der als letztes ein "clear"-Attribut auf "clear" gesetzt hatte, wenn das noch nie der Fall war eine 0. Wie mache ich das am besten?
Die Abfrage würde ich im "anderen Template" machen.
<xsl:variable name="lastSlideID">
<xsl:for-each select=".//slide[@clear]">
<xsl:if test="position() = last()">
<xsl:value-of select="generate-id(.)" />
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:template match="/">
<xsl:for-each select=".//slide">
<xsl:variable name="p">
<xsl:if test="generate-id(.) = $lastSlideID">
<xsl:value-of select="position()" />
</xsl:if>
</xsl:variable>
...
<xsl:call-template name="foo">
<xsl:with-param name="pos" select="$p" />
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="foo">
<xsl:param name="pos" />
<xsl:variable name="p">
xsl:choose
<xsl:when test="not($pos = '')">
<xsl:value-of select="$pos" />
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
....
<!-- $p kannst du dann verwenden um den Wert zu nützen-->
</xsl:template>
Grüße
Thomas