问题描述
我正在使用XSLT执行从json到json的转换。
[
{
"fileName": "file1.xml","value": [
{
"data1": [
{
"data2": [
{
"data3": [
{
"data4": [
{
"tag1": [
"df"
],"tag2": [
"fg"
],"tag3": [
"ss"
]
},{
"tag1": [
"fg"
],"tag2": [
"ss"
],"tag3": [
"df"
]
}
]
}
]
}
]
}
]
}
]
}]
要对json对象中的标签进行排序,我尝试使用saxon:property-order ..但在我的情况下,它不支持。
因为我使用的是Saxon-HE 10.01版本。
这是我的xslt styleSheet
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jlib="http://saxonica.com/ns/jsonlib"
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:array="http://www.w3.org/2005/xpath-functions/array"
xmlns:saxon="http://saxon.sf.net/"
version="3.0">
<xsl:param name="input"/>
<xsl:output method="json"/>
<xsl:mode on-no-match="deep-copy"/>
<xsl:output method="json" indent="yes" saxon:property-order="tag1 tag2 tag3"/>
<xsl:template name="xsl:initial-template">
<xsl:variable name="in" select="parse-json($input)"/>
<xsl:variable name="out" as="map(*)*">
<xsl:for-each-group select="$in?*" group-by="?fileName">
<xsl:map>
<xsl:map-entry key="'fileName'" select="current-grouping-key()"/>
<xsl:map-entry key="'value'" select="map{'data1':array{map {'data2':array{map {'data3':array {map{'data4': array:join(current-group()?value?*?data1?*?data2?*?data3?*?data4)}}}}}}}"/>
</xsl:map>
</xsl:for-each-group>
</xsl:variable>
<xsl:sequence select="array{$out}"/>
</xsl:template>
</xsl:stylesheet>
我从Java代码中获得以下异常:-
xsl错误:在第11行的第516列输出 XTSE0020序列化参数Q {... / saxon.sf.net/}属性顺序在Saxon-HE中不可用
如何在saxon-he 10.中使用属性顺序。或者在saxon-he中使用其他任何功能来执行属性顺序机械化/分类机制?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)