xslt循环添加数字

时间:2012-03-14 21:25:45

标签: xml xslt

我有以下xml。

<employee>
    <record id=1>
      <fname>mark</fname>
      <lname>smith</lname>
      <id>10</id>
    <record id=2>
     ........
 </employee>

我想为每条记录添加id并获得总数。

我不知道我在该员工下的记录数量。它可以是1或10或100.

我在论坛中找到了以下示例。我可以使用它,但它们是一种更简单的方法来实现这一目标吗?

<xsl:call-template name="for.loop">
 <xsl:with-param name="i">1</xsl:with-param>
 <xsl:with-param name="count">10</xsl:with-param>
</xsl:call-template>
<!-- Rename "old name" elements to "new name" -->
<xsl:template name="for.loop">
 <xsl:param name="i"/>
 <xsl:param name="count"/>
 <xsl:if test="$i &lt;= $count">
<!--    body of the loop goes here    -->
 </xsl:if>
 <xsl:if test="$i &lt;= $count">
  <xsl:call-template name="for.loop">
    <xsl:with-param name="i">
    <!-- Increment index-->
    <xsl:value-of select="$i + 1"/>
   </xsl:with-param>
   <xsl:with-param name="count">
    <xsl:value-of select="$count"/>
   </xsl:with-param>
  </xsl:call-template>
 </xsl:if>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

有一个sum函数:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
    <total>
      <xsl:value-of select="sum(/employee/record/id)"/>
    </total>
  </xsl:template>

</xsl:stylesheet>