【发布时间】:2011-02-17 16:33:52
【问题描述】:
使用 DTD 验证器here,我被告知以下 DTD 无效。
<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H (%text;)+>
<!ELEMENT L (#PCDATA)>
错误消息是:“在元素类型“H”的声明中需要一个 '(' 字符或元素类型。”在第 2 行第 22 列。
谁能指出它为什么无效?我怎样才能使它有效?错误消息对我来说并不是很友好。谢谢。
【问题讨论】:
-
我可能会误认为这是错误,但在解析
%text;之后,您嵌套了两个括号。 -
嗯,在 XML DTD 中嵌套两个括号是无效的吗?不确定。但如果我从
%text;实体声明中删除#PCDATA,使其变为<!ENTITY % text "(L)*">,则DTD 变为有效。
标签: xml dtd xml-validation pcdata