DTD はじめに
文書型定義(DTD)はXML文書の正当な構成要素を定義します。 それは正当な要素と属性のリストを持った文書構造を定義します。
DTDはXML文書内での内部宣言か、外部参照として宣言できます。
内部DTD宣言
もしXMLファイル内でDTDを宣言するのであれば、以下の構文を持つDOCTYPE定義でラップしなければなりません:
<!DOCTYPE root-element [element-declarations]> |
内部DTDによるXML文書例:
<?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を見るには "表示→ソース" または "表示→ページのソース" を選択します)
上記DTDは、次のように翻訳されます:
- !DOCTYPE note この文書のルート要素が、noteであることを定義します
- !ELEMENT note noteは、次の4つの要素からなることを定義します: "to,from,heading,body"
- !ELEMENT to to 要素の型を定義します "#PCDATA"
- !ELEMENT from from 要素の型を定義します "#PCDATA"
- !ELEMENT heading heading 要素の型を定義します "#PCDATA"
- !ELEMENT body body 要素の型を定義します "#PCDATA"
外部DTD宣言
もし外部ファイルでDTDを宣言するのであれば、以下の構文を持つDOCTYPE定義でラップしなければなりません:
<!DOCTYPE root-element SYSTEM "filename"> |
これは上と同じ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を使用できます。
|