XML DTD
正しい構文のXMLドキュメントは「整形式」と呼ばれます。
DTDに対して検証されたXMLドキュメントは、「整形式」と「有効」の両方です。
DTDとは何ですか?
DTDは、Document TypeDefinitionの略です。
DTDは、XMLドキュメントの構造と有効な要素および属性を定義します。
有効なXMLドキュメント
「有効な」XMLドキュメントは「整形式」であり、DTDのルールに準拠しています。
<?xml version="1.0" encoding="UTF-8"?>
<!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宣言には、DTDファイルへの参照が含まれています。DTDファイルの内容を以下に示し説明します。
XML DTD
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は次のように解釈されます。
- !DOCTYPEnote-ドキュメントのルート要素がnoteであることを定義します
- !ELEMENT note-note要素に「to、from、heading、body」の要素が含まれている必要があることを定義します
- !ELEMENTto-to要素を「#PCDATA」タイプに定義します
- !ELEMENTfrom-from要素を「#PCDATA」タイプに定義します
- !ELEMENTheading-見出し要素を「#PCDATA」タイプに定義します
- !ELEMENTbody-タイプ「#PCDATA」のbody要素を定義します
ヒント: #PCDATAは、解析可能な文字データを意味します。
エンティティ宣言にDTDを使用する
DOCTYPE宣言を使用して、ドキュメントで使用される特殊文字または文字列を定義することもできます。
例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY nbsp
" ">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: W3Schools.">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<footer>&writer; ©right;</footer>
</note>
自分で試してみてください»
ヒント:エンティティには3つの部分があります。アンパサンド(&)で始まり、エンティティ名が続き、セミコロン(;)で終わります。
いつDTDを使用するのですか?
DTDを使用すると、独立したグループの人々が、データの交換に標準のDTDを使用することに同意できます。
DTDを使用すると、外部から受信したデータが有効であることを確認できます。
DTDを使用して、独自のデータを検証することもできます。
DTDを学習したい場合は、DTDチュートリアルをお読みください。
DTDを使用しないのはいつですか?
XMLはDTDを必要としません。
XMLを実験しているとき、または小さなXMLファイルを操作しているときは、DTDの作成は時間の無駄になる可能性があります。
アプリケーションを開発する場合は、仕様が安定するまで待ってからDTDを追加してください。そうしないと、検証エラーが原因でソフトウェアが機能しなくなる可能性があります。