我有一个可以是“16:9”或“4:3”的元素,是否可以这样写:
<!ELEMENT element_name (16:9|4:3)>
?
Eclipse以我尝试的各种方式给出了错误。
答案 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”中的定义排除数字。