我找不到这个特定的场景(我猜我无法用英语正确描述它)。
输入 XML 看起来像这样(当然,“listOne”和“listTwo”内有多个项目:
<root>
<listOne>
<listOneItem>
<ID>1</ID> // Always Unique
<SKU>ABC</SKU>
</listOneItem>
</listOne>
<listTwo>
<listTwoItem>
<ID>1</ID> / Identical to node in listOneItem, but unique (no scenario of a third element with such ID)
<STOCK>10</STOCK>
</listTwoItem>
</listTwo>
</root>
所需的输出应基于相同的子“ID”节点值合并“listOne”和“listTwo”项:
<root>
<finalItemsList>
<item>
<ID>1</ID>
<SKU>ABC</SKU>
<STOCK>10</STOCK>
</item>
</finalItemsList>
</root>
XSLT 有一个内置的key https://www.w3.org/TR/xslt20/#key解决交叉引用的机制:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="list2" match="listTwoItem" use="ID" />
<xsl:template match="/root">
<root>
<finalItemsList>
<xsl:for-each select="listOne/listOneItem">
<item>
<xsl:copy-of select="*"/>
<xsl:copy-of select="key('list2', ID)/STOCK"/>
</item>
</xsl:for-each>
</finalItemsList>
</root>
</xsl:template>
</xsl:stylesheet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)