我发现很难在互联网上找到使用 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 格式/结果,但如果您使用
-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>