DTD を XML 文書に取り込む - XML プログラミング

PROGRAM


DTD を XML 文書に取り込む

XML 文書では、XML スキーマ や DTD (Document Type Definition) を使用して、文書の構造を定義することができます。

ここでは、別ファイルとして用意した DTD を XML 文書に取り込む方法について記してみます。

DTD ファイルの作成方法については DTD の書き方 などを参考にしてください。

XML

DTD ファイルを用意したら、XML 宣言とルート要素との間に、DOCTYPE 宣言を記載します。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ルート要素 SYSTEM "書式定義.dtd">

<ルート要素>

</ルート要素>

このようにすることで、"ルート要素" 用に DTD ファイル "書式定義.dtd" を読み込むことができました。

SYSTEM の後に指定しているファイル名は、上記の例では XML ファイルと同じ場所にある DTD ファイルですけど、そのほかにも http:// で始まる URL や ftp:// や file:// での指定も可能です。

 

なお、DOCTYPE 宣言は 1 つの XML 文書に付き 1 つしか記載できないようなので、スタイルシート等のように、複数のルールをひとつの文書に適用することはできない感じです。

XML 文書の定義を、ファイルを分けて適用するのが都合が良い場合には、DTD ではなく XML スキーマを使用する必要があるようでした。

XHTML

ちなみに XHTML の場合には、次のように "SYSTEM" ではなく "PUBLIC" を使って、たとえば次のように指定します。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">

</html>

PUBLIC の後の指定方法は場合によって違うらしいので、何らかの形で決められた指定方法に従うことになるようです。

HTML の場合は <html> で始まるので、DOCTYPE で指定されているルート要素は "html" になっています。

 

なお、XHTML で指定できる DOCTYPE としては、他にも次のようなものがあるようです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 の規則に厳密に従った文書です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 の規則を基本としつつ、厳密に従わなくても良い文書です。フレームタグには対応しません。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.0 の規則を基本としつつ、厳密に従わなくても良い文書です。フレームタグにも対応します。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
XHTML 1.1 の規則に厳密に従った文書です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
小型デバイスなどでの実装を考えた XHTML 1.0 のサブセット(機能制限版)です。

Web サイトを作る上では、柔軟性を持っている Transitional のセットが手軽でいいかもしれません。


[ もどる ]