Hallo,
Hallo ich habe ein Problem mit XSLT.
Vorweg, ich will wissen, warum für den Ausdruck orginal nicht der Wert aus dem Entity eingefügt wird, warum er, wenn ich META-Angaben mache sagt, dass sie ENTITIES sein müssen und warum <xsl:element name="title"><xsl:value-of select="@titel" /></xsl:element> nicht angewendet wird?!
Wer sagt die all diese Dinge? (XML-Parser, XSLT-Prozessor bitte angeben!)
Ich hoffe mal ihr könnt mir da weiterhelfen!!!
Ich habe mir diesen Code geschrieben:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE maschine SYSTEM "dtd/welcome.dtd">
<?xml-stylesheet type="text/xsl" href="xsl/welcome.xsl"?><welcome titel="Eisenbahnclub Leinefelde e.V.">
Hier ist dein erster Fehler: du gibst mit "<!DOCTYPE maschine" nicht nur den Name der DTD bekannt, aber auch den Namen des Wurzelelements. Demnach müsste dein Wurzelelement "maschine" heissen und nicht "welcome".
<!NOTATION png PUBLIC '-//TEI//NOTATION IETF RFC2083 Portable Network Graphics//EN'>
<!ENTITY orginal SYSTEM "./graphics/logo-orginal.png" NDATA png>
<!ATTLIST logo
quelle ENTITY #REQUIRED
alternative CDATA #REQUIRED<logo quelle="orginal" alternative="Eisenbahnclub Leinefelde e.V." />
Man kann natürlich binäre Daten mit Hilfe von DTD-Notations in XML-Dateien referenzieren, aber diese Möglichkeit stellt (bisher leider) nur einen generellen anstz dar. D.h. XML-Anwendungen können, müssen aber nicht die binäre Datei einbinden.
Du kannst es also direkt so machen:
<logo quelle="./graphics/logo-orginal.png" ...>.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output media-type="text/html" method="html" />
<xsl:template match="/">
<html>
<head>
<xsl:element name="title"><xsl:value-of select="@titel" /></xsl:element>
Hier wird @titel nicht eingefügt, weil du ein match auch "/" d.h. auf den Wurzelknoten machst und das ist in XSLT nicht mit dem Wurzelelement identisch.
(http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm#knotentypen_achsen_pfade)
Du kannst/musst hier also <xsl:template match="/welcome"> bzw. <xsl:template match="/maschine"> verwenden.
Grüße
Thomas