加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用XSLT将XML分割成多个文件

发布时间:2020-12-16 08:04:54 所属栏目:百科 来源:网络整理
导读:我在XSLT周围很困难,但是听说可以将XML文件分割成多个文件。基本上我想将所有的元素复制到第一个文件,最后一个文件,然后添加每个输出文件的单个文件内容。 如果有可能,有人可以给我一些指针吗? 谢谢, complete.xml rootelem elem file attr1='1' conte
我在XSLT周围很困难,但是听说可以将XML文件分割成多个文件。基本上我想将所有的元素复制到第一个文件,最后一个文件,然后添加每个输出文件的单个文件内容。

如果有可能,有人可以给我一些指针吗?

谢谢,

complete.xml

<rootelem>
  <elem>
    <file attr1='1'>
      <content>content file 1</content>
    </file>
    <file attr2='2'>
      <content>content file 2</content>
    </file>
    <file attr3='3'>
      <content>content file 3</content>
    </file>
  </elem>
</rootelem>

输出:

complete_PART1.xml

<rootelem>
  <elem>
     <file attr1='1'>
        <content>content file 1</content>
     </file>
  </elem>
</rootelem>

complete_PART2.xml

<rootelem>
  <elem>
    <file attr2='2'>
      <content>content file 2</content>
    </file>
  </elem>
</rootelem>

complete_PART3.xml

<rootelem>
  <elem>
     <file attr3='3'>
        <content>content file 3</content>
     </file>
  </elem>
</rootelem>
回复你对@ Dimitre的回答的评论…

你写了,

<xsl:template match="/">
  <xsl:for-each select="elem/file">
    <xsl:result-document method="xml" href="file_{@id}-output.xml">
      <xsl:copy-of select="."/>
    </xsl:result-document>
  </xsl:for-each>
</xsl:template>

这不符合您的XML,它的rootelem作为最外层的元素,您的评论将root表示为最外层的元素。你可能想要这样的东西:

<xsl:template match="/root">
  <xsl:for-each select="elem/file">
    <xsl:result-document method="xml" href="file_{@id}-output.xml">
      <root>
        <xsl:copy-of select="/root/@*" />
        <elem>
          <xsl:copy-of select="../@* | ." />
        </elem>
      </root>
    </xsl:result-document>
  </xsl:for-each>
</xsl:template>

您可以获得优胜者,尝试使用< xsl:copy>而不是根和elem的字面结果元素,但它似乎不值得的努力,除非他们会变化。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读