2012-08-30 27 views
2

的節點我有象下面這樣的XML在BI個出版者SUM()不同的XML

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

<ROW1>不重複。現在據我所知,做一個節點SUM我可以使用XPath函數sum()<?sum(.//TOTAL_RETAIL)?>。這將僅對節點TOTAL_RETAIL的值進行求和,我想要總和TOTAL_RETAIL,TOTAL_TAXTOTAL_SHIPPING。有沒有一種方法可以編寫sum函數來實現這一點。

注 - 它無法以編程方式處理,即使用變量等,因爲它位於報表模板內部,必須將其定義爲<?sum(...)?>此值將映射到Excel報表模板中的特定單元格。

回答

8

嘗試

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

|是工會運營商,所以你傳遞給sum()的說法是三個子表達式的結合。

+0

完美!作品很棒。非常感謝。 – Annjawn

+0

雖然我有一個小問題。當它添加時,在excell報告的單元格中顯示「20.7」rowmark =「4」。這些單元格的格式爲'currency'和'sum',但是在同一列上,即'sum(.// RETAIL)'工作正常。 – Annjawn

+0

@Annjawn:這聽起來像是BI Publisher特有的東西,我對此一無所知。也許這是BIP中的一個錯誤。您可以嘗試以不同的格式發佈報告,並查看結果是否有助於闡明爲什麼Excel報告的行爲方式如此。 – LarsH

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

您也可以嘗試在每個節點上分裂的總和,它的工作原理是這樣的:

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

而如果你有NULL值或空節點,使用此過濾器,以確保總和功能將始終有效:sum(.//TOTAL_RETAIL[.!='']) + ...etc