0

我有以下非常简单的 XML 文件(出于此问题的目的,从原始文件中显着减少):

    <?xml version="1.0"?>
    <!DOCTYPE root [
    <!ENTITY % entities SYSTEM "test.dtd">
    %entities;
    ]>

    <root>
    </root>

该文件test.dtd存在,但再次出于此问题的目的,它是空的。

麻烦的是 oXygen XML Editor 抛出错误:

E [Xerces] Element type "root" must be declared.

如果我从上面的行中删除该%entities;行或%符号,则不会引发错误,因为 oXygen 实际上并没有解析实体文件(因此,显然,当引入真正的实体时,对它们的引用会失败)。不幸的是,我所做的研究表明 Xerces 出于多种不同的原因引发了此错误,我无法缩小在这种情况下的错误范围。

为什么在引入实体时会引发此错误,即使那里没有实体,我该怎么办?

oXygen v10.3,如果这很重要(我的公司仅获得五年前软件的许可:-()

4

1 回答 1

0

该文件test.dtd存在,但再次出于此问题的目的,它是空的。

您只会收到此错误,因为即使正确找到了文件test.dtd,它也不包含任何内容,特别是没有“根”元素的声明。因此 Xerces 会抛出错误:

E [Xerces] Element type "root" must be declared.

如果您简单地声明 <!DOCTYPE root SYSTEM "test.dtd">(这与您在上面所做的完全等效),我敢打赌您将获得相同的错误。

于 2015-04-29T19:21:49.053 回答