XHTML-kompatibel, aber nicht HTML 4.01-kompatibel?
Haefti
- html
0 Haefti0 Christoph Schnauß0 Haefti
0 MudGuard
Hallo!
Ich habe ein Dokument, welches XHTML 1.0 (Strict)-kompatibel ist, aber nicht HTML 4.01 (Strict)-kompatibel. Manchmal finde ich den W3C-Validator ohnehin etwas seltsam, aber das hat mich nun doch etwas gewundert. Folgender Output des Validators:
-----------------------
Line 6, column 53: character data is not allowed here
<meta name="author" content="Michael Brückner" />
You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include putting text directly in the body of the document without wrapping it in a container element (such as a <p>aragraph</p>) or forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes).
-----------------------
Offensichtlich stört ihn der Slash, der aber zur XHTML-Kompatibilität notwendig ist. Beim "<br />"-Tag stört sich der Validator ja auch nicht oder muss ich damit leben, dass es beim "<meta>"-Tag keine Schreibweise für beide Versionen gibt?
Vielen Dank schon mal!
Haefti
Habe eben in der FAQ des Validators die Antwort gefunden (http://validator.w3.org/docs/help.html#faq-linkandmeta):
----------------------
HTML is based on SGML and uses an SGML feature (called SHORTTAG) (note that this is not the case with XHTML).
With this feature enabled, the "/" in <link ... /> or <meta ... /> already closes the link (or meta) tag, and the ">" becomes some regular text, which is not allowed in the <head> element. Since </head><body> is optional in HTML (again, not in XHTML), it is silently inserted, thus head-only elements like meta and style as well as "</head>" and "<body>", which may appear only once, become false.
----------------------
Gibt also wohl keine Möglichkeit, mit Meta-Tags gleichzeitig HTML 4.01 und XHTML-kompatibel zu arbeiten.
Ciao!
Haefti
hallo,
<meta name="author" content="Michael Brückner" />
Das ist XHTML und sollte beim Validator durchgehen. Aber es ist eben nicht HTML. In HTML müßtest du schreiben:
<meta name="author" content="Michael Brückner">
Also ohne den Slash und ohne das Leerzeichen davor. Dann sollte auch das (mit der entsprechenden DOCTYPE-Deklaration) beim Validator durchgehen. Es muß ja wohl noch ein paar Unterschiede zwischen XHTML und HTML geben, gelle? Daher ist es eigentlich unmöglich, daß ein HTML-Dokument gleichzeitig XHTML wie auch HTML und auch noch validatortauglich sein kann.
Wenn du allerdings per DOCTYPE angibst, daß du HTML schreiben wirst und dann diese Vorgabe selber brichst, indem du XHTML-Syntax schreibst - ja was soll der Validator denn anderes machen als dir nen Vogel zu zeigen?
Grüße aus Berlin
Christoph S.
Hi!
<meta name="author" content="Michael Brückner" />
Das ist XHTML und sollte beim Validator durchgehen.
Tut es auch.
Aber es ist eben nicht HTML. In HTML müßtest du schreiben:
<meta name="author" content="Michael Brückner">
Also ohne den Slash und ohne das Leerzeichen davor. Dann sollte auch das (mit der entsprechenden DOCTYPE-Deklaration) beim Validator durchgehen.
Habe ich ja auch so beschrieben.
Es muß ja wohl noch ein paar Unterschiede zwischen XHTML und HTML geben, gelle?
Nicht zwingend. HTML könnte z.B. auch nur eine Untermenge von XHTML sein wie XML dies von SGML ist. (Ich weiß, dass dem aber nicht so ist!)
Außerdem war Abwärtskompatibiltät ja durchaus ein Ziel der XHTML-Spezifikation.
Daher ist es eigentlich unmöglich, daß ein HTML-Dokument gleichzeitig XHTML wie auch HTML und auch noch validatortauglich sein kann.
Würde ich mal nicht behaupten. Ohne die META-Tags trifft das bei meinem Dokument z.B. zu.
Wenn du allerdings per DOCTYPE angibst, daß du HTML schreiben wirst und dann diese Vorgabe selber brichst, indem du XHTML-Syntax schreibst - ja was soll der Validator denn anderes machen als dir nen Vogel zu zeigen?
Naja, so gemein ist er zu mir nun auch nicht. ;-)
Ciao!
Haefti
hallo,
Es muß ja wohl noch ein paar Unterschiede zwischen XHTML und HTML geben, gelle?
Nicht zwingend.
Doch.
HTML könnte z.B. auch nur eine Untermenge von XHTML sein
Könnte, ist es aber nicht.
Daher ist es eigentlich unmöglich, daß ein HTML-Dokument gleichzeitig XHTML wie auch HTML und auch noch validatortauglich sein kann.
Würde ich mal nicht behaupten. Ohne die META-Tags trifft das bei meinem Dokument z.B. zu.
Dann hast du weder <br> noch <img> drin in deiner Seite
Grüße aus Berlin
Christoph S.
Dann hast du weder <br> noch <img> drin in deiner Seite
Damit nicht genug, auch kein <hr>, <link> oder <input>
Gruß
Avalon
Hi!
Dann hast du weder <br> noch <img> drin in deiner Seite
Damit nicht genug, auch kein <hr>, <link> oder <input>
Wie kommt ihr denn darauf?
<br /> und <img /> sind XHTML-konform und werden ebenso nicht vom HTML 4.01-Valdator angemeckert.
Ciao!
Haefti
hallo haefti,
<br /> und <img /> sind XHTML-konform und werden ebenso nicht vom HTML 4.01-Valdator angemeckert.
Warum das so ist, hat dir Andreas (MudGuard) bereits erläutert. <br /> ist deswegen noch lange nicht zulässiges Bestandteil von HTML.
Grüße aus Berlin
Christoph S.
Hi,
Offensichtlich stört ihn der Slash, der aber zur XHTML-Kompatibilität notwendig ist.
Wegen SHORTTAG=YES in HTML 4.01 beendet der / das tag, das > ist freier Text.
Im Head-Element ist kein freier Text erlaubt.
Beim "<br />"-Tag stört sich der Validator ja auch nicht
An den Stellen, an denen br (oder auch img) erlaubt ist, ist auch freier Text erlaubt, also stört sich der Validator an dem Text > nicht.
Ein korrekter Browser müßte das > anzeigen!
Nur weil die meisten Browser mit den SHORTTAG-Sachen eh nicht zurechtkommen, wird das > nicht angezeigt.
Bei XHTML (bzw. XML) ist SHORTTAG auf NO gesetzt - also beendet der / hier das Tag nicht.
oder muss ich damit leben, dass es beim "<meta>"-Tag keine Schreibweise für beide Versionen gibt?
Es gibt für beide Versionen eine Schreibweise - aber diese sind nicht identisch. Da ist nichts dran zu machen.
cu,
Andreas