XMLのDTDによる文書型宣言の記述の仕方
初心者ですが簡単なXMLのDTDによる文書型宣言の記述の仕方がよく分かりませんので教えてください。
XMLでは同じ要素名の要素でも親が異なる場合は別の要素として扱うことができます。例えば、要素Bの子の要素Dと、要素Cの子の要素Dがある場合、要素Bの子の要素Dには属性bdを、要素Cの子の要素Dには属性cdを定義できます。この場合にDTDによる文書型宣言を記述する場合、要素Bの子の要素Dと、要素Cの子の要素Dをどのように記述するのでしょうか。
例えば
<A>
<B>
<D bd="123"></D>
</B>
<C>
<D cd="abc"></D>
</C>
</A>
というようなXMLインスタンスがあった場合
この場合のDTDによる文書型宣言の記述は
<!DOCTYPE A [
<!ELEMENT A (B,C)>
<!ELEMENT B (D)>
<!ELEMENT D EMPTY>
<!ATTLIST D bd CDATA #REQUIRED>
<!ELEMENT C (D)>
<!ELEMENT D EMPTY>
<!ATTLIST D cd CDATA #REQUIRED>
]>
と記述しましたがこれでは駄目でした。2つ目の要素DのELEMENTの宣言で、要素Dはすでに宣言されているというエラーになるのです。上記の例の場合にDTDによる文書型宣言はどのように記述するのでしょうか。
よろしくお願い致します。