人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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>


●質問者: Ryo0524
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:XSL 再帰
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● foaran
●60ポイント

はじめての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>
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ