在XSLT2.0中格式化电话号码

时间:2017-01-24 14:39:51

标签: xml csv xslt

我正在使用XSLT 2.0。输出数据必须是csv文件。对于电话号码列,可以通过以下方式从XML中进行简单的选择:

<xsl:value-of select="ns:phone[ns:is_primary = 'true']/ns:phone_number"/>

当我在csv文件中查看输出时,一些数字来自&#34; 9.12234E + 11&#34;。我尝试将其更改为如此字符串:

<xsl:value-of select="ns:phone[ns:is_primary = 'true']/format-number(ns:phone_number,'############')"/>
然而,这并没有帮助。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我的猜测是,在没有具体信息的情况下,您正在进行模式感知转换,并且架构将phone_number字段定义为数字。

现在,数字对于电话号码字段来说是一个糟糕的选择。验证电话号码可能没问题,但语义错误:例如将其定义为数字会使前导零(或前导“+”符号)无效。正如您所见,它会导致格式错误。

电话号码应在架构中定义为字符串,其格式类似于\+?[0-9]+(如果您知道自己的数据,可以将其更改为更宽松或更严格的限制。)

如果您无法更改架构,则可以(取决于处理器)使用ns:phone-number/text()恢复原始词汇表示。