[英]Merge two differently-formatted XML files with XSLT by matching id
我的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>
第一個文件中的“代碼”與第二個文件中的“ id”相同。
我想將這兩個合並以得到:
<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做到這一點?
如果第一人稱文件具有您關心的所有個人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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.