Christian: W3C Validierungsfehler bei XHTML Strict

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 "&lt;"
          * You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&amp;", 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

  1. 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.

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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.

    1. 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

      1. Hallo,

        Die 2. Lösung ist also zu bevorzugen.

        Sofern möglich ist das Auslagern des Skriptes am ehesten zu bevorzugen ;)

        Gruß;

      2. 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

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
        1. 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

          1. …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

            1. 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

              1. 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

                1. 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

                  1. 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

                    1. 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

              2. Kommando zurück. Du hast ja die Nichtanzeige behauptet.

                meint
                der leicht verwirrte netzGnom

                --
                 
  3. 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

    --
    -)
  4. 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

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)