XSLで作った変数を、1プラスするみたいな処理をしたいのですが、分かる人はいないでしょうか?


例を出して説明すると、
<xsl:variable name="number" select="0"/>
で作った$numberという変数を

$number++;
して、
<xsl:value-of select="$number" />
で、出力したいと思っています。

分かる人がいましたら教えてください。
お願いしますm(_ _)m

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/06/22 17:36:57
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:lains_you No.1

回答回数50ベストアンサー獲得回数10

ポイント60pt

 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" />
id:hiyarihatto

ソース参考にさせていただきました。

結構手間がかかるみたいですね…

XMLで番号付けるほうがぜんぜん楽そうですね。

ありがとうございましたm(_ _)m

2006/06/22 17:36:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません