DTD - 要素

DTDでは、要素は要素宣言によって宣言されます。

要素の宣言

DTDでは、XML要素は要素宣言によって宣言されます。要素宣言は以下の文法を使用します:

<!ELEMENT 元素名称 カテゴリ>

または

<!ELEMENT 元素名称 (要素内容)>

空要素

空要素はカテゴリキーワードEMPTYで宣言されます:

<!ELEMENT 元素名称 EMPTY>

例:

<!ELEMENT br EMPTY>

XMLの例:

<br />

PCDATAのみを含む要素

PCDATAのみを含む要素は、括弧内の#PCDATAで宣言されます:

<!ELEMENT 元素名称 (#PCDATA)>

例:

<!ELEMENT from (#PCDATA)>

どんな内容も含む要素

カテゴリキーワードANYで宣言された要素は、解析可能なデータの組み合わせを含むことができます:

<!ELEMENT 元素名称 ANY>

例:

<!ELEMENT note ANY>

子要素(シーケンス)を持つ要素

1つまたは複数の子要素を持つ要素は、括弧内の子要素名で宣言されます:

<!ELEMENT 元素名称 (子元素名称 1)>

または

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,...)>

例:

<!ELEMENT note (to,from,heading,body)>

子要素がカンマで区切られたシーケンスで宣言されている場合、これらの子要素は文書内で同じ順序で出現する必要があります。完全な宣言では、子要素も宣言され、子要素も子要素を持つことができます。「note」要素の完全な宣言は以下の通りです:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to      (#PCDATA)>
<!ELEMENT from    (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body    (#PCDATA)>

1回しか出現しない要素の宣言

<!ELEMENT 元素名称 (子元素名称)>

例:

<!ELEMENT note (message)>

以下の例では、「message」子要素は1回出現し、かつ「note」要素内にしか出現しない必要があります。

少なくとも1回出現する要素の宣言

<!ELEMENT 元素名称 (子元素名称+)>

例:

<!ELEMENT note (message+)>

以下の例では、加号が宣言しています:子要素「message」は「note」要素内で少なくとも1回出現する必要があります。

0回または複数回出現する要素の宣言

<!ELEMENT 元素名称 (子元素名称*)>

例:

<!ELEMENT note (message*)>

以下の例では、星号が宣言しています:子要素「message」は「note」要素内で0回または複数回出現することができます。

0回または1回出現する要素の宣言

<!ELEMENT 元素名称 (子元素名称?)>

例:

<!ELEMENT note (message?)>

以下の例では、問号が宣言しています:子要素「message」は「note」要素内で0回または1回出現することができます。

「非.../既...」型の内容の宣言

例:

<!ELEMENT note (to,from,header,(message|body))>

以下の例では、「note」要素は「to」要素、「from」要素、「header」要素、および「message」要素以外の「body」要素を含む必要があると宣言されています。

組み合わせ型の内容を宣言しています。

例:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上の例では、「note」要素がPCDATA、「to」、「from」、「header」または「message」を0回もしくは複数回含むことが宣言されています。