.dtd 显示常量错误,而插入到另一个文件时该行似乎正常

A .dtd show constant error, while the line seems okey when inserted into another file

我为我最近的项目编译了一个.dtd,但是一行显示不断的错误:

<!ELEMENT front ((%model.frontPart;|%model.pLike;|%model.pLike.front;|%model.global;)*,(((_DUMMY_model.div1Like,(_DUMMY_model.div1Like|%model.frontPart;|%model.global;)*)|(%model.divLike;,(%model.divLike;|%model.frontPart;|%model.global;)*)),((%model.divBottom;),(%model.divBottom;|%model.global;)*)?)?)>

它说我从这一行中漏掉了一个 ')',而如果我将此代码插入另一个 .dtd,则一切正常。我不知道你们是否知道如何帮助我,但如果你尝试,我真的很感激。

很可能有一项或多项 parameter entities 未在您的 DTD 中声明。

我相信这是因为如果我在你的问题中采用元素声明并删除所有 %; 以使这些参数实体引用元素名称,然后我创建元素他们的声明(仅用于测试),我没有收到任何验证错误(使用 Xerces 进行测试)。这排除了括号的问题。

例如,您的 DTD 有 %model.frontPart;。您的 DTD 还需要有如下声明:

<!ENTITY % model.frontPart "foo">

foo 是实体值。

您的示例中的所有参数实体引用都需要一个实体声明:

%model.divBottom;
%model.divLike;
%model.frontPart;
%model.global;
%model.pLike.front;
%model.pLike;

比较你收到错误的 DTD 和你没有收到错误的 DTD;一个有所有的实体声明而一个没有?

如果不是这种情况,请使用更多信息更新您的问题。 (整个 DTD 将是理想的。)