XMLDTD

文法が正しいXMLドキュメントは「フォーマットが良好」と呼ばれます。

DTDに基づいて検証されたXMLドキュメントは「フォーマットが良好」であり、「有効」です。

DTDとは何ですか?

DTD 文書タイプ定義(Document Type Definition)を表します。

DTD XMLドキュメントの構造および合法な要素と属性を定義します。

有効なXMLドキュメント

「有効」とされるXMLドキュメントは「フォーマットが良好」であり、またDTDの規則に従っています:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>リマインダー</heading>
<body>会議を忘れずに!</body>
</note>

上記のDOCTYPE宣言はDTDファイルへの参照を含んでいます。以下にDTDファイルの内容を示し、説明します。

XMLDTD

DTDの目的は、XMLドキュメントの構造および合法な要素と属性を定義することです:

Note.dtd:

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

上記のDTDの説明は以下の通りです:

!DOCTYPE note - ドキュメントのルート要素をnoteとして定義します
!ELEMENT note - note要素は以下の要素を含む必要があります:"to, from, heading, body"
!ELEMENT to - to要素を"#PCDATA"タイプとして定義します
!ELEMENT from - from要素を"#PCDATA"タイプとして定義します
!ELEMENT heading - heading要素を"#PCDATA"タイプとして定義します
!ELEMENT body - body要素を"#PCDATA"タイプとして定義します

ヒント:#PCDATAは、解析可能な文字データ(parseable character data)を表します。

DTDを使用したエンティティの宣言

DOCTYPE 声明は、ドキュメント内で使用される特殊な文字や文字列を定義するためにも使用されます:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY nbsp " ">
<!ENTITY writer "Writer: Bill Gates.">
<!ENTITY copyright "Copyright: CodeW3C.com.">
]>
<note>
<to>George</to>
<from>John</from>
<heading>リマインダー</heading>
<body>会議を忘れずに!</body>
<footer>&writer; ©right;</footer>
</note>

ヒント:エンティティは三つの部分から成り立っています:と号(&)で始まり、それにエンティティ名が続き、最後に分号(;)で終わります。

DTDを使うべき時はいつですか?

DTDをもちいて、独立したグループがデータ交換の標準に合意することができます。

DTDを使うと、外部から受け取ったデータが有効かどうかを確認できます。

DTDを使って、あなた自身のデータを確認することができます。

DTDを学びたい場合は、私たちの DTD 教程

DTDを使用しない場合

XMLにおいてDTDは必須ではありません。

XMLをテストしている場合や非常に小さいXMLファイルを使用している場合、DTDの作成は時間の無駄かもしれません。

アプリケーションを開発中であれば、規格が安定するまでDTDを追加しないでください。そうしないと、ソフトウェアが検証エラーで動作を停止する可能性があります。