19 HTMLに関するSGML参照情報

19.は,HTML4.0の形式的なSGML定義を含む。これは,SGML宣言文書型宣言(Document Type Definition, DTD),及び文字実体参照を含み,さらに,SGMLカタログサンプルも含む。

これらのファイルは,次に示すとおり,ASCIIフォーマットでも入手できる。

デフォルトDTD
http://www.w3.org/TR/REC-html40/strict.dtd
過渡的DTD
http://www.w3.org/TR/REC-html40/loose.dtd
フレーム集合DTD
http://www.w3.org/TR/REC-html40/frameset.dtd
SGML宣言
http://www.w3.org/TR/REC-html40/HTML4.decl
実体定義ファイル
http://www.w3.org/TR/REC- html40/HTMLspecial.ent
http://www.w3.org/TR/REC- html40/HTMLsymbol.ent
http://www.w3.org/TR/REC-html40/HTMLlat1.ent
サンプルカタログ
http://www.w3.org/TR/REC-html40/HTML4.cat

19.1 文書の妥当性検査

文書作成者の多くは,限定したブラウザに依存して作成する文書を検査しており,その際,そのブラウザが文書をレンダリングできる場合に,その文書は妥当と仮定している。不幸なことに,これは,精密に文書の妥当性を検証する効果的な手段ではない。ブラウザは,妥当ではない文書をレンダリングすることでそれにうまく対処し,利用者に不満を与えないように設計されているからである。

より優れた妥当性検査のためには,nsgmlなどのSGMLパーサ([SP]o参照)に対して自らの文書を検査し,HTML文書がHTML4.0 DTDに適合することを検証することが望ましい。文書の文書型宣言がURIを含み,SGMLパーサがこの型のシステム識別子をサポートする場合は,直接にDTDを入手することになる。そうでない場合には,次のSGMLカタログサンプルを使用できる。DTDがファイル"strict.dtd"として保存されており,実体がファイル"HTMLlat1.ent","HTMLsymbol.ent"及び"HTMLspecial.ent"に存在すると仮定する。いずれの場合でも,SGMLパーサがUnicodeを確実に処理できるようにすること。更なる詳細については,妥当性検査ツール文書化を参照すること。

これら妥当性検査は有用であって大いに推奨されるが,文書がHTML4.0規定に完全に適合することを保証するものではない点に注意すること。これは,SGMLパーサが,妥当なHTML4.0文書のすべての局面を表現しているわけではない特定の与えられたSGML DTDだけに依存していることによる。特に,SGMLパーサは,構文,構造,要素のリスト及びその属性の妥当性は確実にする。しかし,例えば,IMG要素のwidth属性を,"foo","12.5"などの妥当ではない値に設定するなどのエラーを捉えることはできない。この規定はこの属性の値を"画素単位で測った長さを表現する整数"に限定するが,DTDは,この属性をCDATAと定義するだけであって,実際には,任意の値も許してしまう。特殊化されたプログラムだけが,HTML4.0の完全な規定を捉えることができる。

それにもかかわらず,この種の妥当性検査は,文書を妥当ではないとしているエラーの大部分を検知できるので,大いに推奨される。

19.2 SGMLカタログの例

このカタログは,nsgmlなどの処理ソフトウェアがシステム識別子に優先して公開識別子を確実に使用するための上書き指示を含む。これは,URIベースのシステム識別子を検索する場合に,利用者がそのURIのウェブに接続されていなくともよいことを意味する。

OVERRIDE YES

PUBLIC "-//W3C//DTD HTML 4.0//EN" strict.dtd
PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" loose.dtd
PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" frameset.dtd
PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent
PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent
PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent