2016-03-11 1 views
0

Я создал группу значений с помощью for-each-group функциональности, однако я теперь остался с группой значений, который считается строкой:Sum группа значений XSLT 2.0

22.22, 20.00, 31.00, 12.58 

Я сейчас пытаюсь просуммировать эту группу значений, используя следующее заявление:

format-number(sum(current-group()/total),'0.00') 

Однако я получаю следующее сообщение об ошибке:

Description: Cannot convert string to double: "" 

Может кто-нибудь указать мне в правильном направлении!

+1

Пожалуйста, покажите нам соответствующий контекст, например соответствующий фрагмент XML и шаблон в XSLT, чтобы мы могли видеть, какие элементы вы группируете. –

+1

Ваш вопрос непонятен. Почему группировка оставляет вас с цепочкой конкатенированных значений? Пожалуйста, покажите нам пример ввода и как вы группируете. –

ответ

0

Если у вас есть XPath 3.1 в наличии, то вы можете использовать:

sum(for-each(tokenize(current-group(), ", "),xs:double#1)) 

вычислить сумму 85.8.

Ваша жизнь была бы проще, если бы у вас было что-то вроде

<number>22.22</number> 
<number>20.00</number> 
<number>31.00</number> 
<number>12.58</number> 

Тогда можно суммировать числа путем простого вызова

sum(//number) 

, которая доступна даже в XPath 1.0.