1

外部 DTD ENTITY を宣言する次の XML コードがあります。

<!DOCTYPE customers [
 <!ENTITY % itemCodes SYSTEM "codes.dtd">
 %itemCodes;
]>

これは単純に、いくつかの事前に作成されたコードをCodes.dtdから呼び出すためのものです:

<!ENTITY DCT5Z "Tapan Digital Camera 5 Mpx - zoom">
<!ENTITY SM128 "SmartMedia 128MB Card">
<!-- etc. -->

しかし、私はこのエラーが発生します:

This page contains the following errors:

error on line 53 at column 8: PEReference: %itemCodes; not found

なぜでしょうか?

4

1 に答える 1

1

なぜでしょうか?

codes.dtdファイルが見つからないためです。ある種のカタログ ベースの解決メカニズムを使用していない場合は、codes.dtd実行中のプログラムの作業ディレクトリにある必要があります。

しかし、53 行目のエラーは奇妙に思えます。これは、DTD のファイルには入りすぎています。53行目はどのように見えますか?

更新: 再考すると、問題は見つからなかったということでcodes.dtdはなく、使用されている XML パーサーが外部エンティティを処理していないことにあるかもしれません。(結局のところ、PE 参照自体が見つからず、その参照対象が見つからないと言われました。) これは、非検証パーサーの非常に一般的な制限ですが、エラー診断がより役立つ可能性があります ("申し訳ありませんが、外部エンティティ参照はサポートされていません。)

于 2013-01-13T01:33:12.487 に答える