要素型宣言
要素を定義する
XML 文書の要素は、HTML と異なり、デフォルトでは何も設定されていません
そこで、XML 文書の要素を定義するのが要素型宣言です
全ての要素型宣言は、DTD の内部で <!ELEMENT で始まり > で終わります
XML は大文字と小文字を区別しますが、DTD も例外ではありません
ここで指定する文字は、大文字と小文字を区別するため、ELEMENT も大文字でなければなりません
ELEMENT の次のトークンに、宣言する要素名を指定し
要素名の次には、内容記述が含まれます
この内容記述によって、要素の性質が決定されます
<!ELEMENT 要素名 内容記述>
これが、一般的な DTD の要素型宣言です
一般に、ルート要素には ANY キーワードを用います
ANY は、考えられる全ての要素と文字でータを含むことができる要素を表します
ルート要素に ANY を指定すれば、その要素はあらゆる子要素を持つことができ
解析対象文字データを含むこともできるということを意味します
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE object [
<!ELEMENT object ANY>
]>
<object>
Kitty on your lap
</object>
この XML 文書は、DTD にしたがった妥当な文書です
DTD で、object がルート要素であり、全ての文字データを含むことができることを表しています
要素がマーク付けではない、解析対象文字でータを含む場合
すなわち、テキストだけを含む要素を宣言する場合は #PCDATA を使います
#PCDATA を指定する場合は (#PCDATA) というように、これを囲みます
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE object [
<!ELEMENT object ANY>
<!ELEMENT title (#PCDATA)>
]>
<object>
<title>Kitty on your lap</title>
</object>
この XML の DTD には、title 要素がテキストを含むことを宣言しています
object ルート要素は、全ての子要素を持つことができるため、この文書は妥当です