- 3.1 DTDとは
- 3.2 well-formed と valid
- 3.3 DOCTYPE宣言
- 3.4 SYSTEMとPUBLIC
- 3.5 まとめ
3.4 SYSTEMとPUBLIC
DOCTYPE宣言中で、DTDの外部サブセットを指定する場合、その外部サブセットの所在を記述する必要があります。その外部サブセットの指定方法には、二つあります。ひとつがシステム識別子によるもの。2つ目が、公開識別子によるものです。
システム識別子による方法は、URIを使用してファイルの所在を指定する方法です。システム識別子を使用してDTDの所在を指定する場合は、以下のように記述します。
<!DOCTYPE ルート要素 SYSTEM "外部サブセットのURI">
URI(Uniformed Resource Identifier)はURLを包含する規格ですので、URLもURIだといえます。一応、URLの構造について、解説しておきます。URLは以下の構成になっています。
プロトコル指定 : // ホスト指定 / ディレクトリ指定
XMLで外部ファイルを参照する際は、プロトコルとしてhttp、ftp、fileなどを主に使用します。システム識別子を使用したDOCTYPE宣言の例を以下に記述します。
<!DOCTYPE memo SYSTEM "http://www.4dd.co.jp/DTD/memo.dtd">
公開識別子とは、ISOや標準化団体、業界などで利用することを目的として開発されたDTDやエンティティ宣言集を特定するための表現です。公開識別子を使用して外部ファイルの所在を指定する場合は、以下のように記述します。
<!DOCTYPE ルート要素 PUBLIC "公開識別子 " "外部サブセットのURI">
識別子の形式は、ファイルを使用するユーザ間で合意が取れていればどんなものでもかまいません。一般には、以下のようなフォーマル識別子の形式が使用されます。
"(+//または-//) 組織名/出版番号 (説明文) // データの種類 (説明文) // 言語コード "
先頭の"+//"は、このデータが正式な機関に登録されていることを表します。"-//"は、とりあえず正式に登録せず、ファイルを使用するユーザ間で合意が取れていることを示します。公開識別子による、外部サブセットの指定方法の例を以下に示します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN" "http://www.w3.org/MarkUp/Wilbur/HTML32.DTD">
3.5 まとめ
- DTDとは、XML文書のスキーマ言語の一種である。
- XMLには、DTDを含まないwell-formed文書とDTDを含むvalid文書がある。
- DTDはDOCTYPE宣言において指定する。
- DOCTYPE宣言では、要素、属性、エンティティ、記法を宣言する
- DOCTYPE宣言中は、外部のDTDファイルの参照も行える。外部ファイル指定の方法は、SYSTEMとPUBLICがある。
*現在では、DTDの短所も明らかにされています。例えば、DTDは、XMLの構文に従っていないため、独自の構文を覚える必要があります。また、DTDは適切に名前空間に対応していません。その他、不特定の複数の定義を組み合わせて1つの文書定義として使用する(モジュール)、といった使い方に対応していません。XMLの他のスキーマ言語としては、XML Schema、RELAX、XML Data Reducedなどがあります。