XSL membuatku gila dan saya harap seseorang dapat membantu saya dengan yang satu ini. Kode siap untuk disalin dan ditempel.
Saya melakukan pengelompokan di XSL 1.0 dan saya ingin menjumlahkan semua elemen 'Jumlah' yang dikelompokkan.
Data saya terlihat seperti ini.
<CustInvoiceTable class="entity">
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.05</Amount>
<ItemId>ITM-0000088</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.07</Amount>
<ItemId>ITM-0000088</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.16</Amount>
<ItemId>ITM-0000091</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.22</Amount>
<ItemId>ITM-0000091</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>1.33</Amount>
<ItemId>ITM-0000098</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>1.82</Amount>
<ItemId>ITM-0000098</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.01</Amount>
<ItemId>ITM-0000086</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.01</Amount>
<ItemId>ITM-0000086</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.05</Amount>
<ItemId>ITM-0000062</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>2</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.06</Amount>
<ItemId>ITM-0000062</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>2</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.02</Amount>
<ItemId>ITM-0000111</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.02</Amount>
<ItemId>ITM-0000111</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.06</Amount>
<ItemId>ITM-0000089</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.08</Amount>
<ItemId>ITM-0000089</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>1.96</Amount>
<ItemId>ITM-0000092</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>2.69</Amount>
<ItemId>ITM-0000092</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.07</Amount>
<ItemId>ITM-0000101</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.10</Amount>
<ItemId>ITM-0000101</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.07</Amount>
<ItemId>ITM-0000102</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.10</Amount>
<ItemId>ITM-0000102</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>6.69</Amount>
<ItemId>ITM-0000083</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>7.96</Amount>
<ItemId>ITM-0000083</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.15</Amount>
<ItemId>ITM-0000067</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>0.21</Amount>
<ItemId>ITM-0000067</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>1</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>96.00</Amount>
<ItemId>ITM-0000125</ItemId>
<McsCmBilProductItem class="entity">
<CgiBundleLines>0</CgiBundleLines>
</McsCmBilProductItem>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>-88.00</Amount>
<ItemId>ITM-0000069</ItemId>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>-0.66</Amount>
<ItemId>ITM-0000083</ItemId>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>-0.22</Amount>
<ItemId>ITM-0000092</ItemId>
</McsCmBilCalcInvoiceLine>
<McsCmBilCalcInvoiceLine class="entity">
<Amount>-0.55</Amount>
<ItemId>ITM-0000098</ItemId>
</McsCmBilCalcInvoiceLine>
</CustInvoiceTable>
Dan XSLnya:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="Lines-by-ItemId" match="CustInvoiceTable/McsCmBilCalcInvoiceLine" use="CustInvoiceTable/McsCmBilCalcInvoiceLine/ItemId" />
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<root>
<xsl:for-each select="CustInvoiceTable/McsCmBilCalcInvoiceLine[count(. | key('Lines-by-ItemId', ItemId)[1]) = 1][McsCmBilProductItem/CgiBundleLines = 1][not(ItemId = preceding-sibling::McsCmBilCalcInvoiceLine/ItemId)]">
<xsl:sort select="ItemId" />
<GroupInvoiceLine>
<ItemId><xsl:value-of select="ItemId" /></ItemId>
<SumAmount><xsl:value-of select="sum(Amount)"/></SumAmount> <!-- This does not work -->
</GroupInvoiceLine>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Hasilnya: Katakanlah kita mengelompokkan pada "ITM-0000088" Saya berharap hasilnya 0,12. Saat ini baru meraih rekor pertama.
Jika kita mengelompokkan pada "ITM-0000083" saya berharap jumlahnya menjadi 6,69 + 7,96 = 14,65 dan BUKAN 6,69 + 7,96 + -0,66 = 13,99 karena 'McsCmBilCalcInvoiceLine' terakhir dengan 'ItemId = ITM-0000083' tidak memiliki 'CgiBundleLines = 1' di 'McsCmBilProductItem'-nya.