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