我在元素中有一个值作为433554567643。我想将其更改为 43 35545 67643。分组应从值的右侧开始。是否可以使用从值的末尾到开头的减法?
谢谢。
您可以使用递归模板执行此操作。
<xsl:template name="add-spaces">
<xsl:param name="group" select="5" />
<xsl:param name="text" />
<xsl:if test="string-length($text) > $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>
如果您的值始终是一个数字,则可以将 format-number()
与按 5 位数字分组的模式一起使用,然后将","translate()
成" ":
<xsl:value-of select="translate(format-number('433554567643', '#,#####'),
',', ' ')" />