NaN: Warum sind <div></div> und <div /> verschieden?

Hallo!

Warum werden beiden <div> Versionen verschieden dargestellt? Beides sind inhaltsleere divs.

http://tra.zoellich.de/tt.html

  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
  <title>tt</title>  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<style type="text/css">  
  
div       {  
          width:121px;  
          height:121px;  
          margin-left:1em;  
          }  
  
</style>  
</head>  
<body style="font-size:22px">  
  
<div style="background-color:#BD5E3B;" />  
<div style="background-color:#DE6D46;" />  
<div style="background-color:#FA8C5B;" />  
<div style="background-color:#FF9F72;" />  
  
<div style="background-color:#BD5E3B;"></div>  
<div style="background-color:#DE6D46;"></div>  
<div style="background-color:#FA8C5B;"></div>  
<div style="background-color:#FF9F72;"></div>  
  
</body>  
</html>  

Gruß
NaN

  1. Hi,

    Warum werden beiden <div> Versionen verschieden dargestellt? Beides sind inhaltsleere divs.

    Vermutlich weil wegen
    Content-type: text/html; charset=UTF-8
    das ganze als tag soup verarbeitet wird und damit <div /> nur als öffnendes Tag verarbeitet wird - die 4 schließenden tags werden dann vor dem </body> ergänzt.
    Damit liegen die div ineinander, nicht nacheinander.

    Ein kurzer Blick in den DOM-Inspektor bestätigt die Vermutung.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    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. Hallo!

      Warum werden beiden <div> Versionen verschieden dargestellt? Beides sind inhaltsleere divs.

      Vermutlich weil wegen
      Content-type: text/html; charset=UTF-8
      das ganze als tag soup verarbeitet wird und damit <div /> nur als öffnendes Tag verarbeitet wird - die 4 schließenden tags werden dann vor dem </body> ergänzt.
      Damit liegen die div ineinander, nicht nacheinander.

      Ein kurzer Blick in den DOM-Inspektor bestätigt die Vermutung.

      Ich habe mir den DOM-Baum im konqueror angeschaut: in der Tat, schrecklich.
      Aber das Warum verstehe ich überhaupt nicht: der content-type ist doch ziemlich normal?

      Gruß
      NaN

      1. Hallo Nan,

        Aber das Warum verstehe ich überhaupt nicht: der content-type ist doch ziemlich normal?

        Eben. Der Content-Type ist text/html. Willst du eine Verarbeitung als XML nimm application/xhtml+xml, application/xml oder text/xml. Damit kommt der IE aber nicht zurecht. Vermutlich ist es am besten, du lässt das Dokument als HTML verarbeiten und verzichtest auf solche abwärtsinkompatiblen Kurzformen.

        Jonathan

        1. Hallo!

          Eben. Der Content-Type ist text/html. Willst du eine Verarbeitung als XML nimm application/xhtml+xml, application/xml oder text/xml. Damit kommt der IE aber nicht zurecht. Vermutlich ist es am besten, du lässt das Dokument als HTML verarbeiten und verzichtest auf solche abwärtsinkompatiblen Kurzformen.

          So sieht es wohl aus, ist mir völlig neu. Ich habe dazu noch die folgende Seite gefunden: http://www.hixie.ch/advocacy/xhtml

          Danke
          NaN

          1. Hello out there!

            Ich habe dazu noch die folgende Seite gefunden: http://www.hixie.ch/advocacy/xhtml

            Schon wieder dieser „sehr bekannte Artikel“, der „jedoch hauptsächlich dadurch besticht, dass er vor allem einseitig und irreführend ist.“ [Jendryschik]

            Siehe https://forum.selfhtml.org/?t=160280&m=1042457 ff.

            See ya up the road,
            Gunnar

            --
            „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
            1. Hallo,

              Schon wieder dieser „sehr bekannte Artikel“, der „jedoch hauptsächlich dadurch besticht, dass er vor allem einseitig und irreführend ist.“ [Jendryschik]

              Jendryschik sagt auch keines der Argumente sei praxisrelevant. Aber ich will nicht wissen wie viele Leute rumheulen werden, wenn Ihre Webseiten als XHTML nicht funktionieren.

              Gut, das ist zum Teil das Problem des Autors, aber Dinge wie DOM-1-Methoden, die in XHTML nicht verwendet werden können sind ein klares XHTML-Problem.

              Gruß;

              1. Hello out there!

                Aber ich will nicht wissen wie viele Leute rumheulen werden, wenn Ihre Webseiten als XHTML nicht funktionieren. [...] Dinge wie DOM-1-Methoden, die in XHTML nicht verwendet werden können sind ein klares XHTML-Problem.

                Welche Dinge genau, die in einem HTML-4.01-Dokument funktionieren, funktionieren in einem als 'text/html' ausgelieferten XHTML-1.0-Dokument nicht?

                See ya up the road,
                Gunnar

                --
                „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
                1. Hallo,

                  Welche Dinge genau, die in einem HTML-4.01-Dokument funktionieren, funktionieren in einem als 'text/html' ausgelieferten XHTML-1.0-Dokument nicht?

                  So etwas gibt es nicht, was aber daran liegt, dass ein als text/html ausgeliefertes „XHTML-1.0-Dokument“ ein HTML-Dokument ist und kein XHTML-Dokument.

                  Gruß;

  2. Hallo NaN,

    Warum werden beiden <div> Versionen verschieden dargestellt? Beides sind inhaltsleere divs.

    Deine Seite wird mit dem content-type text/html versendet, also als ganz normales HTML verarbeitet. Und im Ganz normalen HTML gibt es eben keine Kurzformen wie <div />, sodass der Quelltext effektiv wie folgender Quelltext gehandhabt wird:

    <body style="font-size:22px">  
      
    <div style="background-color:#BD5E3B;">  
    <div style="background-color:#DE6D46;">  
    <div style="background-color:#FA8C5B;">  
    <div style="background-color:#FF9F72;">  
      
    <div style="background-color:#BD5E3B;"></div>  
    <div style="background-color:#DE6D46;"></div>  
    <div style="background-color:#FA8C5B;"></div>  
    <div style="background-color:#FF9F72;"></div>  
      
    </div></div></div></div><!-- werden automatisch als Fehlerkorrektur ergänzt -->  
      
    </body>
    

    Jonathan

    1. Hallo Jonathan,

      Warum werden beiden <div> Versionen verschieden dargestellt? Beides sind inhaltsleere divs.

      Deine Seite wird mit dem content-type text/html versendet, also als ganz normales HTML verarbeitet. Und im Ganz normalen HTML gibt es eben keine Kurzformen wie <div />,

      Gibt es denn einen passenden content-type? Self benutzt auf http://de.selfhtml.org/html/xhtml/anzeige/beispiel.xhtml auch text/html, so daß das DOM dem <hr /> den Schrägstrich nimmt.

      Gruß
      NaN

      1. Moin!

        Gibt es denn einen passenden content-type? Self benutzt auf http://de.selfhtml.org/html/xhtml/anzeige/beispiel.xhtml auch text/html, so daß das DOM dem <hr /> den Schrägstrich nimmt.

        Das sollte es eigentlich nicht, denn:

        $ curl -I http://de.selfhtml.org/html/xhtml/anzeige/beispiel.xhtml

        Content-Type: application/xhtml+xml

        Du meinst vermutlich die Meta-Angabe

        <meta http-equiv="content-type" content="text/html; charset=utf-8" />

        Wenn der Webbrowser die XHTML-Datei bereits als solche erhalten hat, ist ihm diese Angabe gleichgültig, da der Anfang der Datei schon als XHTML durch den Parser wandert, denn der HTTP-Header ist ihm wichtiger.

        Viele Grüße,
        Robert

        1. Hallo Robert,

          Stimmt, die Selfhtml-Seite wird mit dem richtigen xml-Content-Type verschickt. Es ist ja aber auch so, dass ein <hr /> im normalen HTML auch keinen Schließ-Tag braucht, deswegen wäre es auch völlig unerheblich, wenn man die Seite als HTML parsen würde. Der Schrägstrich wird dann einfach ignoriert.

          Jonathan