Auf Attribut zugreifen, ohne <xsl:attribute>
Andr㩠augks
- xsl
0 MudGuard0 Andr㩠augks0 BjHann
Hallo!
Ich habe gelesen, daß ich folgendermaßen auf ein Attribut eines Elementes zugreifen kann.
----------- attr.xml -------------
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="attr.xsl" type="text/xsl"?>
<adressen>
<name id="1">Otto</name>
<name id="5">Manfred</name>
</adressen>
----------- attr.xsl -------------
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/adressen">
<html>
<body>
xsl:apply-templates/
</body>
</html>
</xsl:template>
<xsl:template match="name">
{@id}<br/>
</xsl:template>
</xsl:stylesheet>
Ich bekomme aber
<html>
<body>
{@id}<br/>
{@id}<br/>
</body>
</body>
angezeigt.
XSLT-Prozessor: Saxon 6.5 Instant
MfG, André Laugks
L-Andre @ gmx.de
Hi,
<xsl:template match="name">
<xsl:value-of select="@id"/><br/>
</xsl:template>
Andreas
Hallo!
Ja, Danke, funktioniert!
<xsl:value-of select="@id"/><br/>
Von xsl:value-of stand da aber nichts.
Da werde ich doch mal direkt bei dem Autor nachfragen. Da stand das so, wie ich es probiert habe, also nur {@id}.
MfG, André Laugks
L-Andre @ gmx.de
<xsl:value-of select="@id"/><br/>
Von xsl:value-of stand da aber nichts.
Da werde ich doch mal direkt bei dem Autor nachfragen. Da stand das so, wie ich es probiert habe, also nur {@id}.
Das verwechselst du mit Attributwert-Vorlagen, innerhalb eines Ergebnisbaumfragments kannst du innerhalb von Attributwerten mittels geschweiften Klammern dafür sorgen, dass der Attributinhalt als Vorlage statt als fixe Zeichenkette interpretiert wird, also
<xhtml:a href = '{@src}'>...</xhtml:a>
würde den Wert des src-Attributs des Kontextknotens in den Wert des href-Attributs des a-Elements im Zielbaum kopieren, das ist die Alternative zu xsl:attribut, damit hättest du schreiben müssen
xhtml:a
<xsl:attribute name = 'href'>
<xsl:value-of select = '@src' />
</xsl:attribute>
...
</xhtml:a>
was vor allem bei vielen Attributen schnell unlesbar wird.
Hallo!
Das verwechselst du mit Attributwert-Vorlagen, innerhalb eines Ergebnisbaumfragments kannst du innerhalb von Attributwerten mittels geschweiften Klammern dafür sorgen, dass der Attributinhalt als Vorlage statt als fixe Zeichenkette interpretiert wird, also
<xhtml:a href = '{@src}'>...</xhtml:a>
Genau, und dafür suche ich ein funktionstüchtiges Beispiel. Ich will mir das einfach mal kompieren und ausprobieren.
Ich finde xsl:attribute unübersichtlich, wenn man mehrere Attribute hat.
MfG, André Laugks
L-Andre @ gmx.de
Hallo Andre,
<xhtml:a href = '{@src}'>...</xhtml:a>
Genau, und dafür suche ich ein funktionstüchtiges Beispiel. Ich will mir das einfach mal kompieren und ausprobieren.
Kapitel 6.
Grüße
Thomas
---------
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="Kap6-03.xsl" type="text/xsl"?>
<spielplan>
<bild>
<name>Friedrich Schiller</name>
<quelle>../img/schiller.jpg</quelle>
</bild>
<eintrag>
<titel url="http://www.gutenberg.net/raeuber.html">Die Räuber</titel>
<autor>Friedrich Schiller</autor>
<premiere>17.09.2002</premiere>
<ausverkauft/>
</eintrag>
<eintrag>
<titel url=" http://www.gutenberg.net/faust.html">Faust</titel>
<autor>Johann Wolfgang Goethe</autor>
<premiere>20.10.2002</premiere>
</eintrag>
<eintrag>
<titel url=" http://www.gutenberg.net/sommernachtstraum.html">Ein Sommernachtstraum</titel>
<autor>William Shakespeare</autor>
<premiere>02.11.2002</premiere>
</eintrag>
<eintrag>
<titel url=" http://www.gutenberg.net/krug.html">Der zerbrochene Krug</titel>
<autor>Heinrich von Kleist</autor>
<premiere>17.12.2002</premiere>
<ausverkauft/>
</eintrag>
</spielplan>
------------------
<?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="/">
<html>
<head>
<title>Spielplan Theater Fridolin</title>
</head>
<body>
<h1>Spielplan</h1>
<img src="{spielplan/bild/quelle}" alt="{spielplan/bild/name}" border="0"/><br/><br/>
<table border="1">
<tr>
<th>Titel</th>
<th>Autor</th>
<th>Premiere</th>
</tr>
<xsl:apply-templates select="spielplan/eintrag"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="eintrag">
<tr>
xsl:apply-templates/
</tr>
</xsl:template>
<xsl:template match="autor | premiere">
<td>xsl:apply-templates/</td>
</xsl:template>
<xsl:template match="titel">
<td>
<a>
<xsl:attribute name="href">
<xsl:value-of select="@url"/>
</xsl:attribute>
xsl:apply-templates/
</a>
</td>
</xsl:template>
</xsl:stylesheet>