我有以下由外部系统发送的源文件。
<?xml version="1.0" encoding="utf-8"?>
<root>
<remoteId>id-sent-by-sender</remoteId>
<payments>
<payment>
<amount>383700</amount>
<remoteId>unique-id-1</remoteId>
<beneficiary>
<accountNumber>CustomerAccount_1</accountNumber>
<country>fr</country>
<routingNumber>AAABBBBCCC</routingNumber>
<title>Dale's Shop</title>
<email>dale@shop.com</email>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<dateDue>2021-07-21</dateDue>
<metaData>
<data>
<key>a-key</key>
<value>a value</value>
</data>
<data>
<key>another-key</key>
<value>another value</value>
</data>
</metaData>
<reference>
<row>invoice row 1</row>
</reference>
<reference>
<row>invoice row 2</row>
</reference>
<reference>
<row>invoice row 3</row>
</reference>
</payment>
<payment>
<amount>100000</amount>
<remoteId>unique-id-2</remoteId>
<beneficiary>
<accountNumber>CustomerAccount_2</accountNumber>
<country>gb</country>
<routingNumber>BBBKKKKSSS</routingNumber>
<title>Ramos Tacos</title>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<reference>
<row>invoice row 1</row>
</reference>
<reference>
<row>invoice row 2</row>
</reference>
<reference>
<row>invoice row 3</row>
</reference>
</payment>
</payments>
</root>我需要将该文件更改为类似下面的内容。
<?xml version="1.0" encoding="utf-8"?>
<root>
<remoteId>id-send-by-sender</remoteId>
<payments>
<payment>
<amount>383700</amount>
<remoteId>unique-id-1</remoteId>
<beneficiary>
<accountNumber>CustomerAccount_1</accountNumber>
<country>fr</country>
<routingNumber>AAABBBBCCC</routingNumber>
<title>Dale's Shop</title>
<email>dale@shop.com</email>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<dateDue>2021-07-21</dateDue>
<metaData>
<data>
<key>a-key</key>
<value>a value</value>
</data>
<data>
<key>another-key</key>
<value>another value</value>
</data>
</metaData>
<reference>
<row>invoice row 1</row>
<row>invoice row 2</row>
<row>invoice row 3</row>
</reference>
</payment>
<payment>
<amount>100000</amount>
<beneficiary>
<accountNumber>CustomerAccount_2</accountNumber>
<country>gb</country>
<routingNumber>BBBKKKKSSS</routingNumber>
<title>Ramos Tacos</title>
</beneficiary>
<feeBearer>
<party>supplier</party>
<supplierFeePercent>1.00</supplierFeePercent>
</feeBearer>
<currency>eur</currency>
<reference>
<row>invoice row 1</row>
<row>invoice row 2</row>
<row>invoice row 3</row>
</reference>
<remoteId>unique-id-2</remoteId>
</payment>
</payments>
</root>简而言之,这两个XML之间的区别在于,第一个XML有多个元素<reference>,我需要将这些元素合并到一个出现项中,同时保持所有这些出现项的子元素不变。
使用XSLT可以做到这一点吗?如果是的话,有没有人可以帮忙呢?我在这方面是个新手,虽然我搜索了所有的帖子,但我不知道该怎么去做。
谢谢
发布于 2021-12-02 09:03:14
我希望看到一个包含标准身份模板和规则的样式表:
<xsl:template match="payment">
<xsl:copy>
<xsl:apply-templates/>
<reference>
<xsl:copy-of select="reference/row"/>
</reference>
</xsl:copy>
</xsl:template>
<xsl:template match="reference"/>https://stackoverflow.com/questions/70194582
复制相似问题