У меня есть ввод XML, который содержит список дочерних узлов XML. Я хочу отделить этот XML на основе дочерних узлов XML. Но при разделении родительские узлы должны быть сохранены. Я пытался использовать for-each, но результат был не таким, как ожидалось.
Введите
<node1>
<id>1</id>
<code>abcd</code>
<version>v1</version>
<node2>
<market>india</market>
<active>true</active>
</node2>
<node2>
<market>US</market>
<active>true</active>
</node2>
<mixins>
<node3>
<ref>MZ-SR-P004</ref>
<type>Commercial</type>
</node3>
</mixins>
</node1>
Ожидаемый результат
<node1>
<id>1</id>
<code>abcd</code>
<version>v1</version>
<node2>
<market>india</market>
<active>true</active>
</node2>
<mixins>
<node3>
<ref>MZ-SR-P004</ref>
<type>Commercial</type>
</node3>
</mixins>
</node1>
<node1>
<id>1</id>
<code>abcd</code>
<version>v1</version>
<node2>
<market>US</market>
<active>true</active>
</node2>
<mixins>
<node3>
<ref>MZ-SR-P004</ref>
<type>Commercial</type>
</node3>
</mixins>
</node1>
Возможно ли это сделать с помощью xslt. Я попробовал приведенное ниже преобразование XSLT
XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="node2">
<xsl:for-each select="node2">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Мой текущий вывод выглядит как ниже
Текущий вывод xml
<?xml version="1.0" encoding="UTF-8"?>
<node1>
<id>1</id>
1
<code>abcd</code>
abcd
<version>v1</version>
v1
<mixins>
<node3>
<ref>MZ-SR-P004</ref>
MZ-SR-P004
<type>Commercial</type>
Commercial
</node3>
<ref>MZ-SR-P004</ref>
MZ-SR-P004
<type>Commercial</type>
Commercial
</mixins>
<node3>
<ref>MZ-SR-P004</ref>
MZ-SR-P004
<type>Commercial</type>
Commercial
</node3>
<ref>MZ-SR-P004</ref>
MZ-SR-P004
<type>Commercial</type>
Commercial
</node1>
<id>1</id>1
<code>abcd</code>abcd
<version>v1</version>v1
<mixins>
<node3>
<ref>MZ-SR-P004</ref>MZ-SR-P004
<type>Commercial</type>Commercial
</node3>
<ref>MZ-SR-P004</ref>MZ-SR-P004
<type>Commercial</type>Commercial
</mixins>
<node3>
<ref>MZ-SR-P004</ref>MZ-SR-P004
<type>Commercial</type>Commercial
</node3>
<ref>MZ-SR-P004</ref>MZ-SR-P004
<type>Commercial</type>Commercial