如何解决为什么 xml-to-json 函数返回指数表示法?
我的所有 XSLT 在使用 xml-to-json()
函数时都可以正常工作,除了这一部分,
<number key="send_at">
<xsl:text>1615842000</xsl:text>
</number>
哪个返回
"send_at":1.615842E9
当我打算得到这个结果时:
"send_at":1615842000
解决方法
XPath 3.1 (当前)
根据规范 (XPath and XQuery Functions and Operators 3.1),将数字转换为指数表示法是正确的:
规则
输入树中的节点通过应用以下规则进行处理, 递归。
- 一个名为 number 的元素
$E
导致输出xs:string(xs:double(fn:string($E)))
的字符串结果
fn:xml-to-json
函数确实允许使用 $options
参数,它为依赖于实现的扩展提供了一种方法。 Saxon 10.5 已经利用这种机制来支持传递值,而不考虑 JSON 有效性:1
map{'number-formatter':function($x){$x}}
XPath 4 (即将推出)
格式化程序是 fn:xml-to-json
planned for XPath 4 的官方支持选项:2
number-formatter
:确定数值的格式。
-
输入:
(function(xs:string) as xs:string)?
-
默认:
()
1 感谢 Michael Kay 注意到这个机制(并预见到它的需要(并且已经在 Saxon 10.5 中实现了它))。
2 感谢 Martin Honnen 注意到此 XPath 4 更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。