0

我试图在满足条件时增加一个计数器,例如,如果 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>

我只是无法解决,还是我的方法有问题?

4

1 回答 1

2

如果我理解正确,要计算person元素的数量,其中score元素的总和大于 30,只需使用此表达式(假设您当前位于 parent元素上)

<xsl:value-of select="count(person[sum(scores/score/@result) > 30])" />
于 2013-05-17T14:26:03.567 回答