1

こんにちは、外部の XML DTD コードがありますが、検証しようとするとエラーが発生するようです。私が持っているコードは以下の通りです:

<!DOCTYPE catalog [ 
    <!ELEMENT catalog (book)+>
    <!ELEMENT book (title, authors, year_published, ISBN, number_of_pages, price) >
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT authors (author)>
    <!ELEMENT author (first_name, last_name, gender)>
        <!ELEMENT first_name (#PCDATA)>
        <!ELEMENT last_name (#PCDATA)>
        <!ELEMENT gender (#PCDATA)>
    <!ELEMENT year_pusblished (#PCDATA)>
    <!ELEMENT ISBN (#PCDATA)>
    <!ELEMENT number_of_pages (#PCDATA)>
    <!ELEMENT price (discount)>
        <!ATTLIST price discount (yes|no) "no">]>

すべてが正しいことはわかっていますが、検証するとエラーメッセージが表示されます。

「文書型宣言に含まれる、または文書型宣言によって指されるマークアップ宣言は、整形式でなければなりません。行 3 列 4」

私はすべてをチェックしましたが、うまくいかないようです。あなたたちは助けることができますか?

4

1 に答える 1

0

http://www.validome.org/xml/validate/ツールを使用したようです。これは、質問で正確なエラー メッセージを発行し、他の方法でも特に役に立ちません。一般に、無料の XML バリデーターの品質はさまざまです。より優れたツールはhttp://xmlvalidator.new-studio.orgです。

次の単純な XML 要素を追加し、より優れたツールを使用して検証すると、問題をよりよく理解できます。

<catalog>
<book>
<title></title>
<authors>
<author>
<first_name></first_name>
<last_name></last_name>
<gender></gender>
</author>
</authors>
<year_published></year_published>
<ISBN></ISBN>
<number_of_pages></number_of_pages>
<price></price>
</book>
</catalog>

次のエラー メッセージが表示されます。

25行目17列目:要素型「year_published」を宣言する必要があります。

28 行 16 列 : 要素タイプ「価格」の内容が不完全です。「(割引)」と一致する必要があります。

最初のエラーは簡単です。要素宣言のスペルを修正するyear_pusblished(最初の を削除する) だけです。s

2 つ目はあまり明白ではありませんが、単純です。price要素を(discount)コンテンツ モデルとして宣言しました。これは、price要素には要素が含まれている必要があり、discountそれ以上のものは何も含まれていないことを意味し、それは実際には意味がありません (形式的に言えば可能ですが、要素を宣言する必要がありますdiscount)。おそらく、コンテンツとして文字データのみを許可する必要があります (割引の適用はdiscount 属性で指定されます)。

<!ELEMENT price (#PCDATA)>
于 2013-05-10T11:47:23.310 に答える