HTML Tidy
HTML Tidy をご存じでしょうか? HTML 構造を解析してエラーを表示したり修正するツール(またはプロジェクト名)です。W3C教信者は知らないと魔女狩に会うかも(ねーよ)。
Clean up your Web pages with HTML TIDY
Firefox を愛用しているサイト管理者の中には、Html Validator for Firefox and Mozilla 利用者も多いでしょう。この拡張機能(extension か add-on か統一して欲しい)でも Tidy が使われています。しかし、自分の環境だと何故かすぐ Firefox ごと落ちるので使えない……。
今回は HTML Tidy を GUI で操作したり、Xyzzy から利用する方法を紹介します。
Tidy を GUI で操作
TidyGUI を使えば、通常だとコマンド入力して(CUI で)使う必要がある Tidy が普通のアプリケーションソフトのように(GUI で)扱えます。
XHTML化計画 – HTML Tidy & TidyGUIを使ってみる で実際の操作方法を見ることができます。
Xyzzy で Tidy を使う
今回、自分が導入したのは HTML入力サポート (chez sugi) で公開されている html-support.l です。これは HTML文字実体参照とUnicodeキャラクターの相互変換
することができるのですが、オマケ(?)として、Tidy に編集中のファイルを渡して、文法的に適正な(Valid)XHTML か確認と修正(初期状態では強制的に修正)を行う機能がついています。
ちょっと試してみましたが、<font size=1>hoge</font>
などという記述を <span class="c1">hoge</span>
に強制変換するという、何とも豪快な仕様が気に入りました。ちなみに Tidy でどのような処理を行うかは設定可能です(ちょっと難しいけど)。
導入方法
asiamoth 的導入法はこんな感じ
- Tidy Binaries から“tidy-exe.zip”をダウンロード
- 解凍して tidy.exe を ~/bin/ (Xyzzy のある場所に bin フォルダを作る)に置く
-
.xyzzy か ~/site-lisp/siteinit.l に下記を記述
; html-support
; http://chez-sugi.net/xyzzy/000952.html
(require "html-support")
(add-hook '*html+-mode-hook* 'ht:html-support-mode)
(setq ht:*tidy-command* (merge-pathnames "bin/tidy.exe" (si:system-root)))
自分は職場と自宅で Xyzzy を使っているのですが、それぞれの PC でディレクトリ構造が異なるので、最後の行のような工夫が必要なのです。
キーバインドを変更
さらに、キーバインドが割り当てられているのが「バッファ全体の特定文字を変換」だったので、「リージョン(≒選択範囲)内のみ変換」にキーを割り当てるようにしました。── siteinit.l に記述する方法が判らなかったので html-support.l を直接変更、というのがダサカッコ悪いですが。
420 行から 2 行を下記のように変更しました。
; (define-key keymap '(#\C-c #\e) #'character-to-entity)
; (define-key keymap '(#\C-c #\c) #'entity-to-character)
(define-key keymap '(#\C-c #\e) #'character-to-entity-region)
(define-key keymap '(#\C-c #\c) #'entity-to-character-region)
快適 XHTML
これで Xyzzy から手軽に Web1.0 な HTML を XHTML に変換できるようになりました。html-support.l は標準設定で XML や DOCTYPE 宣言もチェックしてくれます。宣言を書いていない場合は文字コードに合わせて、自動的に追記してくれるのが便利!
最終的に「その記述は正しいのか?」は「にんげんさま」が判断する必要がありますが(その <div>……</div>
いらなくね? とか)、極力ストレス無く XHTML が書けるのはイイですね。