DTD(文書型宣言について)

文書型宣言とはXML文書の構造について取り決めるものである。
文書型宣言は以下のような形をしている。

<!DOCTYPE ルート要素名[
・・・・
]>


文書型宣言のの中に要素についての取り決めを書く!!
これを要素型宣言という

<!ELEMENT cars	(car)>
<!ELEMENT car	(name,price)>

上記から以下2点がわかる
・cars要素の中にはcar要素が順に出現します
・car要素の中にはname,price要素が順に出現します

<!ELEMENT name	(#PCDATA)>
<!ELEMENT price	(#PCDATA)>

上記から以下2点がわかる
・name要素にはテキスト(#PCDATA)が出現する
・price要素にはテキスト(#PCDATA)が出現する

<!ELEMENT 要素名 (内容やモデルを記入)>


そして必ず順番に出現するようにする

<!ELEMENT car	(name, price, date)>

上記ならこういう感じ

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE cars[
	<!ELEMENT cars	(car)>
	<!ELEMENT car	(name, price, date)>
	<!ELEMENT name	(#PCDATA)>
	<!ELEMENT price	(#PCDATA)>
	<!ELEMENT date	(ad | gengo)>
	<!ELEMENT ad	(#PCDATA)>
	<!ELEMENT gengo	(#PCDATA)>
]>


<cars>
	<car>
		<name>乗用車</name>
		<price>150</price>
		<date>
			<ad>2010-03-01</ad>
		</date>
	</car>
</cars>

DTDの指定と異なる順になると、エラーになる。

<!ELEMENT date	(ad | gengo)>

これはdate要素にはadまたはgengoが」くるということ!!
二つ同時に記入することはできない。


DTDってJavaでゆうDocみたいなものか??
まだまだ謎は多いが、
またひとつ賢くなった。