如何使用 XSLT3 和 SaxonJS 将 JSON 转换为 XML?

问题描述 投票:0回答:1

我发现很难在互联网上找到使用 xslt3 和 SaxonJS 库将简单 json 转换为 xml 的好示例。 我发现了以下内容: https://www.saxonica.com/papers/xmlprague-2016mhk.pdf 但我无法真正理解它是如何工作的。

我尝试过跑步:

npm i xslt3
./node_modules/.bin/xslt3 -json:test.json -xsl:test.xsl -o:test.xml -t && cat test.xml

以 JSON 为例:

{
    "a": 1
}

使用 XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                version="3.0">
    <xsl:template match="/">
        <base>
            <a>
                <xsl:value-of select="/map/number"/>
            </a>
        </base>
    </xsl:template>
</xsl:stylesheet>

但这会导致 XML 为空。

还将选择更改为:

    <xsl:template match=".">
        <base>
            <a>{?a}</a>
        </base>
    </xsl:template>

按照其他项目的建议似乎不起作用。不确定这是否与最新版本有关。我使用的是2.7.0版本

xslt-3.0 saxon-js
1个回答
0
投票

尚不清楚您想要哪种 XSLT 格式/结果,但如果您使用

-json
选项,则 JSON 将表示为 XDM 3.1/XPath 3.1 映射和/或数组,随后使用查找运算符的第二种方法
?
似乎是正确的方法。

具有完整的上下文

XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="3.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="#all"
  expand-text="yes">

  <xsl:template match=".">
      <base>
          <a>{?a}</a>
      </base>
  </xsl:template>
  
</xsl:stylesheet>

转换 JSON

{
    "a": 1
}

转换为 XML

<?xml version="1.0" encoding="UTF-8"?><base><a>1</a></base>
© www.soinside.com 2019 - 2024. All rights reserved.