XSLT:合并xml文件的简单方法
我有两个xml文件。我需要在元素“myid”匹配的地方将它们合并在一起。请看一下这些示例文件 File1.xml:XSLT:合并xml文件的简单方法,xml,xslt,Xml,Xslt,我有两个xml文件。我需要在元素“myid”匹配的地方将它们合并在一起。请看一下这些示例文件 File1.xml: <?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <data> <title>Title1</title> <description>Description1</description> <myid>1
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<title>Title1</title>
<description>Description1</description>
<myid>1</myid>
</data>
<data>
<title>Title2</title>
<description>Description2</description>
<myid>2</myid>
</data>
</catalog>
<catalog>
<data>
<title>Title1</title>
<description>Description1</description>
<myid>1</myid>
<author>Author1</author>
<date>12/34/5678</date>
</data>
<data>
<title>Title2</title>
<description>Description2</description>
<myid>2</myid>
<author>Author2</author>
<date>87/65/4321</date>
</data>
</catalog>
标题1
说明1
1.
标题2
说明2
2.
File2.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<author>Author1</author>
<date>12/34/5678</date>
<myid>1</myid>
</data>
<data>
<author>Author2</author>
<date>87/65/4321</date>
<myid>2</myid>
</data>
</catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<author>Author1</author>
<date>12/34/5678</date>
<myid>1</myid>
</data>
<data>
<author>Author2</author>
<date>87/65/4321</date>
<myid>2</myid>
</data>
</catalog>
作者1
12/34/5678
1.
作者2
87/65/4321
2.
生成的文件如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<title>Title1</title>
<description>Description1</description>
<myid>1</myid>
<author>Author1</author>
<date>12/34/5678</date>
</data>
<data>
<title>Title2</title>
<description>Description2</description>
<myid>2</myid>
<author>Author2</author>
<date>87/65/4321</date>
</data>
</catalog>
标题1
说明1
1.
作者1
12/34/5678
标题2
说明2
2.
作者2
87/65/4321
我进行了一些研究,发现了一个非常类似的问题:
这就是我所想到的,这似乎大部分是有效的,除了Firefox没有将其识别为xml文件之外,即使我添加了xml:output
File1.xml(注意第二行,引用我们的转换):
标题1
说明1
1.
标题2
说明2
2.
File2.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<author>Author1</author>
<date>12/34/5678</date>
<myid>1</myid>
</data>
<data>
<author>Author2</author>
<date>87/65/4321</date>
<myid>2</myid>
</data>
</catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<author>Author1</author>
<date>12/34/5678</date>
<myid>1</myid>
</data>
<data>
<author>Author2</author>
<date>87/65/4321</date>
<myid>2</myid>
</data>
</catalog>
作者1
12/34/5678
1.
作者2
87/65/4321
2.
merge.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes" />
<xsl:variable name="with" select="'File2.xml'" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="scene">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
<xsl:variable name="info" select="document($with)/catalog/data[myid=current()/myid]/." />
<xsl:for-each select="$info/*">
<xsl:if test="name()!='myid'">
<xsl:copy-of select="." />
</xsl:if>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:transform>
查看File1.xml时输出xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<data>
<title>Title1</title>
<description>Description1</description>
<myid>1</myid>
</data>
<data>
<title>Title2</title>
<description>Description2</description>
<myid>2</myid>
</data>
</catalog>
<catalog>
<data>
<title>Title1</title>
<description>Description1</description>
<myid>1</myid>
<author>Author1</author>
<date>12/34/5678</date>
</data>
<data>
<title>Title2</title>
<description>Description2</description>
<myid>2</myid>
<author>Author2</author>
<date>87/65/4321</date>
</data>
</catalog>
标题1
说明1
1.
作者1
12/34/5678
标题2
说明2
2.
作者2
87/65/4321
我希望帮助对我来说似乎很简单:@dacracot:输入文件的格式也不好。-------@nicholas.alipaz:我们看到的是摘录,而不是全部文件吗?我已经更新了我的帖子。很抱歉给你带来了困惑;post不存在anymore@AdamLynch抱歉,我查找了该帖子的缓存版本,但结果为空。这其实并不太重要,因为我概述了上面需要的所有内容。最好的!