为什么这不是有效的 XML DTD? (参数实体和#PCDATA)
在此处使用 DTD 验证器时,我被告知以下 DTD 无效。
<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H (%text;)+>
<!ELEMENT L (#PCDATA)>
错误消息是:“元素类型“H”的声明中需要一个“(”字符或元素类型。”位于第 2 行第 22 列。
任何人都可以指出为什么它无效吗?我该如何制作它有效吗?错误消息对我来说不太友好。
Using the DTD validator here, I am informed that the following DTD is invalid.
<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H (%text;)+>
<!ELEMENT L (#PCDATA)>
The error message is: "A '(' character or an element type is required within declaration of element type "H"." at line 2, column 22.
Can anyone please point out why it is invalid? And how can I make it valid? The error message is not exactly very friendly to me. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不能强制要求具有混合内容的元素必须至少有一个子节点。 您的 DTD 就变成了
当实体扩展时, 。具有混合内容的元素唯一允许的形式是
A、B 和 C 是可能的子元素。
#PCDATA
必须是首选,并且该集合必须允许重复 0 到无限次,即星号是必需的。You cannot enforce that an element with mixed content must have at least one child node. Your DTD becomes
when the entity is expanded. The only allowed form for elements with mixed content is
where A, B and C are possible child elements.
#PCDATA
must be the first choice and the set must be allowed to repeat 0-infinity times, i.e. the asterisk is required.