带有 EMPTY 和 PCDATA 的 DTD 元素

A DTD Element with EMPTY and PCDATA

我们可以这样在 DTD 中声明一个元素吗:

<!ELEMENT name (EMPTY | (#PCDATA))>

谢谢

如果您尝试声明一个空元素或可能包含字符数据(文本)的元素,那么不,您不能声明这样的元素。

参见 specs 中的 "contentspec":

[46]      contentspec    ::=      'EMPTY' | 'ANY' | Mixed | children

您可以像这样声明一个元素:

<!ELEMENT name (#PCDATA|EMPTY)*>

但这就是说 name 包含 mixed content(字符数据和子元素)。在这种情况下,可能的子元素是名为 EMPTY.

的元素

您应该这样声明元素:

<!ELEMENT name (#PCDATA)>

这将允许 name 包含字符数据或为空。

例如,以下 name 个元素都是有效的:

<name></name>
<name/>
<name>balimaco00</name>