DTD は、これまでの章で説明したヘルプタグの各要素を定義します。この節では、いくつかの重要な用語を紹介し、要素記述の構文の読み方を説明します。DTD の各セクションを完全に説明するものではありません。
DTD は各要素を要素宣言で定義します。宣言には、要素を説明する詳細な記述、それに必要なコンポーネント、指定できる要素またはできない要素を使用します。要素には属性宣言で定義された特性もあります。特性の詳細は、「属性リスト宣言」のセクションで説明します。
要素宣言の形式は次のとおりです。
<ELEMENT element_type minimization (content model) >
要素名を指定します。これはタグ名としても使用されます。たとえば、要素型 head のタグは <head> です。
開始タグまたは終了タグが必要かどうかを示す 2 文字のエントリです。1 番目の文字は開始タグを表します。2 番目の文字は終了タグを表します。その 2 文字の間に 1 つ空白が入ります。文字 o はそのタグがオプションであることを意味します。- (マイナス記号) はタグが必要であることを意味します。たとえば、- - というエントリは、その要素には開始タグと終了タグの両方が必要であるという意味です。ヘルプタグ 1.3 用 DTD ではすべての要素に開始タグと終了タグが必要です。
要素型に含められる必要な要素およびオプションの要素のリストを指定します。要素のシーケンスと、適用可能であれば、要素を指定できる回数を定義します。
コンテント・モデルは次の記述を使用します。
「or」という意味です。
要素を最低 1 回は指定しなければなりません。繰り返し可能です。
要素を 0 回以上指定しなければなりません。
要素を 0 回または 1 回指定しなければなりません。
カンマはシーケンスを説明します。つまり、要素型の後には、カンマの後に指定された要素が続かなければなりません。
+ (プラス記号) は、リストされた 1 つまたは複数の要素が、この要素内か、それを含む要素どの中でも使用できることを示します。これを取り込みと呼びます。 1 つ以上の要素を囲むのに括弧を使用します。
- (マイナス記号) は、リストされた 1 つまたは複数の要素が、この要素内か、それを含む要素のいずれかの中では使用できないことを示します。これを排他と呼びます。 1 つ以上の要素を囲むには括弧を使用します。
各例には、提供されている要素宣言に対する語の説明があります。必要な開始タグと終了タグが使用されます。
章は、テキストが後に続く <chaphead> を必要とします。1 つの章には 0 個以上の s1 要素と、それに続く 0 個以上の rsect 要素を指定できます。
<!ELEMENT chapter - - (chaphead, text, (s1*, rsect*)) >
chaphead は、オプションの abbrev が後に続くヘッダを必要とします。chaphead には memo、location、idx の要素は指定できません。
<!ELEMENT chaphead - - (head, abbrev?) -(memo | location | idx) >
段落要素は、開始タグ (-) と終了タグ (-) を必要とします。段落要素には、partext 要素が後に続くオプションのヘッダ (?) を指定できます。newline 要素は、段落要素に含まれる p 要素かその他の要素の中で使用できます。
<!ELEMENT p - - (head?, partext) +(newline) >
note にはテキストが含まれます。オプションのヘッダを指定できます。note には、note、caution、warning の要素は指定できません。
<!ELEMENT note - - (head?, text) -(note | caution | warning) >
list にはオプションのヘッダを指定できます。list には 1 つ以上の項目 (繰り返し可能) が必要です。
<!ELEMENT list - - (head?, item+) >
book 要素宣言は、別の book 要素を含むことができないように指定するため排他処理を使用します。
<!ELEMENT book - - (partext) -(book) >
要素の中には、要素宣言の中に、要素のデータ内容を説明するキーワードを含むものがあります。DTD には、EMPTY、CDATA、#PCDATA の 3 つのキーワードがあります。
要素が、オンライン情報で表示されるデータ内容を持たないことを指定します。newline 要素と xref 要素がこの例です。
「文字データ」を表します。つまり、その要素のデータ内容はマークアップとして認識されません。
「構文解析された文字データ」を表します。つまり、そのデータ内容にはヘルプ・システムのパーサが解釈するテキストとマークアップ文字の両方が含まれます。
属性リストは、要素をより詳しく説明する追加の属性を宣言します。属性リスト宣言の形式は次のとおりです。
<!ATTLIST element_type attribute_values default_value>
たとえば list 要素には、type、ordertype、spacing、continue の 4 つの属性があります。それぞれの型の値が宣言されます。最後のカラムはデフォルト値を示しています。continue 属性には値が 1 つしか存在しないので、デフォルト値は省きます。
<!ATTLIST list type ( order bullet plain check ) bullet ordertype ( ualpha lalpha arabic uroman lroman ) arabic spacing ( tight loose ) tight continue (continue) #IMPLIED >
上記のマークアップは、リスト項目の間に空白行が入り、番号 (大文字のアルファベット) の付いたリストを作成します。
<list order ualpha loose> <item> <text> <p> <partext>Introducing the Front Panel></partext> </p> </text> </item>