属性を使用してフォームの検証動作を定義する jQuery プラグインの作成をいじっています (はい、検証プラグインが既にあることは承知しています。これは、使用するものと同じくらい学習課題です)。理想的には、次のようなものが欲しいです。
例 1 - 入力:
<input id="name" type="text" v:onvalidate="return this.value.length > 0;" />
例 2 - ラッパー:
<div v:onvalidate="return $(this).find('[value]').length > 0;">
<input id="field1" type="text" />
<input id="field2" type="text" />
<input id="field3" type="text" />
</div>
例 3 - 定義済み:
<input id="name" type="text" v:validation="not empty" />
ここでの目標は、どの要素を検証する必要があるか (これは既に行われています) を jQuery コードが把握できるようにし、マークアップを有効な XHTML のままにすることです。これが問題です。これには、DTD と XML スキーマの両方の組み合わせが必要になると確信していますが、正確にどのように実行すればよいかはよくわかりません。
この記事に基づいて、次の DTD を作成しました。
<!ENTITY % XHTML1-formvalidation1
PUBLIC "-//W3C//DTD XHTML 1.1 +FormValidation 1.0//EN"
"http://new.dandoes.net/DTD/FormValidation1.dtd" >
%XHTML1-formvalidation1;
<!ENTITY % Inlspecial.extra
"%div.qname; " >
<!ENTITY % xhmtl-model.mod
SYSTEM "formvalidation-model-1.mod" >
<!ENTITY % xhtml11.dtd
PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
%xhtml11.dtd;
そして、ここに「formvalidation-model-1」があります:
<!ATTLIST %div.qname;
%onvalidation CDATA #IMPLIED
%XHTML1-formvalidation1.xmlns.extra.attrib;
>
私はこれまで DTD をやったことがないので、自分が何をしているのか正確にはわかりません。W3 XHTML バリデーターを使用してページを実行すると、すべての XHTML 要素の定義が重複しているため、80 以上のエラーが発生します。私は少なくとも正しい軌道に乗っていますか?助言がありますか?
編集: カスタム DTD からこのセクションを削除しました。これは、実際には自己参照であることが判明したためです。テンプレートを取得したコードは、特定の項目を 1 つに追加するのではなく、2 つの DTD を 1 つに結合するためのものでした。
<!ENTITY % XHTML1-formvalidation1
PUBLIC "-//W3C//DTD XHTML 1.1 +FormValidation 1.0//EN"
"http://new.dandoes.net/DTD/FormValidation1.dtd" >
%XHTML1-formvalidation1;
これも検証しておらず、何もしていないようだったので削除しました。
<!ENTITY % Inlspecial.extra
"%div.qname; " >
さらに、いくつかのアイテムを追加するだけなので、W3 が推奨する個別のファイル モデルはあまり役に立たないように思えたので、すべてを dtd ファイルに入れました。その内容は次のとおりです。 :
<!ATTLIST div onvalidate CDATA #IMPLIED>
<!ENTITY % xhtml11.dtd
PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
%xhtml11.dtd;
そのため、DTD 関連の検証エラーは発生していませんが、onvalidate 属性はまだ有効ではありません。
更新: DTD を捨ててスキーマを追加しました: http://schema.dandoes.net/FormValidation/1.0.xsd
v:onvalidate を使用すると、Visual Studio で検証されているように見えますが、W3C サービスはまだ気に入っていません。
ソースを確認できるように、これを使用しているページを次に示します。
w3c 検証結果へのリンクは次のとおりです。
http://validator.w3.org/check?uri=http://new.dandoes.net/auth&charset=(検出+自動)&doctype=Inline&group=0
これは私がこれで得ることができるのと同じくらい近いですか、それともまだ何か間違っていますか?