对数值使用 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)"/>

这是否是解决实际问题(我们几乎一无所知)的好方法是另一个问题。