<xs:param><xsl:with-param>と<xsl:call-template>を組み合わせれば、JavaScriptのfor構文にあたる繰り返し処理を実現できる。名前付きテンプレートのなかで、カウンタ数値を増減させながら自分自身を呼び出す。これで終了条件に達するまで名前付きテンプレートを再帰的に繰り返す。
[サンプルXML文書を表示](下のフレームに)
(例1)1から10まで1ずつ増加するループ。(例2)初期値5から始まり、10まで1ずつ増加するループ。
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="param04.xsl"?>
<root>
<title>名前付きテンプレートを利用し再起処理</title>
<data>
<初期値>5</初期値>
</data>
<end>以上です(2005/4/16)</end>
</root>
XSLソース
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
<xsl:template match="/">
<center><H4><xsl:value-of select="root/title"/></H4></center>
(例1)<xsl:call-template name="count"/>
<hr/> (例2)<xsl:call-template name="count">
<xsl:with-param name="num" select="root/data/初期値"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="count">
<xsl:param name="num" select="1"/>
<xsl:value-of select="$num"/>、
<xsl:if test="$num < 10">
<xsl:call-template name="count">
<xsl:with-param name="num" select="$num + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
end(05/4/16)