SUM()XML的不同节点

时间:2012-08-30 15:25:10

标签: xml xslt xpath sum bi-publisher

我在BI Publisher中有如下的XML -

<ROW1>
  <TOTAL_RETAIL>10.95</TOTAL_RETAIL>
  <TOTAL_TAX> 1.8</TOTAL_TAX>
  <TOTAL_SHIPPING>7.95</TOTAL_SHIPPING>
</ROW1>

<ROW1>不重复。现在据我了解要做SUM节点我可以使用像sum()这样的XPath函数<?sum(.//TOTAL_RETAIL)?>。这将仅对节点TOTAL_RETAIL的值求和,我想要TOTAL_RETAILTOTAL_TAXTOTAL_SHIPPING的总和。有没有办法可以编写sum函数来实现这一目标。

注意 - 无法以编程方式处理,即使用变量等,因为它在报告模板中,必须定义为<?sum(...)?>,这些值将映射到Excel报告模板中的特定单元格。

3 个答案:

答案 0 :(得分:8)

尝试

<?sum(.//TOTAL_RETAIL | .//TOTAL_TAX | .//TOTAL_SHIPPING)?>

|是union运算符,因此传递给sum()的参数是三个子表达式的并集。

答案 1 :(得分:4)

sum(.//TOTAL_RETAIL | .//TOTAL_TAX | .//TOTAL_SHIPPING)

答案 2 :(得分:3)

您也可以尝试在每个节点上拆分总和,它的工作方式如下:

<?sum(.//TOTAL_RETAIL) + sum(.//TOTAL_TAX) + sum(.//TOTAL_SHIPPING)?>

如果您有NULL值或空节点,请使用此过滤器以确保sum函数始终有效:sum(.//TOTAL_RETAIL[.!='']) + ...etc