3. DTDXMLが木構造をとることについて、前章でお話しました。XMLで言語を作成するということは、表現したい世界を木構造にモデリングし、要素や属性を定義していくことになります。本章は、要素や属性を決定する、DTDについて記述します。
XMLの基本 3章 DTD
3.1 DTDとはDTD(Document Type Definition)は、日本語で文書型定義とよばれるもので、XMLのスキーマ言語のひとつです。スキーマ言語とは、データの論理構造や物理構造を定める言語です。XMLは、現実の世界を木構造にモデル化して、それを要素や属性の階層構造で表現します。よって、DTDは、要素や属性の階層構造を定義するものとなります。 以下に例を示します。社員名簿を記述する言語を作成するとします。社員の情報としては、社員番号、名前、住所、年齢、所属部署、所有資格、給料、入社年月日を管理するものとします。退社した社員に関しては、データを削除せずに、退社年月日の情報を付加するものとします。また、所属部署は、所属部と所属の課を記述し、所有資格に関しては、資格名と取得日も記述することとします。 ![]()
DTDには、社員の情報がどのような階層構造をとっているかが、記述されています。例えば、社員番号の親要素は、社員要素であり、所属部署には、所属部と所属課要素が子供要素としてある、という情報が記述されています。また、一人の社員に対して、入社年月日は、唯一定まるものだが、資格は、全くもっていなかったり、複数持っていたり、とまちまちです。このような、情報などもDTDに記述されます。(上の図では、括弧でくくられている要素が必須ではない要素です。)上の要素の階層構造をDTDで記述すると以下のようになります。 <! DOCTYPE 社員名簿 [ <!ELEMENT 社員名簿 (社員+)> <!ELEMENT 社員 (社員番号, 名前, 住所, 年齢, 所属部署, 入社年月日, 所有資格*, 退社年月日?)> <!ELEMENT 社員番号 (#PCDATA)> <!ELEMENT 名前 (#PCDATA)> <!ELEMENT 住所 (#PCDATA)> ところで、XMLは木構造をとると記述しました。XMLでは、木構造の1番根っことなる、ルート要素というものが存在します。ルート要素以外の要素は、必ず、親要素をひとつだけもちます。そして、要素の親をたどっていくと、必ずルート要素になります。上の例では、社員名簿要素がルート要素になります。XML文書では、ルート要素の開始タグと終了タグの間にすべての要素が含まれます。例えば、以下のXML文書は、エラーとなります。 <?xml version="1.0"> <error>このような文書はエラーになります。</error> |
![]()
![]()
|