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>
<!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>
<!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)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
なぜDTDを使うのか?
DTD を使用すると、各 XML ファイルに自身の形式に関する説明を含めることができます。
DTD を使用すると、独立した団体が標準の DTD を一貫して使用してデータを交換できます。
また、アプリケーションは標準の DTD を使用して外部から受信したデータを検証できます。
さらに、自身のデータを検証するために DTD を使用することもできます。
その他の拡張