[...]
4.a) Tags besitzen immer einen Schlusstag, auch wenn nur die kurze Schreibweise verwendet wird. Einige Tags dürfen jedoch keinen Inhalt haben, wodurch sich die Kurzschreibweise geradezu aufdrängt.
5) Attributwerte müssen in echten Anführungszeichen (das doppelte Hochkomma) geschrieben werden:
Code
6) Verschachtelte Tags müssen in genau der umgekehrten
Reihenfolge geschlossen werden, wie sie geöffnet wurden
Code
7) Deinem XML-basierten XHTML-Dokument fehlt die XML-Deklaration in der ersten Zeile. Die ist zwar nicht zwingend notwendig, aber wird von Parsern häufig zur Konfiguration benötigt (Als encoding muss natürlich die verwendete Codierung angegeben werden: UTF-8, UTF-16, ISO-xyz,...)
Code
8) Einige Tags dürfen nicht verschachtelt werden. Beispielsweise darf das a-Tag keine weiteren a-Tags enthalten. Solche Fehler werden allerdings von Validatoren, die auf der XHTML-DTD basieren nicht erkannt. Dazu sollte man einen Schema-Validator verwenden
9) Man sollte sich angewöhnen eingebettete Javascripts als, mit Kommentaren versehene CData zu schreiben, weil man sonst schnell Probleme mit den Zeichen < und > bekommen kann. Die werden uncodiert als XML-Tags erkannt => Invalide, kodiert man sie, so funktioniert das Script nicht mehr. Die Kommentare zur Kapselung der CData-Tags sorgen nur dafür, dass die Tags nicht vom Javascript-Interpreter als Javascript erkannt werden, sofern alte Browser verwendet werden. Generell empfiehlt es sich aber einfach alle Scripts als externe Quelle (mit dem src-Attribut) einzubinden.
Code
Und abschließend noch: Du bindest zwar ein Stylesheet ein, verwendest aber trotzdem häufig width- und height-Attribute (die es seit XHTML 1.1 nicht mehr gibt), sowie das style-Attribut. Das ist bäääh :wink: Immer schön auf Trennung zwischen Inhalt und Layout achten!
(und noch eine Anmerkung: "CSS ist valide!" hört sich sehr verallgemeinernd an)