"empty tags" in HTML5
Uwe
- html
0 Gunnar Bittersmann0 Uwe
0 fastix®0 Gunnar Bittersmann
1 molily
Hallo!
Ich versuche in aktuellen und neuen Projekten verstärkt HTML5-Elemente einzusetzen. Mir ist aber nicht ganz klar wie tags ohne End-tag geschrieben werden. Müssen sie wie in XHTML aussehen, also z.B. <br/> oder wie in "normalem" HTML, also z.b. <br>?
Hier werde ich nicht ganz schlau. In der Liste links steht <br> im Beispiel steht <br/> und in der Erklärung darunter wieder <br>.
Wie muss es also richtig sein?
Uwe
@@Uwe:
nuqneH
Ich versuche in aktuellen und neuen Projekten verstärkt HTML5-Elemente einzusetzen. Mir ist aber nicht ganz klar wie tags ohne End-tag geschrieben werden. Müssen sie wie in XHTML aussehen, also z.B. <br/> oder wie in "normalem" HTML, also z.b. <br>?
HTML5 hat mehrere Serialisierungen: HTML-Syntax und XHTML-Syntax.
Hier werde ich nicht ganz schlau.
Richtig, da verblödet man nur.
Qapla'
HTML5 hat mehrere Serialisierungen: HTML-Syntax und XHTML-Syntax.
Ok, also kann ich selbst entscheiden und bleibe dann im gesamten Dokument (und allen Elementen) bei dieser Entscheidung.
Richtig, da verblödet man nur.
Ich wusste nicht, dass die Seite einen schlechten Ruf hat. Danke für die Aufklärung, beim nächsten mal kann ich mir also Zeit sparen und gleich woanders nachschlagen.
Uwe
Moin!
Müssen sie wie in XHTML aussehen, also z.B. <br/> oder wie in "normalem" HTML, also z.b. <br>?
Definiere "müssen".
<br /> wird in HTML korrekt dargestellt, weil der Browser sich denkt(*) "Das '/' ist ein unzulässiges oder unbekanntes Attribut! Ignoriere es."
In XHTML wird der "schließende" Slash erwartet, das Leerzeichen wird akzeptiert. Damit gibt es eine Variante, die immer richtig interpretiert wird. Das kann wichtig sein, wenn Du z.B. programmierst und nicht weist, ob die Webseite letztendlich HTML oder XHTML wird.
*) Computer und Programme kann man sich als unheimlich Dumme Gestalten vorstellen die einen primitiven Satz von Handlungsanweisungen genauestens und sehr schnell durchführen. Vor allem wenn diese falsch sind.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
@@fastix®:
nuqneH
<br /> wird in HTML korrekt dargestellt, weil der Browser sich denkt(*) "Das '/' ist ein unzulässiges oder unbekanntes Attribut! Ignoriere es."
Nein. Zum einen kann ein Attributbezeichner nicht mit '/' anfangen. Zum andern: Was ist mit '<br/>
'? Da kann ein Browser gar nicht auf die Idee kommen, '/' wäre ein Attribut.
Es ist einfach so, dass Browser HTML-kompatibles XHTML verarbeiten können.
Qapla'
Es ist einfach so, dass Browser HTML-kompatibles XHTML verarbeiten können.
Also sollte man besser auf das '/' verzichten und gar nicht erst anfangen striktes XML zu schreiben?
Uwe
Moin!
Also sollte man besser auf das '/' verzichten und gar nicht erst anfangen striktes XML zu schreiben?
Das wäre der größte Unsinn, denn zwingt die Browser in Quirk- oder Murksmodus. Wichtiger ist es <http://de.selfhtml.org/html/allgemein/grundgeruest.htm@title=XHTML korrekt auszuzeichnen>. Insbesondere der IE verhält sich dann wesentlich artiger und macht zwar nicht genau aber relativ brav das was infolge der gelieferten Style-Beschreibungen von ihm erwartet wird.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
@@fastix®:
nuqneH
Also sollte man besser auf das '/' verzichten und gar nicht erst anfangen striktes XML zu schreiben?
Das wäre der größte Unsinn, denn zwingt die Browser in Quirk- oder Murksmodus.
Der Unsinn darin ist das, was du erz:ahlst. Quirksmodus hat mit HTML vs. XHTML rein gar nichts zu tun. Hat er noch nie gehabt. Hat er auch bei HTML5 nicht.
Wichtiger ist es <http://de.selfhtml.org/html/allgemein/grundgeruest.htm@title=XHTML korrekt auszuzeichnen>.
Was hat der Link mit XHTML5 zu tun?
Qapla'
Hallo Gunnar!
Offensichtlich weißt du ja die Antwort auf meine Frage.
Hatte ich also mit meiner ersten Antwort recht (für eine Variante entscheiden und gut) oder was ist des Pudels Kern?
Durch eure Diskussion bin ich wieder so verunsichert wie am Anfang :(
Uwe
Moin!
Also sollte man besser auf das '/' verzichten und gar nicht erst anfangen striktes XML zu schreiben?
Das wäre der größte Unsinn, denn zwingt die Browser in Quirk- oder Murksmodus.
Der Unsinn darin ist das, was du erz:ahlst. Quirksmodus hat mit HTML vs. XHTML rein gar nichts zu tun. Hat er noch nie gehabt. Hat er auch bei HTML5 nicht.
Soso. Schön dass Du da etwas weist und gleich einen Glaubenskrieg anfängst. Glaubst Du, Du könntest den mit Deiner Aussage gewinnen? Lies mal nach worauf Du antwortest bevor mir mit nicht zielführendem "Qapla'" kommst.
Wichtiger ist es <http://de.selfhtml.org/html/allgemein/grundgeruest.htm@title=XHTML korrekt auszuzeichnen>.
Was hat der Link mit XHTML5 zu tun?
Wo habe ich behauptet, dass der Link mit XHTML5 zu tun habe? Ich bin grad zu gut gelaunt um derlei unproduktives "Qapla'" richtig abzufertigen denn ich habe diese Woche zwei wunderschöne Gerichtsverfahren gehabt und, wenn nicht ein Wunder zu Gunsten der Gegner geschieht wohl auch gewonnen. Ich rate Dir erneut: Lies mal nach worauf Du antwortest bevor Du mir mit nicht zielführendem "Qapla'" kommst.
Nicht, dass noch irgendwer von "Krittelei" oder gar "Rechthaberei" spricht und mal wieder einer dieser Kleinkriege um die Diskussionskultur hier im Forum ausbricht.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Ich will euch ja nicht stören aber eure Argumentation beruht ja zum Teil darauf was der Browser tut oder "tuen sollte". Also ich möchte nur anmerken, dass mir das ziemlich egal ist. Es geht mir nur um den "Standard", weniger um die Interpretation.
Mit dem Satz von Gunnar, dass HTML5 sowohl HTML als auch XHTML-"konform" ist war ich insofern zufrieden als das ich ohne Zweifel XML schreiben kann.
Ich drifte jetzt auch mal ein bisschen und stell mir die Frage ob es in HTML5 komplett egal ist ob man XML oder HTML4/SGML schreibt? Also im Extremfall auch vermischt. Oder landet man irgendwann (wann?) im Quirks-mode?
Uwe
Moin!
Ich drifte jetzt auch mal ein bisschen und stell mir die Frage ob es in HTML5 komplett egal ist ob man XML oder HTML4/SGML schreibt? Also im Extremfall auch vermischt. Oder landet man irgendwann (wann?) im Quirks-mode?
Tja. Theoretisch kann der Browser beim ersten Fehler auch aufgeben. Praktisch tut es wohl keiner (das heisst, ich habe Amaya noch nicht getestet). Wie weit und wie lange das gut geht hängt von den individuellen Präferenzen der Softwarehersteller ab.
Praktisch wollen die auch Murks anzeigen. Ob und wie lange die tolerant sind und den Browser nicht in den Quirks-Modus schicken können nur die wissen und zwar auch nur für den Zeitraum der bis jetzt vorliegenden Pläne.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Ich drifte jetzt auch mal ein bisschen und stell mir die Frage ob es in HTML5 komplett egal ist ob man XML oder HTML4/SGML schreibt? Also im Extremfall auch vermischt. Oder landet man irgendwann (wann?) im Quirks-mode?
Tja [..] nur für den Zeitraum der bis jetzt vorliegenden Pläne.
Stimmt, eigentlich blöd zu fragen wo der Standard noch nicht verabschiedet wurde und eh jeder Browser sein eigenes Süppchen kocht. Ich hätte fast erwartet, dass der Quirks-Mode durch Angabe des HTML5-Doctypes passé wäre.
Uwe
@@Uwe:
nuqneH
Ich hätte fast erwartet, dass der Quirks-Mode durch Angabe des HTML5-Doctypes passé wäre.
Richitg, das ist er.
Standardkonkorfer vs. Quirksmodu ist Sache des Doctypes, nicht der verwendeten Syntax (HTML vs. XHTML).
Qapla'
@@Uwe:
nuqneH
Mit dem Satz von Gunnar, dass HTML5 sowohl HTML als auch XHTML-"konform" ist war ich insofern zufrieden als das ich ohne Zweifel XML schreiben kann.
Ja, kannst du.
Ich drifte jetzt auch mal ein bisschen und stell mir die Frage ob es in HTML5 komplett egal ist ob man XML oder HTML4/SGML schreibt?
Dem HTML5-Parser ist es egal. BTW, die HTML-Serialisierung von HTML5 ist kein SGML.
Mit der HTML-Serialisierung verspielst du die Optionen, die die XHTML-Serialisierung bietet (genaueres Prüfen, Verarbeitung als XML).
Also im Extremfall auch vermischt.
Das solltest du nicht tun.
Oder landet man irgendwann (wann?) im Quirks-mode?
Nein.
Qapla'
@@Uwe:
nuqneH
Also sollte man besser auf das '/' verzichten und gar nicht erst anfangen striktes XML zu schreiben?
Nö, wieso?
Ich bin ein Verfechter der XML-Syntax, schreibe also XHTML5.
Qapla'
Ich bin ein Verfechter der XML-Syntax, schreibe also XHTML5.
Ich mag auch XML, ich bin mir auf dem Stuhl zwischen eurer Diskussion nur nicht mehr sicher ob das auch noch was mit HTML5 zu tun hat...
Wobei ich es (den slash) aber bei z.b. <br> und <hr> nicht mag weil es mich einfach nervt. Andererseits will ich die Schreibweisen aber auch nicht vermischen.
Leckt's mia om Oarsch ich bleib bei XML ;)
Uwe
@@Gunnar Bittersmann:
nuqneH
Ich bin ein Verfechter der XML-Syntax, schreibe also XHTML5.
Hm, molily erinnerte mich gerade daran, dass ich das nicht tue. Ich schreibe polyglottes HTML5: solches das als 'text/html' und als 'application/xhtml+xml' verarbeitet werden kann.
Qapla'
Hm, molily erinnerte mich gerade daran, dass ich das nicht tue. Ich schreibe polyglottes HTML5: solches das als 'text/html' und als 'application/xhtml+xml' verarbeitet werden kann.
So langsam weiß ich auch nicht mehr was ich eigentlich mache^^
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<title>XHTML5-Example</title>
</head>
<body>
<p>Ich bin XHTML5!</p>
<p>Ich bin ein Absatz<br/>
mit einem Zeilenumbruch.</p>
</body
</html>
Das sollte doch XHTML5 sein oder nicht?
Uwe
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<title>XHTML5-Example</title>
</head>
<body>
<p>Ich bin XHTML5!</p>
<p>Ich bin ein Absatz<br/>
mit einem Zeilenumbruch.</p>
</body>
</html>
>
> Das sollte doch XHTML5 sein oder nicht?
Das kann man anhand des Codes nicht sehen. Wie gesagt, XHTML5 wird zu XHTML5 dadurch, dass es als application/xhtml+xml deklariert wird und mit einem XML-Parser verarbeitet wird. Ansonsten ist es – mit dem MIME-Typ text/html deklariert – ganz normales HTML, wenn auch mit XML-typischer Syntax. Das ist wie gesagt möglich.
Wenn du in einem Meta-Tag bloß application/xhtml+xml erwähnst, so führt diese Angabe nicht dazu, dass der User-Agent das Dokument als XML verarbeitet. Dazu muss das Dokument schon .xhtml heißen bzw. vom HTTP-Server als application/xhtml+xml ausgeliefert werden (d.h. der Content-Type-Header hat diesen Wert). Diese Meta-Angabe kannst du daher vergessen, sie ist unmaßgeblich.
Wie gesagt kann man Dokumente schreiben, die beiden Syntaxanforderungen genügen, und daher von HTML5- wie auch von XML-Parsern verarbeitet werden können (und derselbe Parsebaum entsteht).
Mathias
@@molily:
nuqneH
Wie gesagt kann man Dokumente schreiben, die beiden Syntaxanforderungen genügen, und daher von HTML5- wie auch von XML-Parsern verarbeitet werden können (und derselbe Parsebaum entsteht).
Ist das bei <table><tr><td>foo</td></tr></table>
der Fall? Oder verstehst du unter Parsebaum was anderes als das DOM?
Qapla'
Moin!
Nein. Zum einen kann ein Attributbezeichner nicht mit '/' anfangen.
Aber ja doch. Ein Attributbezeichner kann nicht mit '/' anfangen, weil dies unzulässig wäre! Ich schrieb:
weil der Browser sich denkt(*) "Das '/' ist ein unzulässiges oder unbekanntes Attribut! Ignoriere es."
Anders ausgedrückt behauptest Du ich hätte Unrecht und begründest es in dem Du darstellst das meine Aussage richtig ist.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
@@fastix®:
nuqneH
Anders ausgedrückt behauptest Du ich hätte Unrecht und begründest es in dem Du darstellst das meine Aussage richtig ist.
Entweder ich verstehe dich nicht oder du hast mich nicht verstanden.
Bei '<br />
' könnte man glatt dem Gedanken verfallen, dass der HTML-Parser das als 'br'-Element liest, und wegen des Leerzeichens den nachfolgenden '/' als Attribut.
Der Gedanke ist aber falsch, denn das erklärt nicht, warum ein HTML-Parser auch '<br/>
' (ohne Leerzeichen) verarbeiten kann.
Qapla'
Moin!
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Om nah hoo pez nyeetz, fastix®!
Gegenüberstellung:
#1# zu <br />
fastix: '/' ist unzulässig oder unbekannt
gunnar: '/' ist unzulässig
fastix: 1
gunnar: 1
#2# zu <br/>
fastix: keine Aussage, also auch keine falsche
<Halbwissen ausprägung="gefährlich">'/' darf in Elementbezeichnern nicht vorkommen</Halbwissen>
In HTML-Dokumenten führt <br /> lediglich zu einer Warnung des Validators, umgekehrt zu einer Fehlermeldung. Allerdings schickt afaik weder das eine noch das andere die Browser in den Quirksmodus.
Matthias
In HTML-Dokumenten führt <br /> lediglich zu einer Warnung des Validators, umgekehrt zu einer Fehlermeldung. Allerdings schickt afaik weder das eine noch das andere die Browser in den Quirksmodus.
Den Validator interessiert es weder ob <br />, <br/>, <br> oder alles gemischt dasteht.
Uwe
Moin!
In HTML-Dokumenten führt <br /> lediglich zu einer Warnung des Validators, umgekehrt zu einer Fehlermeldung. Allerdings schickt afaik weder das eine noch das andere die Browser in den Quirksmodus.
Den Validator interessiert es weder ob <br />, <br/>, <br> oder alles gemischt dasteht.
Doch. Teste ihn mit:
a) Nicht geschlossenen br-Element
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta charset="UTF-8" />
<title>XHTML5-Example</title>
</head>
<body>
<p>Ich bin XHTML5!</p>
<p>Ich bin ein Absatz<br>
mit einem Zeilenumbruch.</p>
</body>
</html>
und:
b) Geschlossenen br-Element
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta charset="UTF-8" />
<title>XHTML5-Example</title>
</head>
<body>
<p>Ich bin XHTML5!</p>
<p>Ich bin ein Absatz<br />
mit einem Zeilenumbruch.</p>
</body>
</html>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Hallo!
Doch. Teste ihn mit:
a) Nicht geschlossenen br-Element
Ah ich verstehe. Bei XHTML5 also <br/>, <br /> oder <br></br> aber nicht <br>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<!-- <br/>, <br /> oder <br></br> aber _nicht_ <br> -->
und bei HTML5 <br> aber "es funktioniert" auch mit <br/> und <br/> aber nicht <br></br>.
<!DOCTYPE html>
<html>
<!-- <br/> und <br/> aber nicht <br></br> -->
Super, dann sind ja alle Unklarheiten beseitigt :)
Uwe
@@Uwe:
nuqneH
Ah ich verstehe. Bei XHTML5 also <br/>, <br /> oder <br></br> aber nicht <br>
und bei HTML5 <br> aber "es funktioniert" auch mit <br/> und <br/> aber nicht <br></br>.
Und für polyglottes HTML5 den Durchschnitt von beidem.
Qapla'
Den Validator interessiert es weder ob <br />, <br/>, <br> oder alles gemischt dasteht.
Doch. Teste ihn mit:
Den W3C-Validator sollte man hinsichtlich (X)HTML5 vergessen. http://html5.validator.nu/ bzw. http://validator.nu/ ist ein besserer Validator.
Der W3C-Validator verwendet im HTML5-Fall nur den Webservice des genannten. Der W3C-Validator schaltet wohl ausdrücklich den XHTML-Modus an, sobald er einen xmlns sieht. Das tut das Original nicht. Dort kann man genau einstellen, ob man HTML5 oder XHTML5 will, also HTML5-Parser oder XML-Parser.
Mathias
@@Matthias Apsel:
nuqneH
fastix: '/' ist unzulässig oder unbekannt
Nich ganz. fasix sagte: „unzulässiges oder unbekanntes Attribut“.
<Halbwissen ausprägung="gefährlich">'/' darf in Elementbezeichnern nicht vorkommen</Halbwissen>
*G*
Aber das lässt sich leicht verdoppeln:
Für XML 1.0: Mal schnell in die Spec geschaut: 3.1Start-Tags, End-Tags, and Empty-Element Tags sieht doch ganz brauchbar aus.
Regel [40], Click auf name. Dann auf NameChar und NameStartChar. U+002F '/' ist nicht enthalten.
Qapla'
Hi,
In HTML-Dokumenten führt <br /> lediglich zu einer Warnung des Validators
und, falls es einen Browser gäbe, der HTML (und damit meine ich NICHT HTML5) korrekt darstellen würde, das > in der sichtbaren Ausgabe, denn bei HTML (s. vorne) beendet der / das Tag, das > ist außerhalb des Tags.
Allerdings ist mir kein Browser bekannt, der das richtig macht.
cu,
Andreas
@@MudGuard:
nuqneH
und, falls es einen Browser gäbe, der HTML (und damit meine ich NICHT HTML5) korrekt darstellen würde, das > in der sichtbaren Ausgabe, denn bei HTML (s. vorne) beendet der / das Tag, das > ist außerhalb des Tags.
Allerdings ist mir kein Browser bekannt, der das richtig macht.
Es hat wohl kein Browser einen SGML-Parser. Was auch gut ist, sonst wäre XHTML als 'text/html' ja nicht möglich.
Qapla'
Hallo,
Ich versuche in aktuellen und neuen Projekten verstärkt HTML5-Elemente einzusetzen. Mir ist aber nicht ganz klar wie tags ohne End-tag geschrieben werden. Müssen sie wie in XHTML aussehen, also z.B. <br/> oder wie in "normalem" HTML, also z.b. <br>?
HTML5 hat zwei Serialisierungen, die HTML-Syntax und die XHTML-Syntax.
Für die HTML-Syntax gibt einerseits eine normative Definition und andererseits die Definition eines Parsers, welcher diese aber auch fehlerhafte Syntax verarbeitet.
Vgl. http://molily.de/weblog/was-ist-html5
Das ist die normative Definition von Start-Tags in der HTML-Serialisierung von HTML5:
http://dev.w3.org/html5/spec/syntax.html#start-tags
Kurz gesagt: Das / vor dem > ist erlaubt, insbesondere bei Elementen aus fremden Vokabularen, es ist aber nicht nötig bei HTML-Elementen.
Dies wird man in der State-Machine des Parsers auch wiederfinden (einfach nach »/« suchen).
Soviel zur HTML-Syntax.
In der XHTML5-Syntax, welche sich dadurch definiert, dass das Dokument als XML/XHTML ausgeliefert wird, musst du selbstverständlich das / verwenden, sonst kann das Dokument nicht korrekt gemäß XML verarbeitet werden.
Hier werde ich nicht ganz schlau.
Das ist halt w3schools, die sind zwar bei Google weit oben, aber schlau wird man daraus nie. ;)
Mathias