gpt4 book ai didi

xml - 如何使用 XSLT 合并两个 xml 文件

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:44 26 4
gpt4 key购买 nike

我有两个 xml 文件,需要使用 XSLT 将其合并为一个文件。

第一个 XML 是(原始的):

<feed>
<author>
<firstName>f</firstName>
<lastName>l</lastName>
</author>
<date>2011-01-02 </date>
<entry>
<id>1</id>
<Name>aaa</Name>
<Content>XXX</Content>
</entry>
<entry>
<id>2</id>
<Name>bbb</Name>
<Content>YYY</Content>
</entry>
</feed>

第二个 XML(更新数据)是这样的:

   <feed>
<author>
<firstName>f</firstName>
<lastName>l</lastName>
</author>
<date>2012-05-02 </date>
<entry>
<id>2</id>
<Name>newName</Name>
<Content>newContent</Content>
</entry>
<entry>
<id>3</id>
<Name>ccc</Name>
<Content>ZZZ</Content>
</entry>
</feed>

所需的合并结果 - 使用第二个 XML 更新第一个:

 <feed>
<author>
<firstName>f</firstName>
<lastName>l</lastName>
</author>
<date>2012-05-02 </date>
<entry>
<id>1</id>
<Name>aaa</Name>
<Content>XXX</Content>
</entry>
<entry>
<id>2</id>
<Name>newName</Name>
<Content>newContent</Content>
</entry>
<entry>
<id>3</id>
<Name>ccc</Name>
<Content>ZZZ</Content>
</entry>
</feed>

我已经搜索了 stackoverflow,但仍然找不到答案。感谢您的帮助。

最佳答案

与我为您的上一个问题提供的答案几乎相同,并进行了修改以匹配您的新 XML 格式:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:param name="fileName" select="'updates.xml'" />
<xsl:param name="updates" select="document($fileName)" />

<xsl:variable name="updateItems" select="$updates/feed/entry" />

<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="feed">
<xsl:copy>
<xsl:apply-templates select="@* | node()[not(self::entry)] |
entry[not(id = $updateItems/id)]" />
<xsl:apply-templates select="$updateItems" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

当在第一个示例 XML 上运行时,第二个示例保存为“updates.xml”,这会产生:

<feed>
<author>
<firstName>f</firstName>
<lastName>l</lastName>
</author>
<date>2011-01-02 </date>
<entry>
<id>1</id>
<Name>aaa</Name>
<Content>XXX</Content>
</entry>
<entry>
<id>2</id>
<Name>newName</Name>
<Content>newContent</Content>
</entry>
<entry>
<id>3</id>
<Name>ccc</Name>
<Content>ZZZ</Content>
</entry>
</feed>

关于xml - 如何使用 XSLT 合并两个 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com