molily: Probleme bei XHTML Strict-Validierung

Hallo zusammen.

Nach einigen Fehlversuchen versuche ich meine Homepage[1] endlich von XHTML 1.0 Transitional auf Strict umzustellen, bin aber immer wieder an den nur aus der unterschiedlichen Deklaration entstandenen Validator-Fehlermeldungen[2] gescheitert, die mir unverständlich waren, da mir mein Quelltext - wie ich immer dachte - extrem standardkonform und interoperabel schien.

Ich kann den Quelltext so modifizieren, dass die Fehler z.T. nicht mehr angezeigt werden - aber es geht mir nicht um die Standardkonformität als Selbstzweck -, wodurch ich jedoch den Code logisch entstelle und nur zusätzlichen unverständlichen Ballast einfüge.

Mir scheint es schleierhaft, warum bspw. <blockquote><em>Zitat</em><br /><a>Quelle</a></blockquote> Fehler auslöst (Attribute gekürzt).
Ich bekomme immer die Fehler "element 'foo' not allowed here; possible cause is an inline element containing a block-level element" und "text is not allowed here; try wrapping the text in a more descriptive container". Die Lektüre der Spezifikationen hilft mir auch nicht weiter - blockquote ist ein Block-Element, die restliche Inline-Elemente; kein Inline-Element enthält ein Block-Element *confused*.

Vielleicht kann sich jemand mal bitte die Fehler und den betreffenden Code ansehen, denn durch die XML-"well formed"-Regeln blicke ich scheinbar nicht durch. Momentan habe ich nur die Startseite mit entsprechender DTD-Deklaration versehen.

Thx,
Mathias Schäfer

[1] http://home.t-online.de/home/dj5nu/
[2] http://validator.w3.org/check?uri=http://home.t-online.de/home/dj5nu/

  1. Hallo !

    "Diese Seiten sind fuer die Benutzung von JavaScript pessimiert." *lol*

    Mir scheint es schleierhaft, warum bspw. <blockquote><em>Zitat</em><br /><a>Quelle</a></blockquote> Fehler auslöst (Attribute gekürzt).
    Ich bekomme immer die Fehler "element 'foo' not allowed here; possible cause is an inline element containing a block-level element" und "text is not allowed here; try wrapping the text in a more descriptive container".

    Siehe: http://www.w3.org/TR/html401/struct/text.html#edef-BLOCKQUOTE
    bzw. http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

    "<!ELEMENT blockquote %Block;>"

    Will sagen: Das BLOCKQUOTE-Element darf selbst _ausschließlich_ Block-Level-Elemente enthalten, keine Inline-Elemente. (Das hieße dann %flow;: sowohl %Block;, als auch %inline;)

    Daher die Fehlermeldung: "text is not allowed here; try wrapping the text in a more descriptive container"

    P wäre ein 'more descriptive Container', denn er ist ein Block-Level-Element und darf (sogar nur) Inline-Elemente enthalten.

    Also:
    FALSCH:  <blockquote>text</blockquote>
    RICHTIG: <blockquote><p>text</p></blockquote>

    Die andere Fehlermeldung "element 'foo' not allowed here; possible cause is an inline element containing a block-level element" stimmt in diesem Fall nicht, aber es heißt ja auch "possible". :-)

    HTH

    Gruß,

    kerki

    1. Guten Abend!

      Also:
      FALSCH:  <blockquote>text</blockquote>
      RICHTIG: <blockquote><p>text</p></blockquote>

      Genau das war die Lösung, die ich erfolgreich ausprobiert hatte, aber für blöde doppelt gemoppelt empfunden hatte. :) Da geht ja völlig der Charakter der logischen Textauszeichnung verloren, man bräuchte blockquote gar nicht mehr. Die Definition des Aussehens läuft jetzt auch plötzlich über beide Style Sheet-Klassen der nun zwei Elemente. Damit rendert der Browser den Text als Element zweiter Ordnung.
      Scheinbar muss ich meinen jahrelang angewöhnten und für richtig befundenen Schreibstil über den Haufen werfen. ;)

      Danke noch einmal für die Hilfe! Alles klappt jetzt wunderbar und die Validierung ist fehlerfrei.

      Grüße,
      Mathias