我有以下xml:
<PCstore>
<StoreList>
<Store id="001">
<ItemList>
<Items laptop="DELL" price="300"/>
<Items laptop="gateway" price="450"/>
<Items screen="LG" price="200"/>
</ItemList>
</Store>
</StoreList>
</PCstore>
我必须合并:
<PCstore>
<StoreList>
<Store id="002">
<ItemList>
<Items laptop="gateway" price="650"/>
<Items screen="LG" price="200/>
<Items speakers="sony" price="50"/>
</ItemList>
</Store>
</StoreList>
</PCstore>
以及过滤属性的期望输出(laptop="gateway"):
<PCstore>
<StoreList>
<Store id="001">
<ItemList>
<Items laptop="gateway" price="450"/>
</ItemList>
</Store>
<Store id="002">
<ItemList>
<Items laptop="gateway" price="650"/>
</ItemList>
</Store>
</StoreList>
</PCstore>
等等更多的xml3.xml,xml4.xml等......
我没有尝试过的代码,我对 XSLT 有点陌生,我希望有人可以帮助我。
更新:
我试过这段代码,但它不工作......
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="Items">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
<xsl:apply-templates
select="document('xml2.xml')
/PCstore/StoreList/Store/ItemList[@id = current()/../@id]
/Items[@laptop = current()/@value]/*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>