2010-01-13 101 views
1

我目前正在構建一個基於XML的Jasper Report,其中我試圖在成本上添加稅率。將整數轉換爲XPath 1.0中的雙精度值

當我使用sum(//net-total)來計算總成本時會出現問題。當總和沒有小數位時,它返回整數,我需要一個double。

我試過sum(//net-total) * 1.0但它似乎沒有工作。

有沒有人有任何想法?

如果我採取了錯誤的做法,請隨時糾正我。

回答

1

的問題是,(對XML)定義的雙重必須有一個小數點(。)

[http://www.w3.org/TR/xmlschema-2/#double]

你應該看看XSLT format-number() Function ..

爲例如format-number(sum(//net-total), "#.00")將執行一個兩位數字表示..

[編輯]

由於您希望XPATH 1不幸不支持條件表達式和字符串格式,因此無法在標號xpath表達式中執行它...

如果您可以創建節點(總和-total)與//淨總的總和,那麼你可以使用一個小的解決方法

concat(
//sum-total, 
substring(concat(//sum-total,".00"), 1, number(not(contains(//sum-total,".")))*1000 ) 
) 

這將增加.00如果沒有。在節點值中。

+0

我嘗試使用format-number函數,但不幸的是它不存在於XPath 1.0中。 – Gordon 2010-01-13 12:02:14

+0

滴答答題,因爲它也解決了問題。我也在考慮這種方法。 – Gordon 2010-01-13 14:03:26

1

找到了如何在IReport中設置對象返回類型並在對象上強制執行模式。現在工作正常。

+0

很高興你想出了它..只是爲了它的樂趣我張貼在我的答案上面的一個小訣竅做(它有一個小的要求) – 2010-01-13 13:44:06