◆ 4. 実体の定義
<!ELEMENT 〜> は、さらに2種類に分ける事が出来ます。
- <!ELEMENT % … 〜>
- <!ELEMENT … ? ? 〜>
Aは既に述べたとおり、%…; について定義しています。即ち、
<!ELEMENT % … 〜> を訳すると、「%…; は 〜 に置き換えて読め」と読む事が出来ます。
Bは、要素の定義を示します。次のように空白区切りで並んでいます。
要素の名前(…)、開始タグの定義(1つめの?)、終了タグの定義(2つめの?)、内容の定義(〜)
開始・終了タグの定義は、次の通りです。
- -
- 省略出来ない
- O
- 省略しても良い
- O EMPTY
- (終了タグ、内容共に)存在しない
<!ELEMENT HR - O EMPTY -- horizontal rule -->
HR要素は、開始タグは必須、内容と終了タグは存在しない事が判ります。
<!ELEMENT P - O (%inline;)* -- paragraph -->
P要素は、開始タグは必須、終了タグは省略でき、内容にインライン要素(%inline;)を何度でも含む事が出来る事が示されます。
<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field -->
TEXTAREA要素は、開始タグ・終了タグ共に省略できず、内容にもテキストのみを含めなければならない事が示されます。
◆ 5. 属性の定義
<!ATTLIST 〜>は、属性の定義を示します。次の様に書かれています。
<!ATTLIST …
〜 〜 〜 -- コメント --
〜 〜 〜 -- コメント --
〜 〜 〜 -- コメント --
>
最初の一行目、… の部分に、所属する要素が記されます。「…要素に関する属性の定義」という意味です。
それ以降の行は、一つの行で1つ、または1グループの定義を示しています。
- 一つ目の 〜 が、属性名を示します。
- 二つ目の 〜 が、属性値として指定すべき物が記されています。
- 属性値として(…|…)として示された場合は、それらの何れかの値しか取りえない選択属性である事を意味します。
- 属性値として (…) で括られた唯一つの値がある場合は、その値しか取りえない論理属性である事を意味します。つまり、その属性を指定するか、指定しないかの2種類しか値を取りえません。
- 三つ目の 〜 が、初期値を示します。
初期値については、次の通りです。
- ***
- 初期値は、***である。
- #IMPLIED
- 初期値が(暗示的に)存在する。(この属性は省略出来る)
- #REQUIRED
- 必ず著者が指定しなければならない。(この属性は省略してはならない)
<!ATTLIST SCRIPT
charset %Charset; #IMPLIED -- char encoding of linked resource --
type %ContentType; #REQUIRED -- content type of script language --
src %URI; #IMPLIED -- URI for an external script --
defer (defer) #IMPLIED -- UA may defer execution of script --
event CDATA #IMPLIED -- reserved for possible future use --
for %URI; #IMPLIED -- reserved for possible future use --
>
<SCRIPT要素に関する属性の定義
charset属性 %Charset; を指定する。 リソースの文字コード
type 属性 %ContentType; を必ず指定。 スクリプト言語のコンテンツタイプ
src 属性 %URI; を指定する。 外部スクリプトのURI
defer 属性 論理属性 指定すると、 ユーザーエージェントはその実行を後回し
するかもしれない(=してもよい)
event 属性 CDATA を指定する。 将来の為の予約属性である。
for 属性 %URI; を指定する。 将来の為の予約属性である。
>
ここで例えば、%Charset;とは、
<!ENTITY % Charset "CDATA"
-- a character encoding, as per [RFC2045]
-->
Charsetは、CDATA である。
文書[RFC2045]にて指定されている文字エンコードである。
という様に読み解けます。同様に他の物についても解釈すれば、最初の文章は
<SCRIPT要素に関する属性の定義
charset属性 CDATA を指定する。 リソースの文字コード
(RFC2045で示されるエンコード)
type 属性 CDATA を必ず指定。 スクリプト言語のコンテンツタイプ
(RFC2045で示されるメディアタイプ)
src 属性 CDATA を指定する。 外部スクリプトのURI
defer 属性 論理属性 指定すると、 ユーザーエージェントはその実行を後回し
にするかもしれない(=後回ししてもよい)
event 属性 CDATA を指定する。 将来の為の予約属性である。
for 属性 CDATA を指定する。 将来の為の予約属性である。
>
と言う事も出来ます。
さて、これだけの知識と、幾つかの翻訳ソフトを組み合わせるだけであなたもDTDの9割を読む事が出来る筈です。それは即ち、HTMLの大半を知る事になります。是非挑戦してみて下さい。