我想将下面结构中的xml文件转换为另一个非常相似的文件,假设每个元素名称都有变化(即A..F - > ANew..FNew)。我想用XSLT 3.0使用Saxon-EE v9.7引入的流式传输模式,因为我需要处理非常大的文件。虽然我可以部分取得成功(Root / Head部分),但我无法提出完全解决整个文档的解决方案,因为我无法满足Saxon-EE适用的流量规则,我在其中迷失了...我感谢任何xslt建议这将使用Saxon-EE v9.7在流模式下工作。
<Root>
<Head>
<A/>
<B/>
</Head>
<Grp>
<D/>
<E/>
<SubGrp>
<E/>
<F/>
</SubGrp>
<SubGrp>
<E/>
<F/>
</SubGrp>
</Grp>
<Grp>
<D/>
<E/>
<SubGrp>
<E/>
<F/>
</SubGrp>
<SubGrp>
<E/>
<F/>
</SubGrp>
</Grp>
</Root>
答案 0 :(得分:0)
如果您使用
<xsl:mode streamable="yes" on-no-match="shallow-copy"/>
作为起点,如果您只需要重命名某些元素,则可以添加模板,例如。
<xsl:template match="A">
<ANew>
<xsl:apply-templates/>
</ANew>
</xsl:template>
<xsl:template match="F">
<FNew>
<xsl:apply-templates/>
</FNew>
</xsl:template>
如果您仍有问题,请向我们展示您的XSLT以及Saxon为您提供的确切错误消息。