Hallo Peppy,
Wenn du XHTML schreibst und eine XML-Deklaration angeben willst, musst du diese *vor* die Dokumenttyp-Deklaration (<!DOCTYPE ...>) setzen, sie muss also direkt am Dokumentanfang stehen. Wenn du fürchtest, dass der MSIE 6 deshalb in den Quirks-Rendermodus schaltet: Lass sie weg, sie ist unnötig, vor allem wenn du sowieso HTML-kompatibles XHTML schreibst, welches nicht wirklich XHTML ist (also nicht ohne Änderung als XHTML ausgewertet werden kann, was an sich natürlich schlecht ist, wenn du eines Tages auf XHTML unter dem richtigen Etikett wechseln willst).
Du gibst zwei unterschiedliche, sich widersprechende Kodierungen an (daher rührt auch der Validatorfehler, glaube ich):
<?xml version="1.0" encoding="utf-8"?>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
Einmal UTF-8 (XHTML-Standard) und ISO-8859-1. Du nutzt allerdings sowieso nur ASCII-Zeichen, so wäre UTF-8 ein wenig überdimensioniert und ISO-8859-1 schöpfst du auch nicht aus, weil du keine 8-Bit-Zeichen verwendest. Faktisch nutzt du nur Zeichen aus US-ASCII.
Da du dein XHTML als HTML auslieferst (Inhaltstyp text/html) ignorieren die Browser die encoding-Angabe im XML-Prolog sowieso. Das heißt, sie bringen die Zeichenkodierung nach HTML-Regeln (http://www.edition-w3.de/TR/1999/REC-html401-19991224/charset.html#idx-character_encoding-6) in Erfahrung und nutzen die Angabe im meta-Element (also ISO-8859-1). Bei einer Verarbeitung als XHTML ist die meta-Angabe hingegen irrelevant, da zählt nur die encoding-Angabe in der XML-Deklaration (bzw. die HTTP-charset-Angabe, welche du aber nicht angegeben hast).
Gib also zumindest zweimal dieselbe Kodierung an, oder beschränke dich auf die richtige meta-Angabe, wenn du die XML-Deklaration weglassen willst (s.o.). Da das Dokument tatsächlich nicht UTF-8 kodiert ist, gib US-ASCII oder ISO-8859-1 an.
Du gibst media="screen,projection" an, dies dürfte Netscape 4 bereits ausschalten (er liest nur Stylesheets exakt mit media="screen", oder galt das nur für link-Elemente?), die @import-Regel ist also meines Wissens zumindest für Netscape 4.x unnötig, du könntest also auch ein link-Element mit denselben media-Angaben verwenden.
Für das html-Element solltest du neben der Namensraum-Angabe auch die Dokumentsprache angeben, also lang="de" xml:lang="de". http://www.edition-w3c.de/TR/2002/REC-xhtml1-20020801/#_Toc6101555
Du kannst form-Elemente nicht in p-Elementen unterbringen, die Lösung mit dem zusätzlichen object-Element ist Quatsch.
In XHTML 1.0 Strict sähe die Verschachtelung ungefähr so aus:
<p>...</p>
<form>
<p>... <input .../> ... </p>
</form>
<p>...</p>
Das form-Element darf in Strict selbst keinen direkten Textinhalt haben und darf selbst auch nicht in einem p-Element stehen.
In Transitional ist folgendes erlaubt:
<p>...</p>
<form>
... <input .../> ...
</form>
<p>...</p>
Wenn du beispielsweise das form-Element und das p-Element davor gruppieren willst (weil sie zusammengehören und du sie beispielsweise entsprechend mit CSS formatieren willst), benutze das div-Element, welches selbst Blockelemente enthalten kann:
<p>...</p>
<div>
<p>...</p>
<form>
... <input .../> ...
</form>
</div>
<p>...</p>
Grüße,
Mathias
--
Ich bin ein verruchter, skrupelloser Datenpirat, denn ich lese nicht gemeinfreie Warezlyrik auf Webseiten, welche kein Nutzungsrecht haben.