DTD 概要


文書型定義(DTD)は、XML文書の正当な構成要素を定義できます。一連の正当な要素を使用して文書の構造を定義します。

DTD は XML 文書内にインラインで宣言することも、外部参照として使用することもできます。


内部のDOCTYPE宣言

DTD が XML ソースファイルに含まれる場合、次の構文で DOCTYPE 宣言内にラップする必要があります。

<!DOCTYPE root-element [element-declarations]>

DTD を含む XML 文書の例(IE5 以降で開き、「ソースを表示」を選択してください):

<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>

上記の DTD の説明は次のとおりです:

  • !DOCTYPE note(2行目) この文書がnoteタイプの文書であると定義します。
  • !ELEMENT note(3行目) 定義:note要素には4つの要素があります:「to、from、heading,、body」
  • !ELEMENT to(4行目) 定義:to要素は「#PCDATA」タイプです。
  • !ELEMENT from(5行目) 定義:from要素は「#PCDATA」タイプです。
  • !ELEMENT heading(6行目) 定義:heading要素は「#PCDATA」タイプです。
  • !ELEMENT body(7行目) 定義:body要素は「#PCDATA」タイプです。

外部ドキュメント宣言

DTD が XML ソースファイルの外部にある場合、次の構文で DOCTYPE 定義にカプセル化する必要があります。

<!DOCTYPE root-element SYSTEM "filename">

この XML 文書は上記の XML 文書と同じですが、外部の DTD を持っています:(、「ソースを表示」コマンドを選択してください。

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

これは DTD を含む「note.dtd」ファイルです:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>


なぜDTDを使うのか?

DTD を使用すると、各 XML ファイルに自身の形式に関する説明を含めることができます。

DTD を使用すると、独立した団体が標準の DTD を一貫して使用してデータを交換できます。

また、アプリケーションは標準の DTD を使用して外部から受信したデータを検証できます。

さらに、自身のデータを検証するために DTD を使用することもできます。

その他の拡張