Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在XSLT2.0中将电话号码格式化为_Xml_Csv_Xslt - Fatal编程技术网

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

Xml 在XSLT2.0中将电话号码格式化为,xml,csv,xslt,Xml,Csv,Xslt,我正在使用XSLT2.0。输出数据必须是csv文件。对于电话号码列,可以通过以下方式从XML中进行简单选择: <xsl:value-of select="ns:phone[ns:is_primary = 'true']/ns:phone_number"/> 当我在csv文件中查看输出时,有几个数字是“9.12234E+11”。我试着把它改成这样的字符串: <xsl:value-of select="ns:phone[ns:is_primary = 'true']/form

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

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

当我在csv文件中查看输出时,有几个数字是“9.12234E+11”。我试着把它改成这样的字符串:

<xsl:value-of select="ns:phone[ns:is_primary = 'true']/format-number(ns:phone_number,'############')"/>


然而,这无助于解决问题。我怎么才能做到这一点呢?

在没有具体信息的情况下,我猜您正在进行一个模式感知转换,模式将电话号码字段定义为数字

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

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


如果您无法更改模式,您可能(取决于处理器)能够使用
ns:phone number/text()

恢复原始的词汇表示,请发布一个最小但完整的XML输入文档、XSLT样式表以及有关所用XSLT处理器的信息,以便我们重现该问题。我不明白为什么
会输出指数格式,除非输入有指数格式。请花一分钟时间通读指南:其中包含许多关于问题中应包含哪些内容的有用信息,以帮助我们帮助您如何查看CSV文件?例如,您是否正在Microsoft Excel中查看它?这可以在指数级自动格式化长数字。您可以通过格式化电话号码,使区号后面有一个空格来解决此问题。