Thomas J.S.: Wie mehrfach mit xsl sortieren?

Beitrag lesen

Hallo,

************************************************
<verzeichnisse>
   <verzeichnis>
      <vname>Cordner</vname>
     <file>
         <fname>Datei in C-Ordner</fname>
     </file>
     <verzeichnis>
            <vname>C-Subfolder</vname>
   <file>
       <fname>B-Datei in C-Subfolder</fname>
   </file>
   <file>
       <fname>A-Datei in C-Subfolder</fname>
   </file>
        </verzeichnis>
  </verzeichnis>
  <verzeichnis>
     <name>Xordner</name>
  </verzeichnis>
************************************************

Es gibt also beliebig tief verschachtelte Verzeichnisse, deren Namen im Tag <vname> stehen.

Nicht in deinem XML! (<name>Xordner</name>)

Das ist ein erster Entwurf der Datei "Verzeichnisse.xsl".

<xsl:template match="employee">

Es gibt aber kein solches Elemente in deinem XML. Auch ein kopiertes XSL sollte auf das eigene XML angepasst werden.

Hat jemand einen Tip für mich?

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" />

<xsl:template match="/">
    <xsl:apply-templates select="verzeichnisse/verzeichnis">
     <xsl:sort select="vname" />
    </xsl:apply-templates>
  </xsl:template>

<xsl:template match="verzeichnis">
 [<xsl:value-of select="vname" />]xsl:text&#xA;&#xD;</xsl:text>
 <xsl:apply-templates select="file">
  <xsl:sort select="fname" />
 </xsl:apply-templates>
 <xsl:apply-templates select="child::verzeichnis">
      <xsl:sort select="vname" />
 </xsl:apply-templates>
</xsl:template>

<xsl:template match="file">
 xsl:text&#x9;- </xsl:text><xsl:value-of select="fname" />xsl:text&#xA;&#xD;</xsl:text>
</xsl:template>
</xsl:stylesheet>

Ausgabe mit einem korrigierten XML:
 [Aordner]

[Cordner]
 - Datei in C-Ordner

[C-Subfolder]
 - A-Datei in C-Subfolder
 - B-Datei in C-Subfolder

[Xordner]

Grüße
Thomas