Как форматировать числа без разделителей - PullRequest
0 голосов
/ 05 мая 2020

Я хотел бы форматировать числа так, чтобы они всегда имели 4 цифры, но без десятичных разделителей. Вот что я пытаюсь выполнить sh:

  • 0 -> 0000
  • 2,5 -> 0250
  • 10 -> 1000
  • 6.75 -> 0675

Я пытался использовать функцию format-number , но безуспешно. Есть какие-нибудь советы, как это сделать в XSLT 2.0 / 3.0?

1 Ответ

2 голосов
/ 05 мая 2020

Похоже, вам нужно умножить на 100 и отформатировать, используя картинку '0000' ...

XML Ввод

<tests>
    <test>0</test>
    <test>2.5</test>
    <test>10</test>
    <test>6.75</test>
</tests>

XSLT

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:mode on-no-match="shallow-copy"/>

  <xsl:template match="test">
    <xsl:copy>
      <xsl:value-of select="format-number(xs:double(.) * 100,'0000')"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

XML Выход

<tests>
   <test>0000</test>
   <test>0250</test>
   <test>1000</test>
   <test>0675</test>
</tests>

Fiddle: http://xsltfiddle.liberty-development.net/a9GPfQ/1

Не уверен что вы хотите, если вы получите значение больше 99,99.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...