以下のような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 > 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>
こんな感じでしょうか?
論理演算子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 > 10 and $HANI_2 < 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件)