xslについて質問です。再帰処理をした回数を数える方法を教えてください。

以下のようなxslがあるとします。
HANI_1は再帰処理のたびに-1へっていきます。
HANI_1が10よりも大きいうちは再帰処理を繰り返します。

ここで私がつまったところなのですが、「HANI_1が10よりも大きいうちは再帰処理を繰り返す」という条件だけではなく
「HANI_1が10より大きい場合でも再帰処理が10回以上繰り返されたら再帰処理を終了する」という条件にしたいのです。
わかる方、お力を貸してください。



<xsl:template name="TEST">
<xsl:param name="HANI_1" />
<xsl:param name="HANI_2" />

<xsl:value-of select="$HANI_1"/>

<!-- 再帰処理 -->
<xsl:if test="$HANI_1 &gt; 10">
<xsl:call-template name="TEST">
<xsl:with-param name="HANI_1" select="$HANI_1 - 1"/>
<xsl:with-param name="HANI_2" select="$HANI_2 + 1"/>
</xsl:call-template>
</xsl:if>

</xsl:template>

回答の条件
  • 1人3回まで
  • 登録:2009/02/18 18:44:25
  • 終了:2009/02/25 18:45:03

回答(1件)

id:foaran No.1

foaran回答回数29ベストアンサー獲得回数32009/02/19 00:06:02

ポイント60pt

はじめてのXML:XSL

こんな感じでしょうか?

論理演算子andをつかってANI_1が10より大きく、かつHANI2が10より小さいときTESTを実行としました。

testxml.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="./testxsl.xsl"?>
<hoge>
</hoge>

testxsl.xsl

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
	<xsl:call-template name="TEST">
	      <xsl:with-param name="HANI_1" select="24"/>
	      <xsl:with-param name="HANI_2" select="0"/>
	</xsl:call-template>
</xsl:template>
<xsl:template name="TEST">
	<xsl:param name="HANI_1" />
	<xsl:param name="HANI_2" />
<p>HANI_1:<xsl:value-of select="$HANI_1"/></p>
<p>HANI_2:<xsl:value-of select="$HANI_2"/></p>
<xsl:if test="$HANI_1 &gt; 10 and $HANI_2 &lt; 10">
	<xsl:call-template name="TEST">
		<xsl:with-param name="HANI_1" select="$HANI_1 - 1"/>
		<xsl:with-param name="HANI_2" select="$HANI_2 + 1"/>
	</xsl:call-template>
</xsl:if>

</xsl:template>
</xsl:stylesheet>

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません