XML-Know How

Auf Knotenwerte zugreifen

Bislang haben wir lediglich die Struktur der Daten verändert (XMLHTML), ohne jedoch eine Auswahl einzelner Elemente vorzunehmen oder die Reihenfolge zu verändern. Das wollen wir nun in den nächsten Schritten tun.

Für den gezielten Zugriff auf Inhalte einzelner Tags wird das <xsl:value-of>-Element mit dem Attribut select verwendet. Die Reihenfolge der <xsl:value-of select=...>-Elemente im Template steuert die Reihenfolge der Ausgabe, d. h. die Sequenz, nach der die Inhalte in den Ergebnisbaum kopiert werden.

Gibt man einen Elementnamen als Attributwert von select an, so wird der Inhalt des angegebenen Elements ausgewählt und im Ergebnisbaum wiedergegeben (allerdings ohne die ggf. darin auftretenden Inhalte von Unterelementen!).

Neben dem Inhalt eines Elements lässt sich nach dem gleichen Prinzip auch auf dessen Namen oder seine Attributwerte zugreifen: Möchte man auf Attributwerte eines Elements im Quellbaum zugreifen, so lautet die entsprechende Syntax select="ELEMENTNAME/@ATTRIBUTNAME".

Durch die Funktion name () als Attributwert von select würde der Name des Elements (nur den Name, ohne umschließende Spitzklammern) ausgegeben, das bei der übergeordneten Funktion match ausgewählt wurde. (Diese Funktion ist nicht Bestandteil des nachfolgenden Beispiel-Skripts)

<xsl:template match="PERSON">
    <xsl:value-of select="NAME"/>
    <xsl:value-of select="WOHNORT"/>
    <xsl:value-of select="WOHNORT/@Land"/>
</xsl:template>

Dieses Stylesheet erzeugt bezogen auf unsere Musterinstanz folgendes Ergebnis:

<?xml version="1.0" encoding="UTF-8"?>
MonteroHeidelbergDeutschlandOttTübingenDeutschland

Es fällt auf, dass das hier erzeugte Fragment über keine Trennzeichen verfügt. Um diese einzufügen, existiert das <xsl:text>-Element, dessen Inhalt einen beliebigen String in den Ergebnisbaum kopiert. So ist es auch möglich, Leerzeichen einzufügen. Ein Beispiel hierfür finden Sie auf Seite 14.