《实体的定义和使用.ppt》由会员分享,可在线阅读,更多相关《实体的定义和使用.ppt(41页珍藏版)》请在三一办公上搜索。
1、第四章 实体的定义和使用,主讲人:杨春蓉,什么是实体内部实体的定义和使用外部实体的定义和使用内部参数实体的定义和使用外部参数实体的定义和使用,本章要点:,第四章 实体的定义和使用,一个简单的XML文档可以从许多不同的资源和文件中取得数据和声明。实际上,有些数据直接来自数据库、CGI(Common Gateway Interface,公共网关接口)脚本或其他非文件格式资源。无论采取形式,保存XML文档的内容可以称为实体。实体引用把实体载入到XML主文档中。,什么是实体,1、实体的概念;在DTD的声明当中,另一项常见的声明就是实体(ENTITY)的声明。实体就是包含了文档片段或者说部分内容的虚拟存
2、储单元,用来存储XML声明、DTD各种元素或者其他形式的文本和二进制数据。简单的来说,实体是一个事先定义好的数据,当要取用该数据时,只要使用“引用方式”便可以将数据放入引用之处。,#define 3.1415926,请看下面的例子:dtdFile.dtd:,我正在看,Cha3_15.xml,实体的引用:每个实体都有一个名字,在XML文档中可以使用这个名字来代替实体的具体内容,这个过程称为“实体的引用”。,2、为什么使用实体?(好处),修改数据更方便快捷,一改全改;可以共享和重复使用数据;简化程序;,实体有各种类型,如下面所示的分类。但它们所起的作用是相同的。实体分为普通实体和参数实体,普通实体
3、简称为实体.普通实体:实体在DTD文件中定义,在和该DTD关联的XML文件中通过实体引用引用的实体.参数实体:在DTD文件中定义,只能由DTD文件本身通过实体引用使用参数实体,参数实体和关联的XML无关.,3、实体的分类:,4、普通实体的分类:,从外观上:小到一个简单的字符,大到可以是一个完整的XML文档.从实体所包含的内容分类,可分成以下几种:字符和数字实体,用于描述非ASCII字符.文本实体,一般包含一些在文档中经常出现的文本串或块.二进制实体,保存非文本数据,如图像,声音等.,可解析实体,不可解析实体,内部实体:就是实体的内容已经包含在DTD文 件本身中;(只能在当前文档中引用)。外部实
4、体:指实体的内容是DTD文件以外 的其他独立的文件。在文档中必须通过 URL才能定位的 实体,(可以被多个文 档所引用)。,按照实体的存在形式分类,有如下两种实体:,我正在看,外部实体的定义和使用:,&department;&xinguan1;&xinguan2;&xinguan3;,二、内部实体的定义和使用:,在DTD中,定义内部实体的格式是:在文档中引用实体的语法为:参照例题15:,(1)实体的内容中的文本数据不要含有左尖括号“”、与符号“”、单引号“”和双引号XML对DTD进行语法分析时,会出现错误.应当使用预定义实体引用来使用这些字符.例如:,在DTD中引用内部实体时需要注意以下几个方
5、面的问题:,(2)在定义内部实体时引用内部实体,要注意不能形 成循环引用。如下定义是非法的:”(3)实体在DTD中只能被其他实体定义引用,不能被 元素和属性定义所引用。,三、外部实体的定义和使用:,外部实体是指实体的内容是DTD文件以外的其它文件。外部实体的格式分为两种:(1)含义:SYSTEM格式:实体是一个外部文件,该外部文件由个人或工作小组所定义且认可;PUBLIC格式:实体是一个外部文件,该外部文件由已经得到某一领域的认可,是经过许多人讨论得到认可的文件。,(2)定义格式:,定义外部实体的语法为:!ENTITY表示该语句为定义实体的指令。“ENTITY”是关键 字,必须大写。entit
6、y_name为要定义的实体的名字。SYSTEM为定义外部实体的关键字。entityURL为能够找到该外部实体的URL地址。在文档中引用外部实体的语法与引用内部实体的语法一样,如:,(2)定义格式:,dtdFile.dtd,Cha3_16.xml,这是一个java文件:”,三、外部实体的定义和使用:,使用外部实体要注意如下两个方面的问题:(1)由于要 引用外部文件,所以文档声明中standalone属性的值必须是”no”;(2)作为外部实体的文档,如果使用的是XML默认字符集,如UNICODE或UTF-8,则可以没有XML声明:如果使用了默认字符集以外的字符集,如“GB2312”字符集,则必须有
7、XML声明,且在声明 中说明encoding属性。,四、内部参数实体的定义和使用:,参数实体在DTD文件中定义。只能由DTD文件本身通过实体引用使用参数实体,和关联的XML无关。为什么用参数实体?使用参数实体不仅可以方便DTD文件的编写,而且有利于DTD文件的维护。假如准备约束XML文件中的若干标记都有完全相同的子标记,比如如下元素:全都修改为形如:,四、内部参数实体的定义和使用:,假如我们事先声名了参数实体及其引用:那么,只要将node引用的实体“(性别,年龄)”修改为“(sex,age,borth)”即可。,四、内部参数实体的定义和使用,内部参数实体:就是实体的内容已经包含在独立的(外部的
8、)DTD文 件本身中;(只能在当前文档中引用)。外部参数实体:指实体的内容是其它的独立(外部的)DTD文件。在文档中必须通过 URL才能定位的 实体,(可以被多个文档所引用)。,内部参数实体:,dtdFile.dtd,内部参数实体:,Cha3_17.xml 2003年 100台 2005年 580部,外部参数实体:,李兵兵 男 19701018 林秀秀 女 1972i018 胡琳 女 19851018,外部参数实体:,例45所引用的文档(ch45-1dtd)内容如下:基本信息;综合信息;上述实例所引用的文档(ch452dtd)内容如下:,外部参数实体的使用实例:,上述实例所引用的文档(ch45
9、3dtd)内容如下:,参数实体与一般实体有如下不同:,(1)在定义参数实体时,实体名前必须加一个“”号,注意两者之间要有空格。(2)参数实体引用以开始,而不是一般实体引用的“”。(3)参数实体的内容不仅可以包含文本,还可以包含标记。(4)参数实体只能应用于 DTD,而不能在XML文档本体中引用。即参数实体只能用来构成DTD的内容,而不能构成文档内容。(5)参数实体只能在外部DTD文档中使用,无法应用于内部DTD。,四、内部参数实体的定义和使用,定义内部参数实体的语法为:!ENTITY表示该语句为定义实体的指令。ENTITY是关键字,必须大写。表示定义的是内部参数实体。entity_name为要
10、定义的内部参数实体的名字。entity_content为要定义的内部参数实体的具体内容。,四、内部参数实体的定义和使用,引用内部参数实体的语法为:entity_name;,dtdFile.dtd,四、内部参数实体的定义和使用,Cha3_17.xml 2003年 100台 2005年 580部,外部参数实体的定义和使用:,外部参数实体:在独立的外部DTD文档中,可以引用其他独立DTD文档中的定义,这种引用就是通过外部参数实体来实现的。这个过程与XML文档通过外部一般实体引用其他XML文档内容的过程十分相似。外部参数实体与外部一般实体的作用十分相似,其区别如下。(1)外部参数实体应用于独立的DTD
11、文档,外部一般实体应用于XML文档。(2)外部参数实体应用于将多个独立的DTD文档组合为一个大的DTD文档,外部一般实体用于将多个独立的XML文档组合成一个大的XML文档。,外部参数实体的定义和使用:,对于较复杂的应用,其DTD一般也是相当的庞大。这时候往往会按照DTD的内容或逻辑结构将其分为几个较小的、独立的DTD文档,再使用外部参数实体将其连接为一个完整的DTD文档。定义外部参数实体的语法为:,外部参数实体的定义和使用:,!ENTITY表示该语句为定义实体的指令。“ENTITY”是关键字,必须大写。表示定义的是外部参数实体。entity name为要定义的外部参数实体的名字。SYSTEM为
12、定义外部参数实体的关键字。entity URL为能够找到该外部参数实体DTD的URL地址。引用外部参数实体的语法与引用内部参数实体的语法完全一致:entity_name;,外部参数实体的使用实例:,李兵兵 男 19701018 林秀秀 女 1972i018 胡琳 女 19851018,外部参数实体的使用实例:,例45所引用的文档(ch45-1dtd)内容如下:基本信息;综合信息;上述实例所引用的文档(ch452dtd)内容如下:,外部参数实体的使用实例:,上述实例所引用的文档(ch453dtd)内容如下:,外部参数实体的使用:,使用外部参数实体需要注意以下几点。(1)在外部DTD文档中引用其他DTD文档,注 意不能造成递归引用。(2)被引用的外部DTD文档可以不是完整的 DTD定义,但一般不提倡这样。最好所有的 DTD文档都是一个完整的DTD定义。(3)每一个外部DTD文档都必须有一个声明,说明文档所使用的字符集。如果文档使用了XML默认字符集(如UNICODE或UTF-8字符集),才允许不使用这个声明。,