Einzelnen Beitrag anzeigen

StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: XML / XSLT Reihenfolge definieren.

  Alt 4. Dez 2006, 10:32
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]
  Mit Zitat antworten Zitat