属性用于将名字-值对与元素进行关联。
属性说明只能在【开始标签】和【空元素标签】中出现。
属性表声明详细说明了与给定元素类型相关联的每一个属性的名字,数据类型和缺省值。
属性表声明的语法如下:
<!ATTLIST 元素名 属性名 属性类型 缺省声明>
元素名:属性所属的元素的名字
属性名:属性的名字
属性类型:用来指定该属性属于哪种类型,共十种类型
缺省声明:用于说明在元素中该元素是否必须出现,如果不是必须出现,那么在没有出现时,XML处理器该如何
处理。
(1)缺省声明
有4中缺省设置:
#REQUIRED:说明元素必须提供该属性
#IMPLIED:说明元素可以包含该属性,也可以不包含
#FIXED+缺省值:说明一个固定的属性缺省值
只有缺省值:与#FIXED+缺省值一样,如果元素不包含该属性,XML处理器将以声明的缺省值向应用程序报告该
属性。不同的是,这种声明方式属性的值是可以改变的。
例:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE bbs [
<!ELEMENT bbs (article*)>
<!ELEMENT article (title,author)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ATTLIST author ip CDATA #IMPLIED>
<!ATTLIST articale copyright CDATA #FIXED "版权归本论坛所有">
]>
<bbs>
<article>
<title>阿斯顿和控件</title>
<author ip="192.168.0.165">张三</author>
</article>
<article>
<title>地方过多个</title>
<author>张三</author>
</article>
</bbs>
代码说明:
<!DOCTYPE bbs [ : 根元素bbs
<!ELEMENT bbs (articale*)> :0个或多个articale结点
<!ATTLIST author ip CDATA #IMPLIED>:author元素的ip属性可有可无
注:在这里我尝试用#REQUIRED代替#IMPLIED,在浏览器中查看却没有报错,不知道什么原因(<author>张三
</author>)
<!ATTLIST article copyright CDATA #FIXED "版权归本论坛所有">:元素article属性ip,格式字符型(CDATA)
,固定的缺省值:"版权归本论坛所有"
注:在这里我尝试设置其中一个article元素的copyright属性为一个特殊值,但是在浏览器中显示结果与只有
缺省值方式是一样的
属性类型:
属性共有10种类型:
CDATA:字符数据,如果属性中出现<和"和&,必须使用预定义实体引用或者字符引用的方式插入。
Enumerated:枚举类型在实际使用中不用Enumerated,直接将属性值放在()中,使用|分隔属性。
如:<!ATTLIST person sex(male|female) #REQUIRED>
ID,IDREF,IDREFS:一个ID类型的属性值唯一的标志了XML文档中的一个元素。以字母,下划线或冒号开头,名称
中可以包含字母,数字和下划线以及其他在XML标准中的允许字符,名称中不能带有空格。一个元素只能有一个
ID类型的属性,ID类型的属性必须设置为#IMPLIED或者#REQUIRED
ENTITY,ENTITYS,
ENTITY类型的属性把外部的二进制数据连接到文档。
ENTITY类型的属性值是在DTD中声明的未分析的一般实体的名称。
例如我想在文档中包含一幅外部图像,可以声明ENTITY类型属性:
<!ATTLIST image src ENTITY #REQUIRED>
在DTD中,还需要声明一个外部一般实体:
<!ENTITY logo SYSTEM "http://www.sunxin.org/logo.gif" NDATA gif>
关键字NDATA表示该实体是一般未分析实体, 后面的gif是记号名称, 用来说明实体的数据格式或指
定一个外部的处理程序。gif的声明如下:
<!NOTIFICATION gif SYSTEM "iexplorer.exe">
在XML文档中, 可以在src属性中引用图像:
<image scr="logo">
NMTOKEN,NMTOKENS: 用来限制名称只能包含名称字符(字母,下划线,冒号等),而不能包含空格。例如限制
文件名:<!ATTLIST file name NMTOKEN #REQUIRED>
<file name="aaa.txt">
<!ATTLIST file name NMTOKENS #REQUIRED>
<file name="aaa.txt bbb.doc">
NOTATION: 记号声明,用来处理XML处理器不支持的文件,如声音,图像等。
记号声明有两种方式:
1. 使用MIME
<!NOTATION gif SYSTEM "image/gif">
2. 使用URI路径, 指出外部处理程序的位置:
<!NOTATION gif SYSTEM "iexplorer.exe">
注 : 也可以使用PUBLIC代替SYSTEM
例:
ID 与 IDREF
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE company[
<!ELEMENT company (employee|manager)*>
<!ELEMENT employee (name)>
<!ELEMENT manager EMPTY>
<!ELEMENT name (#PCDATA)>
<!ATTLIST employee sn ID #REQUIRED>
<!ATTLIST manager mgrid IDREF #REQUIRED>
]>
<company>
<employee sn="E-200402100001">
<name>张三</name>
</employee>
<employee sn="E-200402100002">
<name>李四</name>
</employee>
<manager mgrid="E-200402100001">
</company>
#IDREFS : 用来表示引用多个ID, 每个ID之间用空格分隔, 例如上面manager
:
<!ATTLIST manager mgrid IDREFS #REQUIRED>
<manager mgrid="E-200402100001 E-200402100002">
例:
NOTATION
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE WebPage[
<!ELEMENT WebPage (image)*>
<!ELEMENT image (src)>
<!ELEMENT src (#PCDATA)>
<!NOTATION gif SYSTEM "image/gif">
<!NOTATION jpg SYSTEM "iexplorer.exe">
<!ATTLIST image type NOTATION (gif|jpg) #REQUIRED>
]>
<WebPage>
<image type="gif">
<src>http://www.sunxin.org/logo.gif</src>
</image>
</WebPage>