DTD:元素#PCDATA有默认值,可以吗?

时间:2014-02-25 15:27:52

标签: dtd

我有一个可以是“16:9”或“4:3”的元素,是否可以这样写:

<!ELEMENT element_name (16:9|4:3)>

Eclipse以我尝试的各种方式给出了错误。

1 个答案:

答案 0 :(得分:2)

DTD无法控制元素的文本内容。您需要XML Schema。您可以为文本内容做的最好的事情是:

<!ELEMENT element_name (#PCDATA) >

此声明

<!ELEMENT element_name (a|b) >

表示<element_name>可以包含<a>...</a><b>...</b>

您的声明:

<!ELEMENT element_name (16:9|4:3)>

尝试声明元素<element_name>可以包含名为<16:9><4:3>的元素。这是无效的,因为XML元素不能具有以数字开头的名称。该文件格式不正确,因此无法通过DTD验证。

来源:来自XML Specification

  

任何名称的第一个字符都应具有ID_Start的Unicode属性,否则为'_'#x5F。

ID_Start 表示允许作为标识符第一个字符的字符,根据“Unicode Default Identifier Syntax”中的定义排除数字。