在XSLT 1.0中将前导零添加到负数

sum*_*sum 1 xslt

如何在XSLT 1.0中格式化下面的数字。输入有时是正数,有时是负数。

输入:

-4
-1
2
Run Code Online (Sandbox Code Playgroud)

输出:

00000-4
00000-1
0000002
Run Code Online (Sandbox Code Playgroud)

Ian*_*rts 5

XSLT提供的format-number功能可能会在这里为您提供帮助。

format-number(theNumber, '0000000')
Run Code Online (Sandbox Code Playgroud)

会给你00000022-0000004-4。但是,如果您确实确实想在负数情况下将前导零放在减号之前,那么最简单的方法是将整个内容视为字符串操作,而不是数字格式。定义一个变量

<xsl:variable name="zeros" select="'0000000'" />
Run Code Online (Sandbox Code Playgroud)

然后说些类似的话

concat(substring($zeros, string-length(theNumber)+1), theNumber)
Run Code Online (Sandbox Code Playgroud)

substring位确定要添加多少个前导零,例如,-4它将$zeros从第三个字符开始取子串,即五个零。