Einführung in XSLT Teil IV

Varianten

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.

 

Copyright & Kontakt
jcpohl@gmx.de
© www.jcpohl.de 1999/2000