我正在使用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,'############')"/>
然而,这并没有帮助。我怎样才能做到这一点?
答案 0 :(得分:0)
我的猜测是,在没有具体信息的情况下,您正在进行模式感知转换,并且架构将phone_number字段定义为数字。
现在,数字对于电话号码字段来说是一个糟糕的选择。验证电话号码可能没问题,但语义错误:例如将其定义为数字会使前导零(或前导“+”符号)无效。正如您所见,它会导致格式错误。
电话号码应在架构中定义为字符串,其格式类似于\+?[0-9]+
(如果您知道自己的数据,可以将其更改为更宽松或更严格的限制。)
如果您无法更改架构,则可以(取决于处理器)使用ns:phone-number/text()
恢复原始词汇表示。