xsl:template und Pfad
André Laugks
- xsl
0 Marko0 Thomas J.S.
Hallo!
So, ich habe mich mal wieder mit XSLT befasst und bin auf folgende Sache gestoßen. Als Beispiel nehme ich die XML-Datei (Fahrplan) von http://selfhtml.teamone.de/xml/darstellung/css.htm#fahrplanbeispiel.
<!-- Anfang: XSLT-Datei -->
<?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="/fahrplan">
<html>
<body>
<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>
</body>
</html>
</xsl:template>
<xsl:template match="bahnhof/ereignis/abfahrt">
xsl:value-of select="zeit"/><br/>
</xsl:template>
</xsl:stylesheet>
<!-- Ende: XSLT-Datei -->
Wieso wird mir die Zeit ausgegeben?
Auch mit
<xsl:template match="ereignis/abfahrt">
<xsl:value-of select="zeit"/><br/>
</xsl:template>
wird mir die Zeit ausgegeben.
MfG, André Laugks
Hallo André,
aus welchem Grund erwartest Du denn, dass die Zeit nicht ausgegeben wird ?
Gruss
Marko
Hallo!
aus welchem Grund erwartest Du denn, dass die Zeit nicht ausgegeben wird ?
Vielleicht übersehe ich es, aber wieso kann ich mit <xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>, <xsl:template match="bahnhof/ereignis/abfahrt"> und <xsl:template match="ereignis/abfahrt"> ansteuern?
Ich hätte nur <xsl:template match="abfahrt"> erwartet? Kann ich es ansteuern weil "bahnhof/ereignis/abfahrt" oder "ereignis/abfahr" in der Pfadreihenfolge her stimmt und jeweils am Ende anfahrt steht und wird somit das richtige Template gefunden?
Weil sobald ich "<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>" entferne, geht es nicht mehr.
Keine Ahnung, mir ist das heute das erste mal aufgefallen.
<xsl:template match="/fahrplan">
<html>
<body>
<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>
</body>
</html>
</xsl:template>
<xsl:template match="bahnhof/ereignis/abfahrt">
.
.
.
<xsl:template match="ereignis/abfahrt">
.
.
.
MfG, André Laugks
Hallo André,
<!-- Anfang: XSLT-Datei -->
<?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="/fahrplan">
<html>
<body>
<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>
</body>
</html>
</xsl:template><xsl:template match="bahnhof/ereignis/abfahrt">
xsl:value-of select="zeit"/><br/>
</xsl:template></xsl:stylesheet>
<!-- Ende: XSLT-Datei -->Wieso wird mir die Zeit ausgegeben?
Auch mit
<xsl:template match="ereignis/abfahrt">
<xsl:value-of select="zeit"/><br/>
</xsl:template>wird mir die Zeit ausgegeben.
Irgendwie verstehe ich deine Frage nicht:
Die Zeit würde dir auch mit
<xsl:template match="abfahrt">
ausgegeben, denn du holst die Templates mit
<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>
hättest du
<xsl:apply-templates select="bahnhof/ereignis/abfahrt[@id = 'bla']"/> angegeben, würde dir nichts erscheinen.
Grüße
Thomas
Hallo Thomas!
Irgendwie verstehe ich deine Frage nicht:
Die Zeit würde dir auch mit
<xsl:template match="abfahrt">
ausgegeben, denn du holst die Templates mit
<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>
hättest du
<xsl:apply-templates select="bahnhof/ereignis/abfahrt[@id = 'bla']"/> angegeben, würde dir nichts erscheinen.
<xsl:template match="/fahrplan">
<html>
<body>
<xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>
</body>
</html>
</xsl:template>
<!-- Nr 1. -->
<xsl:template match="bahnhof/ereignis/abfahrt">
<xsl:value-of select="zeit"/><br/>
</xsl:template>
<!-- Nr 2. -->
<xsl:template match="ereignis/abfahrt">
<xsl:value-of select="zeit"/><br/>
</xsl:template>
<!-- Nr 3. -->
<xsl:template match="abfahrt">
<xsl:value-of select="zeit"/><br/>
</xsl:template>
</xsl:stylesheet>
Ich bekomme jeweils mit Template Nr. 1-3 die Zeit ausgegeben. Für mich ist nur Nr. 3 logisch. Das ist das ich gerade nicht verstehe, wieso ich mit Template Nr. 1 und Nr. 2 auch die Zeit bekomme.
MfG, André Laugks
Hallo André,
Das ist das ich gerade nicht verstehe, wieso ich mit Template Nr. 1 und Nr. 2 auch die Zeit bekomme.
------------------------
Vielleicht übersehe ich es, aber wieso kann ich mit <xsl:apply-templates select="bahnhof/ereignis/abfahrt"/>, <xsl:template match="bahnhof/ereignis/abfahrt"> und <xsl:template match="ereignis/abfahrt"> ansteuern?
------------------------
Genau deshalb:
------------------------
Kann ich es ansteuern weil "bahnhof/ereignis/abfahrt" oder "ereignis/abfahr" in der Pfadreihenfolge her stimmt und jeweils am Ende anfahrt steht und wird somit das richtige Template gefunden?
------------------------
Der Pfad ist richtig und es wird das richtige Element "abfahrt" gefunden.
Grüße
Thomas
Hallo!
Der Pfad ist richtig und es wird das richtige Element "abfahrt" gefunden.
So habe ich mir das auch schon gedacht, aber man kann sich ja auch manchmal was schön interpretieren.
MfG, André Laugks