dave: Verständnisproblem bei Validator-Fehlermeldungen

Hi,

was ist an folgendem HTML invalide?

<!doctype html>  
<html class="no-js" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml" xmlns:sf="http://www.example.com">  
<head>  
	<meta charset="utf-8" />  
  
	<title>Foo</title>  
</head>  
<body>  
  
</body>  
</html>

Der Validator auf w3.org sagt:
Line 1, Column 2: Not a name start character, U+21
<!doctype html>

Was bedeutet das?

Dieser Validator sagt, dass die ganzen Attribute die Namespaces verwenden falsch sind.
Ich dachte das liegt evtl. an der fehlenden XML-Deklaration.

Aber wenn ich <?xml version="1.0" encoding="UTF-8" ?> vor den Doctype setze kommt nur:
Error: Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML. (XML processing instructions are not supported in HTML.)

Und im Anschluss wieder die Fehler bezüglich der Attribute mit Namespace…

Was ist falsch?

~dave

  1. Moin Moin!

    Hi,

    was ist an folgendem HTML invalide?

    <!doctype html>

    <html class="no-js" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml" xmlns:sf="http://www.example.com">
    <head>
    <meta charset="utf-8" />

    <title>Foo</title>
    </head>
    <body>

    </body>
    </html>

    
    >   
    > Der [Validator auf w3.org](http://validator.w3.org) sagt:  
    > Line 1, Column 2: Not a name start character, U+21  
    > <!doctype html>  
    >   
    > Was bedeutet das?  
      
    Das dem Validator das Unicode-Zeichen 21 in der zweiten Spalte der ersten Zeile nicht gefällt. Das dürfte nach meiner alten ASCII-Tabelle das Ausrufezeichen sein.  
      
    Ursache ist vermutlich, dass der Validator dort `<!DOCTYPE ...>`{:.language-html} erwartet, nicht `<!doctype ...>`{:.language-html}. Letzteres interpretiert er als kaputtes Tag, das fälschlicherweise mit einem Ausrufezeichen beginnt.  
      
    Alexander
    
    -- 
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    
  2. Hallo,

    <!doctype html>

    </html>

    
    >   
    > Der [Validator auf w3.org](http://validator.w3.org) sagt:  
    > Line 1, Column 2: Not a name start character, U+21  
    > <!doctype html>  
    >   
    > Was bedeutet das?  
      
    ein Fehler im experimentellen Validator für HTML5:  
    Wird doctype groß geschrieben, d.h. als "DOCTYPE", validiert Dein Code.  
      
    Dies steht im Widerspruch zum derzeitigen Working Draft für HTML5, unter [8.1.1 DOCTYPE](http://www.w3.org/TR/2011/WD-html5-20110525/syntax.html#the-doctype) kann man nachlesen:  
      
    <zitat>  
    A DOCTYPE must consist of the following components, in this order:  
    1) A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".  
    [...]  
    </zitat>  
      
    Was Dir wichtiger ist, musst Du selbst entscheiden.  
      
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. Om nah hoo pez nyeetz, Vinzenz Mai!

      ein Fehler im experimentellen Validator für HTML5:
      Wird doctype groß geschrieben, d.h. als "DOCTYPE", validiert Dein Code.

      <!doctype html>
      <html class="no-js">
      <head>
        <meta charset="utf-8">
        <title>Foo</title>
      </head>
      <body>
      </body>
      </html>

      validiert auch. Der Fehler ist also komplexer.

      Matthias

      --
      1/z ist kein Blatt Papier.

      1. @@Matthias Apsel:

        nuqneH

        <!doctype html>
        <html class="no-js"> […]
        validiert auch. Der Fehler ist also komplexer.

        Das legt die Vermutung nahe, dass bei Vorhandensein von @xmlns="http://www.w3.org/1999/xhtml" auf polyglottes HTML5 geprüft wird, welches auch als XHTML5 verarbeitet werden kann.

        XML verlangt die Großschreibung. [XML]

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Das legt die Vermutung nahe, dass bei Vorhandensein von @xmlns="http://www.w3.org/1999/xhtml" auf polyglottes HTML5 geprüft wird, welches auch als XHTML5 verarbeitet werden kann.

          Das W3C hat in seinem Validator etwas um Validator.nu herumgecodet und delegiert die letztliche Validierung an diesen Webservice.

          Wenn man den direkt ansteuert, kann ich obige Heuristik nicht beobachten. Die direkte Auswahl zwischen HTML5 und XHTML5 hat man unter http://validator.nu/

          http://html5.validator.nu/ verwendet automatisch das HTML5-Preset, in dem <!doctype html><html xmlns="http://www.w3.org/1999/xhtml"> natürlich valide ist.

          Wieder einmal lehrt uns das: Den W3C-Validator hinsichtlich HTML5 zu vergessen. Diese Heuristik verwirrt mehr, als sie weiterhilft. Zumal der W3C-Validator nirgendwo darauf hinweist, dass er gerade automatisch in den XHTML5-Modus gesprungen ist.

          Mathias

          1. @@molily:

            nuqneH

            Wieder einmal lehrt uns das: Den W3C-Validator hinsichtlich HTML5 zu vergessen.

            Man kann die Sache aber auch andersrum betrachten. Wieder einmal lehrt uns das: HTML5 hinsichtlich bestehender Standards zu vergessen. Warum führt HTML5 die case-insensitive Schreibweise ein, die es vorher nicht gab?

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. Warum führt HTML5 die case-insensitive Schreibweise ein, die es vorher nicht gab?

              Es gab sie vorher, die Browser akzeptieren sie bereits als Äquivalent. Die Frage ist, warum diese Toleranz nicht nur in die Spezifikation des liberalen Parsers geflossen ist, sondern auch in die normative Sprachbeschreibung. Vermutlich der Einfachheit und Konsistenz halber, denn Element- und Attributnamen sind ebenfalls case-insensitive. Der Sinn des kurzen Docypes ist eben, dass man sich nicht mehr viel merken muss.

              Mathias

    2. Hi,

      Was Dir wichtiger ist, musst Du selbst entscheiden.

      Groß zu schreiben kost' ja in dem Fall nichts, und tut auch nicht weh.
      Und bevor eventuell noch irgendein veralteter Browser wegen so einem Kleinkram in den Quirks Mode abdriftet(?), würde ich es einfach groß schreiben, Standard und nur fälschlicherweise Kleinschreibung anmeckernder Validator hin oder her.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?