<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/"> # 最初の行の計算。 <xsl:apply-templates select="root/data[1]"/> </xsl:template> <xsl:template match="data"> # これまでの合計をパラメータで受け取る。最初は 0。 <xsl:param name="x" select="0"/> # この行の計算結果を合計する。 <xsl:variable name="y" select="a * b + $x"/> <xsl:if test="not(following-sibling::data[1])"> # 次の行がない。これで全部なので合計を表示 <xsl:value-of select="$y"/> </xsl:if> # 次の行の計算。ここまでの合計 $y をパラメータで渡す。 <xsl:apply-templates select="following-sibling::data[1]"> <xsl:with-param name="x" select="$y"/> </xsl:apply-templates> </xsl:template> </xsl:stylesheet>
# スーパーPRE内で <!-- --> が書けない。。。# の行はコメントということで。