你不能做
sum()
和
concat()
在同一条指令中,它将引发字符串和数字组合的错误。总和必须存储在一个局部变量中,然后用于与其他总和连接以形成
<grossVolume>
.
请换一下
for-each
循环
TL
<xsl:for-each select="TL[generate-id() = generate-id(key('Article', .//ArticleNr)[1])]">
<grossVolume>
<xsl:value-of select="sum(concat(.,';'))"/>
</grossVolume>
</xsl:for-each>
到以下代码段
<grossVolume>
<xsl:for-each select="TL[generate-id() = generate-id(key('Article', ./ArticleNr)[1])]">
<xsl:variable name="sumGross" select="sum(key('Article', ./ArticleNr)/Gross)" />
<xsl:value-of select="$sumGross" />
<xsl:if test="position() != last()">
<xsl:value-of select="';'" />
</xsl:if>
</xsl:for-each>
</grossVolume>
输出
<grossVolume>6500;500</grossVolume>