PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XHTML- Nur wie?


Nase
2003-12-21, 17:26:17
Hi,

ich habe da ein kleines Problem. Und zwar möchte ich mir nun mal vernünftiges XHTML aneignen, doch scheitert es schon am einfachsten Test.
Ich habe mir den Artikel von Selfhtml (http://selfhtml.teamone.de/html/xhtml/unterschiede.htm) bzgl. der Unterschiede zwischen HTML und XHTML durchgelesen. Wenn ich nun aber einen Code schreibe, ihn als .xhtml speichere und mit dem Internet Explorer starte, wird nur diese Baumstruktur (Elementübersicht) angezeigt. Auch wenn ich den Code der Beispieldateien übernehme, ändert sich nichts, obwohl das Skript von Selfhtml online ohne Probleme läuft. Zudem habe ich versucht, die benutzten Elemente per CSS zu formatieren, wie hier [1] beschrieben, doch auch dies nützt nichts.
Kann mir jemand sagen, was ich falsch mache und wie ich den Stylesheet definieren muss?


[1]:
Bei der Darstellung XML-geparster, fehlerfreier XHTML-Dokumente ohne CSS oder andere Stylesheets reagieren die Browser unterschiedlich. Netscape 6.x zeigt das Dokument wie ein HTML-Dokument an, also mit den voreingestellten Darstellungen etwa für Überschriften, Textabsätze, Listen, Tabellen usw. Der Internet Explorer stellt solche Dokumente dagegen als reine Element-Baumstruktur dar. Erst wenn Sie die verwendeten Elemente mit CSS Stylesheets formatieren, zeigt der Internet Explorer das Dokument in nicht-schematischer Form an.

huha
2003-12-21, 17:35:17
Hast du den Doctype auch richtig angegeben?

-huha

Nase
2003-12-21, 17:47:21
Wie gesagt, ich hab es genauso wie in den Beispielen gemacht, und da funktioniert es ja.

.ash
2003-12-21, 18:51:20
Zugegeben, hatte eigentlich von xhtml nicht so viel gehalten aber nachdem ich mal etwas genauer in die Materie geschaut habe find ich es doch ganz lustig :)



Also, hab mal auch das Bsp. nachgemacht:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "codec/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Wenn HTML zu XHTML wird</title>
</head>
<body>
<h1><a name="Start" id="Start">Wenn HTML zu XHTML wird</a></h1>
<p>Dann m&uuml;ssen alle Elemente mit Inhalt ein End-Tag haben.</p>
<p>Leere Elemente<br />
m&uuml;ssen einen Schr&auml;gstrich am Ende haben.</p>
<hr noshade="noshade" />
<p>Leere Attribute erhalten ihren eigenen Namen als Wert zugewiesen.</p>
<p><a href="#Start">Verweise zu Ankern</a> springen zum Zielelement
aufgrund des id-Attributs, nicht das name-Attributs.</p>
<script type="text/javascript" src="zeitstempel.js"></script>
<!-- so ist das mit den Scripts am sichersten -->
</body>
</html>


Die Fett markierte Zeile ist wichtig. Dieses 32kb große zip laden und in nem Extra-Ordner entpacken und die DTD's offline laden lassen. Sonst müsste eine Internetverbindung bestehen und selbst dann hatte es bei mir auch nicht gefunzt.


btw. habe das ganze mit dem Apache probiert. Ohne dem funzte das nicht so recht.

btw #2. habe Mozilla Firebird 0.7

Nase
2003-12-21, 18:56:59
Die Zeile hab ich ja insofern abgeändert, dass auf "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" verlinkt wird. So wie es einige Beispiel vorher erklärt wurde.
Mit dem Apache funktioniert das auch nicht so recht, habe ich schon ausprobiert.

Endorphine
2003-12-21, 21:22:04
Das Problem ist einfach, dass sich der MSIE von XML-Deklaration verwirren lässt und er sich bei Dokumenten, die nicht von einem Webserver kommen an der Dateiendung festbeisst, obwohl das ja genau genommen vollkommener Unfug ist, da man mit dem IE ja schon das "richtige" Programm zugeordnet hat, wenn dieser es zu fressen bekommt.

Entweder die XML-Deklaration weglassen (sehr schlechte Idee) oder einfach die Dateiendung wie gehabt auf ".html" setzen und dazu den content type über ein Metatag angeben: <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" /> Dann rendert der MSIE auch Offline XHTML-Seiten anstandslos.

Das W3C konnte sich (wohl wegen der Probleme mit der XML-Deklaration bei vielen Browsern) nicht dazu durchringen, die XML-Deklaration zwingend vorzuschreiben. Sie wird nur sehr vehement empfohlen: An XML declaration is not required in all XML documents; however XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required when the character encoding of the document is other than the default UTF-8 or UTF-16 and no encoding was determined by a higher-level protocol. Eben aus Gründen der Zeichenkodierung. Und alles mit UTF-8 zu kodieren halte ich nicht für sinnvoll, ISO-8859-1 ist verbreiteter, passt perfekt auf deutschen Inhalt und macht viel weniger Probleme in der Praxis als UTF-8.

Übrigens hättest du die Frage gar nicht erst gestellt, sondern hättest sie dir selbst beim lesen der XHTML 1.0 Norm beantworten können. ;) Quelle für nachfolgendes Zitat (http://www.w3.org/TR/xhtml1/#C_1) Processing Instructions and the XML Declaration
Be aware that processing instructions are rendered on some user agents. Also, some user agents interpret the XML declaration to mean that the document is unrecognized XML rather than HTML, and therefore may not render the document as expected. For compatibility with these types of legacy browsers, you may want to avoid using processing instructions and XML declarations. Remember, however, that when the XML declaration is not included in a document, the document can only use the default character encodings UTF-8 or UTF-16.

Der korrekte Media Type (http://www.w3.org/TR/xhtml-media-types/#summary) ist übrigens auch eine Wissenschaft für sich. Ich würde derzeit "text/html" empfehlen, für die Praxis das einzig praktikable, wenn man nicht im HTTP-Server eine UA-Weiche implementiert.

HTH.

Edit: Ergänzung: die DTD auf eine lokale Definition umzubiegen halte ich für eine sehr schlechte Idee, da die Browser damit entscheiden, wie die Seite gerendert wird. Mit einer vom Standard abweichenden DTD kann es passieren, dass der Browser die Seite falsch rendert (Quirks mode statt standard compliance mode oder gar nur parse tree wie in diesem Fall) und man meint, Fehler gemacht zu haben.

Nase
2003-12-21, 21:28:47
Naja, ich habe halt darauf vertraut, dass Selfhtml weiss, was es macht ;). Danke für deine Antwort, so funktioniert es auf jedenfall.

Endorphine
2003-12-21, 21:30:25
Sinnvoller ist es natürlich, keine Workarounds für den MSIE zu schaffen, sondern das Problem an der Wurzel zu packen und auf einen Mozilla oder auf Opera umzusteigen. :bäh:

Nase
2003-12-21, 21:31:56
Ich habe sowohl Opera als auch Mozilla bei mir auf dem Rechner. Aber irgendwie kann ich mich noch nicht so recht vom IE trennen...

Endorphine
2003-12-21, 21:37:32
Original geschrieben von Nase
Ich habe sowohl Opera als auch Mozilla bei mir auf dem Rechner. Aber irgendwie kann ich mich noch nicht so recht vom IE trennen... Naja, bei den täglichen Horrormeldungen zu neuen Sicherheitsproblemen ist es schon fast verantwortungslos und fatalistisch, sich damit online zu bewegen...

Ganz "trennen" sollte man sich vom MSIE aber imho nicht. Schon allein deshalb, weil man ihn dringend als Testobjekt für die eigenen Seiten braucht und er auch genügend Eigenarten hat, die es zu umschiffen gilt. Beim MSIE kann es sich kein Webautor derzeit leisten, Seiten nicht auf ihm zu testen und bei Fehlern anzupassen. Wobei mir Renderprobleme des MSIE beim Offlinebetrachten egal wären. Die Seiten sollten online korrekt dargestellt werden. Wenn der Seitenbesucher diese dann einfach lokal speichert liegt es in seiner eigenen Verantwortung, einen Browser zu verwenden, der XML richtig behandelt imho.

Nase
2003-12-21, 21:49:08
Original geschrieben von Endorphine
Naja, bei den täglichen Horrormeldungen zu neuen Sicherheitsproblemen ist es schon fast verantwortungslos und fatalistisch, sich damit online zu bewegen...
Na, so schlimm ist es auch wieder nicht. Vorallem da ich mein System täglich auf neue Updates und Hotfixes überprüfen lasse. Dazu kommt eine Firewall plus ein Router. Da sollte man es sich erlauben können, den IE einzusetzen :D