DTD
「Document Type Definition」の略です。DTDは、XML文書の構造、要素、属性を定義します。XMLファイルが従う必要のある一連の規則を提供し、同様の文書間で一貫性と妥当性を確保します。
DTDで指定する内容:
- 使用できる要素(タグ)
- 要素の順序と入れ子構造
- 要素に指定できる属性
- 属性に含めることができる値の種類
以下は、自動車のデータをXMLとして保存するためのDTDの例です。
<!DOCTYPE automobile [
<!ENTITY header "Car Details">
<!ELEMENT make (#PCDATA)>
<!ELEMENT model (#PCDATA)>
<!ATTLIST model doors (two | four) #REQUIRED>
<!ELEMENT year (#PCDATA)>
<!ELEMENT engine (#PCDATA)>
<!ATTLIST engine transmission (manual | automatic) #REQUIRED>
]>
上記のDTDでは:
- headerという名前のエンティティが、値「Car Details」で定義されています。
- <make>、<model>、<year>、<engine>などの要素は、解析対象の文字データ(#PCDATA)を含むものとして宣言されています。つまり、テキストを受け入れます。
- 属性リスト(ATTLIST)は、有効な属性値を定義します。たとえば、model要素では、doors属性に「two」または「four」のいずれかを指定する必要があります。また、engine要素にはtransmission属性を含め、その値を「manual」または「automatic」のいずれかに設定する必要があります。
この自動車の例は、比較的単純なDocument Type Definitionです。実際の用途で使われるDTD、特に大規模なXMLデータセットをサポートするDTDは、数百行から数千行に及ぶことがあります。小さなDTDはXML文書内に含めることが多く、大きなDTDは別のファイル(.DTD拡張子付き)として保存し、URL経由で参照します。XML Schema(XSD)のような新しいスキーマ言語は、より柔軟な検証オプションを提供しますが、DTDは現在もXML文書の構造を定義する標準的な方法です。
NOTE: HTML 2から4.01(1995~1999)では、HTMLファイルで使用できるタグと属性を定義するためにDTDが使われていました。HTML5では外部DTDへの参照が廃止され、各HTML文書は<DOCTYPE html>で始まります。
知識をテストする