资源描述
2019年11月27日星期三,第四讲 实体的定义和使用,软件学院:数据库教研室,主讲:解志君 E-mail:junwa81,课件下载:ftp:/10.10.22.22/,2019年11月27日星期三,第四讲 实体的定义和使用,本章要点:,什么是实体 内部实体的定义和使用 外部实体的定义和使用 内部参数实体的定义和使用 外部参数实体的定义和使用,2019年11月27日星期三,第四讲 实体的定义和使用,4.1 什么是实体,概念:实体就是包含XML文档片段的虚拟存储单元,用来存储XML声明、DTD或各种元素的数据,它是一个事先定义好的数据。,通用实体(一般实体):用于载入数据到XML文档的基本元素中 。 参数实体:用于载入数据到文档的DTD中。,2019年11月27日星期三,第四讲 实体的定义和使用,实体引用 : 在XML文档中使用实体名字代替实体的具体内容,组成一个结构完整的文档,这个过程称为“实体的引用”。,使用实体的好处: 提高文档的书写效率,使文档外观简洁。 若对文档中多次出现的内容进行修改,只需修改实体定义部分即可。,2019年11月27日星期三,第四讲 实体的定义和使用,按实体包含内容分类:,字符和数字实体:用于描述非ASCII字符。 文本实体:包含一些在文档中经常出现的文本串或块。 二进制实体:保存非文本数据,如图像、声音等,是一种不可析实体。,按实体存在形式分类:,内部实体:完全在文档内部定义的实体。 外部实体:存在于一个外部独立文件中的实体。,2019年11月27日星期三,第四讲 实体的定义和使用,4.2 内部实体的定义和使用,内部实体在一个XML文档的内部定义,只能在该文档内部引用。就像子程序中的局部变量,只在该程序中生存,子程序退出,它也就是消亡。,定义内部实体的语法为: !ENTITY :定义实体的指令,ENTITY为关键字,必须大写。 entity_name:定义实体的名字。 entity_content:定义实体的具体内容。,在文档中引用实体的语法为 :,2019年11月27日星期三,第四讲 实体的定义和使用,DTD中实体定义:,2019年11月27日星期三,第四讲 实体的定义和使用,XML文档中实体引用:,2019年11月27日星期三,第四讲 实体的定义和使用,浏览器中运行的结果:,2019年11月27日星期三,第四讲 实体的定义和使用,可以在DTD中引用内部实体: 例如: ,2019年11月27日星期三,第四讲 实体的定义和使用,在DTD中引用内部实体时需要注意的问题:,(1)被引用的内部实体的内容只能是文档内容的一部分,或者说是字符数据,而不能包含置标。,如: ,(2)在定义内部实体时引用内部实体,要注意不能形成循环引用。,如: ,(3)实体在DTD中只能被其他实体定义引用,不能被元素和属性定义所引用。,2019年11月27日星期三,第四讲 实体的定义和使用,4.3 外部实体的定义和使用,“外部实体”在文档中必须通过URL才能定位,外部实体为独立的文件,可以被多个文档所引用,具有更为广泛的共享性。XML通过对外部实体的引用,可以在一个XML文档中嵌入另一个XML文档,或者将多个文档组合为一个文档。,2019年11月27日星期三,第四讲 实体的定义和使用, !ENTITY:定义实体的指令。“ENTTTY”是关键字,必须大写。 entity_name:要定义的实体的名字。 SYSTEM:定义外部实体的关键字。 entity_URL:能够找到该外部实体的URL地址。,定义外部实体的语法为:,文档中引用外部实体的语法:,&entity_name;,2019年11月27日星期三,第四讲 实体的定义和使用,使用外部实体要注意的问题:,(1)由于要引用外部文件,所以文档声明中standalone属性的值不再是“yes”,而必须是“no” 。,(2)作为外部实体的文档,如果使用的是XML默认字符集,如UTF-8,则可以没有XML声明;如果使用了默认字符集以外的字符集,如“GB2312”字符集,则必须有XML声明,且在声明中说明encoding属性 。,2019年11月27日星期三,第四讲 实体的定义和使用,4.4 内部参数实体的定义和使用,内部参数实体是指在独立的外部DTD文档的内部定义的参数实体 。,2019年11月27日星期三,第四讲 实体的定义和使用,定义内部参数实体的语法为:, !ENTITY:定义实体的指令。“ENTITY”是关键字,必须大写。 表示定义的是内部参数实体。 Entity_name为要定义的内部参数实体的名字。 Entity_content为要定义的内部参数实体的具体内容。,引用内部参数实体的语法为:,% entity_name;,2019年11月27日星期三,第四讲 实体的定义和使用,内部参数实体定义: 内部参数实体引用: ,示例:,2019年11月27日星期三,第四讲 实体的定义和使用,使用内部参数实体需要注意的问题是: (1)内部参数实体必须先定义后引用。 (2)在定义时“”与实体名称之间必须有空格隔开。,2019年11月27日星期三,第四讲 实体的定义和使用,4.5 外部参数实体的定义和使用,在独立的外部DTD文档中,可以引用其他独立DTD文档中的定义,这种引用通过外部参数实体来实现。,外部参数实体与外部一般实体的区别如下:,外部参数实体应用于独立的DTD文档,外部一般实体应用于XML文档。 外部参数实体应用于将多个独立的DTD文档组合为一个大的DTD文档,外部一般实体用于将多个独立的XML文档组合成一个大的XML文档。,2019年11月27日星期三,第四讲 实体的定义和使用,定义外部参数实体的语法为:, !ENTYFY表示该语句为定义实体的指令。“ENTITY”是关键字,必须大写。 表示定义的是外部参数实体。 entity_name为要定义的外部参数实体的名字。 SYSTEM为定义外部参数实体的关键字。 entity_URL为能够找到该外部参数实体DTD的URL地址。,引用外部参数实体的语法为: % entity_name;,2019年11月27日星期三,第四讲 实体的定义和使用,基本信息:(ch4-5-1.dtd),2019年11月27日星期三,第四讲 实体的定义和使用,综合信息:(ch4-5-2.dtd),2019年11月27日星期三,第四讲 实体的定义和使用,外部DTD文档引用:(ch4-5.dtd),2019年11月27日星期三,第四讲 实体的定义和使用,使用外部参数实体需要注意以下几点。,在外部DTD文档中引用其他DTD文档,注意不能造成递归引用。 被引用的外部DTD文档可以不是完整的DTD定义,但一般不提倡这样。最好所有的DTD文档都是一个完整的DTD定义。 每一个外部DTD文档都必须有一个声明,说明文档所使用的字符集。,2019年11月27日星期三,第四讲 实体的定义和使用,参数实体与一般实体的不同点:,在定义参数实体时,实体名前必须加一个“”号。 参数实体引用以“”开始,而不是一般实体引用的“”。 参数实体的内容不仅可以包含文本,还可以包含标记。 参数实体只能应用于DTD,而不能在文档本体中引用。即参数实体只能用来构成DTD的内容,而不能构成文档内容。 参数实体只能在外部DTD文档中使用,无法应用于内部DTD。,2019年11月27日星期三,第四讲 实体的定义和使用,4.6 INCLUDE 与 IGNORE,使用INCLUDE与IGNORE标记的语法为:,INCLUDE:需要加入的DTD; IGNORE:需要去除的DTD,2019年11月27日星期三,第四讲 实体的定义和使用,使用INCLUDE与IGNORE需要注意的问题:,(1)INCLUDE和IGNORE中包含的DTD定义必须是完整的用尖括号括起来的定义,而不能是完整定义中的一部分。 (2)INCLUDE和IGNORE只能在DTD中使用。,2019年11月27日星期三,第四讲 实体的定义和使用,4.7 外部非解析实体,定义外部非解析实体的语法: ,NOTATION声明语法: ,引用方法:,2019年11月27日星期三,第四讲 实体的定义和使用,本讲小结,本讲主要介绍实体的概念,以及怎样使用实体,内容包括: 什么是内部实体、如何引用内部实体(一般实体); 什么是参数实体,以及如何引用内部参数实体与外部参数实体; INCLUDE 与 IGNORE的定义和引用; 外部非解析实体的定义和引用。,2019年11月27日星期三,再见!,
展开阅读全文