首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止xslt3.0的xml到json()函数将数字转换为指数表示法

如何停止xslt3.0的xml到json()函数将数字转换为指数表示法
EN

Stack Overflow用户
提问于 2018-04-22 14:13:04
回答 1查看 505关注 0票数 3

我使用XSLT3.0的xslt ()函数使用Saxon9.8HE将xml转换为json。我得到的问题是,我的数字值被转换成指数(科学符号)。我希望输出与我在输入xml中传递的输出相同。

Xslt篡改链接https://xsltfiddle.liberty-development.net/94hvTyT

输入xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
   <map key="Request">
     <number key="price">1234567</number>
   </map>
</map>

请注意,使用XSLT3.0的json-to- xml ()函数对此xml也进行了语法化。

XSLT

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="3.0">

  <xsl:output method="text"/>

  <xsl:template match="/">
      <xsl:value-of select="xml-to-json(., map { 'indent' : true() })"/>
  </xsl:template>

</xsl:stylesheet>

输出

代码语言:javascript
复制
{ "Request" : 
    { "price" : 1.234567E6 } 
}

期望输出

代码语言:javascript
复制
{ "Request" : 
    { "price" : 1234567 } 
}

关于这件事的任何解决办法/建议对我都有很大的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 12:31:09

结果如https://www.w3.org/TR/xpath-functions/#func-xml-to-json中所指定的那样

一个名为number的元素$E将输出xs: string (xs:double(fn:string($E))的字符串结果)。

在其他XPath/XQuery3.1实现或XSLT3.0实现中,您将得到相同的结果。

因此,除非您愿意将<number key="price">1234567</number>更改为<string key="price">1234567</string> (当然可以通过中间转换步骤来完成),否则我认为您不能用xml-to-json来阻止大数的指数数字格式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49966887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档