第2章 数据底层结构(精品).ppt
《第2章 数据底层结构(精品).ppt》由会员分享,可在线阅读,更多相关《第2章 数据底层结构(精品).ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章 数据的底层结构DTD和XML Schema本章内容vXML文档类型定义文件DTDvXML文档模式定义文件SchemaXML文档类型定义文件DTDXML被作为一种元标记语言,是一种描述标记语言的语言。在本章中您将学到如何说明和描述所创建的新标记语言。这些新的标记语言(也叫标记集)要通过文档类型定义(DTD)来定义,这正是本章要讲述的内容。各个文档要与DTD相比较,这一过程称为合法性检验。如果文档符合DTD中的约束,这个文档就被认为是合法的,否则就是不合法的。DTD是一套关于标记符的语法规则,它定义了可用在文档中的元素、属性和实体,以及这些内容之间的相互关系。本节内容v初识DTDvDTD编
2、写语法vXML文档和DTD的匹配初识DTD例如:需要用XML文档记录通讯录的信息,包括姓名、地址、街道、城市、州、邮编、电话、Email。第一步,根据分析可设计如下各元素名:Name,Address,Street,City,State,ZipCode,Phone,Email,还有Sex。第二步,确定XML文档的层次结构:Directory Person(属性Sex)Name Address Street City State ZipCode Phone Email初识DTD第三步,根据文档结构构造DTD:初识DTD最后,根据DTD编写相应的XML文档:Fred BloggsLondon22 C
3、hancery LaneLondonSW17$QP44 1 800 345144fbloggshk.co.ukPerson元素可以根据需要定义多个,但必须都包含在根元素中。只有满足相应DTD的XML文档才是合法的,但这并不说明不是良构的XML文档。DTD的编写语法v一、元素定义元素声明v格式:name是一个标准的XML标记的名字;content由以下三种之一组成:v关键字EMPTY;v关键字ANY;v描述包含在本元素中的子元素的顺序和重复次数的内容模型。例2.2 只有在DTD中定义的元素才能出现在文档中。DTD的编写语法v元素声明注意事项:声明以关键字ELEMENT开头;数据类型不是DTD的一
4、个特征,即元素不能被指定包含一个数字或日期,都是字符类型的;DTD中是区分大小写的,所有的关键字必须按照规定书写。DTD的编写语法v元素内容类型1、EMPTY类型用于定义空元素,此种元素只能有属性(也可以没有)不能有元素内容和子元素。声明语法:2、ANY类型此种元素可以包含其他任何元素或已编译的字符数据。声明语法:3、#PCDATA类型只包含已编译的字符数据的元素,不包含子元素。声明语法:注意此处有空格DTD的编写语法4、子元素类型元素可以包含一些列的子元素,子元素的内容模型有两种结构:序列和选择。v序列:所有的子元素必须出现且仅出现一次,而且要依次出现。声明语法:注意:序列中不能出现#PCD
5、ATA;子元素还可以包含子元素。v选择:将子元素用竖线”|”分隔,只能出现各子元素中的一个。声明语法:序列和选择可以结合使用,例如:DTD编写语法v5、混合类型既包含子元素有包含已编译的字符数据。声明语法:其实,任何包含#PCDATA的内容规范都称为混合类型。在混合类型中,结尾的星号是必须的,并且必须以#PCDATA开始。是非法的。DTD编写语法v6、元素出现次数指示符前面介绍的元素声明中,元素只能出现一次。可以用元素出现次数指示符来指定元素出现的次数。“?”字符:说明元素可以出现0次或1次;“*”字符:说明元素可以不出现,或出现1次或多次;“+”字符:说明元素必须出现至少一次,或者说可以出现
6、1次或多次。例如:例2.4DTD编写语法v属性定义属性声明vElement_name是元素名;vAttribute_name是属性名;vType是属性的类型;vDefault_value是属性的默认值。例如:声明属性应注意:v属性名称遵守的规则与有效的元素名称相同;v在一个给定的元素中不能有两个属性同名;v若属性值中含有双引号,则该属性用单引号括起来;反之亦然。DTD编写语法v1、属性的类型CDATA属性类型属性值只能是文本串。例如:枚举属性类型属性值为指定文本串列表中的某一个文本串。例如:ID属性类型用于标识文档中的元素。ID属性值必须是一个合法的XML名称,并且该值在文档中必须是唯一的。每
7、个元素最多只能有一个ID类型的属性。例如:DTD编写语法vIDREF/IDREFS类型IDREF类型的属性用来引用同一文档中的另一元素的ID属性,使一个元素和另一个元素发生联系。IDREFS是IDREF的复数形式,表明可以引用多个元素的ID属性,在XML文档中不同ID属性值用空格隔开。例题2.6vNMTOKEN/NMTOKENS属性类型NMTOKEN类型属性的属性值必须是一个有效的XML名称。NMTOKENS是NMTOKEN的复数形式,允许有多个有效XML名称作为属性值,之间用空格隔开。DTD编写语法v2、属性的默认值属性声明可以给属性指定一个默认值,使得当在XML文档中未明确地指定该属性的值
8、时,XML处理器会将此默认值作为该属性的值。属性的默认值可以分别用下面三个关键字进行定义。#REQUEIRED:该元素必须具有该属性,否则文档是无效的;例如:如果语法分析器遇到一个标记,该标记没有包含这些属性中的一个或几个时,将返回一个错误。DTD编写语法#IMPLIED:该属性不是必须使用的;例如:如果XML处理器遇到没有EXTENSION属性的标记,就不向XML应用程序提供有用的属性值。DTD编写语法v#FIXED:可以不用明确指定该属性的值,处理器会自动给出其值;如果要明确指出属性值,必须是属性定义时给出的默认值。例如:文档作者不需要在它们各自的标记中真正地引用固定的属性。如果它们没有包
9、括固定属性,则使用缺省值;如果包括了固定的属性,无论如何它们使用的属性值必须一致,否则语法分析器将返回一个错误信号。XML文档和DTD的匹配每个有效的XML文档必须指定它对于哪个DTD是有效的。这个DTD可以包含在相应的XML文档中,或者XML文档也可以通过一个外部URL链接到DTD,这样的外部DTD可以有不同的文档和Web站点共享。v内部DTD内部DTD的语法:其中document.type.name与XML文档的根元素名相同。例如:XML文档和DTD的匹配v外部个人DTD前面的合法的例子都在文档的序言部分包含了DTD。但是XML真正的功能来自于不同的人们编写的可为许多文档共享通用的DTD。
10、当使用外部DTD时,文档类型声明要加以改变。DTD不再是包括在方括号中,而是在SYSTEM关键词后接一个能找到DTD的绝对或相对的URL。例如:这里root_element_name像以前一样是根元素的名称,SYSTEM是一个XML关键词,关键词SYSTEM是为单个作者或小组所用的私有的DTD使用的。DTD_URL是能找到DTD的绝对或相对的URL。例如:也可以通过web共享一个DTD:XML文档和DTD的匹配vDTD文档当单独定义DTD文档时,其内容不再包括。例如:保存为扩展名为dtd的文件即可。例2.12XML文档和DTD的匹配一个XML文档可以同时使用内部和外部DTD,语法如下:!DOC
11、TYPE customer SYSTEM“”XML文档和DTD的匹配v外部公用DTD关键词SYSTEM是为单个作者或小组所用的私有的DTD使用的。但作为XML承诺的一部分,可令覆盖整个产业的广泛组织(如ISO或IEEE)能够将公共DTD加以标准化,以便用于各自的专门领域。这样的标准化可以让人们不用为同一项目重复作标记,并且使用户共享公用文档更容易。为创建组织之外的编写者设计的DTD使用PUBLIC关键词而不使用SYSTEM关键词。并且DTD有一个文件名。句法如下:root_element_name仍然是基本元素名称。PUBLIC是XML关键词,说明这一DTD是公共使用并具有名称。DTD_nam
12、e是与此DTD联系的名称。有些XML处理程序会使用名称从中心库中检索DTD。最后,如果DTD不能根据名称从熟知的库中检索到,则DTD_URL是一个能找到该DTD的相对或绝对URL。XML文档和DTD的匹配如果一项DTD是ISO标准,它的名称要以字符串“ISO”开始。如果是非ISO标准组织批准的DTD,它的名称以加号(+)开始。如果不是标准组织批准的DTD,它的名称以连字符(-)开始。这些开始字符串后接双斜线(/)和DTD所有者的名字,其后接另一个双斜线和DTD描述的文档类型,然后又是一个双斜线后接ISO639语言标识符,如EN表示英语。在http:/www.ics.uci.edu/pub/ie
13、tf/http/related/iso639.txt处列有完整的ISO639标识符。例如:XML文档和DTD的匹配v实体定义实体是包含XML文档特殊部分的存储单元。它可以是文件、数据库记录或任何其他包含数据的项目。实体使用了一种代替机制:在XML文档中放入一个实体引用,当对文档进行解析时,实体引用被实体内容所取代。XML文档和DTD的匹配v内部一般实体DTD中实体定义语法:XML文档中引用实体语法:&entity_name;例如:例2.15 XML文档和DTD的匹配在实体中使用标记字符有一些限制v在实体中使用标记的第一个限制是:任何标记字符必须双重转义。如果希望最终元素内容是This is n
14、ot a black&white choice.如果希望用”&name;”来代替”black&white”,即定义实体:如果将元素内容写为:This is not&name;choice.则在xml处理器解析后生成:This is not a black&white choice.xml处理器在试图解析“&”时将报告错误。正确的实体定义写法为:注意注意:如果使用&则不需要双重转义,其他标记字符有相同特点。例题XML文档和DTD的匹配v在实体中使用标记的第二个限制是:XML文档的逻辑结构与物理结构必须一致简单的说就是:如果实体定义中有元素的开始标签,就必须有其结束标签。例:定义实体:元素
15、内容写为:The job was left to&safe;to finish.正确的写法:The job was left to&safeto finish.例题XML文档和DTD的匹配v外部一般实体外部一般实体除了实体的定义是在一个单独的文件中之外,与内部一般实体很相似。将实体定义写在一个独立文件中,定义扩展名为.ent。在DTD文件中用下列语句调用:例2.17XML文档和DTD的匹配v参数实体可用参数实体把较小的DTD组成大型的DTD。也就是说,一个外部DTD可以链接到另一外部DTD,第二个DTD引入第一个DTD中声明的元素和实体。同时,将DTD分解为小的、更便于管理的组块,使得对DTD
16、的分析处理更加简便。可以将DTD文档的一部分放在一个独立的文件中,然后再其他DTD文档中用下列语法定义实体:注意:%两边的空格是必须的。然后再用下列语法引用:%entityname;XML模式定义XSDv章前导读主要介绍XML模式定义(XML Schema Definition,XSD)的语法知识,重点介绍Schema的文档结构,XML Schema中元素及属性的声明语法和使用XML模式的方式。v学习重点Schema的文档结构XSD的数据类型XML Schema中元素的声明语法XML Schema中属性的声明语法在XML模式中创建元素和属性组使用XML SchemaSchema简介 XML S
17、chema是2001年5月正式发布的W3C推荐标准,经过数年的大规模讨论和开发终于成为全球公认的XML环境下首选的数据建模工具。和DTD一样,XML模式负责定义和描述XML文档的结构和内容。它可以定义XML文档中存在哪些元素和元素之间的关系,还可以定义元素和属性的数据类型。XML Schema本身是一个XML文档,它符合XML语法结构。例如,对于下列的XML文档 红楼梦 曹雪芹Schema简介 如果使用DTD的形式来定义该XML文档结构,代码如下:用Schema形式的定义代码:为什么要使用Schema 虽然DTD可以定义XML文档的结构和数据类型,但是DTD有不少缺陷。v首先,它使用自己的一套
18、语法,与文档实例的语法截然不同。更重要的是,如果XML解析器能够使应用程序简便的访问他们所处理的DTD中的声明,就会使DTD成为一种非常有用的工具。但是,几乎没有解析器能够做到这一点。应用程序无法了解DTD中的声明及其结构,妨碍了人们利用DTD验证文档的有效性,以及将相应领域的信息传达给编程人员。v不能使用解析器动态创建DTD。如果想根据某些值改变词汇表规则,人们只能手工创建DTD。vDTD是一种封闭的结构。XML词汇表的规则完全包含在DTD中。如果不需要从其他DTD借用声明或结构,或许人们感受不到这方面的限制性。由于实体处在一个很低的层次,因此扩展DTD的工作往往徒劳无功。人们无法根据概念和
19、对象的相关性将声明分为若干段。vDTD在数据类型信息方面也存在一定的缺陷。它所提供的唯一工具就是表示法。人们无法根据现有的类型定义自己的新类型。为什么要使用SchemavDTD的缺点归纳为以下几点:DTD是基于正则表达式的,表示能力有限;DTD没有数据类型的支持,在大多数应用环境下能力不足;DTD的约束定义能力不足,无法对XML实例文档作出更细致的语义限制;DTD的结构不够结构化,重用的代价相对较高;DTD并非使用XML作为描述手段,而且DTD的构建和访问并没有标准的编程接口,无法使用标准的编程方式进行DTD维护。为什么要使用SchemavXML Schema正式针对这些DTD的缺点而设计的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 数据底层结构精品 数据 底层 结构 精品
限制150内