"name"-Attribut für Bilder aus XML lesen
jorux
- xsl
0 André Laugks0 Thomas J.S.0 jorux0 jorux0 Thomas J.S.0 jorux
Hallo,
noch ne Frage: In einem XML-Dokument verwende ich das Element <abc name="xyz" />. Das funktioniert auch alles gut. Jetzt möchte ich mit XSL dafür sorgen, dass bei der Ausgabe in HTML an der betreffenden Stelle ein Bild eingefügt wird: <img src"bild.gif" border="0" name="xyz" />.
Wie kann ich dafür sorgen, dass der Browser beim Parsen das "xyz" aus dem Element ausliest und in die Bild-Adresse einfügt?
Gruss
Hallo!
noch ne Frage: In einem XML-Dokument verwende ich das Element <abc name="xyz" />. Das funktioniert auch alles gut. Jetzt möchte ich mit XSL dafür sorgen, dass bei der Ausgabe in HTML an der betreffenden Stelle ein Bild eingefügt wird: <img src"bild.gif" border="0" name="xyz" />.
Wie kann ich dafür sorgen, dass der Browser beim Parsen das "xyz" aus dem Element ausliest und in die Bild-Adresse einfügt?
Über Attribute Value Template:
z.B:
<xsl:template match="abs">
<img src"bild.gif" border="0" name="{@name}" />
</xsl:template>
oder über
xsl:attribute (http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#attribute).
MfG, André Laugks
Danke,
Über Attribute Value Template:
z.B:
<xsl:template match="abc">
<img src"bild.gif" border="0" name="{@name}" />
</xsl:template>
funktioniert nicht... Zwar wird die Grafik angezeigt, aber ohne das "name"-Attribut.
Auch mit folgender Funktion bin ich gescheitert
<xsl:template match="abc">
<img src="start.gif" border="0">
<xsl:attribute name="name">123</xsl:attribute>
<xsl:value-of select="." />
</img>
</xsl:template>
Dabei sollte dabei nicht einmal der Wert von "name" übernommen werden...
Hat jemand noch einen Tipp?
Hallo,
noch ne Frage:
Hast du noch keine gestellt. Ah so ... unter einem anderen Namen.
Bitte versuche dich auf einen Namen mir dir selbst zu einigen. Das Hilft uns und dir.
Grüße
Thomas
PS: zu einer Frage:
-------------------------------
<xsl:template match="abc">
<img src"bild.gif" border="0" name="{@name}" />
</xsl:template>
funktioniert nicht... Zwar wird die Grafik angezeigt, aber ohne das "name"-Attribut.
-------------------------------
Es funktioniert schon. Poste bitte dein echtes XML und XSL für das <img>.
Sorry, musste gestern abend weg und komme erst jetzt dazu, meine Anfrage nochmals zu konkretisieren...
Hast du noch keine gestellt. Ah so ... unter einem anderen Namen.
Bitte versuche dich auf einen Namen mir dir selbst zu einigen. Das Hilft uns und dir.
klar doch... ich bleibe bei jorux
Es funktioniert schon. Poste bitte dein echtes XML und XSL für das <img>.
Aber gerne, hier ein Beispiel:
Ich habe folgende Datei "a.xml":
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="meine.xsl"?>
<!DOCTYPE dfr SYSTEM "meine.dtd">
<meine>
<anfang><start name="xyz" />blablabla.</anfang>
</meine>
In der "meine.dtd" steht dazu:
<!ELEMENT meine (anfang | start*)) >
<!ELEMENT anfang (#PCDATA) >
<!ELEMENT start EMPTY >
<!ATTLIST start name CDATA #REQUIRED >
Die "meine.xsl" lautet:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:strip-space elements="meine"/>
<xsl:output
method="xml"
indent="yes"
encoding="iso-8859-1"/>
<xsl:template match="meine">
<html>
<head>
<title>Titel</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<table align="center" cellpadding="10pt" cellspacing="0pt" border="0" width="90%">
xsl:apply-templates/
<tr>
<td colspan="2" bgcolor="navy" height="50pt">
<div class="mikl">Stand der Bearbeitung: 04/2004<br />
Dieses Dokument wurde mit XSLT aus einer XML-Datei erzeugt.</div>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="anfang">
<tr><td>
xsl:apply-templates/
</td></tr>
</xsl:template>
<xsl:template match="start">
<a href="http://www.abc.de">
<xsl:template match="abc">
<img src"bild.gif" border="0" name="{@name}" />
</xsl:template>
</xsl:stylesheet>
So, und wo ist jetzt der Fehler?
Hallo,
<anfang><start name="xyz" />blablabla.</anfang>
In der "meine.dtd" steht dazu:
<!ELEMENT meine (anfang | start*)) >
<!ELEMENT anfang (#PCDATA) >
Das ist schon ab da eigentlich ungültig.
anfang kann laut deiner DTD nur 'PCDATA enthalten, du hast darin aber PCDATA _und_ ein <start>.
<xsl:template match="start">
<a href="http://www.abc.de">
<xsl:template match="abc">
<img src"bild.gif" border="0" name="{@name}" />
</xsl:template>
</xsl:stylesheet>
Du kannst in einem xsl:template keine weitere xsl:template definieren. Auserdem ist es zusätzlich falsch verschachtelt: wo ist das End-Tag vom </a>? Wo ist das End-Tag vom 2. xsl:template ?
So, und wo ist jetzt der Fehler?
So, überall. Würde ich sagen. ;-)
Grüße
Thomas
DANKE
es hat doch geklappt. Ich hatte nur eine Klammer falsch gesetzt. Warum die DTD funktioniert, weiss ich auch nicht, aber sie tut... Die "start"-Elemente werden angezeigt...
Gruss
Hallo,
Warum die DTD funktioniert, weiss ich auch nicht, aber sie tut... Die "start"-Elemente werden angezeigt...
Versuche deine XML zu validieren, dann wird es nicht mehr "funktionieren". ;-)
Grüße
Thomas
Versuche deine XML zu validieren, dann wird es nicht mehr "funktionieren". ;-)
Habe ich gemacht, Fehler gefunden und behoben... Danke für die Tipps.
Habe noch eine Frage ins Forum gestellt. Vielleicht hast Du ja auch darauf eine Antwort... Ist vermutlich ganz einfach...
Gruss und Dank