gpt4 book ai didi

xml - 使用 XSL 将 2 个 XML 文件合并为 1 个

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

我找不到合适的示例将 2 个 XML 文件合并为 1 个,如下所示:

电影.xml

<movies>
<movie>
<name>ET</name>
<director>Steven Spielberg</director>
<date>15 January 2000</date>
</movie>
<movie>
<name>The Neverending Story</name>
<director>Steven Spielberg</director>
<date>4 November 2006</date>
</movie>
</movies>

目录.xml

<directors>
<director>
<name>Steven Spielberg</name>
<age>55</age>
<sex>male</sex>
</director>
</directors>

要求的输出:

<directors>
<director>
<name>Steven Spielberg</name>
<age>55</age>
<sex>male</sex>
<movies>
<movie>
<name>ET</name>
<date>15 January 2000</date>
</movie>
<movie>
<name>The Neverending Story</name>
<date>4 November 2006</date>
<movie>
</movies>
</director>
</directors>

XSL:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml" indent = "yes" />

<xsl:variable name="movieFile" select="document('movies.xml')" />

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

<xsl:template match="$movieFile/movies/movie/director">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

目前,它正在打印每个电影组中的整个导演列表。

有人可以给我一些指导吗?

最佳答案

如果您将第二个模板替换为这个模板,并将“directors.xml”文件作为输入,它应该可以工作:

<xsl:template match="director">
<xsl:variable name="director-name" select="name"/>
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
<xsl:apply-templates select="document('movies.xml')/movies/movie[director=$director-name]" />
</xsl:copy>
</xsl:template>

除了上面的 director 节点外,您使用标识模板复制每个节点,您在其中添加 movie 文件的匹配内容。

关于xml - 使用 XSL 将 2 个 XML 文件合并为 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693271/

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