繁体   English   中英

如何创建可流式XSLT转换?

[英]How to create a streamable XSLT transformation?

我想将下面结构的xml文件转换为与此非常相似的另一个文件,假设每个元素名称都发生了变化(即A..F-> ANew..FNew)。 我想以XSLT 3.0使用Saxon-EE v9.7引入的流模式进行操作,因为我需要处理非常大的文件。 尽管我可以部分成功(根/头部分),但由于无法满足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>

如果您使用

<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给您的确切错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM