CDATA类型属性值可包含任意文本字符串。DTD不能指定属性为一个整数或一个日期,Schema能提供更为强大的数据类型。 NMTOKEN类型属性值是一个XML名称记号。XML名称记号与XML名称类似,但XML名称记号允许所有的字符作为名称的开始字符,而XML名称的第一个字母必须是字母、表意字符和下划线。因此10,.bashrc是合法的XML名称标记,但不是合法的XML名称。每个XML名称都是一个XML名称标记,然而XML名称标记不全是XML名称。如果属性包含1990,2005之类的整数,则应该指定其类型为NMTOKEN。如: <!ELEMENT person birthday NMTOKEN #REQUIRED> NMTOKENS类型属性包含一个或多个用空白分隔的XML名称记号。如: <person dates="02-01-2005 03-01-2005 05-01-2005">person</person> 对应的声明应为: <!ATTLIST person dates NMTOKENS #REQUIRED> 另一方面,对01/02/2005这样的形式不能使用该声明,因为其中的正斜杠不是合法的名称字符。 枚举声明,枚举不用关键字。直接列举所有的值,中间用竖线分隔。如: <!ATTLIST date month(January | February | March | April | May | June | July | August | September | October | November | December) #REQUIRED> 针对上述声明,date元素的month属性可选十二个月份的中一个。 ID类型的属性必须包含一个XML名称,而且该名称在文档中是独一无二的。ID属性可为元素分配一个唯一的标识符。 <!ATTLIST name card_id ID #REQUIRED> 由于数字不是合法的XML名称,所以ID编号不能以数字开头,解决办法是在前面加下划线或字母。 IDREF类型的属性指向文档中某元素的ID类型的属性。因此,它必须是一个XML名称,它的作用是当简单的包含关系不能满足要求时在元素间建立多对多关系。如: