8 Stimmen

Erweiterung von XHTML

Ich spiele herum mit dem Schreiben eines jQuery-Plugins, das ein Attribut verwendet, um das Formularvalidierungsverhalten zu definieren (ja, ich bin mir bewusst, dass es bereits ein Validierungs-Plugin gibt; dies ist sowohl eine Lernübung als auch etwas, das ich verwenden werde). Ideal wäre es, etwas wie dieses zu haben:

Beispiel 1 - Eingabe:

Beispiel 2 - Wrapper:

Beispiel 3 - Voreingestellt:

Das Ziel hier ist es, meinem jQuery-Code zu ermöglichen, herauszufinden, welche Elemente validiert werden müssen (das ist bereits erledigt) und dennoch das Markup als gültiges XHTML zu haben, was mein Problem ist. Ich bin ziemlich sicher, dass dies eine Kombination aus DTD und XML-Schema erfordern wird, aber ich bin mir nicht wirklich sicher, wie ich das genau umsetzen soll.

Basierend auf diesem Artikel habe ich die folgende DTD erstellt:

%XHTML1-formvalidation1;

%xhtml11.dtd;

Und hier ist "formvalidation-model-1":

Ich habe noch nie zuvor eine DTD gemacht, also bin ich mir nicht wirklich sicher, was ich tue. Wenn ich meine Seite durch den W3 XHTML-Validator laufen lasse, erhalte ich über 80 Fehler, weil doppelte Definitionen aller XHTML-Elemente vorliegen. Bin ich zumindest auf dem richtigen Weg? Irgendwelche Vorschläge?


EDIT: Ich habe diesen Abschnitt aus meiner benutzerdefinierten DTD entfernt, weil sich herausstellte, dass er tatsächlich selbstreferenzierend war und der Code, den ich als Vorlage erhalten habe, eigentlich dafür gedacht war, zwei DTDs zu kombinieren, anstatt spezifische Elemente an eine anzuhängen:

%XHTML1-formvalidation1;

Ich habe auch dies entfernt, weil es nicht validiert wurde und anscheinend nichts bewirkte:

Außerdem habe ich beschlossen, dass ich nur eine Handvoll zusätzlicher Elemente hinzufüge, das separate Dateimodell, das von W3 empfohlen wird, also nicht wirklich hilfreich erscheint, also habe ich alles in die dtd-Datei geschrieben, deren Inhalt jetzt so aussieht:

%xhtml11.dtd;

Jetzt erhalte ich keine mit der DTD zusammenhängenden Validierungsfehler mehr, aber das onvalidate-Attribut ist immer noch ungültig.

Update: Ich habe die DTD verworfen und ein Schema hinzugefügt: http://schema.dandoes.net/FormValidation/1.0.xsd

Die Verwendung von v:onvalidate scheint in Visual Studio zu validieren, aber der W3C-Dienst mag es immer noch nicht.

Hier ist eine Seite, auf der ich es verwende, damit Sie den Quellcode betrachten können:

http://new.dandoes.net/auth

Und hier ist der Link zum Validierungsergebnis von W3C:

http://validator.w3.org/check?uri=http://new.dandoes.net/auth&charset=(detect+automatically)&doctype=Inline&group=0

Bin ich damit so nah dran, wie ich mit diesem Problem kommen werde, oder mache ich immer noch etwas falsch?

7voto

Ben Blank Punkte 52357

Wenn Sie möchten, dass das Ergebnis gültiges XHTML ist, glaube ich, dass Sie XML-Namespaces verwenden müssen, anstelle eines benutzerdefinierten DTD. Nicht nur definiert das DTD die Sprache (und daher ist ein benutzerdefiniertes DTD nicht "wirklich" XHTML), sondern es wird auch jeden Browser, der es liest, in den Quirks-Modus versetzen, selbst wenn sie die Datei nicht verschlucken.

Andererseits wird die Verwendung eines Namespaces perfekt gültiges XHTML produzieren (obwohl nicht alle Validatoren namespaces-fähig sind und es möglicherweise nicht korrekt validieren) und den Browsern ermöglichen, im (fast) Standards-Modus zu arbeiten.

    Validierungsbeispiel

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X