如果元素不为空,则显示值

时间:2018-03-23 15:54:34

标签: xml xslt

我想总结符合我条件的所有值(见下文)。如果条件不满足,我想返回0.请参阅我的下面的代码并建议。目前它正空着。

条件:如果fieldlabel =' A'则汇总所有值,如果没有重新调整(在此示例中需要返回30) 假设我正在寻找C'而不是' A',在这种情况下我必须返回0

示例文件:

<root>
<parent>
<element>
<elementname>A</elementname>
<elementvalue>10</elementvalue>
</element>
<element>
<elementname>B</elementname>
<elementvalue>20</elementvalue>
</element>
<element>
<elementname>A</elementname>
<elementvalue>30</elementvalue>
</element>
</parent>
</root>

代码:

<xsl:template match="/">
    <xsl:for-each select="/root/parent/element">
      <xsl:variable name="field">
        <xsl:value-of select="elementname" />
      </xsl:variable>
      <xsl:if test="$field='A'">
        <xsl:value-of select="sum(elementvalue)" />
      </xsl:if>    
    </xsl:for-each>

 <xsl:variable name="finalresult">
        <xsl:choose>
                 <xsl:when test="$fieldname = '' ">0</xsl:when>
                 <xsl:otherwise><xsl:value-of select="$field"/>
</xsl:otherwise>
           </xsl:choose>
     </xsl:variable> 

1 个答案:

答案 0 :(得分:2)

当您与/root/parent/elementxsl:for-each中的sum(elementvalue)匹配时,您只对当前elementvalue的{​​{1}}进行求和,并且&# 39;只有其中一个。

相反,请考虑在谓词中测试条件:

element

小提琴:http://xsltfiddle.liberty-development.net/jyyiVhA