《第四章DTD属性表声明课件》由会员分享,可在线阅读,更多相关《第四章DTD属性表声明课件(22页珍藏版)》请在金锄头文库上搜索。
1、属性表声明属性表声明1第1页,共22页。属性表声明属性表声明属性用于将名字属性用于将名字- -值对与元素进行关联。属性说明只能在开始标签和空元素标签值对与元素进行关联。属性说明只能在开始标签和空元素标签中出现。属性表声明详细说明了与给定元素类型相关联的每一个属性的名字,数中出现。属性表声明详细说明了与给定元素类型相关联的每一个属性的名字,数据类型和缺省值(如果有的话。)据类型和缺省值(如果有的话。)!ATTLIST 元素名是属性所属的元素的名字,属性名是属性的命名,属性类型则用来元素名是属性所属的元素的名字,属性名是属性的命名,属性类型则用来指定该属性是属于哪种类型的。属性类型共有指定该属性是
2、属于哪种类型的。属性类型共有1010种;缺省声明共种;缺省声明共4 4种,用于种,用于说明在元素中该属性是否必须出现,如果不是必须出现,那么当该属性说明在元素中该属性是否必须出现,如果不是必须出现,那么当该属性没有出现时,没有出现时,xmlxml处理器应该如何处理。处理器应该如何处理。2第2页,共22页。属性表声明属性表声明(1)属性的声明在文档中的次序没有严格的要求,可位于与其关联的元素声属性的声明在文档中的次序没有严格的要求,可位于与其关联的元素声明之前或之后。明之前或之后。例如例如: 属性声明可以写为属性声明可以写为 3第3页,共22页。属性表声明属性表声明(2)(2)所有元素的属性,都
3、要在各自所对应的标记中声明。所有元素的属性,都要在各自所对应的标记中声明。例如例如 : 属性表声明可以为:属性表声明可以为: 4第4页,共22页。缺省声明缺省声明#REQUIRED#REQUIRED、#IMPLIED#IMPLIED、#FIXED+#FIXED+缺省值、只有缺省值。缺省值、只有缺省值。#REQUIRED#REQUIRED说明必须为元素提供该属性。说明必须为元素提供该属性。!DOCTYPE bbs 关于属性表的声明问题关于属性表的声明问题张三张三关于关于xml的应用问题的应用问题李四李四Bbs.xml5第5页,共22页。缺省声明缺省声明#IMPLIED#IMPLIED说明元素可包
4、含或不包含该属性。说明元素可包含或不包含该属性。#FIXED+#FIXED+缺省值缺省值说明一个固定的属性缺省值,文档的编写者不能修改该属说明一个固定的属性缺省值,文档的编写者不能修改该属性的值。如果元素中不包含这个属性,性的值。如果元素中不包含这个属性,xmlxml处理器将以声明的缺省值向应用程处理器将以声明的缺省值向应用程序报告该属性。序报告该属性。6第6页,共22页。缺省声明缺省声明!DOCTYPE bbs 关于属性表的声明问题关于属性表的声明问题张三张三关于关于xml的应用问题的应用问题李四李四BBS1.XML7第7页,共22页。缺省声明缺省声明只有缺省值只有缺省值与与FIXED+FI
5、XED+缺省值一样,如果元素中不包含这个属性,缺省值一样,如果元素中不包含这个属性,xmlxml处理处理器将以声明的缺省值向应用程序报告该属性。不同的是,这种声明方式属性的器将以声明的缺省值向应用程序报告该属性。不同的是,这种声明方式属性的值是可以改变的。值是可以改变的。 !DOCTYPE bbs 关于属性表的声明问题关于属性表的声明问题张三张三关于关于xml的应用问题的应用问题李四李四BBS2.XML8第8页,共22页。属性类型属性类型在属性表声明中,总共有十种属性类型可以选择,分别是在属性表声明中,总共有十种属性类型可以选择,分别是CDATACDATA、ENUMERATEDENUMERAT
6、ED、IDID、IDREFIDREF、IDREFSIDREFS、ENTITYENTITY、ENTITIESENTITIES、NMTOKENNMTOKEN、NMTOKENSNMTOKENS、NOTATIONNOTATION。9第9页,共22页。属性类型属性类型CDATACDATA最常用,表明属性值为字符数据,与元素内容说明中的最常用,表明属性值为字符数据,与元素内容说明中的#PCDATA#PCDATA同。同。若属性值需要出现小于号若属性值需要出现小于号 和双引号和双引号”,可通过预定义实体引用或字符引用方,可通过预定义实体引用或字符引用方式插入小于号和双引号。若含式插入小于号和双引号。若含& &
7、和号不是字符或实体引用的起始定界符,也必和号不是字符或实体引用的起始定界符,也必须使用预定义实体引用或字符引用方式插入。须使用预定义实体引用或字符引用方式插入。ENUMERATEDENUMERATED限制属性取值只能从一个列表中选择,属于枚举类型。如:限制属性取值只能从一个列表中选择,属于枚举类型。如: 列表中的可选属性值可不用加引号(单引号或双引号),但在给属性赋列表中的可选属性值可不用加引号(单引号或双引号),但在给属性赋值时,需要带上引号,不仅要使用枚举类型声明中的可选值,还要注意大小值时,需要带上引号,不仅要使用枚举类型声明中的可选值,还要注意大小写。写。10第10页,共22页。属性类
8、型属性类型IDID、IDREFIDREF、IDREFSIDREFS一个一个IDID类型的属性值唯一标识类型的属性值唯一标识xmlxml文档中的一个元素。文档中的一个元素。一个一个IDID类型的属性值必须遵守类型的属性值必须遵守xmlxml名称定义规则,以字母、下划线或冒号开头,名名称定义规则,以字母、下划线或冒号开头,名称中可包含字母、数字、下划线以及其他在称中可包含字母、数字、下划线以及其他在xmlxml标准中允许的字符,名称中不能带标准中允许的字符,名称中不能带有空格。有空格。一个元素只能有一个一个元素只能有一个IDID类型的属性,类型的属性,IDID类型的属性必须设置为类型的属性必须设置
9、为#IMPLIED#IMPLIED或者或者#REQUIRED#REQUIRED,因为,因为IDID类型属性的每一个取值都是用来标识一个特定的元素,为类型属性的每一个取值都是用来标识一个特定的元素,为IDID类类型的属性提供缺省值,特别是固定的缺省值是毫无意义的。型的属性提供缺省值,特别是固定的缺省值是毫无意义的。11第11页,共22页。IDID、IDREFIDREF、IDREFSIDREFS!DOCTYPE company 张三张三 李四李四Companyid.xml12第12页,共22页。IDID、IDREFIDREF、IDREFSIDREFSIDREFIDREF类型的属性值为同一文档中另一
10、个元素的类型的属性值为同一文档中另一个元素的IDID类型的属性值,而这另一个元素类型的属性值,而这另一个元素的的IDID类型的属性值必须是已经存在的。利用类型的属性值必须是已经存在的。利用IDID和和IDREFIDREF这这2 2种类型属性,可以在种类型属性,可以在2 2个个对象之间建立一种关联关系。对象之间建立一种关联关系。13第13页,共22页。IDID、IDREFIDREF、IDREFSIDREFS!DOCTYPE company 张三张三 李四李四Companyidef.xml14第14页,共22页。IDID、IDREFIDREF、IDREFSIDREFS!DOCTYPE compan
11、y 张三张三 李四李四 王五王五Companyidef1.xml15第15页,共22页。IDID、IDREFIDREF、IDREFSIDREFS如果一个属性需要引用文档中多个如果一个属性需要引用文档中多个IDID类型的属性值,那么可以把它声明为具有类型的属性值,那么可以把它声明为具有IDREFSIDREFS类型。类型。IDREFSIDREFS类型的属性值是一系列以空格分隔的类型的属性值是一系列以空格分隔的IDID类型的属性值,而且必须与文档类型的属性值,而且必须与文档中已有的中已有的IDID类型属性值相匹配。类型属性值相匹配。16第16页,共22页。IDREFSIDREFS!DOCTYPE l
12、ibrary xmlservletjsp 2004-03-14 2004-03-15 Library.xml17第17页,共22页。记号声明记号声明在现实中在现实中 ,有很多数据都是无法用,有很多数据都是无法用XMLXML表示的,例如:声音、图像、表示的,例如:声音、图像、 影像等,对影像等,对于这些数据,于这些数据,XMLXML处理器通常都不支持。处理器通常都不支持。通过通过DTDDTD中的记号声明,为非中的记号声明,为非XMLXML数据描述一种可能的格式,或者指定一个外部的处理程序数据描述一种可能的格式,或者指定一个外部的处理程序 记号声明有两种形式,一种是使用记号声明有两种形式,一种是使
13、用MIMEMIME类型,形式如下:类型,形式如下: 另一种是使用另一种是使用URLURL路径,指出外部处理程序的位置,如下:路径,指出外部处理程序的位置,如下: 对于记号的声明,也可以使用对于记号的声明,也可以使用PUBLICPUBLIC关键字来代替关键字来代替SYSTEMSYSTEM关键字,并添加公共的关键字,并添加公共的名称和名称和URLURL(用法类似于使用了关键字(用法类似于使用了关键字PUBLICPUBLIC的外部的外部DTDDTD声明)。声明)。18第18页,共22页。记号记号(notationnotation)声明)声明NOTATIONNOTATION类型属性的值就是在记号声明中
14、的名称。类型属性的值就是在记号声明中的名称。 !DOCTYPE webpage http:/www.123.org/images/photo.jpg Webpage.xml19第19页,共22页。ENTITY 、ENTITIESENTITYENTITY、ENTITIESENTITYENTITIESENTITY类型的属性把外部的二进制数据链接到文档;类型的属性把外部的二进制数据链接到文档;ENTITYENTITY类型的属类型的属性值是在性值是在DTDDTD中申明的未分析的一般实体的名称。中申明的未分析的一般实体的名称。 例如,在文档中包含一副外部的图像,可以声明一个例如,在文档中包含一副外部的图
15、像,可以声明一个ENTITYENTITY类型的属性来引类型的属性来引入图像,如下:入图像,如下:在在DTDDTD中,还需要申明一个外部的一般实体:中,还需要申明一个外部的一般实体:关键字关键字NDATANDATA表示该实体是一般未分析的实体,后面的表示该实体是一般未分析的实体,后面的gifgif是记号名称是记号名称(notation name)(notation name),说明该实体的数据格式或指定一个外部的处理程序。记号,说明该实体的数据格式或指定一个外部的处理程序。记号gifgif的声明如下:的声明如下:在在XMLXML文档中,可以在文档中,可以在srcsrc属性中引用图像:属性中引用图
16、像:这句代码将这句代码将http:/www.123.org/logo.gifhttp:/www.123.org/logo.gif文件与文件与imageimage元素关联在一起。元素关联在一起。20第20页,共22页。ENTITY 、ENTITIESENTITIESENTITIES类型和类型和IDREFSIDREFS类型的使用是类似的,它的值是多个以空格分隔的类型的使用是类似的,它的值是多个以空格分隔的ENTITYENTITY类型的属性值。类型的属性值。 例如再添加一个实体声明:例如再添加一个实体声明:!ENTITY banner SYSTEM “http:/ NDATA gif然后将元素然后将元素imageimage的属性声明改为的属性声明改为:在在XMLXML文档中,通过文档中,通过srcsrc属性引用两幅图像:属性引用两幅图像:21第21页,共22页。22第22页,共22页。