0

作成した XML が DTD のルールに従っているかどうかを確認するにはどうすればよいですか?

ここに私のXMLがあります

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE HW SYSTEM "HW.dtd">
<A>
    AA = "BAR"
    AB = "FOO"
    AC = "1"
    <C>
        <B/>
        CA = "Name"
    </C>
    <D>Element</D>
</A>

ここに私の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>
<!ATTLIST C(B)>
<!ATTLIST C
    CA CDATA #REQUIRED
>
<!ELEMENT D (#PCDATA)>

私のXMLはDTDで正しいですか?

4

1 に答える 1

1

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 ドキュメントを作成するのに役立ちます。

于 2012-02-26T11:22:58.830 に答える