我遇到了XML / XSLT中的一个简单问题
我无法在问题上找到正确的名称,因此似乎无法找到任何解决方案。
XML:
<root>
<entry gid ="001">
<level_1>
<target_value>50</target_value>
</level_1>
</entry>
<entry gid ="001">
<level_1>
<target_value>30</target_value>
</level_1>
</entry>
<entry gid ="002">
<level_1>
<target_value>40</target_value>
</level_1>
</entry>
<entry gid ="002">
<level_1>
<target_value>20</target_value>
</level_1>
</entry>
</root>
XSL:
<xsl:for-each select="entry[@gid='001']">
<xsl:if test="level_1/target_value != ''">
<xsl:value-of select="sum(level_1/target_value)" />
</xsl:if>
</xsl:for-each>
结果: 5030
任何帮助都会受到很大关注!
答案 0 :(得分:1)
如您所见,您的转换总计唯一的level_1/target_value
元素,并为每个entry[@gid='001']
元素输出。
由于您希望所有 <entry>
元素的总数为gid
001
,因此您必须在提交给sum()
的节点集中写入该元素。 }。
XSLT看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" />
<xsl:template match="/root">
<xsl:value-of select="sum(entry[@gid='001']/level_1/target_value)" />
</xsl:template>
</xsl:stylesheet>
<强>输出强>
80