XML属性
时间:2009-08-10 来源:sinkingboat
一个元素可以为以下十种类型中的任意一种:
CDATA
Enumerated
ID
IDREF
IDREFS
ENTITY
ENTITIES
NMTOKEN
NMTOKENS 此类型的属性值只能是英文、数字、-
NOTATION
#IMPLIED:XML属性可有可无
#REQIRED:它表示必须要出现(对属性的内容没有限制)
#FIXED:属性值必须固定且必须出现。
1.CDATA
CDATA指的是纯文本,即由字符、符号“&”、小于号“<”和引号“"”组成的字符串。当然,就象我们前面讲到的,你应该使用实体&代替“&”,<代替“<”,"代替“"”。
请看下面这个关于剧本的例子:
<?xml version = "1.0" encoding="GB2312" standalone = "yes"?> <!DOCTYPE 剧本 [ <!ELEMENT 剧本 ANY> <!ELEMENT 对话 (#PCDATA)> <!ATTLIST 对话 演员 CDATA> ]>
<剧本> |
2.ID类型
ID是用属性值的方式为文件中的某个元素定义唯一标识的方法,它的作用类似于HTML文件中的内部链接。在大多数情况下,ID由处理文件的程序或脚本语言使用。
ID的值必须是一个有效的XML名称,它由字母、数字或下划线开始,名字中不能出现空白符。另外一般而言,不要给ID类型的属性事先指定缺省值,这很容易引起不同的元素具有相同的标识的情况,更不能使用FIXED型的缺省值。此类属性经常使用REQUIRED缺省类型,当然,这也不是必须的。有的应用并不要求每个元素都有自己的标识,所以,也可以使用IMPLIED缺省类型。
IMPLIED表示XML属性可有可无
<?xml version = "1.0" encoding="GB2312" standalone = "yes"?> <!DOCTYPE 联系人列表[ <!ELEMENT 联系人列表 ANY> <!ELEMENT 联系人(姓名,EMAIL)> <!ELEMENT 姓名(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ATTLIST 联系人 编号 ID #REQUIRED> ]> <联系人列表> <联系人 编号="1"> <姓名>张三</姓名> <EMAIL>[email protected]</EMAIL> </联系人> <联系人 编号="2"> <姓名>李四</姓名> <EMAIL>[email protected]</EMAIL> </联系人> </联系人列表 |
3.IDREF类型
IDREF类型允许一个元素的属性使用文件中的另一个元素,方法就是把那个元素的ID标识值作为该属性的取值。例如下面的例子:
<?xml version = "1.0" encoding="GB2312" standalone = "yes"?> <!DOCTYPE 联系人列表[ <!ELEMENT 联系人列表 ANY> <!ELEMENT 联系人(姓名,EMAIL)> <!ELEMENT 姓名(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ATTLIST 联系人 编号 ID #REQUIRED> <!ATTLIST 联系人 上司 IDREF #IMPLIED> ]> <联系人列表> <联系人 编号="2"> <姓名>张三</姓名> <EMAIL>[email protected]</EMAIL> </联系人> <联系人 编号="1" 上司="2"> <姓名>李四</姓名> <EMAIL>[email protected]</EMAIL> </联系人> </联系人列表> |
属性也可以被描述为一组可接受的取值的列表,XML文件中对属性的赋值将从这个列表中选取一个值。这类属性属于枚举类型ENUMERATED,不过,关键字ENUMERATED是不出现在DTD定义中的。
<?xml version = "1.0" encoding="GB2312" standalone = "yes"?> <!DOCTYPE 购物篮 [ <!ELEMENT 购物篮 ANY> <!ELEMENT 肉 EMPTY> <!ATTLIST 肉 类型( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉"> ]>
<购物篮> |
注意,在上面这个例子中,给属性“类型”定义的缺省值是“鸡肉”,所以“购物篮”中的第三个元素的“类型”属性取值为“鸡肉”。
5.NMTOKEN和NMTOKENS
类型NMTOKEN和NMTOKENS是诸多属性类型中面向处理程序的又一个类型。这两个类型用于指示一个有效的名字。当需要把一个元素和其它的元件,例如一个JAVA类或一个安全算法,相联系时,可以让它们助你一臂之力。请看下面的例子:关于元素的定义:
<!ELEMENT 数据(#PCDATA)> <!ATTLIST 数据 安全性( ON | OFF ) "OFF"> 授权用户 NMTOKENS #IMPLIED > |
XML文件:
<数据 安全性="ON" 授权用户 = "IggieeB SelenaS GuntherB"> blah blah blah </数据> |
6.ENTITY
在声明属性值时可以使用实体引用。
<!ELEMENT employee_data (name)>
<!ELEMENT name English (#PCDATA)>
<!ENTITY orc "val1">
<name English="&orc">