icon HTML TIDY で Web ページをお掃除する

1998/9/1 版

最新版の Tidy を入手するには、このページのオリジナル版: http://www.w3.org/People/Raggett/tidy をご覧下さい。 tidy の新しいバージョンが出た場合、メールでお知らせするよう登録する ことも可能です。

日本語版 tidy およびドキュメントの日本語訳に関しては、 http://www.w3.org/People/asada/tidy をご覧下さい。

TIDY について

HTML を編集していると、思わぬ間違いを犯してしまうことがよくあります。 こういう間違いを自動的に修正して、適当に書いたマークアップをきれいに してくれる、簡単な方法があれば良いと思いませんか? そう、Hewlett Packard の Dave Raggett に感謝しましょう。HTML TIDY はそのための フリーなユーティリティです。また tidy は非常に読みづらい HTML 専用 エディタや変換ツールの出力するマークアップにもきわめて有効で、障害を 持つ人々に対するページのアクセシビリティを改善するため、どのような点 に注意を払う必要があるか判断する手助けをします。

tidy は広範囲におよぶ問題を修正し、作業を行う上で注意すべき点を指摘 することが可能です。発見された各問題点は、簡単に探すことができるよう 行番号とコラム付きで一覧表示されます。修正方法のはっきりしない問題が ある場合、tidy は修正版を出力しません。このような場合、「警告」では なく「エラー」として表示されます。

TIDY を使った作業の例

tidy は、広く普及している Netscape や Microsoft のブラウザにおける 表示をもとに、マークアップを修正します。TIDY がどのように HTML を 完全にするかについて、いくつか例を示します:

レイアウトスタイル

例えば、エレメントの中身をインデントするか否かなどについて、tidy が 修正版を出力する際における、出力スタイルを選ぶことができます。

国際化

tidy は文字エンコーディングとして US ASCII, ISO Latin-1, UTF-8, ISO 2022 系 7bit エンコードを選択することが可能です(訳注:raw モードを 利用すれば EUC, Shift JIS などのエンコーディングも利用できます)。 HTML 4.0 のすべてのエンティティが定義されており、修正版の出力では、 適切な HTML の名前エンティティを利用します。それ以外の通常範囲外の 文字は、数値エンティティとして出力されます。

アクセシビリティ

tidy はグラフィカルでないブラウザを使っているユーザのため、アクセシビ リティに関する問題について、アドバイスします。もっとも一般的に目にする のは、table エレメントに summery 属性を付けるという助言でしょう。これ は table 役割や構造の簡単な説明を提供し、音声ブラウザのために役立ちます。

表示に関するマークアップをキレイにする

多くのツールが、FONT, NOBR, CENTER などのタグを使った HTML を作ります。 tidy の -clean オプションは、これらを CSS を使ったスタイルの プロパティとルールに置き換えます。このことはマークアップを読みやすくし、 メンテナンスを容易にし、ファイルのサイズを現象させます!

XML サポート

W3C の XML 1.0 勧告に準拠した XML プロセッサは、どのようなファイルを受 け付けるかについて、非常に厳密です。tidy は受け付けられないファイルを 修正するために役立ちます。tidy はまだ、すべての XML の仕様を理解する訳 ではありません。例えば CDATA セクションや DTD サブセットなど、は理解し ません。

レイアウト向上のためのテキストのインデント

 <html>
   <head>
   </head>
   <body>
     <p>
       para which has enough text to cause a line break, and so test
       the wrapping mechanism for long lines.
     </p>
 <pre>This is
 <em>genuine
       preformatted</em>
    text
 </pre>
     <ul>
       <li>
         1st list item 
       </li>
       <li>
         2nd list item
       </li>
     </ul>
     <!-- end comment -->
   </body>
 </html>

この文書はデフォルトで以下のようになります:

 <html>
 <head>
 </head>
 <body>
 <p>para which has enough text to cause a line break, and so test
 the wrapping mechanism for long lines.</p>
 
 <pre>This is
 <em>genuine
       preformatted</em>
    text
 </pre>
 
 <ul>
 <li>1st list item </li>
 
 <li>2nd list item</li>
 </ul>
 
 <!-- end comment -->
 </body>
 </html>
 

tidy の実行方法

   tidy [[options] filename]*

tidy は(まだ) Windows プログラムではありません。もし tidy を引数 なしで起動した場合、標準入力からの入力をそのまま待ち続けます。tidy のデフォルトの入出力は、それぞれ標準入出力です。エラーは標準エラー 出力ですが、-f ファイル名 オプションを使ってリダイレクト することが可能です。

オリジナルのファイルを更新したい場合は、-m オプションを使い、特に 内容がひどい場合は、エラーメッセージを見直しやすいよう、-f オプション を使ってファイルに出力すると良いでしょう。 tidy はいくつかの文字エンコーディングオプションをサポートしています。 デフォルトでは、通常のテキストエディタで編集しやすいよう、ASCII に なっています。

例:

   tidy -f errs.txt -m index.html

この例では、ファイル "index.html" に対して tidy を実行し、直接ファイル を更新し、エラーメッセージをファイル "errs.txt" に書き込みます。他の 複雑なソフトウェアと同様、tidy にはバグがある可能性もありますので、 実行する前に、元のファイルを保存しておくと良いでしょう。もし何かバグ を見つけたら、ぜひお知らせ下さい!

利用可能なオプションの一覧を表示する:

   tidy -help

以下のような出力を得るでしょう:

tidy: file1 file2 ...
HTML 整形ユーティリティ
http://www.w3.org/People/Raggett/tidy/ を参照

tidy (1998 年 9 月 1 日版) のオプション
  -indent または -i  エレメントの内容をインデントする
  -omit   または -o  省略可能な終了タグを省く
  -wrap 72           テキストを 72 文字目で改行 (デフォルトは 68)
  -upper  または -u  タグを大文字にする
  -clean  または -c  font, nobr, center タグを削除
  -raw               128 以上の文字を出力時に変換しない
  -ascii             入力に Latin-1、出力に ASCII を使用
  -latin1            入出力に Latin-1 を使用
  -iso2022           入出力に ISO-2022 ベースのエンコードを使用
  -utf8              入出力に UTF-8 を使用
  -modify または -m  元のファイルを修正
  -errors または -e  エラー表示のみ
  -f <file>          エラーを <file> に出力
  -xml               入力が XML の場合に使用
  -asxml             HTML を XML に変換
  -help   または -h  オプション一覧
デフォルトでは入出力にそれぞれ標準入出力を使用
以下のように-f 以外の一文字オプションは組合せ可能:
   tidy -f errs.txt -imu foo.html

HTML に関する詳しい情報は "Raggett on HTML" 参照,
(c) 1998, Addison Wesley Longman, ISBN 0-201-17805-2

デフォルトの入出力は、それぞれ標準入出力です。-f 以外の一文字の オプションは、tidy -f errs.txt -imu foo.html のように、組み合わせて 使うことも可能です。

今後の予定:

実装に関する情報

コードは ANSI C で書かれており、入出力に C 標準ライブラリを使って います。パーザは thread-safe ですが、整形出力部分のコードは(まだ) そうなっていません。パーザはトップダウンで動作し、メモリ上に完全な バースツリーを作成します。文書は必要に応じて拡張される文字バッファ に、UTF-8 として表現された Unicode で保存されます。このコードは、 Windows 95, Windows NT, Linux, MacOS, BeOS, SunOS, Solaris, IRIX, HP-UX などでテストされています。

tidy01sep98.tgz
gzip で圧縮された tar 形式のソースコード
tidy01sep98ja.tgz
gzip で圧縮された tar 形式の日本語版ソースコード
tidy.exe
Windows 95/NT 用実行形式(DOS 上で動作します)
tidy_03aug98.ppc.zip
zip 形式の BeOS Power PC 用実行形式(1998/8/3 版)
tidy.sunos
gcc でコンパイルされた SunOS 用実行形式
platform.h, html.h
共用のマクロ定義用 include ファイル
lexer.c
文字解析とバッファ管理
parser.c
HTML および XML パーザ
tags.c
タグおよびプロパティの辞書
attrs.c
属性およびプロパティの辞書
istack.c
インライン要素のためのスタック
entities.c
エンティティの辞書
clean.c
表示的マークアップの修正に関するもの/dd>
pprint.c
HTML および XML の修正出力
localize.c
tidy の出力を各国語化するにが、このファイルを変更
tidy.c
main() および error 出力ルーチン
Makefile
gcc 用 Makefile

gcc を使って tidy をコンパイルする場合、Makefile を仕様するか、 簡単に以下のように入力します:

   gcc -o tidy *.c

Dave Raggett <dsr@w3.org> は Hewlett PackardUK Laboratories のエンジニアで、 World Wide Web Consortium で HTML のリーダとして働いています。