W3C Validierungsfehler bei XHTML Strict
Christian
- html
0 Cheatah0 Daywalker1 Orlando0 Gunnar Bittersmann
Hallo,
Beim validieren meiner Website entsteht folgender Fehler. Leider kann ich nicht so richtig nachvollziehen was hier genau nicht stimmt, anscheinend soll es ein Problem mit dem "<" Zeichen geben, doch das Skript funktioniert in sich Fehlerfrei und gibt auch keine Fehler zurück. Woran kann das liegen?
.... hier mal die W3C Fehlerausgabe (XHTML 1.0 Strict):
Below are the results of checking this document for XML well-formedness and validity.
1. Warning Line 35 column 22: character "<" is the first character of a delimiter but occurred as data.
for(var i = 0; i < datalist.length; i++ )
This message may appear in several cases:
* You tried to include the "<" character in your page: you should escape it as "<"
* You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&", which is always safe.
* Another possibility is that you forgot to close quotes in a previous tag.
✉
2. Warning Line 60 column 24: character "<" is the first character of a delimiter but occurred as data.
for(var i = 0; i < datalist_selected.length; i++ )
✉
3. Warning Line 90 column 24: character "<" is the first character of a delimiter but occurred as data.
for(var i = 0; i < datalist_selected.length; i++ )
✉
4. Error Line 101 column 20: there is no attribute "oncontextmenu".
oncontextmenu='datalist_context_showcontextmenue(this); return false;'
Vielen Dank schonmal!
MFG Chriz
Hi,
Beim validieren meiner Website entsteht folgender Fehler. Leider kann ich nicht so richtig nachvollziehen was hier genau nicht stimmt, anscheinend soll es ein Problem mit dem "<" Zeichen geben, doch das Skript funktioniert in sich Fehlerfrei
der Validator interessiert sich nicht für JavaScript. Er sieht nur HTML[1]. Und aus HTML-Sicht hast Du dort offenbar erst einmal einen PCDATA-Bereich - was bedeutet, dass "<" ein Sonderzeichen ist, welches der Einleitung eines Tags dient, und kodiert werden muss. Da das für das Schreiben von JavaScript-Code nicht wirklich sinnbehaftet ist, erstelle dort einfach einen CDATA-Bereich.
4. Error Line 101 column 20: there is no attribute "oncontextmenu".
Nun, das ist dann wohl klar: Du benutzt ein Attribut, welches es nicht gibt. Lösche es also.
Cheatah
[1] Okay, SGML. Macht nix.
Leider kann ich nicht so richtig nachvollziehen was hier genau nicht stimmt, anscheinend soll es ein Problem mit dem "<" Zeichen geben, doch das Skript funktioniert in sich Fehlerfrei und gibt auch keine Fehler zurück. Woran kann das liegen?
Das < ist innerhalb von Javascript genutzt. Aber Javascript wird vom Validator wie ganz normaler Seitentext interpretiert, deshalb haben alle Zeichen dort natürlich ihre HTML-Sonderbedeutung (sofern sie eine haben). < hat jedenfalls eine: Anfang eines HTML-Tags.
Lösung: Entweder du klammerst den JS-Code als HTML-Kommentar aus, oder setzt ihn als CDATA-Bereich.
Hallo,
…du klammerst den JS-Code als HTML-Kommentar aus
Dann könnte das JavaScript aber nicht mehr ausgeführt werden, wenn die Datei als application/xhtml+xml geparst wird…
Die 2. Lösung ist also zu bevorzugen.
mfg. Daniel
Hallo,
Die 2. Lösung ist also zu bevorzugen.
Sofern möglich ist das Auslagern des Skriptes am ehesten zu bevorzugen ;)
Gruß;
Hello out there!
…du klammerst den JS-Code als HTML-Kommentar aus
Dann könnte das JavaScript aber nicht mehr ausgeführt werden, wenn die Datei als application/xhtml+xml geparst wird…
?? Warum sollte das so sein? Entfernt ein Server denn XML-Kommentare, bevor er die Ressource zum Client schickt?
Die 2. Lösung ist also zu bevorzugen.
Natürlich. Und was Daniel unreg sagte.
See ya up the road,
Gunnar
Hallo,
…du klammerst den JS-Code als HTML-Kommentar aus
Dann könnte das JavaScript aber nicht mehr ausgeführt werden, wenn die Datei als application/xhtml+xml geparst wird…
?? Warum sollte das so sein? Entfernt ein Server denn XML-Kommentare, bevor er die Ressource zum Client schickt?
Nein, aber der Client ignoriert sie. Wenn du mir nich glauben willst, schau dir mal mein Beispiel an.
Die 2. Lösung ist also zu bevorzugen.
Natürlich. Und was Daniel unreg sagte.
Je nach Situation. Manchmal bevorzuge ich es auch, Seiten komplett als einzelne Datei zu speichern (ohne Bilder natürlich). Falls es sich um mehrere Seiten handelt, sollte man JS und CSS aber auslagern.
mfg. Daniel
…du klammerst den JS-Code als HTML-Kommentar aus
Dann könnte das JavaScript aber nicht mehr ausgeführt werden, wenn die Datei als application/xhtml+xml geparst wird…
?? Warum sollte das so sein? Entfernt ein Server denn XML-Kommentare, bevor er die Ressource zum Client schickt?
Nein, aber der Client ignoriert sie. Wenn du mir nich glauben willst, schau dir mal mein Beispiel an.
"Im Erfolgsfall wird ein JS-alert ausgegeben", aber bei mir erscheint kein Alert. (FF 2.0.0.1 Linux, Javascript aktiviert)
dumm gelaufen
meint
der netzGnom
Hallo,
"Im Erfolgsfall wird ein JS-alert ausgegeben", aber bei mir erscheint kein Alert. (FF 2.0.0.1 Linux, Javascript aktiviert)
Mit „Erfolgsfall“ meinte ich, dass das Script auch ausgeführt wird, wenn es sich in einem HTML-Kommentar befindet. Ich hätte mich wohl genauer ausdrücken sollen :-|
dumm gelaufen
Nö. Das war pure Absicht ;-)
meint
der netzGnom
Wenn du meinst ;-)
mfg. Daniel
Mit „Erfolgsfall“ meinte ich, dass das Script auch ausgeführt wird, wenn es sich in einem HTML-Kommentar befindet. Ich hätte mich wohl genauer ausdrücken sollen :-|
Jetzt mal langsam für mich zum mitschreiben:
Erfolgsfall == Anzeige Alertchen, oder?
Ergo hätte doch trotz der Kommentare ein Alert erscheinen sollen. Offenbar zog es das Scriptchen vor, nicht ausgeführt zu werden.
dumm gelaufen
kann so ohne weiteres nicht widerrufen werden.
meint
der netzGnom
Hallo,
Mit „Erfolgsfall“ meinte ich, dass das Script auch ausgeführt wird, wenn es sich in einem HTML-Kommentar befindet. Ich hätte mich wohl genauer ausdrücken sollen :-|
Jetzt mal langsam für mich zum mitschreiben:
Erfolgsfall == Anzeige Alertchen, oder?
Ja, aber der „Erfolgsfall“ ist in diesem Fall nicht das, was ich demonstrieren wollte.
Ergo hätte doch trotz der Kommentare ein Alert erscheinen sollen.
Nein. Genau *das* ist einer der großen Unterschiede zwischen XHTML und HTML. Dort wird nicht zwischen „Kommentar befindet sich in Style/Script“ und „Kommentar befindet sich irgendwo anders“ unterschieden.
Elementnamen interessieren den Parser, der den Code zu einem DOM-Baum umwandelt, nicht. Und das ist eigentlich auch gut so.
Offenbar zog es das Scriptchen vor, nicht ausgeführt zu werden.
Kannst du irgend einen Fehler erkennen oder liefert dir Firefox eine Fehlermeldung?
dumm gelaufen
kann so ohne weiteres nicht widerrufen werden.
Ich habe den Text im Beispiel noch mal überarbeitet. Vielleicht ist er jetzt etwas passender ;-)
mfg. Daniel
Ich habe den Text im Beispiel noch mal überarbeitet. Vielleicht ist er jetzt etwas passender ;-)
ich habe doch schon Buße getan. :-) Mein Hirn arbeitet durch zuviel krank darniederliegend nicht einwandfrei. :-)
tut kund
der netzGnom
Hallo,
Ich habe den Text im Beispiel noch mal überarbeitet. Vielleicht ist er jetzt etwas passender ;-)
ich habe doch schon Buße getan. :-)
Dein Posting kam zu spät ]:-|
mfg. Daniel
Kommando zurück. Du hast ja die Nichtanzeige behauptet.
meint
der leicht verwirrte netzGnom
1. Warning Line 35 column 22: character "<" is the first character of a delimiter but occurred as data.
for(var i = 0; i < datalist.length; i++ )
Siehe <http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style@title=HTML/XHTML Unterschied: Inhalt von Script- und Style-Bereichen>
4. Error Line 101 column 20: there is no attribute "oncontextmenu".
oncontextmenu='datalist_context_showcontextmenue(this); return false;'
Das ist kein HTML-Attribut gemäß W3C, sondern eine Erfindung von Microsoft, die der Validator natürlich nicht kennt.
Roland
Hello out there!
1. Warning Line 35 column 22: character "<" is the first character of a delimiter but occurred as data.
http://forum.de.selfhtml.org/archiv/2007/2/t145618/#m945043
4. Error Line 101 column 20: there is no attribute "oncontextmenu".
Selbsterklärend.
See ya up the road,
Gunnar