XSLT 1.0数字格式化:如何用空格填充实现6位无小数重量值
解决方案:XSLT实现重量值前导空格填充的6字符格式化
针对你需要将重量值去除小数位、保持6字符长度并填充前导空格的需求,分XSLT版本给出两种可行方案:
方案1:XSLT 1.0 兼容写法
由于XSLT 1.0的format-number函数不支持直接用空格作为填充符,可通过字符串拼接+截取的方式实现:
<Weight> <xsl:value-of select="substring(concat(' ', floor(Weight)), string-length(concat(' ', floor(Weight))) - 5)"/> </Weight>
逻辑说明:
floor(Weight):先将重量值取整(若需四舍五入可替换为round(Weight)),彻底去除小数位;concat(' ', floor(Weight)):将6个空格与取整后的数值拼接,确保总长度足够覆盖6字符需求;substring(..., string-length(...) -5):从拼接字符串的倒数第6位开始截取,自动保留末尾6个字符,不足的部分由前导空格填充。
示例效果:输入<Weight>1150.0</Weight>,输出<Weight> 1150</Weight>。
方案2:XSLT 2.0+ 简洁写法
XSLT 2.0及以上版本支持自定义decimal-format,可直接指定空格作为填充字符:
<!-- 先定义自定义格式 --> <xsl:decimal-format name="space-padding" zero-digit=" "/> <!-- 格式化输出 --> <Weight> <xsl:value-of select="format-number(Weight, '000000', 'space-padding')"/> </Weight>
逻辑说明:
<xsl:decimal-format>将zero-digit(零占位符)替换为空格;format-number使用'000000'模式时,会自动用空格填充数值前的空位,同时保留有效数字,且自动去除小数位(模式中无小数部分定义)。
示例效果:输入<Weight>1150.0</Weight>,输出<Weight> 1150</Weight>。
内容的提问来源于stack exchange,提问作者99ajohnson
相关产品推荐
相关产品推荐

