XML Validator を使用する必要があります。
オンライン バージョンはhttp://www.xmlvalidation.com/です。これを行うツールも多数あります。
バリデータによると、あなたの DTD は有効ではありません
私はあなたの DTD を修正しようとしました。これが修正されたバージョンです。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT A (B* | (C+,D))>
<!ATTLIST A
AA CDATA #REQUIRED
AB CDATA #REQUIRED
AC (0|1|2) #REQUIRED
>
<!ELEMENT B EMPTY>
<!ELEMENT C EMPTY>
<!ATTLIST C
CA CDATA #REQUIRED
>
<!ELEMENT D (#PCDATA)>
あなたが投稿したDTDの問題は次のとおりです。
私が見る限り、C +、Dを囲む括弧が必要です。また、<ATTLIST
属性のリストを指定するため、上記は正しくありません<!ATTLIST
。行方不明でした。
また、あなたのDTDは持っていました
<!ELEMENT B EMPTY>
<!ATTLIST C
CA CDATA #REQUIRED
>
要素 C から属性リストを定義し<!ATTLIST C
ていたが、DTD で要素 C を定義していなかったため、検証に失敗したため、次のように変更しました
<!ELEMENT C EMPTY>
<!ATTLIST C
CA CDATA #REQUIRED
>
これにより、DTD が有効になります
また、あなたのXMLはかなりの点で間違っています
たとえば、DTD 仕様
<!ATTLIST A
AA CDATA #REQUIRED
AB CDATA #REQUIRED
AC (0|1|2) #REQUIRED
>
つまり、要素 A には属性 AA BB AC が必要であり、AC 属性は 0 または 1 または 2 でなければなりません。
あなたが入れた
<A>
AA = "BAR"
AB = "FOO"
AC = "1"
要素AでXML属性を指定していないものは、属性を指定する必要があります
<A AA="BAR" AB="FOO" AC="1">
これは宿題をするのに役立つはずです
http://www.quackit.com/xml/tutorial/dtd_introduction.cfmから DTD チュートリアルへのリンクがあります。これは、それに対して検証する XML ドキュメントを作成するのに役立ちます。