pete: Fehlendes </li> (Endtag)

Hallo zusammen

Ich hab erst etwas spät gemerkt, dass ich doch tatsächlich in ner Liste das Endtag für eines der <li>-Elemente vergessen hab. Das Dokument ist Html Strict und der validator gibt mir auch keinen Fehler aus. Ist das also erlaubt und es ist implizit klar, dass beim nächsten <li> das alte fertig ist? Darf ich dies so lassen oder kann ich da unter bestimmten Konfigurationen/Browsern ins Messer laufen? (Ich hab schon n'Javascript geschrieben, das etwas durcheinander gerät wenn ichs ändere, wär aber natürlich machbar).

Merci für den Input

  1. Om nah hoo pez nyeetz, pete!

    Hallo zusammen

    Ist das also erlaubt und es ist implizit klar, dass beim nächsten <li> das alte fertig ist?

    ja

    Darf ich dies so lassen oder kann ich da unter bestimmten Konfigurationen/Browsern ins Messer laufen?

    demnach nicht.

    Es versteht sich allerdings als guter Stil, optionale Tags zu setzen.

    Matthias

    --
    1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
    1. Es versteht sich allerdings als guter Stil, optionale Tags zu setzen.

      Nein, guter Stil ist es, konsequent zu arbeiten und sauber/übersichtlich zu gliedern:

      <ul>  
        <li>foo  
        <li>bar  
        <li>baz  
      </ul>
      

      oder

      <ul>  
        <li>foo</li>  
        <li>bar</li>  
        <li>baz</li>  
      </ul>
      

      nicht aber

      <ul>  
        <li>foo</li>  
        <li>bar  
        <li>baz</li>  
      </ul>
      

      oder

      <ul><li>foo</li>  
      <li>bar<li>baz</li>  
      </ul>
      

      Dennoch sollte man im eigenen interesse XML-Syntax bevorzugen (sprich XHTML 1.0 oder XHTML5) um das weiterverarbeiten zu erleichtern und um Fehler schneller zu finden.

  2. @@pete:

    nuqneH

    Ist das also erlaubt und es ist implizit klar, dass beim nächsten <li> das alte fertig ist?

    In HTML (nicht XHTML) können bei etlichen Elementtypen die End-Tags weggelassen werden, bei einigen sogar die Start-Tags.* Ob das der Fall ist, ist für den jeweiligen Elementtyp in der DTD angegeben. [HTML401 §3.3.3]

    Für li: <!ELEMENT LI - O (%flow;)*             -- list item --> [HTML401 §21]

    Qapla'

    * Dass man das nicht tun sollte, wurde ja schon gesagt.

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  3. (Ich hab schon n'Javascript geschrieben, das etwas durcheinander gerät wenn ichs ändere, wär aber natürlich machbar).

    JavaScript operiert auf dem DOM, nicht auf dem Quelltext. Selbst wenn du innerHTML und Co. verwendest, bekommst du nicht den ursprünglichen Code, sondern vom Browser serialisierten. Da werden also </li>-Tags höchstwahrscheinlich eingefügt. Für DOM-Scripting ist es also egal, wie dein Code aussieht. Der Browser parst ihn in das DOM und Serialisierungen davon sind immer vereinheitlicht.

    Wenn du allerdings anderweitig rohen HTML-Code mit JavaScript verarbeitest, z.B. Ajax-Rückgaben: Dann sollte dein HTML-Code sehr konventionell sein, denn jeden beliebigen gültigen HTML-Code zu verarbeiten vermag dein Script wohl nicht. Mit konventionell meine ich noch strenger als HTML-Strict-valide. In meinem Artikel Strenge HTML-4-Validierung gehe ich auf weglassbare Tags ein und stelle eine DTD vor, welche die Tags erfordert.

    Mathias