format-number函数似乎无法处理格式化的欧洲数字。我可以对该功能的“数字”参数做些什么,以便它可以工作吗?欧洲程序员对此做了什么?
例如; 下面的代码适用于使用小数创建十进制格式的情况,并且定义了分组分隔符,并且当格式号的“number”参数提供句点“。”时。作为初始小数分隔符。
<!-- define number format to use -->
<xsl:decimal-format
name="european"
decimal-separator=','
grouping-separator='.' />
<!-- format the number -->
<xsl:value-of select="format-number(1234.56,
'#.##0,00;(#.##0,00)',
'european')"/>
但是,如果提供的数字参数已经部分为欧元格式,则数字如1234,56 ...其中逗号“,”最初是数字而不是句号“。”,然后是格式数字函数将返回“NaN”。
有人有办法解决这个问题吗?或者您是否将最初提供的1234,56转换为1234.56以便它可以工作?
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
对于任何数值数据,您应该使用数字格式XSLT / XPath识别(即XSLT / XPath 1.0的双格式或者架构规范使用XSLT / XPath 2.0定义的格式之一)并且只为其格式化根据需要输出表示。如果你有不同格式的输入数据,那么你确实需要先用字符串函数将其转换为XSLT / XPath接受的格式。 number(translate('1234,56', ',', '.'))
是XPath 1.0中最简单的方法,或者在XPath 2.0中使用relace。
答案 1 :(得分:0)
设计意图是XML应以“国际标准”格式表示日期和数字等值,然后应根据各个用户的偏好对本地化进行本地化。因此,format-number被设计为将“国际格式”数字作为输入,并产生“本地化数字”作为输出。如果XML的设计不遵循该约定,则必须“手动”转换它,例如使用XSLT 1.0中的translate()或XSLT 2.0中的正则表达式。