Это типичная проблема обозначений ЕС и США. Одним из решений является использование функции translate
дважды. Во-первых, используйте его для преобразования строки в формат США. Затем примените format-string(..)
. Наконец, преобразуйте строку в нотацию ЕС.
Это может выглядеть так:
<fo:block text-align="right" margin-right="3px" margin-top="5px">
<xsl:value-of select="translate(format-number(translate(substring-before(DTE/pdf/dscDistri/text(), '-'),',.','.,'), '#,###.00'),'.,',',.')"/>
</fo:block>
Выход:
<fo:block...>4.956,00</fo:block>
Это ужасно, но спецификация XSLT ориентирована на США. Так что это плохая ситуация для людей из ЕС.