DTD


DTDとは

 DTDはXML文書が有効かつ正しい形式かを検証するのに使用されます。DTDは拡張子.dtdであるテキストファイルですが、XMLの一種ではありません。XMLの中でDTDをリンクしておくと、ある種のアプリケーション(ブラウザなど)でDTDの沿って有効かつ正しい形式かがチェックされます。

 下の例は、DTDのリンク例です。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root SYSTEM "document1.dtd">
<root>
 ....
</root>

 この宣言は一般的には、次のように定義されます。root-elementは最上位要素(ルート)のタグ名、filenameはDTDファイルのパス名です。

<!DOCTYPE root-element SYSTEM "filename">

 DTDが短い場合は、直接、XML内に記述することもできます。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE links [
<!ELEMENT link (#PCDATA)>
]>
<links>
<link>URL-A</link>
<link>URL-B</link>
</links> 

DTDの文法

要素

 要素の宣言はXMLのタグ(要素名)ごとに、その要素の形式(例えば文字列だとか)を定義します。

<!ELEMENT element-name category>
あるいは
<!ELEMENT element-name (element-content)>

<!ELEMENT tag1 ANY>
<!ELEMENT tag2 (#PCDATA)>

要素が取り得る値
定義意味
EMPTY空要素
ANY任意の内容(検証なし)
(#PCDATA)文字列

子要素の指定

 親の要素では、取り得る子要素を指定できます。

<!ELEMENT element-name (child1)>
あるいは
<!ELEMENT element-name (child1,child2,...)>
<!ELEMENT link (url, attr)>

 要素や文字列が混在する場合は、下のようにします。

<!ELEMENT tag (#PCDATA|url|attr)*>

属性

 属性は下のようにATTLISTで宣言します。

<!ATTLIST element-name attribute-name attribute-type attribute-value>
<!ATTLIST link type CDATA "css">

attribute-type
項目意味
CDATA文字列 (Character Data)
(en1|en2|..)en1, en2, ..のどれか1つ
IDユニークなID
IDREF他の要素のID
IDREFS他の要素のIDのリスト
NMTOKEN有効なXMLの名前
NMTOKENS有効なXMLの名前(複数)
ENTITY実体
ENTITIES実体(複数)
NOTATION表記
xml:XMLの定義済みの値

attribute-value
項目意味
value既定値
#REQUIRED属性値が必要
#IMPLIED属性値は不要(オプション)
#FIXED value固定値

<!ATTLIST shape type CDATA #REQUIRED color #IMPLIED>

実体 (entity)

 実体は下のように宣言します。

<!ENTITY entity-name "entity-value">
<!ENTITY copyright "Copyright (c) nanken-gakkou">

 

このページの先頭へ戻る