Сумма не добавляет переменные с плавающей точкой. Это конкантирует значения в XSLT - PullRequest
0 голосов
/ 14 мая 2019

Когда я пытаюсь суммировать переменные с плавающей точкой, это приводит к объединенной строке всех переменных вместо суммы.Я не знаю, как действовать.

<xsl:for-each select="G_1/G_2/FILE_FRAGMENT/SLO_CALPERS_PAYROLL/Person_DG">
                            <xsl:choose>
                                    <xsl:when test="Run_Results_Record/Run_Results_DG/Run_Results/Input_Value_Base_Name= 'Amount' and Run_Results_Record/Run_Results_DG/Run_Results/Amount != 0">
                                        <xsl:value-of select="sum(format-number(Run_Results_Record/Run_Results_DG/Run_Results/Amount, '0.00'))"/>
                                    </xsl:when>
                            </xsl:choose>
                            </xsl:for-each>

Ожидаемый

<results>23.46</results>

Фактические результаты

<results>0.9311.2111.32</results>

1 Ответ

1 голос
/ 14 мая 2019

Вы приняли неправильный порядок операций.Вам следует:

  • Первая сумма 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 .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...