0

我为我最近的项目编译了一个 .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,一切都很好。我不知道你们是否知道如何帮助我,但如果你尝试,我真的很感激。

4

1 回答 1

0

很可能您的 DTD 中没有声明一个或多个参数实体。

我相信这是因为如果我在您的问题中使用元素声明并去掉所有的%;让这些参数实体引用元素名称,并且我为它们创建元素声明(仅用于测试),我没有得到任何验证错误(使用 Xerces 进行测试)。这排除了parens的问题。

例如,您的 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 将是理想的。)

于 2015-11-12T15:30:39.923 回答