Browser zeigt XML-Dokument nicht an
Onkel Schnitzel
- xml
0 Thomas J.S.0 MudGuard
Hallo,
ich mache gerade die ersten Gehversuche in XML. Jetzt wollte ich mir meine Seite mal als XHTML-Dokument anzeigen lassen, aber der Browser meint, ich habe einen Syntaxfehler in der Adresse.
So sehen die ersten beiden Zeilen meiner Datei (xmlindex.xhtml) aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SYSTEM "-//W3C//DTD XHTML 1.0 Strict//EN" "homepage/xhtml1-strict.dtd">
DOCTYPE html PUBLIC habe ich durch SYSTEM ersetzt, weil ich die Seite nur offline teste und somit die DTD lokal speichern mußte (im Ordner homepage zusammen mit xmlindex.xhtml). War das richtig? Ich vermute, daß das, was danach kommt, irgendwie nicht hinhaut: "-//W3C//DTD....." . Aber ich weiß nicht, was ich stattdessen dort reinschreiben sollte. Ich hoffe, ihr könnt mir helfen.
Schöne Grüße,
Onkel Schnitzel
Hallo,
So sehen die ersten beiden Zeilen meiner Datei (xmlindex.xhtml) aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SYSTEM "-//W3C//DTD XHTML 1.0 Strict//EN" "homepage/xhtml1-strict.dtd">DOCTYPE html PUBLIC habe ich durch SYSTEM ersetzt,
Beim SYSTEM darfst du keine FPI (formal public identitier) angeben, also muss du den Teil "-//W3C//DTD XHTML 1.0 Strict//EN" entfernen.
Grüße
Thomas
Hi,
So sehen die ersten beiden Zeilen meiner Datei (xmlindex.xhtml) aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SYSTEM "-//W3C//DTD XHTML 1.0 Strict//EN" "homepage/xhtml1-strict.dtd">
DOCTYPE html PUBLIC habe ich durch SYSTEM ersetzt,
Beim SYSTEM darfst du keine FPI (formal public identitier) angeben, also muss du den Teil "-//W3C//DTD XHTML 1.0 Strict//EN" entfernen.
AFAIK muß aber der Name des root-Elements trotzdem angegeben werden.
cu,
Andreas
Danke erstmal. Das Problem hab ich jetzt gelöst. Ich hab die "FPI" entfernt und mein root Tag "inhalt" angegeben.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inhalt SYSTEM "homepage/xhtml1-transitional.dtd">
Trotzdem funktionierts nicht so ganz- er sagt jetzt: "Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt."- Ich habe aber eine Steuer-Datei und diese im Kopf auch angegeben:
<link rel="stylesheet" type="text/css" href="optik.css" />
Wieso akzeptiert er die nicht?
Gruß,
Onkel Schnitzel
Hi,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inhalt SYSTEM "homepage/xhtml1-transitional.dtd">
Hm - sehr seltsam - einerseits ein Elementname, der nichts mit (X)HTML zu tun hat, andererseits läßt der Dateiname der DTD darauf schließen, daß das doch XHTML sein soll ...
Trotzdem funktionierts nicht so ganz- er sagt jetzt: "Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt."- Ich habe aber eine Steuer-Datei und diese im Kopf auch angegeben:
<link rel="stylesheet" type="text/css" href="optik.css" />
Bei HTML ist die Bedeutung eines link-Elements bekannt (die Browser haben den HTML-Standard - zumindest einigermaßen - in ihrer internen Logik eingebaut).
Bei einem XML-Dokument ist das aber anders - woher soll der Browser da wissen, daß Dein XML-link-Element soetwas darstellen soll wie das HTML-link-Element?
Hättest Du ein xml-Stylesheet-Element verwendet, sähe das anders aus ...
cu,
Andreas
Ok ich hab nochmal nachgelesen, so ist es wohl richtig:
<?xml-stylesheet type="text/css" href="optik.css"?>
Jetzt hat er zwar nichts mehr zu meckern, aber er zeigts trotzdem nicht richtig an, sondern alles hintereinander. Keine Farben keine Schriftgrößen- nichts. Nur alles hintereinander. Was das nun wieder bedeutet, finde ich hoffentlich morgen heraus. ;-)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inhalt SYSTEM "homepage/xhtml1-transitional.dtd">
»»
Hm - sehr seltsam - einerseits ein Elementname, der nichts mit (X)HTML zu tun hat, andererseits läßt der Dateiname der DTD darauf schließen, daß das doch XHTML sein soll ...
Was meinst Du mit Elementnamen; sicherlich "inhalt" oder? Die Benennung ist nebensächlich dachte ich. Aber wie gesagt, ich fange gerade erst an, mich mit XML vertraut zu machen.
Gute Nacht,
Onkel Schnitzel
Hi,
<?xml-stylesheet type="text/css" href="optik.css"?>
Jetzt hat er zwar nichts mehr zu meckern, aber er zeigts trotzdem nicht richtig an, sondern alles hintereinander. Keine Farben keine Schriftgrößen- nichts. Nur alles hintereinander. Was das nun wieder bedeutet, finde ich hoffentlich morgen heraus. ;-)
Du hast berücksichtigt, daß für HTML/XHTML im Browser ein Default-Stylesheet existiert, für XML aber nicht?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inhalt SYSTEM "homepage/xhtml1-transitional.dtd">
Hm - sehr seltsam - einerseits ein Elementname, der nichts mit (X)HTML zu tun hat, andererseits läßt der Dateiname der DTD darauf schließen, daß das doch XHTML sein soll ...
Was meinst Du mit Elementnamen; sicherlich "inhalt" oder? Die Benennung ist nebensächlich dachte ich.
Natürlich ist in XML die Benennung von Elementen komplett egal.
Aber ich habe das Gefühl, Du gehst davon aus, daß Dein XML vom Browser wie HTML behandelt wird - was selbstverständlich NICHT der Fall ist.
cu,
Andreas
Hi Andreas,
also viel weiter bin ich immer noch nicht. Ich hab jetzt das html-tag noch um diesen Eintrag erweitert: xmlns="http://www.w3.org/1999/xhtml" Dadurch wird das Ganze schon etwas schicker angezeigt- mit Bildern und nach der Dokumentstruktur gegliedert.
Trotzdem bin ich momentan total verwirrt. Ich verstehe immer noch nicht, warum mein Stylesheet nicht verwendet wird. Ich hab bei selfhtml unter anderem diesen Abschnitt gefunden:
Damit die Kombination von XML und CSS funktioniert, müssen im Browser allerdings drei Voraussetzungen erfüllt sein:
1. Der Browser muss XML verarbeiten können.
2. Der Browser muss CSS kennen.
3. Der Browser muss CSS in Verbindung mit XML erlauben.
Erfüllt werden diese Voraussetzungen vom MS Internet Explorer ab der Version 5.0 und von Netscape ab Version 6.0. Dabei ist nicht einmal eine DTD erforderlich. Es genügt, wenn eine wohlgeformte XML-Datei existiert. Die Elemente einer solchen Datei können Sie mit CSS formatieren.
Ich hab den IE 6/Firefox 1.0 , ich habe eine wohlgeformte XML-Datei (glaube ich zumindest, jedenfalls haben die Browser nach diversen Korrekturen nichts mehr zu meckern) und ich habe eine CSS-Datei. Ich verstehe einfach nicht, warums nicht funktioniert. Und dann noch Deine Antwort, die mich vollends verwirrt hat:
Du hast berücksichtigt, daß für HTML/XHTML im Browser ein Default-Stylesheet existiert, für XML aber nicht?
Ich dachte XHTML ist gleich XML. Und hierzu zitiere ich wieder selfhtml: "XHTML 1.0 ist nichts anderes als der Versuch, das SGML-basierte HTML 4.0 mit Hilfe von XML "nachzubauen"......Ich wäre wirklich sehr dankbar, wenn Du oder sonst jemand mir nochmal etwas auf die Sprünge helfen könnte.
Beste Grüße,
Onkel Schnitzel
Hallo,
Ich dachte XHTML ist gleich XML.
Mitnichten!
Und hierzu zitiere ich wieder selfhtml: "XHTML 1.0 ist nichts anderes als der Versuch, das SGML-basierte HTML 4.0 mit Hilfe von XML "nachzubauen"...
Ja, das stimmt ja auch. XML ist eine ganz allgemeine Beschreibungssprache, aus der gemäß den XML-Regeln (und ggf. einer DTD) spezielle Varianten abgeleitet werden können. XHTML ist so eine Variante, eine Anwendung.
So war es möglich, die Beschreibungssprache HTML mit dem allgemeineren XML nachzubilden.
Okay?
Ciao,
Martin
Hallo,
Ich dachte XHTML ist gleich XML.
Im Prinzip ja. Konkret heisst, dass nichts anders, als die Reformatierung von HTML nach einige Regeln von XML.
Eine kleine Erklärung:
http://www.edition-w3c.de/TR/2002/REC-xhtml1-20020801/#heading-1�
Und hierzu zitiere ich wieder selfhtml: "XHTML 1.0 ist nichts anderes als der Versuch, das SGML-basierte HTML 4.0 mit Hilfe von XML "nachzubauen"
Genau.
»»......Ich wäre wirklich sehr dankbar, wenn Du oder sonst jemand mir nochmal etwas auf die Sprünge helfen könnte.
Etwas vereinfacht:
XML ist an sich keine Sprache (also keine wie HTML z.B.). Es gibt in XML keine konkrete Elemente oder Attribute.
Betrachte XML als eine Grammatik, ein Regelwerk, das sagt: "wenn du ein Element schreibst, muss du diese und diese Regel dabei beachten".
Aber XML sagt dir weder wie dein Element benannt werden muss, noch wie es dargestellt werden muss.
HTML dagegen hat konkrte Elemente und Attribute und die Browser haben für HTML eine eingebaute Logik (oder eben Stylesheet), so dass der Browser weiss, wenn ein <h1>-Element kommt, muss er dieses Element so und nicht anderes darstellen. Ebenso beim <img>, da weiss der Browser, dass er ein Bild darzustellen hat.
XHTML kombiniert nur diese zwei Prinzipien.
Also einerseits hat es genu dieselben Elemente und Attribute wie HTML. Es gibt im XHTML keine neuen Elemente etc. Anderseits wendet er die Regel von XML auf diese Elemente an.
D.h. XML sagt: "ein Element muss ein Start-Tag und ein End-Tag haben". War es also noch in HTML möglich ein </p> oder ein </td> wegzulassen, so ist das in XHTML nicht mehr möglich.
Für Browser beutet die Verwendung von XHTML lediglich, dass sie bei der Darstellung der HTML-Elemente in einer XHTML-Seite diese Regel beachten. Nicht mehr.
Bei der Darstellung einer XML-Datei ist es anderes. Da wissen die Browser nicht, wie ein Element dargestellt werden soll, also stellen sie entweder die Baumstruktur der XML-Datei dar, oder den Text-Inhalt der Datei.
Um XML "richtig" dazustellen benötigen die Browser ein Stylesheet. Entweder ein CSS- oder XSLT-Styleheet, wobei XSLT nichts anderes macht, als die Elemente aus dem XML nach HTML zu transformieren.
Wenn du jetzt deine Datei als XML-Datei deklariert:
<?xml version="1.0" encoding="ISO-8859-1"?>
gehen die Browser schon mal davon aus, dass es sich hierbei um eine XML-Datei handelt (deswegen wird auch noch immer empfohlen, dass man die XML-Deklaration aus XHTML-Dokumenten wegläßt).
Und wenn du jetzt auch noch selbsbenannte Elemente verwendets und die Namensraumdeklaration (xmlns="http://www.w3.org/1999/xhtml) wegläßt, ist deine Datei für den Browser wirklich eine XML-Datei. D.h. er kennt nicht mehr die Bedeutung von <img> oder <link>, weil diese in XML keine Bedeutung haben. Sie sind so gut oder so schlecht wie jedes andere beliebige Element.
Dir ist natürlich klar, was du mit <img> oder <link> beabsichtigst, aber so lange du keine Stylesheet in deinem XML (nach XML-Regel!) einbindest, hat der Browser keine Ahnung von dieser Bedeutung.
Das war's auch schon. Wie gesagt, etwas vereinfacht. ;-)
Grüße
Thomas
Hallo,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inhalt SYSTEM "homepage/xhtml1-transitional.dtd">Trotzdem funktionierts nicht so ganz- er sagt jetzt: "Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt."- Ich habe aber eine Steuer-Datei und diese im Kopf auch angegeben:
<link rel="stylesheet" type="text/css" href="optik.css" />
Wieso akzeptiert er die nicht?
Wie gesagt, wenn du <inhalt> als Rootelement hat, geht der Browser davon aus dass es eine XML-Datei ist. Du sollstest <html> als Rootelement haben (wenn deine Datei wirklich eine XHTML-Datei ist).
Grüße
Thomas