www.xml-xslt.de


Startseite

Das Buch

Auszeichnungssprachen

XML-Dokument

Struktur: dtd

Retrieval: XSLT
Grundbegriffe
Daten selektieren
Vorlagen anlegen
Vorlagen aufrufen
Elementinhalte ausgeben
Attributinhalte ausgeben
Pfadangaben

9.2.2    Vorlagen aufrufen

In einer Vorlage können die Vorlagen für die folgenden Kindelemente oder andere Kind-elemente aufgerufen werden. Dieser Aufruf wird durch das Element <xsl:apply-templates/> durchgeführt; dieses Element wird hier zunächst als leeres Element genutzt.
    Das folgende Beispiel besagt, dass:

-    die Vorlage für die Dokumentwurzel gelten soll.
-    für alle Kindelemente der Dokumentwurzel die jeweils passenden Vorlagen gefun-den und dann angewandt werden sollen.

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>


Diese Vorlage würde auf das folgende Beispiel angewandt eine Suche nach Vorlagen für den Knoten buecher auslösen.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="books.xsl"?>
<buecher>
    <buch kategorie="referenzwerk">
        <autor>Doug Tidwell</autor>
        <titel>XSLT. XML-Dokumente transformieren</titel>
        <preis waehrung="€">40</preis>
    </buch>
    <buch kategorie="belletristik">
        <autor>Nicola Dixen</autor>
        <titel>Linvarna</titel>
        <preis waehrung="DKK">215,75</preis>
    </buch>
    <buch kategorie="belletristik">
        <autor>Herman Melville</autor>
        <titel>Moby Dick</titel>
        <preis  waehrung="$">8.99</preis>
    </buch>
    <buch kategorie="belletristik">
        <autor>J. R. R. Tolkien</autor>
        <titel>The Lord of the Rings</titel>
        <preis waehrung="$">22.99</preis>
    </buch>
</buecher>


Damit ist eine Erweiterung des Stylesheets um eine Vorlage für diesen Knoten buecher sinnvoll:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet   version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="buecher">
    <xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>


Diese Vorlage sucht zunächst alle Vorlagen für die Kindelemente der Dokumentwurzel. Dabei wird die Vorlage für buecher aufgerufen. Diese Vorlage enthält wiederum nur ein Kommando, nämlich die Aussage, dass für alle Kindelemente die entsprechenden Vorla-gen gefunden werden sollen.
    Im Element <xsl:apply-templates> können aber auch statt aller Kindelemente einzelne Kindelemente aufgerufen werden. Zu diesem Zweck wird das Element <xsl:apply-templates> um ein Attribut select erweitert, das den Namen der Kindelemente enthält, für die nach eigenen Vorlagen gesucht werden sollen. Alle anderen, nichtgenannten Kindelemente werden ausgelassen und quasi bei der weiteren Bearbeitung des Quelldokuments ver-gessen. Im folgenden Dokument werden für buch nicht mehr die Vorlagen für alle vorhan-denen Kindelemente aufgerufen. Statt dessen wird lediglich eine Vorlage für das Kind-element autor aufgerufen. Alle anderen Elemente sind somit im Zieldokument nicht mehr vorhanden.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet   version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="buecher">
            <xsl:apply-templates/>
</xsl:template>
<xsl:template match="buch">
      <xsl:apply-templates select="autor"/>
</xsl:template>
</xsl:stylesheet>


Hier setzt bereits die Auswahlfunktion von XSLT ein, indem nur bestimmte Knoten ange-zeigt werden, während andere Knoten im Zieldokument nicht mehr auftauchen. - Auch die Nennung mehrerer Kindelemente ist hier möglich. Die Syntax dieser Schreibweise wird im Kapitel zu XPath behandelt.


 
 
 
 
 
 
 
 
 
 

Das XML/XSLT-Seminar
(zur Zeit als Buch nicht lieferbar)