Johannes Zeller: Leere Elemente

Beitrag lesen

Hallo Gunnar,

Du hast da etwas missverstanden:

Aber in der XHTML-Spec http://www.edition-w3c.de/TR/2002/REC-xhtml1-20020801/#heading-4.3:
Alle Elemente, die in der DTD nicht als EMPTY deklariert sind, müssen ein End-Tag haben.

Hierbei geht es um Elemente, bei denen man in HTML, obwohl sie einen Inhalt haben, ein oder beide Tags weglassen kann.

So wäre:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <title>Blubb</title>
    <p>Blah

eine valide HTML-Seite. In XHTML muss die gleiche Seite mindestens so aussehen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
    <html>
        <head>
            <title>Blubb</title>
        </head>
        <body>
            <p>Blah</p>
        </body>
    </html>

Elemente, die in der DTD als EMPTY deklariert sind, können ein End-Tag haben oder die Kurzschreibweise verwenden.

Das besagt, dass leere Elemente, z.B. BR, IMG oder INPUT entweder mit Start- und End-Tag (<br></br>, <img ...></img>, <input...></input>) oder in der Kurzschreibweise <br />, <img ... />, <input ... /> geschrieben werden können. Lediglich, die in HTML vorgesehen
Schreibweise _ohne_ End-Tag (<br>, <img ...>, <input ...>) darf nicht
mehr verwendet werden.

Aus Rücksicht, auf Browser sollte man, aber die Kurzschreibe _mit Leerzeichen_ verwenden. Zumindest dann, wenn man das XHTML aus Kompatibilitätsgründen als text/html ausliefert. Auch die zulässige
Schreibweise <br/>, <img .../>, <input .../> kann zu Problemen führen.

Allerdings kommt auch <p/> durch den Validator. Hm.

Ja, es ist ja korrektes XHTML. Die Schreibweise <p></p> ist jedoch kompatibel zu HTML und deshalb vorzuziehen.

Schöne Grüße,

Johannes

--
Der folgende Satz ist wahr.
Der vorhergehende Satz ist gelogen.
ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}