WWW INFOMATION
XML top >>DTD仕様詳細 内部サブセットと外部サブセット

 内部サブセットと外部サブセット(Internal &External subset)

 DTDの定義方法は、内部サブセット、外部サブセット、および、内部サブセットと外部サブセットの混在の方法があります。

・内部サブセット

 XMLドキュメント内にDTDを定義する方法を内部サブセット(Internal subset)と言い、以下のような形式をとります。

<?xml version="1.0" ?>

<!-- 以下DTD -->
<!DOCTYPE EX [

<!ELEMENT EX (A,B)>
<!ELEMENT A EMPTY>
<!ELEMENT A EMPTY>
] >

<!-- 以下XMLインスタンス(XML本文) -->
<EX>

  <A></A>
  <B></B>

</EX>

 内部セットのDTD定義は、XML文章内の”<!DOCTYPE XXX [”から"] >"の間に定義されます。XXXは、文章要素(ルート要素)を指定します。

・外部サブセット

 DTDを定義したDTDファイルを作成し、XML文章内から、DTDファイルの位置を指定する方法を外部サブセットと言います。
 外部サブセットは以下のような形式をとります。

・XML文書

<?xml version="1.0" ?>

<!-- 以下DTDファイルの位置を示す。 -->
<!DOCTYPE EX SYSTEM "Sample.dtd" >

<!-- 以下XMLインスタンス(XML本文) -->
<EX>

  <A></A>
  <B></B>

</EX>

・DTDファイル("Sample.dtd"ファイル)

<!ELEMENT EX (A,B)>

 外部サブセットでは、XML文書内に以下のDTDファイル参照先を示す定義を記述します。

<!DOCTYPE  文章要素 SYSTEM "外部ファイル名" >

 ファイル名はURLでも構いません。また、外部サブセットの参照先が、広く知られたDTD定義である場合、以下の形式を使用することもできます。

<!DOCTYPE  文章要素 PUBLIC "公開識別子" "外部ファイル名" >

 この定義を利用するケースとして、XHTMLがあります。

<!DOCTYPE html PUBLIC "-//W3c//DTD XHTML 1.1//eN" 
                                       "http://www.w3.org/tR/xhtml11/DTD/xhtml11.dtd" >

 このDTDは、W3Cが、XMLでHTMLと同様の記述をするために作成したものです。(そのため、広く知られています。)

 公開識別子とは、以下の形式をしています。

-// もしくは +// DTDの作成者 // DTDの説明 // 言語指定

 ISO登録機関であれば、先頭が「+//」、ISO登録機関以外は「-//」になります。

・内部サブセットと外部サブセットの混在

 内部サブセットと外部サブセットを混在させる方法もあります。
以下のような形式となります。

・XML文章
<?xml version="1.0" ?>

<!-- 以下DTD -->
<!DOCTYPE EX SYSTEM "Sample.dtd"[

<!ELEMENT A (#PCDATA)>
<!ELEMENT B EMPTY>

] >

<!-- 以下XMLインスタンス(XML本文) -->
<EX>

  <A>DATA</A>
  <B></B>

</EX>

・DTD外部サブセット

<!ELEMENT EX (A,B)>

戻る   進む