DTD: 要素型宣言(1)

2005年06月19日(日)更新


■要素型宣言(element type declaration)

たけち: 前回は、DOCTYPEの書き方について学んだよね。

さらら: えぇ。

たけち: 今回は、要素型宣言について学ぼうね。

さらら: 要素型宣言って、XMLデータを構成する要素がどのような階層関係になるのかっていうのを宣言するんだったわね。

ここでは要素型宣言を学びます。

要素型宣言の書き方

たけち: そうだね。じゃあ、まず、要素型宣言の書き方をみてゆこうね。次の図を見て。

さらら: はい。

要素型宣言の書き方

さらら: 「要素名」つて、そのまま、要素の名前よね。でも、内容モデルって何かしら。難しそうな言葉ね。

たけち: ちょっと堅苦しい名前だけど、内容モデルのところには、要素の内容が文字列なのか、子要素を持つのか、空なのか、それとも任意なのかを書けばいいんだよ。

  • 内容モデルに記述すること
    1. 文字列
    2. 空(から)
    3. 子要素
    4. 混合(子要素と文字列の両方)
    5. 任意

さらら: 混合とか任意、ってちょっとイメージわかないけど・・・

たけち: うん。ここからひとつずつ書き方を見ていくから心配しないで。今回は、文字列について見てみようね。

さらら: えぇ、少しずつお願いね。 (^ ^*


■内容モデル=文字列の場合

さらら: 要素の内容が文字列ってことで、子要素なんかを持たないってことよね。

たけち: そうそう。で、要素の内容が文字列の場合には次の図のように書くんだよ。

内容モデルが文字列の場合の書き方

さらら: "("と")"を含めて(#PCDATA)って書くの?

たけち: そうだよ。

さらら: へぇ〜。DTDでこう書いておくと、具体的なXMLデータでは、その要素の内容が文字列になるってことなのね。

たけち: そういうことだね。


■内容モデル=文字列の例

たけち: じゃあ、確認のために、簡単なサンプルを書いてみようね。

さらら: はい。

内容モデルが文字列の例

さらら: この例だと、要素名がnameという要素の内容モデルが(#PCDATA) 文字列の場合は、XMLデータのnameという要素には文字列しかないのよね。分かったわ。

たけち: そうだね。じゃあ、次回からは、別の内容モデルについてみてゆこうね。

さらら: はい。ありがと。

→ 次は、要素型宣言(2) の予定です。 (^ ^;


注 1) PCDATAは「Parsed Character DATA」という意味です。XMLパーサはこの文字列を解釈します。たとえば "&"が"&"に置き換えられたりしますよね。