Validieren einer XHTML Datei über den W3C Validator
Steffen Pensel
- xml
Hallo,
versuche mich gerade in XHTML. Kann mir jemand sagen was die Meldung beim validieren über den W3C Validator zu bedeuten hat? Habe ich da ein Problem mit meinem Browser oder ist was am Quelltext falsch?
Note: The HTTP Content-Type header sent by your web browser (unknown) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types (text/xml). The relevant specification (RFC 3023) specifies a strong default of "us-ascii" for such documents so we will use this value regardless of any encoding you may have indicated elsewhere. If you would like to use a different encoding, you should arrange to have your browser send this new encoding information.
Hier der Quelltext:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" />
<title>Footer</title>
</head>
<body>
<h1>test</h1>
</body>
</html>
hi,
Note: The HTTP Content-Type header sent by your web browser (unknown) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types (text/xml). The relevant specification (RFC 3023) specifies a strong default of "us-ascii" for such documents so we will use this value regardless of any encoding you may have indicated elsewhere. If you would like to use a different encoding, you should arrange to have your browser send this new encoding information.
übersetzung in kurzform:
der http-header enthielt keine information über das verwendete charset, also den zeichensatz.
da dein content type aber einer von der "XML text/*"-sorte ist, wird us-ascii als zeichensatz angenommen, da dieser als "strong default" in der spezifikation angegeben ist. deshalb wird dein dokument jetzt unter verwendung dieses charset validiert.
wenn du aber ein anderes verwenden möchtest, dann solltest du dieses entsprechend im header angeben.
so in etwa ...
gruss,
wahsaga
Hallo, Steffen,
versuche mich gerade in XHTML. Kann mir jemand sagen was die Meldung beim validieren über den W3C Validator zu bedeuten hat? Habe ich da ein Problem mit meinem Browser oder ist was am Quelltext falsch?
Note: The HTTP Content-Type header sent by your web browser (unknown) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types (text/xml).
Wieso lieferst du XHTML mit dem MIME-Typ text/xml aus? Empfohlen wäre application/xhtml+xml (http://www.w3.org/TR/xhtml-media-types), angemessen und praktikabel ist text/html (http://www.w3.org/TR/xhtml1/#guidelines).
Bitte eventuell deinen Hosting-Provider, den Webserver so anzupassen, dass Dateien mit der Endung xhtml als application/xhtml+xml ausgeliefert werden (oder benutze .htaccess, siehe unten). Momentan ist es jedoch sowieso nicht ratsam, XHTML als XHTML auszuliefern, stattdessen solltest du dich an die genannten Kompatibilitätsrichtlinien halten. Dazu finden sich einige Diskussionen im Forumsarchiv: http://selfsuche.teamone.de/ (Stichwörter XHTML, text/html, application/xhtml+xml ...).
<?xml version="1.0" encoding="iso-8859-1"?>
Wenn du XHTML als text/html auslieferst, gilt die Regel von XML nicht, dass die Kodierung im XML-Prolog angegeben werden sollte. So oder so solltest du sie möglichst im Content-Type-Header angeben, beispielsweise indem du in eine .htaccess-Datei einträgst:
AddType 'text/html; charset=iso-8859-1' .html
beziehungsweise
AddType 'application/xhtml+xml; charset=iso-8859-1' .xhtml
Mit http://forum.de.selfhtml.org/cgi-bin/http_trace.pl kannst du in Erfahrung bringen, wie der betreffende HTTP-Header letztlich aussieht.
Von der Angabe einer XML-Deklaration in als HTML ausgelieferten XHTML-Dokumenten ist auch aus anderen Gründen abzuraten, Stichwort »doctype switch«, siehe Forumsarchiv und/oder Google.
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" />
Relevant ist der Inhaltstyp, der via HTTP-Header übermittelt wurde. Nur wenn du das Dokument als text/html auslieferst und sonst keine Kodierungsangabe vorhanden ist oder das Dokument anders als über HTTP bezogen wird, ist diese meta-Angabe aufgrund der Kodierungsangabe wichtig.
Mathias
Hi molily,
AddType 'text/html; charset=iso-8859-1' .html
igitt ...
(http://httpd.apache.org/docs/mod/mod_mime.html#addcharset)
Viele Grüße
Michael
AddType 'text/html; charset=iso-8859-1' .html
igitt ...
(http://httpd.apache.org/docs/mod/mod_mime.html#addcharset)
Und das soll besser sein, weil...?
Hallo Björn,
AddType 'text/html; charset=iso-8859-1' .html
igitt ...
(http://httpd.apache.org/docs/mod/mod_mime.html#addcharset)
Und das soll besser sein, weil...?
weil es Semantik modelliert statt Syntax?
Viele Grüße
Michael
AddType 'text/html; charset=iso-8859-1' .html
igitt ...
(http://httpd.apache.org/docs/mod/mod_mime.html#addcharset)
Und das soll besser sein, weil...?weil es Semantik modelliert statt Syntax?
AddCharset modelliert Semantik? Häh?
Hi Björn,
AddType 'text/html; charset=iso-8859-1' .html
igitt ...
(http://httpd.apache.org/docs/mod/mod_mime.html#addcharset)
Und das soll besser sein, weil...?
weil es Semantik modelliert statt Syntax?
AddCharset modelliert Semantik? Häh?
"; charset=" innerhalb des Wertes von AddType ist (HTTP-)Syntax - die innerhalb von AddCharset nicht explizit, sondern implizit generiert wird.
Aber unsere Diskussion ist natürlich reichlich ätherisch und lediglich auf ästhetischer Ebene von Relevanz.
Viele Grüße
Michael
Hallo,
"; charset=" innerhalb des Wertes von AddType ist (HTTP-)Syntax - die innerhalb von AddCharset nicht explizit, sondern implizit generiert wird.
Aber unsere Diskussion ist natürlich reichlich ätherisch und lediglich auf ästhetischer Ebene von Relevanz.
Das denke ich nicht, wenngleich ich es auch für eine Stilfrage halte. Beispielsweise möchte ich diversen Dateiendungen dieselbe Kodierung geben, ohne explizit noch einmal den Inhaltstyp zu nennen - dieser ist bereits richtig in mime.types eingetragen -, und dazu eignet sich AddCharset viel besser. AddType ist dafür unsauber, unelegant und umständlich, von hinten durch die Brust ins Auge. Für die Aufgabe »setze für die Dateiendungen x, y, ... n, die Kodierung k« ist AddCharset zumeist die erste Wahl - in der Aufgabenstellung kommt HTTP-Syntax und der MIME-Typ nicht vor, sie sind auch in keinster Weise nötig oder hilfreich (nun gut, höchstens, wenn man ständig im Blick haben will, welcher MIME-Typ zur Dateiendung gehört). Der Code ist letztlich klarer bzw. »straight«, und besser verständlich, weil eindeutig. Das ist auch einem Anfänger einfacher zu vermitteln.
Grüße,
Mathias
Hi molily,
Der Code ist letztlich klarer bzw. »straight«, und besser verständlich, weil eindeutig. Das ist auch einem Anfänger einfacher zu vermitteln.
danke - so schön hatte ich es nicht formulieren können.
Viele Grüße
Michael
AddType 'text/html; charset=iso-8859-1' .html
igitt ...
(http://httpd.apache.org/docs/mod/mod_mime.html#addcharset)
Und das soll besser sein, weil...?
weil es Semantik modelliert statt Syntax?
AddCharset modelliert Semantik? Häh?"; charset=" innerhalb des Wertes von AddType ist (HTTP-)Syntax - die innerhalb von AddCharset nicht explizit, sondern implizit generiert wird.
Jaa, aber AddLanguage funktioniert nur mit Content-Negotiation. Wenn man die nicht nutzt sehe ich nicht, wie AddType irgendwie "igitt" sein könnte.
versuche mich gerade in XHTML. Kann mir jemand sagen was die Meldung beim validieren über den W3C Validator zu bedeuten hat? Habe ich da ein Problem mit meinem Browser oder ist was am Quelltext falsch?
Mit deinem Browser bzw. der Systemkonfiguration. Wahrscheinlich hat das Dokument eine .xml Endung die auf deinem System text/xml entspricht. Besser wäre es, wenn du dein Betriebsystem so konfigurierst, dass es application/xml für .xml und application/xhtml+xml für .xhtml verwendet. Unter Windows geschieht das über die Registry.