Приведение целого числа к двойному в XPath 1.0 - PullRequest
2 голосов
/ 13 января 2010

В настоящее время я создаю отчет Jasper на основе XML, в котором я пытаюсь добавить процент налога к стоимости.

Проблема возникает, когда я использую sum(//net-total) для расчета общей стоимости. Когда в суммированной сумме нет десятичных разрядов, она возвращается, и Integer и мне нужно удвоить.

Я пытался sum(//net-total) * 1.0, но, похоже, это не работает.

У кого-нибудь есть идеи?

Пожалуйста, не стесняйтесь поправлять меня, если я выберу неправильный подход.

Ответы [ 2 ]

1 голос
/ 13 января 2010

Обнаружено, как установить тип возврата объекта в IReport и применить шаблон для объекта. Работает нормально сейчас.

1 голос
/ 13 января 2010

Проблема в том, что по определению (XML) двойное число должно иметь десятичную точку (.)

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

Вам следует взглянуть на функцию XSLT format-number () ..

Например, format-number(sum(//net-total), "#.00") приведет к представлению в виде двух десятичных цифр.

[EDIT]

Поскольку вы хотите использовать его для XPATH 1, который, к сожалению, не поддерживает ни условные выражения, ни форматирование строк, это невозможно сделать в выражении signp xpath ...

если, однако, вы можете создать узел (sum-total) с суммой // net-total, тогда вы можете использовать небольшой обходной путь

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

, который добавит .00, если нет. в значении узла ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...