ホーム HTML CSS XML JAVASCRIPT   PHP SQL MORE...   リファレンス 事例集    

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を使用できます。


« 前章へ 次章へ »