网站设计与建设(18).ppt_第1页
网站设计与建设(18).ppt_第2页
网站设计与建设(18).ppt_第3页
网站设计与建设(18).ppt_第4页
网站设计与建设(18).ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网 站 设 计 与 建 设 Website design and developments,第13章 XML技术简介,第三部分 网站设计技术,131 XML语法与文档结构,XML是一种元标记语言 它与HTML等标记语言的区别: XML提供了创建标记语言的准则。 作为元标记语言,XML不包含标记。使用XML设计一种标记语言时,必须要定义一个标记集合,标记集合中每个标记内容的意义要明确规定。 严格来说,使用XML设计出来的标记语言称为XML应用程序。但是,对于一个用来处理存储在文档中信息的程序来说,如果这个文档也是用XML写的,那么通常也被称为一个XML应用程序。为了避免这种混淆,把一种基于XML的标记语言成为一个标记集合,而把使用XML的标记语言编写的文档称为XML文档。,1.实例,first.xml。 Honda 2008 red ,2XML声明,XML文档以声明开始,在上面例子中,文档的声明部分就是文档的第一行。 一个XML文档可以包含三种不同类型的属性:版本、编码和独立。 编码属性(encoding)指定XML文档使用的语言,一般在编码属性中指定XML文档所使用语言的字符集。 独立属性(standalone)指定是否需要文档类型定义(DTD),关于DTD的概念将会在后面介绍。,3XML的标记与属性,与HTML类似,也将标记及它们包含的信息叫做元素。与HMTL不同的是,XML中所有的元素必须有开始标记和结束标记,否则格式就将出错。 XML是一种元标记语言,因此XML本身并不定义任何的元素。标记及属性是由用户自己定义的,通常用来描述文档中的数据。 在上例中,、等标记都是用户自定义的。与HTML一样,标记的属性值必须是有引号的。 需要注意的是,XML中的标记中“”前是允许有空格的。 XML中的注释语句与HTML的完全相同。,4XML的格式要求,XML对大小写敏感 XML标记必须有结束标记 在XML中,通常单标记是不允许出现的。 在上面的例子中可以看到一个特殊的标记,这个标记是没有结束标记的。在XML中,这样的标记叫做空标记。 与HTML中单标记不同,XML中的空标记必须在”前加”/”表示标记结束。,XML文档必须有根标记 在HTML中,一个HTML文档会用和标记文档的开始和结束。在XML中同样要求用一对跟标记来标志文档的开始与结束。需要注意的是,XML声明部分并不是根标记的组成部分。在上面例子中,根标记是和。从该例子中可以看到,根标记必须出现在XML声明部分后,其他所有标记必须嵌套在根标记中。 XML标记必须正确嵌套 嵌套的例子 嵌套的例子就会出现错误。,5XML的特殊字符,在XML中有5种字符属于特殊字符 通过实体引用 左尖括号“” 2008年将在中国上市,有一些经常用在数学公式中的特殊符号是无法从键盘输入到文档中的,比如希腊字母。 在XML中,解决这一问题的手段是使用字符引用。 通常,这些字符会在Unicode字符集中找到,需要记住这些特殊字符在Unicode字符集中的编号,然后进行引用。 引用的格式为“=100 将被解析为:+=100。,132 文档类型定义,对XML的数据结构进行限制有两种途径: 使用文档类型定义(Document Type Definition,DTD) XML架构(XML Schema)。,1什么是DTD,DTD是一个一系列关于数据结构规则的集合,这些规则被称为声明。声明规定了一个将出现在文档中的标记的集合以及这些标记如何和在哪里出现。一个DTD可以为一个XML文档服务,也可以被一系列XML文档使用,因此它可以为团队开发提供良好的开发规范。 DTD分为 内嵌DTD 位于由它来描述语法规则的XML文档中,因此它只能约束它所在的XML文档; 外部DTD两种。 被单独存储为一个文件,因此可以为一组XML文档服务。 需要注意的是,浏览器的XML解析器只检查XML文件是否规范。当用浏览器打开一个被DTD约束的XML文档时,解析器只检查XML文档所关联的DTD文件是否有语法错误,并不检查XML文件是否遵守该DTD规定的约束条件。,2DTD中的元素,DTD中的元素用来约束关联XML文档中的标记。元素的声明格式为: 约束标记中只包含文本数据 标记中只包含文本数据,实际上就说明了在标记中不能包含子标记。 其声明格式如下: ,: 下面的SANTANA标记是符合约束条件的 Santana is the most famous car in China 而下面的标记则是不符合条件的: Shanghai Santana is the most famous car in China ,约束标记中的子标记 子标记列表可以约束标记的子标记有哪些、它们的排列顺序如何。而规定一个子标记重复出现的次数,可以通过为子标记的规范说明添加一个修饰符来实现。这些修饰符包括: +:一次或多次重复 *:零次或多次重复 ?:零次或一次重复,dtd_sample1.dtd ,xml_sample1.xml 宝来 Bora 1.8T 被誉为驾驶者之车 RMB 18万 9折 途安 Turan 2.0 兼顾家用与商用 RMB 17.5万 92折 ,EMPTY与ANY 如果约束一个标记是空标记,或者是只包含空字符的非空标记,可以将标记的约束规则设置为EMPTY。 而如果标记可以在字面上包含任何内容,可以将标记的约束规则设置为ANY。比如下面的两个例子: ,3DTD中的属性,DTD中的属性是标记的属性,它可以为标记添加附加信息。 在DTD中,属性的声明与标记的声明是分开的。一个属性的声明必须包含下面的内容:属性对应的标记名称、属性名称和属性类型。属性是允许包含一个默认值的。 属性的声明格式如下: ,属性的默认值 具体值:若没有规定任何值,则使用该默认值 #FIXED 具体值: 所有该属性元素都使用这个值,不能改变 #IMPLIED:未给出默认值,元素的属性值可以没有(暗示) #REQUIRED:未给出默认值,但元素的实例必须有属性值,属性的类型 CDATA任意字符串,如果包含特殊字符,需要字符引用 Enumerated枚举类型 NMTOKEN由字母、数字、下划线和连字符构成的字符串 NMTOKENS与NMTOKEN类似,但字符串间可以使用空格做间隔 ID属性值有专用性。可以由字母、数字、下划线、连字符和点构成,但必须以字母或下划线开头 IDREF用来判断标记之间的关联。通过定义IDREF类型,可以找到某个ID类型标记的后代标记 IDREFS与IDREF类似,但可以约束某个属性的属性值是若干个其他ID属性的属性值的组合,dtd_sample2.dtd ,xml_sample2.xml 王刚 李强 ,4DTD中的实体,可以在DTD中定义实体,从而在与DTD关联的XML文档中可以引用它。 DTD中的实体分为两类: 普通实体 普通实体在DTD中定义,与DTD关联的XML文档通过实体引用来使用实体,解析器在解析标记中的数据时,使用实体的内容来替换实体引用; 参数实体。 参数实体也在DTD中定义,但仅在标记声明中才能使用。 在DTD中声明实体的格式如下: 如果实体声明中使用了%选项,表示这个实体是参数实体,否则就是普通实体。,dtd_sample3.dtd ,xml_sample3.xml 本周特别推荐产品是BMWX5 本周特别推荐产品是CAYENNE ,133 命名空间,由于XML允许自定义标记,因此可能会使得不同的XML文档或同一个XML文档中出现名字相同的标记,这显然会带来混乱,因为处理XML文档的软件系统必须能无二义地识别XML文档中的标记。 为了解决这一问题,就需要在XML中使用命名空间。 命名空间的目的是有效地区分名字相同的标记,也就是说,当两个标记的名字相同时,可以通过它们所在的命名空间不同来进行区分。 W3C为命名空间定义了一个标准,详细信息可以查阅/TR/REC-xml-names。,1命名空间的声明格式,命名空间的声明格式如下: 其中的方括号表示是可选项。 如果在定义命名空间名时定义了前缀,那么每次使用该标记及其子标记时,都必须把前缀放在标记名前面,表明此标记是属于这个命名空间的。 如果不加前缀,说明此命名空间是默认命名空间,一个标记最多只能有一个默认命名空间。,如果两个标记同名,只要它们所在的命名空间不同,就被视为两个不同的标记。 对于命名空间的名称来说,如果两个命名空间名字相同,即使它们的前缀不同,也被视为相同的命名空间; 而如果两个命名空间名字不同,即使它们的前缀相同,也被视为不同的命名空间。 当然作为良好的代码规范来说,在XML文档中一般不会使用相同的前缀名来表示不同的命名空间,也一般不会为同一个命名空间取两个不同的名字。, 宝马公司产品介绍 这个例子中定义了一个名为BMW的标记,其前缀名为sample,那么将来如果这个标记及其子标记隶属于这个命名空间,那么必须通过这个前缀来引用此命名空间 宝马公司入门级商务轿车系列产品 , 宝马5系车型 $30,000-50,0000 宝马7系车型 $55,000-80,0000 ,2命名空间的作用域,一个标记如果使用了命名空间声明,那么该命名空间的作用域就是该标记及其所有的子孙标记。 这个标记及其子孙标记在使用时如果要隶属于这个命名空间,需要通过前缀来引用此命名空间。 但即使在父标记中声明了一个命名空间,在它的子孙标记中同样可以重新声明同名的命名空间,虽然这么做不是一种好习惯。 宝马公司产品介绍 宝马5系介绍 宝马520介绍 ,3命名空间名,命名空间的名字通常有三种形式: Internet主机名 Email地址 一个文件的绝对路径 这三种形式统称为统一资源标示符(Uniform Resource Identifier,URI)。大多数情况下,URI会以URL的形式出现。 需要特别注意的是,在XML中,一个URI不必是有效的,尤其是以URL做URI的时候。 比如www.aaab.ccn不是一个存在的URL,但是在XML中可以将它作为URI存在。也就是说,XML不负责判断URI是否有效,只要格式上存在URI即可。,4DTD与命名空间,在DTD中,命名空间的名字被看成一种特殊的属性, 使用ATTLIST来声明, 格式为: 一般将命名空间名类型固定为CDATA类型,命名空间名固定为#FIXED加命名空间名。 ,134 XML架构,使用DTD来对XML文档的数据组织进行限制是有缺陷的。 DTD对XML文档中数据的类型不做判断,它会认为XML中所有的数据都是文本类型,显然,如果数据是数值、日期等类型的话,DTD无法完成对数据格式的限制。 DTD的语法与XML无关,因此XML解析器不能分析它们。以上的缺陷会使得DTD的使用受到一些限制,当需要XML中的数据类型进行约束的时候,DTD显然不能胜任。,1什么是XML架构,一个架构类似于一个类,一个符合架构定义结构的XML文档类似于这个架构类的一个对象。或者说,符合一个特定架构的XML文档都是这个架构的实例。 XML架构(XML Schema)的提出是为了弥补以上所说的DTD的缺陷。目前,XML架构是最可能的DTD替代者。 XML架构的问题在于它的标准过于复杂,而且支持它的解析器目前数量也比较少,本节所介绍的也只是它的一些基本概念和特征。 如果对XML文档的约束只限于文档中的标记和属性结构,而不涉及数据的具体内容的话,还是推荐使用DTD对XML文档进行约束。,2架构中的标记,XML架构是扩展名为.xsd的一个文本文件,这个文本文件需要使用XML语法来编写。 架构本身使用一个来自叫做源架构的命名空间的一个词汇表写成,这个源架构就是/2001/XMLSchema。每个架构都需要在第一行就指定这个命名空间,其格式为: 如果要从源架构中引入名字,那么这个名字的前缀必然是xsd。 一个架构文件的根标记就是schema。 架构的主要目的是约束相关联的XML文档中的标记,为了实现这一目的,可以使用源架构中的element标记。通常情况下,将element标记作为schema的子标记,在这种情况下,将这个element标记称为全局元素。这样,就可以使用element标记来约束关联XML文档中任意的子标记,不论这个子标记在哪个级别。 在架构中,还可以使用来自源架构的其他标记,这些标记主要是用来对XML文档中的数据进行约束。,3架构中的数据类型,XML架构中有两类数据类型:简单数据类型和复杂数据类型。 简单数据类型的内容只包含文本数据,而且关联的XML文档中的标记不允许有子标记,也不允许有属性。 虽然简单类型只包含文本数据,但实际上XML架构定义了44种基本数据类型,在后面会给出这44种基本数据类型中常用的一些。 复杂数据类型是允许有属性和子标记的标记。 简单类型和复杂类型可以有类型名,也可以没有。如果一个数据类型没有类型名,那么它在关联XML文档中的作用域仅限于这个类型声明所在的标记。 XML架构中数据类型的声明可以是全局的,也可以是局部的。,4简单数据类型,架构中定义简单数据类型的格式为: 这里面的的element、name和type都来自源架构。 ,在XML架构中,用户还能对简单数据类型做简单的衍生。 ,5复杂数据类型,schema_sample1.xsd ,xml_sample4.xml 11.48 1.6 16.58 1.8T ,6架构的验证,在使用了XML架构对关联的XML文档做了一系列的约束后,如何去检查这些文档是否满足了这些约束呢?这一类的工作被称为XML架构的验证 工具来完成对XML的支持,其中的一部分针对XML架构验证的工具可以帮助我们自动实现对XML文档的验证。 这些工具包括Altova XMLSpy、Xerces-C、XML Schema Validator等。,135 XML解析器,1XML解析器的用途 检查XML文档是否符合基本语法; 将DTD和XML架构中指定的默认值传递到XML文档中; 替换所有XML文档中对实体的引用; 如果XML文档关联了DTD或XML架构,那么可能要检查XML文档结构的合法性。 XML解析器的种类有很多。在本节中,主要介绍基于DOM的解析器和基于事件的解析器。,2DOM方式,DOM(Document Object Model,文档对象模型)是W3C制定的一套规范标准,也就是规定了解析文件的接口。 各种语言可以按照DOM规范去实现这些接口,给出解析文件的解析器。 如果使用某种语言使用DOM规范实现了这些接口,并给出实现这些接口的类的集合,那么把这个过程称为语言绑定。 DOM规范中所包含的文件范围很广,包括XML文档和HTML文档

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论