对数值使用 concat
Using concat with number values
问题是我想在我生成的文件中显示两个数字,它们很好地存储为字符串。
以下代码工作正常,但格式并不是我想要的格式:
<xsl:call-template name="create-cell">
<xsl:with-param name="value" select="concat($value_one,' or ',$value_two)" />
所以我想我会添加一个 format-number 函数并为数字提供我想要的格式。为此,我将字符串转换为数字,使用该函数,然后转换回字符串,如下所示:
<xsl:call-template name="create-cell">
<xsl:with-param name="value" select="concat(string(format-number(number($value_one), "###,###.00"),' or ',$value_two)" />
但是转换无果而终(出现错误)。我在更改类型时到底做错了什么?
编辑:
出现的错误是:
Element type "xsl:with-param" must be followed by either attribute specifications, ">" or "/>"
我想解决方案是使用 " ...
来避免双重配额
But the transformation ends with result -
我猜 $value_one
不是数字。也许它被格式化为12,345.00
?如果转换为 xs:double
失败,它将 return NaN
,这是一个有效数字,但不是真的。使用format-number
函数,它应该returnNaN
,不管图片字符串。
如果您的变量包含空序列,format-number
将 return 空序列。
由于 format-number
已经 return 是一个字符串,因此对结果使用 string()
将无效。
如果您问题中的 -
表示字面上的减号,那么也许可以用您的第一个片段和第二个片段更新您的问题 return exactly,以及您使用的处理器(确切版本)。
更新(在您发布错误之后)
您的 XSLT 无效 XML。所有 XSLT 都必须是有效的 XML。 显示错误的地方:属性值必须用引号括起来,而你的不是。
这部分:
<xsl:with-param name="value" select="concat(string(format-number(number($value_one), "###,###.00"),' or ',$value_two)" />
应该写成:
<xsl:with-param name="value" select="concat(format-number($value_one, '#,###.00'), ' or ', $value_two)"/>
这是否是解决实际问题(我们几乎一无所知)的好方法是另一个问题。
问题是我想在我生成的文件中显示两个数字,它们很好地存储为字符串。
以下代码工作正常,但格式并不是我想要的格式:
<xsl:call-template name="create-cell">
<xsl:with-param name="value" select="concat($value_one,' or ',$value_two)" />
所以我想我会添加一个 format-number 函数并为数字提供我想要的格式。为此,我将字符串转换为数字,使用该函数,然后转换回字符串,如下所示:
<xsl:call-template name="create-cell">
<xsl:with-param name="value" select="concat(string(format-number(number($value_one), "###,###.00"),' or ',$value_two)" />
但是转换无果而终(出现错误)。我在更改类型时到底做错了什么?
编辑:
出现的错误是:
Element type "xsl:with-param" must be followed by either attribute specifications, ">" or "/>"
我想解决方案是使用 " ...
来避免双重配额But the transformation ends with result -
我猜 $value_one
不是数字。也许它被格式化为12,345.00
?如果转换为 xs:double
失败,它将 return NaN
,这是一个有效数字,但不是真的。使用format-number
函数,它应该returnNaN
,不管图片字符串。
如果您的变量包含空序列,format-number
将 return 空序列。
由于 format-number
已经 return 是一个字符串,因此对结果使用 string()
将无效。
如果您问题中的 -
表示字面上的减号,那么也许可以用您的第一个片段和第二个片段更新您的问题 return exactly,以及您使用的处理器(确切版本)。
更新(在您发布错误之后)
您的 XSLT 无效 XML。所有 XSLT 都必须是有效的 XML。
这部分:
<xsl:with-param name="value" select="concat(string(format-number(number($value_one), "###,###.00"),' or ',$value_two)" />
应该写成:
<xsl:with-param name="value" select="concat(format-number($value_one, '#,###.00'), ' or ', $value_two)"/>
这是否是解决实际问题(我们几乎一无所知)的好方法是另一个问题。