底层具有非英语数据的 XSLT 区域化 XML
XSLT regionalisation with non-English data in the underlying XML
我已阅读 XSL vs Regionalisation/Internationalization Number Formats。但那是关于格式化 "English" (US/UK) 将数字格式化为带有其他小数点和千位分隔符的数字。
我的问题是 XML 中的数据以 "regional" 格式格式化,(例如 123.456,78 表示 123.456 和 78百分之一)。然后我想在计算中使用该数字。就我对 XSL 文档的阅读而言,我必须将该数字转换为 US/UK-英语,并且还删除了千位分隔符。换句话说,上面的数字必须呈现为 123456.78 才能在计算中使用它。
有没有办法告诉 XSL "the underlying XML is all going to have commas as decimal separator, and will have a full stop (period) as a thousands separator"?
不,如果您想将一个值视为数字,那么您需要双精度数字格式 (XSLT/XPath 1.0) 或其中定义的一种数字格式(XSLT/XPath 2.0 和 3.0)规格。因此,您需要编写代码来去除千位分隔符 translate(., '.', '')
,然后用点 translate(translate(., '.', ''), ',', '.')
.
替换逗号
我已阅读 XSL vs Regionalisation/Internationalization Number Formats。但那是关于格式化 "English" (US/UK) 将数字格式化为带有其他小数点和千位分隔符的数字。
我的问题是 XML 中的数据以 "regional" 格式格式化,(例如 123.456,78 表示 123.456 和 78百分之一)。然后我想在计算中使用该数字。就我对 XSL 文档的阅读而言,我必须将该数字转换为 US/UK-英语,并且还删除了千位分隔符。换句话说,上面的数字必须呈现为 123456.78 才能在计算中使用它。
有没有办法告诉 XSL "the underlying XML is all going to have commas as decimal separator, and will have a full stop (period) as a thousands separator"?
不,如果您想将一个值视为数字,那么您需要双精度数字格式 (XSLT/XPath 1.0) 或其中定义的一种数字格式(XSLT/XPath 2.0 和 3.0)规格。因此,您需要编写代码来去除千位分隔符 translate(., '.', '')
,然后用点 translate(translate(., '.', ''), ',', '.')
.