У меня есть простой XML следующим образом
<?xml version="1.0" encoding="UTF-8"?>
<StockLevelReportingExt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Envelope>
<SenderIdentification>USLAX19</SenderIdentification>
</Envelope>
<Message>
<ArticleInformation>
<SmallNormalID>2</SmallNormalID>
<SerialNumbersPerSKU>0</SerialNumbersPerSKU>
</ArticleInformation>
<SubtotalsInformation>
<TaxedFlag>0</TaxedFlag>
<Depot>U15</Depot>
</SubtotalsInformation>
</Message>
<Message>
<ArticleInformation>
<SmallNormalID>2</SmallNormalID>
<SerialNumbersPerSKU>0</SerialNumbersPerSKU>
</ArticleInformation>
<SubtotalsInformation>
<TaxedFlag>0</TaxedFlag>
<Depot>U15</Depot>
</SubtotalsInformation>
</Message>
</StockLevelReportingExt>
Мне нужно добавить родительский узел, охватывающий все <Messages>
под одним <Messages>
родительским узлом.
Таким образом, полученный xml должен выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<StockLevelReportingExt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Envelope>
<SenderIdentification>USLAX19</SenderIdentification>
</Envelope>
<Messages> // Newly added node
<Message>
<ArticleInformation>
<SmallNormalID>2</SmallNormalID>
<SerialNumbersPerSKU>0</SerialNumbersPerSKU>
</ArticleInformation>
<SubtotalsInformation>
<TaxedFlag>0</TaxedFlag>
<Depot>U15</Depot>
</SubtotalsInformation>
</Message>
<Message>
<ArticleInformation>
<SmallNormalID>2</SmallNormalID>
<SerialNumbersPerSKU>0</SerialNumbersPerSKU>
</ArticleInformation>
<SubtotalsInformation>
<TaxedFlag>0</TaxedFlag>
<Depot>U15</Depot>
</SubtotalsInformation>
</Message>
</Messages>
</StockLevelReportingExt>
Как мне достичь ожидаемого результата? Я попробовал следующий код, чтобы добавить родительский узел к <Message>
, но он не работает.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:ifs="urn:ifsworld-com:schemas:TYPE_SCHEMA_NAME_HERE" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" version="1.0" exclude-result-prefixes="ifs date">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Message">
<xsl:copy>
<xsl:element name="Messages"/>
<xsl:apply-templates select="@* | *"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>