我的一个XML是这样的:
<people>
<person code="111" name="Bob" />
<person code="222" name="Sue" />
</people>
另一个是这样的:
<people>
<person>
<id>111</id>
<age>80</age>
</person>
<person>
<id>222</id>
<age>73</age>
</person>
</people>
&#34;代码&#34;来自第一个文件与&#34; id&#34;相同来自第二个文件。
我想合并这两个来得到这个:
<people>
<person>
<id>111</id>
<name>Bob</name>
<age>80</age>
</person>
<person>
<id>222</id>
<name>Sue</name>
<age>73</age>
</person>
</people>
如何使用XSLT执行此操作?
答案 0 :(得分:1)
如果第一人称文件包含您关注的所有人ID,则可以执行以下操作。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="person">
<person>
<id>
<xsl:value-of select="@code"/>
</id>
<name>
<xsl:value-of select="@name"/>
</name>
<xsl:for-each select="document('ip2.xml')//person[id=current()/@code]">
<xsl:apply-templates />
</xsl:for-each>
</person>
</xsl:template>
<xsl:template match="id" />
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
将生成此输出:
<?xml version="1.0"?>
<people>
<person>
<id>111</id>
<name>Bob</name>
<age>80</age>
</person>
<person>
<id>222</id>
<name>Sue</name>
<age>73</age>
</person>
</people>