Mike© : Der Validator gibt mal wieder Rätsel auf

Moin @ All,

der Validator macht mich mal wieder Wahnsinnig.

Er bemängelt, dass "Input" hier nicht erlaubt ist, weil <p> <div> usw. fehlt. Das stimmt aber nicht, denn der entsprechende Block wird mit <p> eingeleitet. Allerdings sagt er hier, dass ein </p> gefunden wurde ohne Start <p>

Der DOCTYPE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">

Der betreffende Block:

<p style="text-align:center; margin-top:10%; ">

<form style="display:inline;" action="input_button1.htm">
 <input style="cursor:pointer; margin-left:5%; margin-right:5%; width:150px;" type="button" name="Verweis1" value="Zugriff beantragen"
 onclick="top.location.href='kontakt.php?language=DE';">

<input style="cursor:pointer; margin-left:5%; margin-right:5%; width:150px;" type="button" name="Verweis2" value="Order access"
 onclick="top.location.href='kontakt.php?language=US'">

<input style="cursor:pointer; margin-left:5%; margin-right:5%; width:150px;" type="button" name="Verweis3" value="Non hai piú il link?"
 onclick="top.location.href='kontakt.php?language=IT'">
 </form>

</p>

Die Entwicklungspage: http://twins.dnip.net/new/
Was will der Validator von mir?

Danke & regds
Mike©

--
Freunde kommen und gehen. Feinde sammeln sich an.
  1. Moin!

    Er bemängelt, dass "Input" hier nicht erlaubt ist, weil <p> <div> usw. fehlt. Das stimmt aber nicht, denn der entsprechende Block wird mit <p> eingeleitet. Allerdings sagt er hier, dass ein </p> gefunden wurde ohne Start <p>

    Das deutet doch irgendwie darauf hin, dass mit dem <p> was nicht stimmt, oder? :)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

    In HTML ist es erlaubt, dass man </p> wegläßt.

    Das bedeutet:

      
    
    > <p style="text-align:center; margin-top:10%; ">  
    >   
    
    <!-- Hier denkt sich HTML ein </p>, da das nachfolgende <form> einen neuen Block startet. -->  
    
    > <form style="display:inline;" action="input_button1.htm">  
    
    <!-- Und hier fehlt dann für das nachfolgende <input> ein passendes Blockelement innerhalb des <form>. -->  
    
    >  <input style="cursor:pointer; margin-left:5%; margin-right:5%; width:150px;" type="button" name="Verweis1" value="Zugriff beantragen"  
    >  onclick="top.location.href='kontakt.php?language=DE';">  
    >   
    >  <input style="cursor:pointer; margin-left:5%; margin-right:5%; width:150px;" type="button" name="Verweis2" value="Order access"  
    >  onclick="top.location.href='kontakt.php?language=US'">  
    >   
    >  <input style="cursor:pointer; margin-left:5%; margin-right:5%; width:150px;" type="button" name="Verweis3" value="Non hai piú il link?"  
    >  onclick="top.location.href='kontakt.php?language=IT'">  
    
    <!-- Spätestens hier müßte dann das oben geöffnete Blockelement wieder geschlossen werden -->  
    
    >  </form>  
    >   
    
    <!-- Und nach dem </form> gibts kein passendes öffnendes <p> für das schließende </p> -->  
    
    >  </p>  
    
    

    PS: Mit transitional-HTML wäre das nicht passiert, da sind normale Input-Elemente auch direkt im <form> erlaubt.

    Und mit XHTML hätte der Validator das vor dem <form> fehlende </p> angemeckert.

    - Sven Rautenberg

    1. Moin Sven,

      Das deutet doch irgendwie darauf hin, dass mit dem <p> was nicht stimmt, oder? :)

      Indeed.

      <!-- Hier denkt sich HTML ein </p>, da das nachfolgende <form> einen neuen Block startet. -->

      Aha, und genau das war es.

      Die Lösung ist, einfach die Reihenfolge ändern.
      Anstatt:

      <p>
      <form..>
      [...]
      </from>
      </p>

      Habe ich nun das, und das ist valide:

      <form...>
      <p>
      [...]
      </p>
      </form>

      Danke & regds
      Mike©

      --
      Freunde kommen und gehen. Feinde sammeln sich an.
      1. Hi,

        solche Unklarheiten kannst Du übrigens, wie Sven ja schon andeutete, deutlich verringern, wenn Du XHTML nutzt. Die Unterschiede sind wirklich nicht groß, abgesehen davon, daß Du zu einer übersichtlicheren und einheitlicheren Syntax gezwungen wirst.

        freundliche Grüße
        Ingo

  2. Hallo

    Er bemängelt, dass "Input" hier nicht erlaubt ist, weil <p> <div> usw. fehlt. Das stimmt aber nicht, denn der entsprechende Block wird mit <p> eingeleitet. Allerdings sagt er hier, dass ein </p> gefunden wurde ohne Start <p>

    Sagt er wirklich, dass ein <p> fehlt. Glaub' ich nicht.

    <p>-Elemente dürfen laut Spezifikation _keine_ Block-Level-Elemente enthalten. Laut
    Spezifikation (Block-Level-Elemente) ist <form> ein Block-Level-Element.

    Der DOCTYPE:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

    Der betreffende Block:

    <p style="text-align:center; margin-top:10%; ">

    Da Du HTML 4.01 strict verwendest, findet der Validator hier ein implizites </p>, da <p> kein

    <form style="display:inline;" action="input_button1.htm">

    enthalten darf. Du könntest Dein Formular z.B. in ein <div> packen, oder in das Element, dass in Deinem Kontext angebracht wäre.

    Freundliche Grüße

    Vinzenz

    1. Hi,

      Er bemängelt, dass "Input" hier nicht erlaubt ist, weil <p> <div> usw. fehlt. Das stimmt aber nicht, denn der entsprechende Block wird mit <p> eingeleitet. Allerdings sagt er hier, dass ein </p> gefunden wurde ohne Start <p>
      Sagt er wirklich, dass ein <p> fehlt. Glaub' ich nicht.

      Doch, natürlich. INNERHALB des form fehlt das block-level-Element (z.B. p, div, ...).

      cu,
      Andreas

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

        Sagt er wirklich, dass ein <p> fehlt. Glaub' ich nicht.

        Doch, natürlich. INNERHALB des form fehlt das block-level-Element (z.B. p, div, ...).

        Stimmt natürlich, wie auch Sven bereits schrieb.

        Freundliche Grüße

        Vinzenz