将整数转换为XPath 1.0中的双精度值

问题描述:

我目前正在构建一个基于XML的Jasper Report,其中我试图在成本上添加税率。将整数转换为XPath 1.0中的双精度值

当我使用sum(//net-total)来计算总成本时会出现问题。当总和没有小数位时,它返回整数,我需要一个double。

我试过sum(//net-total) * 1.0但它似乎没有工作。

有没有人有任何想法?

如果我采取了错误的做法,请随时纠正我。

的问题是,(对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

找到了如何在IReport中设置对象返回类型并在对象上强制执行模式。现在工作正常。

+0

很高兴你想出了它..只是为了它的乐趣我张贴在我的答案上面的一个小诀窍做(它有一个小的要求) – 2010-01-13 13:44:06