Schauen wir uns das Beispiel noch einmal detailliert an und betrachten wir dabei die Funktionsweisen der beiden verwendeten XSLT-Befehle näher. Würden wir unser Suchmuster anstatt auf ITEM auf "/" setzen, so würden wir ohne den zweiten Befehl <xsl:apply-templates/> eine leere Seite zur Anzeige bekommen, denn dann wäre das Element PLAYLIST von unserem Suchmuster erfaßt worden und nur PLAYLIST ohne dass <xsl:apply-templates/> die folgenden Knoten durchsucht hätte.
Sähe unser Stylesheet hingegen so aus
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet>
so würden als Ergebnis alle Daten des XML-Dokuments extrahiert, denn <xsl:apply-templates/> würde alle Kindelemente des Rootelements PLAYLIST herausfiltern.
Ein im Ergebnis identisches Suchresultat ließe sich erzielen, indem wir <xsl:template match="ITEM"> beibehalten und <xsl:apply-templates/> ebenso: dann würde unsere Suche eben auf der Ebene des ITEM Knotens starten.
Weitere Suchmuster
Eine weitere Möglichkeit das identische Suchresultat zu erzielen wäre:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"> <xsl:template match="ITEM/*"> </xsl:template> </xsl:stylesheet>
Durch den Stern als Wildcard würde auf der Ebene des aktuellen Knotens sämtliche folgenden Kindelemente herausgefiltert.
Suche mit oder
Suchmuster mit oder könnten im Befehl <xsl:template match=""/> folgendermaßen dargestellt werden:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"> <xsl:template match="ITEM/ARTIST | ITEM/ALBUM"> </xsl:template> </xsl:stylesheet>
Hier würden also alle Elemente ARTIST oder ALBUM herausgefiltert, die direkte Kindelemente des Knotens ITEM sind. Würde man diese Transformation durchführen ohne weitere Logik zu implementieren, so wäre das Ergebnis:
Monkey gone to heaven Gimme your love Büsum
Da die Logik dieser oder-Bedingung nicht klar war, selektiert die Maschine das verbleibende Element SONG.
Ein identisches Ergebnis würde folgender Befehl liefern:
<xsl:template match="ARTIST | ALBUM">
Hier würde jedoch im Gegensatz zu oben nicht geprüft, ob diese Elemente Kindelemente des Knotens ITEM sind.