André Laugks: xsl:sort

Beitrag lesen

Hallo!

Mhhhh, sehe ich den Wald vor lauter XSL-Bäumen nicht mehr?

Folgendes XML-Dokument soll sortiert werden.

<liste>
 <eintrag>
  <name>Sandra C.</name>
 </eintrag>
 <eintrag>
  <name>Alex</name>
 </eintrag>
 <eintrag>
  <name>Michael Z.</name>
 </eintrag>
 <eintrag>
  <name>Ernst</name>
 </eintrag>
 <eintrag>
  <name>Dominic</name>
 </eintrag>
 <eintrag>
  <name>Evelyne</name>
 </eintrag>
 <eintrag>
  <name>Joukje</name>
 </eintrag>
 <eintrag>
  <name>Therese</name>
 </eintrag>
 <eintrag>
  <name>Lars</name>
 </eintrag>
</liste>

Dazu habe ich dieses XSL-Template geschrieben.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes"/>
 <xsl:template match="/liste">
  <html>
   <body>
    <table border="1">
     <xsl:apply-templates select="eintrag"/>
    </table>
   </body>
  </html>
 </xsl:template>

<xsl:template match="eintrag">
   <xsl:for-each select="name">
   xsl:sort/
    <tr>
     <td><xsl:value-of select="."/></td>
    </tr>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet>

xsl:sort/ sollte den aktuelle Kontextknoten 'name', für die Sortierung auswählen. Mir wird die Reihenfolge im XML-Dokument ausgegeben. Ich habe es im select-Attribut schon mit dem absoluten Pfad versucht, was auch nicht wollte.

Mit dem folgenen XSL-Template bekomme ich es richtig sortiert, also aussteigent.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes"/>
 <xsl:template match="/liste">
  <html>
   <body>
    <table border="1">
     <xsl:apply-templates select="eintrag/name">
     xsl:sort/
     </xsl:apply-templates>
    </table>
   </body>
  </html>
 </xsl:template>

<xsl:template match="name">
    <tr>
     <td><xsl:value-of select="."/></td>
    </tr>
 </xsl:template>
</xsl:stylesheet>

MfG, André Laugks
L-Andre @ gmx.de