文字データを持つ要素
要素の中に文字データを書けるようにするには、「<! ELEMENT 要素名 (#PCDATA) >」で定義します。「(#PCDATA)」が指定されている要素には、文字データのみ書くことができます。
例えばのようなXMLデータを書きたいときのDTDは
のように書きます。
文字データには、長さ0の文字データも含まれます。従って「(#PCDATA)」を指定した要素は空要素(内容のない要素)になるかもしれません。これに対し、常に空要素としたい要素は「EMPTY」を指定します。
子要素と文字データの両方がかけるようにするには、「(#PCDATA:要素名)*」のように指定します。
「(#PCDATA)」だけを指定されている場合は文字データのみ、「(#PCDATA:要素名)*」となっている場合は文字データと指定された要素を自由に書くことができます(混合内容)なお、文字データの長さは任意なので、空要素になることもあります。
内容に「(#PCDATA:要素名)*」が指定されている要素には、文字データと子要素を自由に書くことができます。この場合、個数や順序に制限はありません。
※ 上記の例では、revue要素には、文字データ、title要素、artist要素を任意の回数だけ順番を問わず書くことができます。DTDでは、文字データと子要素の混合内容はこの方法でしか定義することができません。