我使用XPath for循環相當於 -使用Xpath for..in..return時,在XSLT/XPath中創建增量計數變量?
<xsl:for-each select="for $i in 1 to $length return $i">...
,我真的需要一個計數變量,我將如何實現這一目標?
謝謝,
灰。
我使用XPath for循環相當於 -使用Xpath for..in..return時,在XSLT/XPath中創建增量計數變量?
<xsl:for-each select="for $i in 1 to $length return $i">...
,我真的需要一個計數變量,我將如何實現這一目標?
謝謝,
灰。
以下不需要額外的名稱空間。該解決方案包含一個名爲iterate
模板是從自身內部調用,並相應地更新$length
和$i
:
XSLT
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<root>
<xsl:call-template name="iterate"/>
</root>
</xsl:template>
<xsl:template name="iterate">
<xsl:param name="length" select="5"/>
<xsl:param name="i" select="1"/>
<pos><xsl:value-of select="$i"/></pos>
<xsl:if test="$length > 1">
<xsl:call-template name="iterate">
<xsl:with-param name="length" select="$length - 1"/>
<xsl:with-param name="i" select="$i + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
輸出
<?xml version="1.0" encoding="UTF-8"?>
<root>
<pos>1</pos>
<pos>2</pos>
<pos>3</pos>
<pos>4</pos>
<pos>5</pos>
</root>
裏面的
的<xsl:for-each select="for $i in 1 to $length return $i">...</xsl:for-each>
上下文項是整數值,因此您只需訪問.
或current()
。
首先要注意
for $i in 1 to $length return $i
是寫
1 to $length
內的for-each,您可以訪問當前的整數值只是一個冗長的路 「」或作爲position()
。
不知道爲什麼這個令人難以置信的詳細解決方案已被接受,當其他答案表明一個更簡潔的解決方案。 –
我不得不同意@MichaelKay我最初誤解了這個問題,並且在'給我1美元到1美元的長度回報$ i'的印象中沒有工作,只是一個概念,Michael(和Martin)按需要工作。 –