Schleifen
Eine Schleife wird in XSLT dazu verwendet, einen bestimmten Vorgang für alle Knoten innerhalb eines Knotensets (Reihe
von Knoten) zu wiederholen. Stellen Sie sich vor, Sie haben ein XML-Datei mit dem Element zahlen
, welchem
mehrere Elemente mit dem Namen zahl
untergeordnet sind. Nun wollen Sie diese Zahlenliste in eine HTML-Liste
übersetzen. Für die Abarbeitung dieser Zahlenliste könnten Sie nun eine Schleife verwenden, um somit jede Zahl in einem
li
-Element zu platzieren. Eine Schleife zeichnet sich durch das Element for-each
aus. Mit dem
Attribut select
wird ein Knotenset bzw. ein Pfad spezifiziert. Hier der Code für das vorher erwähnte Beispiel
mit der Zahlenliste:
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml-stylesheet href="schleife.xsl" type="text/xsl" ?> <zahlen> <zahl>45</zahl> <zahl>39</zahl> <zahl>22</zahl> <zahl>70</zahl> <zahl>68</zahl> <zahl>12</zahl> <zahl>51</zahl> <zahl>63</zahl> <zahl>27</zahl> <zahl>94</zahl> </zahlen>
XSLT-Code:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Schleife - XSLT Code-Beispiel</title> <meta charset="utf-8" /> <meta name="robots" content="noindex,nofollow" /> <meta name="publisher" content="Homepage-Webhilfe" /> </head> <body> <ul> <xsl:for-each select="/zahlen/zahl"> <li><xsl:value-of select="." /></li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet>
Falls Sie schon etwas mit XSLT experimentiert haben oder Sie sich noch genau an unsere Erklärung zu Templates erinnern, werden Sie bemerken, dass das obige Beispiel sich auch ohne Schleife und stattdessen mit Templates realisieren lässt. Der Code würde dann wie folgt aussehen:
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml-stylesheet href="schleife-template.xsl" type="text/xsl" ?> <zahlen> <zahl>45</zahl> <zahl>39</zahl> <zahl>22</zahl> <zahl>70</zahl> <zahl>68</zahl> <zahl>12</zahl> <zahl>51</zahl> <zahl>63</zahl> <zahl>27</zahl> <zahl>94</zahl> </zahlen>
XSLT-Code:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Schleifen-Alternative - XSLT Code-Beispiel</title> <meta charset="utf-8" /> <meta name="robots" content="noindex,nofollow" /> <meta name="publisher" content="Homepage-Webhilfe" /> </head> <body> <xsl:apply-templates /> </body> </html> </xsl:template> <xsl:template match="zahlen"> <ul> <xsl:apply-templates /> </ul> </xsl:template> <xsl:template match="zahl"> <li><xsl:value-of select="." /></li> </xsl:template> </xsl:stylesheet>
Benötige ich dann gar keine Schleifen? Prinzipiell gesehen, können Schleifen immer durch die Template-Technik ersetzt werden, in einigen Fällen ist jedoch die Verwendung von Templates wesentlich umständlicher. Vorteile von Templates sind jedoch die Wiederverwendbarkeit sowie der klare Verlauf bei der Abarbeitung der XML-Daten (von Template, zu Template, zu Template, ...). Schleifen haben hingegen den Vorteil, dass sie in XSLT-Dokumenten vom Programmierer leichter gelesen werden können. Dies ist vor allem von Vorteil, wenn Ihr XSLT-Dokument sehr komplex ist. Letzten Endes ist es natürlich auch wieder „Geschmackssache“. Im Allgemeinen ist jedoch die Verwendung von Templates in XSLT zu bevorzugen.