WordPress のデフォルトの検索フォームが Invalid な件
WordPress のデフォルトの検索フォーム(get_search_form API やウィジェットのもの)を使うと正しくない XHTML のコードを使っているようです。具体的には次のようなコードになります。
<form role="search" method="get" id="searchform" action="http://blog.example.com/" > <div><label class="screen-reader-text" for="s">検索:</label> <input type="text" value="" name="s" id="s" /> <input type="submit" id="searchsubmit" value="検索" /> </div> </form>
この role 属性の部分が文法エラーとなってしまいます。本家のフォーラムでも話題になっています。WordPress 2.9.2 ではそのままですが、3.0beta で確認したところ role 属性は削除されているので修正されたようです。
2.9.2 以下で気になる方は、検索ウィジェットを使わず、テキストウィジェットに直接、修正した検索フォームの HTML を記述すれば OK です。
ちなみに role 属性は、XHTML の拡張として W3C より草案(Working Draft)が出ているものです。XHTML Role Attribute Module(日本語訳: XHTML Role 属性モジュール)というモジュールで公開されています。
この仕様で定義される XHTML Role 属性は、作成者が要素に役割を与えるための属性です。機械で抽出可能な意味情報を要素に与えることで、XML を用いた言語に注釈を与えることができるようになります。ユースケースとして、アクセシビリティやデバイスアダプテーション、サーバーサイド処理、複雑なデータの説明が挙げられます。この属性は、XHTML Modularization [XHTMLMOD] に基づいたマークアップ言語に組み込むことが可能です。
role="search"
というのは検索という役割を与えられたフォームということですね。同様に img 要素に role="banner"
とあれば、サイトのロゴなどを表わす役割の画像ということが検索エンジンなどのロボットにも理解できるという訳です。class 属性にある程度決まった文字列を指定する microformats と思想的には近いのかもしれませんが、こちらはメインのコンテンツ部分(main)とナビゲーション領域(navigation)を明確に分離するなどに主眼を置いていると言えます。
つまり WordPress 2.9 の検索フォームは role 属性を先取りしていたのですが、「XHTML Role 属性モジュール」が勧告になればモジュール化されている XHTML1.1 や XHTML2 などに組み込んで Valid にすることは可能ですね。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.