Kalle_B: Validator bemängelt <input ..>

Hallöle,

W3C- Validator:
Line 49 column 56: document type does not allow element "INPUT" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag.

<input type='hidden' name='kennwort'     value='' />

Verstehe ich nicht. Es geht um diese URL:
http://www.aktivferien.de/tm3/v3/tm_manager.php

Bis bald, Kalle

  1. Line 49 column 56: document type does not allow element "INPUT" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag.

    http://de.selfhtml.org/html/formulare/definieren.htm#bereich

  2. Hallo Kalle,

    die Fehlermeldung ist in der Tat etwas unverständlich. Aber mit etwas Nachdenken klappt das trotzdem.

    Line 49 column 56: document type does not allow

    Überprüfe deinen Dokumententyp. Du wirst:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> finden.

    element "INPUT" here;
          <input type='hidden' name='kennwort'     value='' />

    An welcher Stelle zeigt der Validator den Fehler an?
    Es ist das />

    Wie sieht ein leeres Element in HTML 4.0, und wie in XHTML 1.0 aus?
    Wie sieht der jeweils passende Dokumententyp aus?

    Viele Grüße,

    Jochen

    --
    Heute schon gescribbelt?
    Scribbleboard
    1. Hi,

      die Fehlermeldung ist in der Tat etwas unverständlich. Aber mit etwas Nachdenken klappt das trotzdem.

      Offensichtlich hast Du nicht nachgedacht, denn es hat bei Dir nicht geklappt ... ;-)

      Line 49 column 56: document type does not allow
      Überprüfe deinen Dokumententyp. Du wirst:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> finden.

      Also ein strict-Doctype, der input nicht an allen Stellen erlaubt, an denen es in transitional erlaubt wäre (z.B. als direktes Kind des body oder des form-Elements - in strict-Dokumenten muß da noch ein block-Element dazwischen). Und genau das sagt ja auch die Fehlermeldung: 'document type does not allow element "INPUT" here' - da steht nichts von "wrong tag closing" oder ähnlichem ...)

      element "INPUT" here;
            <input type='hidden' name='kennwort'     value='' />

      An welcher Stelle zeigt der Validator den Fehler an?
      Es ist das />

      Nö.

      In XHTML wäre das ja korrekt, und in HTML schließt das / das tag, das > ist normaler Text nach dem tag. An Stellen, an denen input erlaubt ist, ist auch Text erlaubt. Also führt ein <input /> in HTML nicht zu einer Validator-Meldung (ein korrekter Browser müßte das > darstellen). Bei <link /> oder <meta /> sieht es anders aus, da an den Stellen, an denen link- bzw. meta-Elemente erlaubt sind, kein Text erlaubt ist - womit in HTML implizit head geschlossen und body geöffnet wird - weitere link- oder meta-Elemente oder andere Elemente, die nur in head erlaubt sind, führen dann zur Fehlermeldung, da sie ja nicht im head stehen.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hi,

        An welcher Stelle zeigt der Validator den Fehler an?
        Es ist das />

        Nö.

        doch. Ausprobiert?

        In XHTML wäre das ja korrekt

        richtig. Mit einem Dokumententyp XHTML 1.0 bekommst du _diesen_ Fehler nicht. (Dafür ca. 109 andere)

        Grüße,

        Jochen

        --
        Heute schon gescribbelt?
        Scribbleboard
        1. Moin!

          An welcher Stelle zeigt der Validator den Fehler an?
          Es ist das />

          Nö.

          doch. Ausprobiert?

          Ich wette gegen dich und setze auf MudGuard. Und ich werde gewinnen, da bin ich mir sicher.

          Die Fehlermeldung besagt, dass das <input> an dieser Stelle nicht erlaubt ist.

          Und in HTML 4.01 Strict darf <input> tatsächlich nicht nackt direkt als Kind von <form> auftreten - was es im fraglichen Code allerdings tut. <input> muß immer noch in ein zusätzliches Block-Element eingeschlossen werden.

          <div>, <p> oder auch <fieldset> wären für diesen Zweck geeignet, sowie alle anderen vom Validator genannten Möglichkeiten.

          - Sven Rautenberg

          --
          My sssignature, my preciousssss!
        2. Moin!

          An welcher Stelle zeigt der Validator den Fehler an?
          Es ist das />

          Nö.

          doch. Ausprobiert?

          Der zweite Fehler, den der Validator mir bringt, ist das, was du bemängelst:

          Error Line 49 column 57: character data is not allowed here.  
          <input type='hidden' name='kennwort'     value='' />
          

          Mit unterstrichenem ">". Das ist genau, was MudGuard auch schon sagte: In HTML werden Tags anders behandelt, als in XHTML, und das, was als "Kompabilitätsmodus" verkauft wird, spekuliert eindeutig mit der fehlerhaften HTML-Interpretation existierender Browser, die sich nicht an den SGML-Standard halten.

          HTML und XHTML sind streng genommen inkompatibel! Elemente, die in HTML zwingend kein End-Tag haben, müssen in XHTML eines haben. Die Lang-Schreibweise (<input...></input>) ist in HTML aber verboten, und die Kurzschreibweise (<input... />) führt in HTML-Betrachtung zu falschem Inhalt, nämlich einem zusätzlichen ">" im Text.

          richtig. Mit einem Dokumententyp XHTML 1.0 bekommst du _diesen_ Fehler nicht. (Dafür ca. 109 andere)

          Auch in XHTML 1.0 (was Strict bedeutet) ist <input /> nicht als direktes Kindelement von <form> erlaubt. Der Fehler des Fragestellers bliebe also bestehen.

          - Sven Rautenberg

          --
          My sssignature, my preciousssss!
          1. Hi,

            Der zweite Fehler, den der Validator mir bringt, ist das, was du bemängelst:

            Error Line 49 column 57: character data is not allowed here.

            <input type='hidden' name='kennwort'     value='' />

              
            Der verschwindet aber, sobald sich das input an einer Stelle befindet, wo es erlaubt ist.  
            Denn innerhalb der Elemente, in denen input erlaubt ist, ist auch Text erlaubt.  
            Direkt innerhalb eines form-Elements sind in strict weder inline-Elemente noch Text erlaubt.  
              
            cu,  
            Andreas
            
            -- 
            [Warum nennt sich Andreas hier MudGuard?](http://www.Mud-Guard.de/)  
            [Schreinerei Waechter](http://www.schreinerei-waechter.de/)  
            [O o ostern ...](http://ostereier.andreas-waechter.de/)  
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
            
            
        3. Hi,

          An welcher Stelle zeigt der Validator den Fehler an?
          Es ist das />
          Nö.
          doch. Ausprobiert?

          Die DTDs sind exakt genug spezifiert, daß ein Try-and-Err nicht notwendig ist.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.