使用json-to-xml()函数将json转换为xml会产生不良格式的输出

时间:2019-02-27 23:54:20

标签: java json xml xslt saxon

我有一个xsl文件,我正在尝试将xsl模板应用于示例json。生产者没有使用json键和值来生成有效的xml文档,而是使用编码后的字符串来形成xml。 下面是我运行的命令。

java -cp /Users/vn04pa5/.m2/repository/net/sf/saxon/Saxon-HE/9.9.1-1/Saxon-HE-9.9.1-1.jar net.sf.saxon.Transform -it:"initial-template" -xsl:"XBorderPOJSON.xsl" input='{
  "purchaseOrderNo": "yvueBluWlI",
  "sourceMarketOrderNo": "ZONWqmCorD",
  "destinationMarketOrderNo": "xFildoWLxd"}'

输出

<?xml version="1.0" encoding="UTF-8"?>yvueBluWlIZONWqmCorDxFildoWLxd

XSL文件:

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:param name="input"/>
 <xsl:template name="initial-template">
      <!--<xsl:value-of select="$input"/>-->
 <!--   <xsl:variable name="json" select="unparsed-text($input)"/>-->
    <xsl:apply-templates select="json-to-xml($input)"/>
    <!--  <xsl:value-of select="$json"/>-->
</xsl:template>
</xsl:stylesheet>

我是否必须使用专业版或EE版才能正常工作? 我有产生相同输出的Java应用程序。

1 个答案:

答案 0 :(得分:2)

json-to-xml()函数产生一个XML节点树。您正在将模板应用于该树的根,但是您没有任何模板规则来处理这些节点。因此,使用默认模板规则。默认模板规则跳过元素和属性节点,仅输出文本节点。添加<xsl:mode on-no-match="shallow-copy"/>,或仅使用xsl:copy-of(或xsl:sequence)代替xsl:apply-templates