Jasper报告 - 计算具有特定值的节点

时间:2014-11-13 08:57:32

标签: xml xpath jasper-reports

我有一个使用XML数据源的多个子报告的Jasper报告。

我目前正在进行一些视觉增强,我在1 Sub报告中遇到了Sub totals(Column footer)。父报告有一个用于将链接记录保持在一起的组。 详细信息区域中有一个包含所有单个记录的子报告。

现在是棘手的部分,如果父报告上的组包含多于1条记录,我只希望子记录显示在子报告上。

我尝试过使用Group COUNT变量,但问题是COUNT只会在处理每条记录时递增。因此,当生成第一个子报表时,计数仍为1。

我尝试过使用XPath count()函数,但我没有把它弄好。 我在父报告的字段中有以下内容(将其作为参数传递给子报告)

count(//CurrentNode[TargetNode = '$F{TargetNode}'])

我尝试过各种各样的东西,但似乎我不能在count()函数的XPath中使用Parameter或Field值。如果我显式设置了一个值而不是$ F {TargetNode},那么我得到了正确的节点数,但是我需要根据当前的组来改变这个数。

在生成第一个子报告之前,是否有其他方法可以计算组中的记录?

1 个答案:

答案 0 :(得分:0)

在尝试了几种不同的方法之后,我决定使用我的XSL样式表中的XPath计数函数来计算每个组中的记录。我已经以这种方式订购了我的记录,所以它是有道理的。

我添加了一个额外的标签来存储此记录数。

以下表达式计算在两个不同标记之间共享公共值的记录:

count(//Name[text() = current()/Name and ..//Surname[text() = current()/Surname]])