Вы приняли неправильный порядок операций.Вам следует:
- Первая сумма
Amount
значений. - Затем применить требуемое форматирование (к только что вычисленной сумме).
Итак, длямой пример данных:
<main>
<Amount>1.7</Amount>
<Amount>3.3</Amount>
</main>
Я выполнил следующий скрипт:
<xsl:template match="main">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<Sum><xsl:value-of select="format-number(sum(Amount), '0.00')"/></Sum>
</xsl:copy>
</xsl:template>
(+ шаблон идентификации ), получив:
<main>
<Amount>1.7</Amount>
<Amount>3.3</Amount>
<Sum>5.00</Sum>
</main>
Еще один недостаток в вашем коде заключается в том, что вы помещаете инструкцию суммирования в цикл (и выберите ).
Таким образом, каждый раз, когда ваш код находит "Разрешено " Сумма (! = 0) суммирует и выводит только одно значение .
В результате вы получили объединенные отдельные значения.
Мой совет:
- Полное удаление цикла.
- Также выбор не имеет большого смысла, поскольку нули вряд ли изменятсясумма.
- В своем коде добавьте правильную начальную часть XPath ( G_1 / G_2 / FILE_FRAGMENT / SLO_CALPERS_PAYROLL / Person_DG / Run_Results_Record / Run_Results_DG / Run_Results / ) в предложение select .