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) >