19HTMLのSGML参照情報

内容

  1. 文書の検証
  2. SGMカタログのサンプル

 HTML 4.0のSGML定義を扱ったセクションです。 SGML宣言文書型定義(Document Type Definition: DTD) 字体実体参照SGMLカタログのサンプル があります。

 これらのファイルはASCIIフォーマットで、以下にリストしてあります:

Default DTD:
http://www.w3.org/TR/REC-html40/strict.dtd
Transitional DTD:
http://www.w3.org/TR/REC-html40/loose.dtd
Frameset DTD:
http://www.w3.org/TR/REC-html40/frameset.dtd
SGML declaration:
http://www.w3.org/TR/REC-html40/HTML4.decl
Entity definition files:
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
A sample catalog:
http://www.w3.org/TR/REC-html40/HTML4.cat

19.1 文書検証

 多くの制作者は、ブラウザで表示できれば正しい(検証された)と思って、制作した文書のチェック(検証)をある限られたブラウザだけに依存しています。残念ながら、文書の検証を正確にするには、この方法では効果はありません。何故ならたとえ間違った文書でも、できるだけ表示しようと対処しユーザーの困惑を減らすように、ブラウザは設計されているからです。

 正しく検証するには、制作した文書をSGMLパーサー(参照: [SP])を通して、HTML 4.0 DTDと文書を照らし合わせることです。制作した文書の document type declarationにURLがあり、SGMLパーサーがこのタイプのシステム識別子をサポートしている場合直接DTDを受け取ります。そうでない場合は、以下のSGMLカタログのサンプルを使います。DTDは"strict.dtd"を、実体は"HTMLlat1.ent"・"HTMLsymbol.ent"・"HTMLspecial.ent"というファイルに納められています。SGMLパーサーがUnicodを扱えるかを確認しておかなければなりません。詳しくは、検証ツールの文書を見なければなりません。

 検証することは有効で推奨されるべきではありますが、文書が完全にHTML 4.0に適合しているという保証にはならないことに注意しておくべきです。SGMLパーサーは、単に一定のSGML DTDに沿っているだけで、それが正しいHTML 4.0文書の全面を表現していないからです。SGMLパーサーは、構文・構造・要素のリスト・その属性を検証します。しかし例えば、 IMG要素のwidth属性の正しくない値(例:"foo"や"12.5")を設定したと言うようなエラーを捕えることはできません。仕様書では、この属性の値を「ピクセル単位で整数」と制限していますが、SGML DTDは 単にCDATAであればと定義されこれならなんでも通してしまいます。特殊化されたプログラムだけが、完全なHTML 4.0仕様書で検証できます。

 とはいっても、大部分の文書の間違いを見つけますので、このタイプの検証でも推奨されます。

19.2 SGMLカタログのサンプル

 このカタログは直接上書きして、nsgmlなどのソフトがシステム識別子に優先して公式識別子(public identifiers)を使うようにさせます。ユーザーは、URIのシステムを捜す場合Webに接続する必要はないということです。

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