Kurz-Fakten
- Überkreuzte Auszeichnung wie <p><strong>Text</p></strong> ist ungültig; gültig ist <p><strong>Text</strong></p>
- Ein p-Element wird vom Parser automatisch beendet, sobald ein Blockelement folgt – auch ohne schließendes Tag
- Nur li darf direktes Kind von ul und ol sein; alles andere gehört in das li hinein
- Ein a-Element darf kein weiteres a enthalten, ein button kein interaktives Element
- Der Validator meldet Verstöße gegen das Inhaltsmodell, der Browser nicht
Einordnung für die Praxis
Fehler dieser Art fallen selten sofort auf, weil der Parser sie repariert. Er tut das aber nach seinen Regeln: Ein <div> innerhalb eines Absatzes führt dazu, dass der Absatz vorher beendet wird – der restliche Text steht danach außerhalb, und CSS-Regeln für Absätze greifen dort nicht mehr.
Bei per JavaScript nachgeladenen Bausteinen wird daraus ein Fehler mit Verzögerung: Der Baustein ist für sich gültig, an der Einfügestelle aber nicht erlaubt. Was der Browser daraus macht, weicht dann vom eingefügten Text ab.