说我们有如下数据:
<ROW>
<CAT_CODE>3 COE</CAT_CODE>
<ACCT_2>4400</ACCT_2>
<ACCT2_DESC>Employee Costs</ACCT2_DESC>
<ACCT_3>4490</ACCT_3>
<ACCT3_DESC>Salaries</ACCT3_DESC>
<ACTUAL>55.30</ACTUAL>
</ROW>
我们想按“ ACCT_2”和CAT_CODE ='3 COE'对所有内容进行分组,并创建一个如下表:
+-----------------+----------+--------+
| Account Level 2 | Category | Actual |
+-----------------+----------+--------+
| 4400 | 3 COE | 4,609 |
+-----------------+----------+--------+
| 4500 | 3 COE | 9,870 |
+-----------------+----------+--------+
| 4600 | 3 COE | 1,343 |
+-----------------+----------+--------+
. . .
+-----------------+----------+--------+
| Total: | | 23,998 |
+-----------------+----------+--------+
如何实现这样的目标?我们有以下代码:
<table>
<tr>
<td>Account Level 2</td>
<td>Category</td>
<td>Actual</td>
</tr>
<xsl:for-each-group select="ROW[CAT_CODE='3 COE']" group-by="ACCT_3">
<tr>
<td><xsl:value-of select="ACCT_3"/></td>
<td><xsl:value-of select="CAT_CODE"/></td>
<td><xsl:value-of select="format-number(sum(ACTUAL), '#,###')"/></td>
</tr>
</xsl:for-each-group>
<tr>
<td>Total: </td>
<td></td>
<td><xsl:value-of select="format-number(sum(ROW[CAT_CODE='3 COE']/ACTUAL), '###,###')"/></td>
</tr>
</table>
但是看来我们遗漏了一些价值观。我们最终得到了正确的“总计”行,但上方的行未总计。
注意:请原谅我的无知,因为我是XML / XSL的新手。我今天才开始学习。
答案 0 :(得分:2)
您的求和表达式应为:
<xsl:value-of select="format-number(sum(current-group()/ACTUAL), '#,###')"/>
以求和当前组的所有成员。您现有的代码仅求和上下文节点的ACTUAL子元素-对于for-each-group是该组的第一个成员。