有一个 XML 文件,其结构为 Transaction/isaPartners/Partner/Header/Item,isaPartner 下有多个合作伙伴。
<?xml version="1.0" encoding="UTF-8"?>
<Transactions>
<isaPartners>
<Partner partnerId="PartnerA">
<Header currencyCode="USD" dateCreated="10/17/23" invoiceNumber="12345">
<Item uom="EA" price="1.20" item="99987" />
</Header>
</Partner>
<Partner partnerId="PartnerB">
<Header currencyCode="USD" dateCreated="10/17/23" invoiceNumber="98765">
<Item uom="EA" price="5.60" item="7765" />
</Header>
</Partner>
<Partner partnerId="PartnerC" >
<Header currencyCode="USD" dateCreated="10/17/23" invoiceNumber="45678">
<Item uom="EA" price="6.50" item="1123" />
</Header>
</Partner>
</isaPartners>
</Transactions>
我正在尝试获取所有标题/项目实例并将其放在一个 Partner/@partnerId 下,我可以随意命名。
输出应该是: 在这种情况下,我将获取一个 Partner/@partnerID = PartnerD 下的所有标题/项目
<?xml version="1.0" encoding="UTF-8"?>
<Transactions>
<isaPartners>
<Partner partnerId="PartnerD">
<Header currencyCode="USD" dateCreated="10/17/23" invoiceNumber="12345">
<Item uom="EA" price="1.20" item="99987" />
</Header>
<Header currencyCode="USD" dateCreated="10/17/23" invoiceNumber="98765">
<Item uom="EA" price="5.60" item="7765" />
</Header>
<Header currencyCode="USD" dateCreated="10/17/23" invoiceNumber="45678">
<Item uom="EA" price="6.50" item="1123" />
</Header>
</Partner>
</isaPartners>
</Transactions>
我不知道从哪里开始,所以我没有我尝试过的例子。我熟悉如何在 XML 结构中操作 XML 元素,但不知道如何以这种方式对结构进行重新排序。预先感谢您的帮助!!
这是 xslt 中的一个非常基本的任务,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<!-- Matches and copies all -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Matches and copies isaPartners and creates a new Partner and applies in that new Partner all Partner/Header -->
<xsl:template match="isaPartners">
<xsl:copy>
<Partner partnerId="PartnerD">
<xsl:apply-templates select="Partner/Header"/>
</Partner>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>