1

我有这个 XML 代码声明一个外部 DTD 实体:

<!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 回答