XSLを利用して、税率を考慮した金額合計を算出するテンプレート

XSLで税率を考慮して金額の合計を出すにはどうしたらいいんだろうとあれこれ考えた挙句、再帰呼び出し利用方式で実現してみました。
あんまり美しくないのだけど…。

XSL

<xsl:template name="total-sum">
 <xsl:param name="url-prices"></xsl:param>
 <xsl:param name="url-taxes"></xsl:param>
 <xsl:choose>
  <xsl:when test="$url-prices">
   <xsl:variable name="recursive_result">
   <xsl:call-template name="total-sum">
    <xsl:with-param name="url-prices" select="$url-prices[position() > 1]"></xsl:with-param>
     <xsl:with-param name="url-taxes" select="$url-taxes[position() > 1]"></xsl:with-param>
   </xsl:call-template>
   </xsl:variable>
   <xsl:value-of select="$url-prices[1]+$url-prices[1]*$url-taxes[1]+$recursive_result"></xsl:value-of>
  </xsl:when>
  <xsl:otherwise><xsl:value-of select="0"></xsl:value-of></xsl:otherwise>
 </xsl:choose>
</xsl:template>

使い方サンプル
XML

<datas>
 <data><price>100</price><tax>0.05</tax></data>
 <data><price>200</price><tax>0.15</tax></data>
 <data><price>300</price><tax>0.05</tax></data>
</datas>


XSL呼び出し

<xsl:call-template name="total-sum">
 <xsl:with-param name="url-prices" select="/datas/data//price"></xsl:with-param>
 <xsl:with-param name="url-taxes" select="/datas/data//tax"></xsl:with-param>
</xsl:call-template>