XSL调用一个总和的模板

时间:2016-08-30 19:19:31

标签: xml xslt

我正在尝试遍历项目,重复删除这些项目,总结它们的价值,并显示该项目。

我是xsl的新手并拥有良好的基础,但无法获得总和值。

任何帮助都会很棒。目前,我需要将模板值拉入$ totalvalue变量的位置。

{{1}}

提供的xml格式为:

{{1}}

1 个答案:

答案 0 :(得分:0)

要使用Muenchian分组,如果要获得不同的“imageurl”,首先要定义一个键:

 <xsl:key name="prop" match="Prop[@prop_name = 'imageurl']" use="@val" />

然后,表达式得到不同的(或更确切地说,Prop元素,每个可能的第一次出现@val),就像这样

 <xsl:variable name="distinct" select="//Prop[@prop_name = 'imageurl'][generate-id() = generate-id(key('prop', @val)[1])]" />

然后,您可以使用此节点集来获取计数或相邻“tradeval”元素的总和。

试试这个XSLT作为例子

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:key name="prop" match="Prop[@prop_name = 'imageurl']" use="@val" />

 <xsl:template match="/">
     <xsl:variable name="distinct" select="//Prop[@prop_name = 'imageurl'][generate-id() = generate-id(key('prop', @val)[1])]" />
     <xsl:text>You have </xsl:text>
     <xsl:value-of select="count($distinct)" />
     <xsl:text> distinct imageurl with with a tradeval sum of </xsl:text>
     <xsl:value-of select="sum($distinct/../Prop[@prop_name = 'tradeval']/@val)" />
 </xsl:template>

</xsl:stylesheet>