例を出して説明すると、
<xsl:variable name="number" select="0"/>
で作った$numberという変数を
$number++;
して、
<xsl:value-of select="$number" />
で、出力したいと思っています。
分かる人がいましたら教えてください。
お願いしますm(_ _)m
xsl:variableは、一般的なプログラミングにおける変数のように可変ではなく、一度代入した値を変更することはできなかったと思います。
そのため、インクリメントのような処理を行う際は、テンプレートを利用することになります。
テンプレートによるインクリメントサンプル
下記を適用すると0~9までの値が出力されます。
xsl:with-paramでtestテンプレートにtime変数を渡し、それが0になるまで再帰的にtestテンプレートを呼び出します。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="number" select="0"/> <xsl:template match="/"> <xsl:call-template name="test"> <xsl:with-param name="time" select="10"/> <xsl:with-param name="value" select="$number"/> </xsl:call-template> </xsl:template> <xsl:template name="test"> <xsl:param name="time"/> <xsl:param name="value"/> <xsl:value-of select="$value" /> <xsl:if test="$time - 1 != 0"> <xsl:call-template name="test"> <xsl:with-param name="time" select="$time - 1"/> <xsl:with-param name="value" select="$value + 1"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet>
念のため、単純に+1するだけのものも記述します。
<xsl:variable name="number" select="0"/> <xsl:value-of select="$number + 1" />
ソース参考にさせていただきました。
結構手間がかかるみたいですね…
XMLで番号付けるほうがぜんぜん楽そうですね。
ありがとうございましたm(_ _)m