Xslt format-number из ввода XML - PullRequest
       7

Xslt format-number из ввода XML

0 голосов
/ 12 января 2019

У меня есть входной файл XML

<elementOne>
  <elementTwo>
   <RequestItem>
    <elementThree>
      <value>314.4</value>
    </elementThree>
   </RequestItem>
  </elementTwo>
 </elementOne>

и сильфон xslt

<?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:decimal-format name="euro" decimal-separator="." grouping-separator=","/>
<xsl:template match="/*">

    <Value>
        <xsl:value-of select="format-number(sum(/elementOne/elementTwo/RequestItem/elementThree/value/text()),'##,00')"/>
    </Value>

</xsl:template>


</xsl:stylesheet>

Я пробовал много способов, основываясь на том, что нашел в интернете, но не сделал управлять выходным значением 314,40

1 Ответ

0 голосов
/ 12 января 2019

Во-первых, если вы хотите, чтобы десятичный разделитель был запятой, вы должны определить его следующим образом:

<xsl:decimal-format name="euro" decimal-separator="," grouping-separator="."/>

Затем, если вы определили десятичный формат, вы также должны указать таблице стилей использовать его:

<xsl:value-of select="format-number(sum(/elementOne/elementTwo/RequestItem/elementThree/value), '#,00', 'euro')"/>

Или, если вы также хотите применить определенный разделитель тысяч:

<xsl:value-of select="format-number(sum(/elementOne/elementTwo/RequestItem/elementThree/value), '#.###,00', 'euro')"/>
...