Thomas J.S.: XML/XSLT - META-Problem, ENTITY-Problem, allg.

Beitrag lesen

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