2

I have a value in an element as 433554567643. I would like to change it to 43 35545 67643. The grouping should start from right side of the value. Is it possible to use subtring from end to start of the value?

Thanks.

4

2 回答 2

3

您可以使用递归模板来做到这一点。

<xsl:template name="add-spaces">
  <xsl:param name="group" select="5" />
  <xsl:param name="text" />
  <xsl:if test="string-length($text) &gt; $group">
    <xsl:call-template name="add-spaces">
      <xsl:with-param name="group" select="$group" />
      <xsl:with-param name="text"
              select="substring($text, 1, string-length($text) - $group)" />
    </xsl:call-template>
    <xsl:text> </xsl:text>
  </xsl:if>
  <xsl:value-of select="substring($text, string-length($text) - $group + 1)" />
</xsl:template>

您可以在需要时使用

<xsl:call-template name="add-spaces">
  <xsl:with-param name="text" select="'433554567643'" />
  <!-- or select="path/to/element" as appropriate -->
</xsl:call-template>
于 2013-09-30T10:07:48.303 回答
0

如果您的值始终是数字,则可以使用format-number()将数字按 5 位数字分组的模式,然后translate()将“,”分组为“”:

<xsl:value-of select="translate(format-number('433554567643', '#,#####'), 
                                ',', ' ')" />
于 2013-10-04T00:51:42.297 回答