xsl增量计数器有条件

时间:2013-05-17 14:03:48

标签: xslt counter

我正在尝试在满足条件时递增计数器,例如,如果final_score超过30,count = 1.因此,如果3个分数超过30,则final_score应为3.要获得我需要添加的分数以前的分数所以最终分数是所有其他分数的计算

例如

示例XML

<scores>
   <score result="20" />
   <score result="10" />
   <score redult="5" />
</score>

主要XSL

<xsl:call-template name="scores">
<xsl:with-param name="prev_count" select="0"/>
</xsl:call-template>

分数模板

<template name="scores">
<param name="counter" select="0">
<xsl:variable name="prev_counter" select="$counter+1" />

   <xsl:for-each select="persons/person[id=@id]">//get all the scores
    <xsl:varable name="total_score" select="sum(scores/score)" />//sum them all up
    <xsl:if test="total_score > 40" > //check the result
         <xsl:value-of select="$counter">
     <xsl:call-template name="scores">
       <xsl:with-param name="counter" select="$counter+1"/>
     </xsl:call-template>

    </xsl:if>

   <xsl:for-each>
  </xsl:template>
</xsl:template>

我无法解决这个问题,或者是我的离职方式?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,要计算元素的数量,其中得分元素的总数大于30,只需使用此表达式(假设您目前位于父元素

<xsl:value-of select="count(person[sum(scores/score/@result) > 30])" />