对于节点父节点的每个值,我想总结相关的元素值。在下面的例子中,我期望得到3个结果:第一个父项为30,第二个为50,第三个父项为0,因为它没有父值。 你可以帮助我得到这个结果并纠正我的代码吗? :
示例文件:
<root>
<parent>
<parentValue>Val1</parentValue>
<element>
<elementname>A</elementname>
<elementvalue>10</elementvalue>
</element>
<element>
<elementname>A</elementname>
<elementvalue>20</elementvalue>
</element>
</parent>
<parent>
<parentValue>Val2</parentValue>
<element>
<elementname>B</elementname>
<elementvalue>50</elementvalue>
</element>
</parent>
<parent>
<element>
<elementname>C</elementname>
<elementvalue>60</elementvalue>
</element>
</parent>
</root>
代码:
<xsl:template match="/">
<xsl:for-each select="/root/parent/parentValue">
<xsl:variable name="result">
<xsl:value-of select="sum(elementvalue)" />
</xsl:variable>
</xsl:for-each>
答案 0 :(得分:1)
设置两个模板
<xsl:template match="parent[parentValue]">
<xsl:value-of select="sum(element/elementvalue)"/>
</xsl:template>
<xsl:template match="parent[not(parentValue)]">0</xsl:template>
https://xsltfiddle.liberty-development.net/b4GWVn
或单一
<xsl:template match="parent">
<xsl:value-of select="sum(.[parentValue]/element/elementvalue)"/>
</xsl:template>