[Home] [By Thread] [By Date] [Recent Entries]
hi !
since it needs to keep an internal counter, i have solved it like this: <!-- this is the "internal" function: -->
<xsl:function name="r2c:positionInContext" as="xs:integer">
<xsl:param name="haystack" as="node()*"/>
<xsl:param name="needle" as="node()"/>
<xsl:param name="position" as="xs:integer"/>
<xsl:choose>
<!-- found? -->
<xsl:when test="$needle is $haystack[1]">
<xsl:sequence select="$position"/>
</xsl:when>
<!-- haystack empty? -->
<xsl:when test="not($haystack[2])">
<xsl:sequence select="0"/>
</xsl:when>
<!-- try next node in haystack: -->
<xsl:otherwise>
<xsl:sequence select="
r2c:positionInContext(
$haystack[position() gt 1],
$needle,
$position + 1)"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:function><!-- this is the "API" function: --> <xsl:function name="r2c:positionInContext" as="xs:integer"> <xsl:param name="haystack" as="node()*"/> <xsl:param name="needle" as="node()"/> <xsl:sequence select="r2c:positionInContext($haystack, $needle, 1)"/> </xsl:function>
regards, jC6rn -- jC6rn nettingsmeier home://germany/45128 essen/lortzingstr. 11/ http://spunk.dnsalias.org phone://+49/201/491621 if you are a free (as in "free speech") software developer and you happen to be travelling near my home, drop me a line and come round for a free (as in "free beer") beer. :-D
|

Cart



