OK. Ich glaube ich hab's jetzt selbst gelöst.
Basierend auf meinem ursprünglichen Ansatz mache ich nun folgendes:
XML-Code:
<?
xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ebeneA | @* ">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="ebeneB1" />
<xsl:apply-templates select="ebeneB3" />
<xsl:apply-templates select="ebeneB2" />
</xsl:copy>
</xsl:template>
<xsl:template match="ebeneB2 | ebeneB2/* | @* ">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ebeneB1 | ebeneB1/* | @* ">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ebeneB3 | ebeneB3/* | @* ">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Damit erhalte ich aus:
XML-Code:
<ebeneA att1="1">
<ebeneB2 att4="1">
<ebeneD att5="1">Hallo</ebeneD>
</ebeneB2>
<ebeneB3 att2="1">
<ebeneC att3="1"/>
</ebeneB3>
<ebeneB1 att2="1">
<ebeneC att3="1"/>
</ebeneB1>
</ebeneA>
dieses Ergebnis (das damit in der gewünschten Reihenfolge ist und in dem trotzdem alle Knoten enthalten sind):
XML-Code:
<ebeneA att1="1">
<ebeneB1 att2="1">
<ebeneC att3="1"/>
</ebeneB1>
<ebeneB3 att2="1">
<ebeneC att3="1"/>
</ebeneB3>
<ebeneB2 att4="1">
<ebeneD att5="1">Hallo</ebeneD>
</ebeneB2>
</ebeneA>
Gibt es Kritik oder Hinweise zu diesem Ergebnis? Wie gesagt: Ich bin hier "Neuling" und noch sehr unsicher.
Gruß und vielen Dank für die Beiträge,
StTüff
[edit=Christian Seehase]Editiert, damit der Code wieder angezeigt wird. Mfg, Christian Seehase[/edit]