WWW INFOMATION
XML top >>DTDを作成する

DTDを作成する

 詳細な仕様は後にして、とりあえずDTDを作成してみます。
DTDにするデータと実際のDTDを比べてみて下さい。(一番下にDTDチェック用のプログラムを置いています。)
DTDについて DTDを作る

DTDについて

 次章とほぼ内容が変わらないため、カットしました。
 次章のDTD概要を参考下さい。

DTDを作る

 会員を扱う以下のようなXMLの構成を定義するDTDを考えます。

・XML
<?xml version="1.0" ?>

<members>

  <member num="01">
    <name>山田太郎</name>
    <addr>東京都XXXXX</addr>
    <contact  tel="xx-xxxx-xxxx" e-mail="xx@xxxxx" />
  </member>

  <member num="02">
    <name>山田花子</name>
    <addr>大阪府XXXX</addr>
    <contact  tel="xx-xxxx-xxxx" />
  </member>

</members>

 上のXMLのデータ構成は以下のようになっています。



 各要素、属性の内容は以下の通りです。

要素 内容 必須
members 文章要素(ルート要素)。会員全てのデータを意味する。
子要素としてmember要素を持つが内容は持たない。
member 会員一人一人のデータを意味する。
子要素として、name、addr、contactを持ち、また、属性としてnumを持つ。内容は持たない。
 
name 会員の名前を意味する。
内容を持つ。
addr 会員の住所を意味する。
内容を持つ。
contact 会員の連絡先を意味する。
内容を持たないが、属性として、tel、e-mailを持つ。
 
属性 内容 必須
num 会員番号を意味する。
tel 電話番号を意味する。
e-mail eメールを意味する。  

 この構成をDTDにすると以下のようになります。

<!DOCTYPE members [

<!ELEMENT members (member*)>
<!ELEMENT member (name,addr,contact? )>
<!ATTLIST member num CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT addr (#PCDATA)>
<!ELEMENT contact EMPTY>
<!ATTLIST contact tel CDATA #REQUIRED>
<!ATTLIST contact e-mail CDATA #IMPLIED>

] >

 このDTDをXML内に記述します。

<?xml version="1.0" ?>

<!DOCTYPE members [

<!ELEMENT members (member*)>
<!ELEMENT member (name,addr,contact? )>
<!ATTLIST member num CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT addr (#PCDATA)>
<!ELEMENT contact EMPTY>
<!ATTLIST contact tel CDATA #REQUIRED>
<!ATTLIST contact e-mail CDATA #IMPLIED>

] >

<members>

<member num="01">
<name>山田太郎</name>
<addr>東京都XXXXX</addr>
<contact tel="xx-xxxx-xxxx" e-mail="xx@xxxxx" />
</member>

<member num="02">
<name>山田花子</name>
<addr>大阪府XXXX</addr>
<contact tel="xx-xxxx-xxxx" />
</member>

</members>

 このDTD定義により、もしXMLの内容がDTDの定義と異なっていた場合、DTDをチェックするプログラムはエラーを返します。

 IEはDTDのチェックを行っていないためエラーを返しません。(内部的には処理するプログラムを持っています。)

 そこで、DTDのチェックプログラムを作成しましたのでご使用下さい。→ダウンロード

 ダウンロードしたファイルを、作成したDTD付きXMLと同じフォルダに置いて実行して下さい。実行すると、ファイル名の入力を聞かれますのでXMLファイル名を入力します。入力したXMLに間違いがあると、エラー内容が表示されます。(windowsのみ動作。)

戻る   進む