muß in <blockquote> noch ein blockbildendes Element enthalten sein?

t_matze

Senior Member
Gerade habe ich meine Seiten mal wieder auf HTML 4.01 strict - Valididät überprüft und bin bei einer davon fast aus den Latschen gekippt: 212 Fehler wurden angemahnt! Die meisten davon bezogen sich auf Text, der "nackt" innerhalb von <blockquote>-Tags erschien, sowie auf die dann ebenfalls nicht erlaubten Zeilenumbrüche.

Soweit ich aus SelfHTML sehen konnte, ist blockquote ein Block-Element, innerhalb dem sowohl blockbildende, als auch Inline-Elemente und PCDATA zugelassen sind. Kann ich also <blockquote>Zitattext</blockquote> nicht schreiben, weil der Text nochmal eingepackt werden muß? Das W3C murmelte etwas davon, daß es p, h1-6, div und ähnliche Tags erwartet, die allesamt Block-Elemente sind. Warum keine Inline-Elemente? Und vor allem: Warum keinen Text (der zählt doch als PCDATA!)?
Original geschrieben vom W3C
document type does not allow element "BR" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag
 
Hi,

ich kann den von Dir beschriebenen Fehler leider nicht zu der zitierten Fehlermeldung zuordenen – kannst Du vielleicht mal den fehlerhaften Auszug aus dem Quelltext posten?

Lt. SelfHTML darf blockquote keine Inline-Elemente erhalten, denn Du prüfst ja auf HTML strict, Inline-Elemente sind nur nach HTML transitional erlaubt! (Guckt Du)
 
Oooops, tatsächlich! (Dein Link führt zu genau derselben Stelle wie meiner, aber ich muß da bisher Tomaten auf den Augen gehabt haben.) Inline-Elemente gehen also nicht - macht nichts, die hab ich eh nicht dort verwendet.

Aber reiner Text müßte doch eigentlich möglich sein, oder nicht? Es wird vom W3C immer der erste Buchstabe des Absatzes als fehlerhaft angekreidet, was ich nicht verstehe. Und mein Zitat oben bezog sich auf die Zeilenumbrüche, die demnach in ein weiteres Block-Element eingepackt werden müssen (samt Text):
Code:
<blockquote>Wer seine Wünsche zähmt, ist immer reich genug.<br>
<address>Theodor Fontane</address></blockquote>
(Der Zeilenumbruch vor <address> liegt daran, daß ich <address> per CSS als inline-Element darstellen lasse.)
Dieser Codeschnipsel ist natürlich nur ein kleiner, aber repräsentativer Ausschnitt. Es sind in der Zitatesammlung, um die es geht, auch längere Texte mit mehreren Zeilenumbrüchen vorhanden.

Nachdem ich das mit den Inline-Elementen jetzt kapiert habe (danke für den Hinweis, the-loser), geht es jetzt nur noch um die Frage:
Muß ich alle Texte innerhalb der blockquote-Tags nochmal in ein <p> oder <div> packen?
 
Hi t_matze,

laute SelfHTML zählt <br> auch zu den Inline-Elementen – jetzt verstehe ich nicht ganz, was Du mit folgender Aussage meinst:
Der Zeilenumbruch vor <address> liegt daran, daß ich <address> per CSS als inline-Element darstellen lasse.
Meiner ansicht nach ist <br> ein Inline-Element, daran kann meines Wissens nach auch eine CSS-Formatierung nix dran ändern, und demnach ist <br> innerhalb von <blockquote></blockquote> verboten (nach HTML strict).


Nachtrag: Habe nochmal genau nachgelesen: Inline-Elemente können innerhalb von Block-Elementen genutzt werden, und diese sind wiederum in einem <blockquote> erlaubt. Daher sollte das ganze dann so aussehen:

Code:
<blockquote>[b]<div>[/b]Wer seine Wünsche zähmt, ist immer reich genug.<br>
<address>Theodor Fontane</address>[b]</div>[/b]</blockquote>
In Deinem Beispiel in jedem Fall mit <div> anstelle von <p> arbeiten, da kein neuer Absatz, sondern nur ein neuer Block markiert werden soll!

Nachtrag 2: Ausserdem solltest Du statt des "ü" und des "ä" ein "& uuml;" bzw. ein "& auml;" (jeweils ohne Leerzeichen!) verwenden – oder hast Du die Nutzung von Umlauten über CSS geregelt?
 
Mit der <address>-Aussage meinte ich, daß dieses Tag ja üblicherweise selbst einen neuen Absatz erzeugt. Ich habe ihm das auf dieser Seite aber verboten, weil es auch mal im Textverlauf verwendet wird. Daher benötige ich im zitierten Codebeispiel eben einen Zeilenumbruch. Das war's auch schon.

Danke für's Mitdenken. Jetzt werde ich also allen Text in <div>s packen, damit es wieder valide wird. Mich wundert das aber wirklich, da Text (PCDATA) ja auch in der strict-Variante innerhalb eines <blockquote> erlaubt sein müßte!

Um die Umlaute brauche ich mir glücklicherweise keine Sorgen zu machen, die werden beim Öffnen der Datei mit dem Phase5-Editor automatisch in lesbare Umlaute verwandelt, beim Abspeichern der Datei dann wieder maskiert.
 
Ich hab's jetzt wie folgt in <div>s verpackt - und prompt ist die Seite wieder valide. Vielen Dank für Deine Hilfe, the-loser.
Code:
<blockquote><div>Wer anderen nicht verzeihen will, reißt die Brücke ein, über die er selbst gehen muß.</div>
<address>Spencer W. Kimball, "Das Wunder der Vergebung"</address></blockquote>
Falls jetzt noch jemand die ersehnte Erklärung hat, warum nakter Text im <blockquote> verboten ist, wäre ich natürlich froh.
 
t_matze,

nackter Text ist nicht verboten, aber das <br> ist es! Wie oben geschrieben: <br> ist ein "Inline"-Element und muss demzufolge von einem "Block"-Element umschlossen sein. <blockquote> ist kein Block-Element, aber <div>.

Zusammenfassung:

Erlaubt ist:

Code:
<blockquote> Text Text </blockquote>
Verboten ist:

Code:
<blockquote> Text <inline-element> Text </blockquote>
Die Verbesserung lautet:

Code:
<blockquote> <block-element> Text <inline> Text </block-element> </blockquote>

Damit sind hoffentlich alle Klarheiten beseitigt :D
 
Ich würde ja gerne mit Dir übereinstimmen, aber wie muß ich dann das verstehen?
Original geschrieben vom W3C
Line 132, column 34: character data is not allowed here

<blockquote> W bitten um Stärke, und Gott schickt uns...

You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include putting text directly in the body of the document without wrapping it in a container element (such as a <p>aragraph</p>) or forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes).
 
Ich verstehe das folgendermassen: Hättest Du das <br> als Zeilenumbruch weggelassen und nur Text geschrieben, hätte W3C Dir das nicht angemeckert. Da Du aber <br> verwendest, Zeigt Dir der Validator an, ab wo der möglich Fehler beginnt – er markiert also die Stelle, ab der er ein Block-Element erwarten würde.

Ich stimme Dir zu, dass es geschickter gewesen wäre, das <br>-Tag zu markieren, aber das ist ja nicht der eigentliche Fehler ;)

Du kannst es ja mal testen ohne das <br>, dann wird der Validator das sicher als valide durch gehen lassen!
 
Ich hab jetzt mal eine relativ nackte Testseite erstellt, die eine blockquote mit einer einzigen Zeile reinem Text enthielt - und diese Zeile wurde wieder als ungültig bezeichnet. :( :unsure: :unsure:
 
Gerade habe ich die Probe auf's Exempel gemacht und das Beispiel für Blockquotes auf SelfHTML durch den Validator geschickt: Auch hier wird der Text als Invalid angekreidet, weil er nicht in einem weiteren Block-Element verpackt ist. (Daß kein Character Encoding gefunden wurde, spielt hier keine Rolle.) Das muß ich gleich mal dem Stefan Münz erzählen, mal sehen, was der dazu meint.
 
Oben