Ich versuche, einen Knoten zu einem anderen Elternknoten zu kopieren und ändern Sie den Stamm der XML-Ausgabe, die ich bekommen werde.XSLT kopieren und ändern Eltern
XML Input:
<root version="2">
<address>
<id>300000001</id>
<name>Test</name>
<owner>
<code>NWE</code>
</owner>
<magazin>
<id>300000001</id>
<kind>
<code>JU</code>
</kind>
<storage>
<kinds>
<code>JUc</code>
</kinds>
<capacity>5800</capacity>
</storage>
<extra>
<extra name="nr">22</extra>
</extra>
</magazin>
</address>
</root>
gewünschte Ausgabe:
<tag>
<root version="2">
<address>
<id>300000001</id>
<name>Test</name>
<owner>
<code>NWE</code>
</owner>
</address>
</root>
<root version="2">
<magazin>
<id>300000001</id>
<kind>
<code>JU</code>
</kind>
<storage>
<kinds>
<code>JUc</code>
</kinds>
<capacity>5800</capacity>
</storage>
<extra>
<extra name="nr">22</extra>
</extra>
</magazin>
</root>
</tag>
Grundsätzlich möchte ich den Knoten "Magazin" bekommen kopieren Sie sie in einem anderen "root" -Tag, getrennt von der ersten, und plazieren Sie all diese Ausgabe unter dem Tag namens "tag". Mein XSL scheint nur zu kopieren und Im gehofft, dass Sie mir helfen, herauszufinden, was fehlt und wie richtig verwenden ..
Aktuelle XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="magazin">
<root version='2'>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</root>
</xsl:template>
Vielen Dank für Ihre Hilfe!
Die Ausgabe, die Sie uns zeigen, ist nicht wohlgeformtes XML (hat mehr als ein Wurzelelement). Bist du sicher, dass du das willst? –
@ michael.hor257k danke, der Code wurde nicht korrekt eingefügt. das root-tag ist "TAG" und es hat 2 elemente "root" -> ich habe es jetzt korrigiert – user3529643