XML > XML > DTD の指定方法
DTD の指定方法
DTD は別ファイルにしておくことも、XML 文章中に記述することも出来る。
別ファイルにしたものを DTD の外部サブセット(external subset)、
XML 文章中に記述されたものを DTD の内部サブセット(internal subset)と言う。
外部サブセットと内部サブセットの両方を同時に指定することも可能。
外部サブセットの書式:1
オリジナルの DTD を参照する場合は以下の書式になる。
<!DOCTYPE ルート要素名 SYSTEM "システム識別子"> (注意)システム識別子・・・外部 DTD の URI のこと (例) <!DOCTYPE Products SYSTEM "product.dtd"> |
外部サブセットの書式:2
一般公開されている DTD を参照する場合は以下の書式になる。
<!DOCTYPE ルート要素名 PUBLIC "公開識別子" "システム識別子"> (公開識別子が認識できない場合のため、後ろにシステム識別子を付ける必要がある) 公開識別子の書式 標準化承認の有無//組織名//データ種類//言語コード (注意)標準化承認の有無・・・標準化団体で承認されている場合は"+"、されていない場合は"-" (例) <!DOCTYPE html PUBLIC "-//W3C//DTD HTML4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> |
内部サブセットの書式
<!DOCTYPE ルート要素名[ ・・・・・・・・・・・ ・・・DTD の内容・・・ ・・・・・・・・・・・ ]> (例) <!DOCTYPE Products[ <!ELEMNET Products(name, prise)> <!ELEMNET name(#PCDATA)> <!ELEMNET prise(#PCDATA)> ]> |
外部サブセット・内部サブセット両方を指定する場合
<!DOCTYPE ルート要素名 外部DTDサブセット呼出 [ 内部DTDサブセット ] > (例) <!DOCTYPE Products SYSTEM "product.dtd" [ <!ELEMNET Products(name, prise)> ・・・・・・・・ ・・・省略・・・ ・・・・・・・・ ]> |
(注意点)
・内部サブセットと外部サブセットとのマージが行われる
・要素宣言の重複は許されない
・属性リスト宣言・実体参照宣言の重複は許される
・重複があった場合は内部サブセットの内容が優先される
外部サブセット・内部サブセット両方とも不要な場合
DOCTYPE 宣言を省略すれば良い。