网站设计与建设(18).ppt

上传人:za****8 文档编号:22667197 上传时间:2021-05-30 格式:PPT 页数:48 大小:267KB
收藏 版权申诉 举报 下载
网站设计与建设(18).ppt_第1页
第1页 / 共48页
网站设计与建设(18).ppt_第2页
第2页 / 共48页
网站设计与建设(18).ppt_第3页
第3页 / 共48页
资源描述:

《网站设计与建设(18).ppt》由会员分享,可在线阅读,更多相关《网站设计与建设(18).ppt(48页珍藏版)》请在装配图网上搜索。

1、网 站 设 计 与 建 设Website design and developments 第13章 XML技术简介第三部分 网站设计技术 131 XML语法与文档结构n XML是一种元标记语言n它与HTML等标记语言的区别: XML提供了创建标记语言的准则。作为元标记语言,XML不包含标记。使用XML设计一种标记语言时,必须要定义一个标记集合,标记集合中每个标记内容的意义要明确规定。严格来说,使用XML设计出来的标记语言称为XML应用程序。但是,对于一个用来处理存储在文档中信息的程序来说,如果这个文档也是用XML写的,那么通常也被称为一个XML应用程序。为了避免这种混淆,把一种基于XML的标记

2、语言成为一个标记集合,而把使用XML的标记语言编写的文档称为XML文档。 1.实例n first.xml。 Honda 2008 red 2XML声明n XML文档以声明开始,在上面例子中,文档的声明部分就是文档的第一行。 n一个XML文档可以包含三种不同类型的属性:版本、编码和独立。编码属性(encoding)指定XML文档使用的语言,一般在编码属性中指定XML文档所使用语言的字符集。独立属性(standalone)指定是否需要文档类型定义(DTD),关于DTD的概念将会在后面介绍。 3XML的标记与属性n与HTML类似,也将标记及它们包含的信息叫做元素。与HMTL不同的是,XML中所有的元

3、素必须有开始标记和结束标记,否则格式就将出错。n XML是一种元标记语言,因此XML本身并不定义任何的元素。标记及属性是由用户自己定义的,通常用来描述文档中的数据。在上例中,、等标记都是用户自定义的。与HTML一样,标记的属性值必须是有引号的。n需要注意的是,XML中的标记中“”前是允许有空格的。 n XML中的注释语句与HTML的完全相同。 4XML的格式要求XML对大小写敏感XML标记必须有结束标记在XML中,通常单标记是不允许出现的。在上面的例子中可以看到一个特殊的标记,这个标记是没有结束标记的。在XML中,这样的标记叫做空标记。与HTML中单标记不同,XML中的空标记必须在”前加”/”

4、表示标记结束。 XML文档必须有根标记n在HTML中,一个HTML文档会用和标记文档的开始和结束。在XML中同样要求用一对跟标记来标志文档的开始与结束。需要注意的是,XML声明部分并不是根标记的组成部分。在上面例子中,根标记是和。从该例子中可以看到,根标记必须出现在XML声明部分后,其他所有标记必须嵌套在根标记中。XML标记必须正确嵌套n 嵌套的例子n 嵌套的例子就会出现错误。 5XML的特殊字符n在XML中有5种字符属于特殊字符通过实体引用n左尖括号“” 新款Focus三厢2008年将在中国上市 n有一些经常用在数学公式中的特殊符号是无法从键盘输入到文档中的,比如希腊字母。n在XML中,解决

5、这一问题的手段是使用字符引用。n通常,这些字符会在Unicode字符集中找到,需要记住这些特殊字符在Unicode字符集中的编号,然后进行引用。n引用的格式为“+ =100将被解析为:+=100。 132 文档类型定义对XML的数据结构进行限制有两种途径:n使用文档类型定义(Document Type Definition,DTD)n XML架构(XML Schema)。 1什么是DTDn DTD是一个一系列关于数据结构规则的集合,这些规则被称为声明。声明规定了一个将出现在文档中的标记的集合以及这些标记如何和在哪里出现。一个DTD可以为一个XML文档服务,也可以被一系列XML文档使用,因此它可

6、以为团队开发提供良好的开发规范。n DTD分为内嵌DTD n位于由它来描述语法规则的XML文档中,因此它只能约束它所在的XML文档;n 外部DTD两种。n被单独存储为一个文件,因此可以为一组XML文档服务。n需要注意的是,浏览器的XML解析器只检查XML文件是否规范。当用浏览器打开一个被DTD约束的XML文档时,解析器只检查XML文档所关联的DTD文件是否有语法错误,并不检查XML文件是否遵守该DTD规定的约束条件。 2DTD中的元素DTD中的元素用来约束关联XML文档中的标记。元素的声明格式为:约束标记中只包含文本数据n标记中只包含文本数据,实际上就说明了在标记中不能包含子标记。n其声明格式

7、如下: :n下面的SANTANA标记是符合约束条件的 Santana is the most famous car in China n而下面的标记则是不符合条件的: Shanghai Santana is the most famous car in China 约束标记中的子标记n子标记列表可以约束标记的子标记有哪些、它们的排列顺序如何。而规定一个子标记重复出现的次数,可以通过为子标记的规范说明添加一个修饰符来实现。这些修饰符包括:+:一次或多次重复*:零次或多次重复?:零次或一次重复 n dtd_sample1.dtd n xml_sample1.xml 宝来 Bora 1.8T 被誉为

8、驾驶者之车 RMB 18万 9折 途安 Turan 2.0 兼顾家用与商用 RMB 17.5万 92折 EMPTY与ANYn如果约束一个标记是空标记,或者是只包含空字符的非空标记,可以将标记的约束规则设置为EMPTY。n而如果标记可以在字面上包含任何内容,可以将标记的约束规则设置为ANY。比如下面的两个例子: 3DTD中的属性n DTD中的属性是标记的属性,它可以为标记添加附加信息。n在DTD中,属性的声明与标记的声明是分开的。一个属性的声明必须包含下面的内容:属性对应的标记名称、属性名称和属性类型。属性是允许包含一个默认值的。n属性的声明格式如下: 属性的默认值n具体值:若没有规定任何值,则

9、使用该默认值n #FIXED 具体值: 所有该属性元素都使用这个值,不能改变n #IMPLIED:未给出默认值,元素的属性值可以没有(暗示)n #REQUIRED:未给出默认值,但元素的实例必须有属性值 属性的类型n CDATA任意字符串,如果包含特殊字符,需要字符引用n Enumerated枚举类型n NMTOKEN由字母、数字、下划线和连字符构成的字符串n NMTOKENS与NMTOKEN类似,但字符串间可以使用空格做间隔n ID属性值有专用性。可以由字母、数字、下划线、连字符和点构成,但必须以字母或下划线开头n IDREF用来判断标记之间的关联。通过定义IDREF类型,可以找到某个ID类

10、型标记的后代标记n IDREFS与IDREF类似,但可以约束某个属性的属性值是若干个其他ID属性的属性值的组合 n dtd_sample2.dtd n xml_sample2.xml王刚李强 4DTD中的实体n可以在DTD中定义实体,从而在与DTD关联的XML文档中可以引用它。n DTD中的实体分为两类:普通实体n普通实体在DTD中定义,与DTD关联的XML文档通过实体引用来使用实体,解析器在解析标记中的数据时,使用实体的内容来替换实体引用;参数实体。 n参数实体也在DTD中定义,但仅在标记声明中才能使用。n在DTD中声明实体的格式如下:如果实体声明中使用了%选项,表示这个实体是参数实体,否则

11、就是普通实体。 n dtd_sample3.dtd n xml_sample3.xml本周特别推荐产品是&BMWX5本周特别推荐产品是&CAYENNE 133 命名空间n由于XML允许自定义标记,因此可能会使得不同的XML文档或同一个XML文档中出现名字相同的标记,这显然会带来混乱,因为处理XML文档的软件系统必须能无二义地识别XML文档中的标记。n为了解决这一问题,就需要在XML中使用命名空间。n命名空间的目的是有效地区分名字相同的标记,也就是说,当两个标记的名字相同时,可以通过它们所在的命名空间不同来进行区分。n W3C为命名空间定义了一个标准,详细信息可以查阅http:/www.w3.o

12、rg/TR/REC-xml-names。 1命名空间的声明格式n命名空间的声明格式如下: n其中的方括号表示是可选项。n如果在定义命名空间名时定义了前缀,那么每次使用该标记及其子标记时,都必须把前缀放在标记名前面,表明此标记是属于这个命名空间的。n如果不加前缀,说明此命名空间是默认命名空间,一个标记最多只能有一个默认命名空间。 n如果两个标记同名,只要它们所在的命名空间不同,就被视为两个不同的标记。n对于命名空间的名称来说,如果两个命名空间名字相同,即使它们的前缀不同,也被视为相同的命名空间;n而如果两个命名空间名字不同,即使它们的前缀相同,也被视为不同的命名空间。n当然作为良好的代码规范来说

13、,在XML文档中一般不会使用相同的前缀名来表示不同的命名空间,也一般不会为同一个命名空间取两个不同的名字。 宝马公司产品介绍n这个例子中定义了一个名为BMW的标记,其前缀名为sample,那么将来如果这个标记及其子标记隶属于这个命名空间,那么必须通过这个前缀来引用此命名空间 宝马公司入门级商务轿车系列产品 宝马5系车型 $30,000-50,0000 宝马7系车型 $55,000-80,0000 2命名空间的作用域n一个标记如果使用了命名空间声明,那么该命名空间的作用域就是该标记及其所有的子孙标记。这个标记及其子孙标记在使用时如果要隶属于这个命名空间,需要通过前缀来引用此命名空间。n但即使在父

14、标记中声明了一个命名空间,在它的子孙标记中同样可以重新声明同名的命名空间,虽然这么做不是一种好习惯。宝马公司产品介绍宝马5系介绍宝马520介绍 3命名空间名n命名空间的名字通常有三种形式: Internet主机名 Email地址一个文件的绝对路径n这三种形式统称为统一资源标示符(Uniform Resource Identifier,URI)。大多数情况下,URI会以URL的形式出现。n需要特别注意的是,在XML中,一个URI不必是有效的,尤其是以URL做URI的时候。 比如www.aaab.ccn不是一个存在的URL,但是在XML中可以将它作为URI存在。也就是说,XML不负责判断URI是否

15、有效,只要格式上存在URI即可。 4DTD与命名空间n在DTD中,命名空间的名字被看成一种特殊的属性, 使用ATTLIST来声明,n格式为:一般将命名空间名类型固定为CDATA类型,命名空间名固定为#FIXED加命名空间名。 134 XML架构n使用DTD来对XML文档的数据组织进行限制是有缺陷的。DTD对XML文档中数据的类型不做判断,它会认为XML中所有的数据都是文本类型,显然,如果数据是数值、日期等类型的话,DTD无法完成对数据格式的限制。DTD的语法与XML无关,因此XML解析器不能分析它们。以上的缺陷会使得DTD的使用受到一些限制,当需要XML中的数据类型进行约束的时候,DTD显然不

16、能胜任。 1什么是XML架构n一个架构类似于一个类,一个符合架构定义结构的XML文档类似于这个架构类的一个对象。或者说,符合一个特定架构的XML文档都是这个架构的实例。n XML架构(XML Schema)的提出是为了弥补以上所说的DTD的缺陷。目前,XML架构是最可能的DTD替代者。n XML架构的问题在于它的标准过于复杂,而且支持它的解析器目前数量也比较少,本节所介绍的也只是它的一些基本概念和特征。n如果对XML文档的约束只限于文档中的标记和属性结构,而不涉及数据的具体内容的话,还是推荐使用DTD对XML文档进行约束。 2架构中的标记n XML架构是扩展名为.xsd的一个文本文件,这个文本

17、文件需要使用XML语法来编写。n架构本身使用一个来自叫做源架构的命名空间的一个词汇表写成,这个源架构就是http:/www.w3c.org/2001/XMLSchema。每个架构都需要在第一行就指定这个命名空间,其格式为: 如果要从源架构中引入名字,那么这个名字的前缀必然是xsd。一个架构文件的根标记就是schema。n架构的主要目的是约束相关联的XML文档中的标记,为了实现这一目的,可以使用源架构中的element标记。通常情况下,将element标记作为schema的子标记,在这种情况下,将这个element标记称为全局元素。这样,就可以使用element标记来约束关联XML文档中任意的子

18、标记,不论这个子标记在哪个级别。 n在架构中,还可以使用来自源架构的其他标记,这些标记主要是用来对XML文档中的数据进行约束。 3架构中的数据类型n XML架构中有两类数据类型:简单数据类型和复杂数据类型。简单数据类型的内容只包含文本数据,而且关联的XML文档中的标记不允许有子标记,也不允许有属性。n虽然简单类型只包含文本数据,但实际上XML架构定义了44种基本数据类型,在后面会给出这44种基本数据类型中常用的一些。复杂数据类型是允许有属性和子标记的标记。n简单类型和复杂类型可以有类型名,也可以没有。如果一个数据类型没有类型名,那么它在关联XML文档中的作用域仅限于这个类型声明所在的标记。n

19、XML架构中数据类型的声明可以是全局的,也可以是局部的。 4简单数据类型n架构中定义简单数据类型的格式为:n 这里面的的element、name和type都来自源架构。 n在XML架构中,用户还能对简单数据类型做简单的衍生。 5复杂数据类型n schema_sample1.xsd n xml_sample4.xml 11.481.6 16.581.8T 6架构的验证n在使用了XML架构对关联的XML文档做了一系列的约束后,如何去检查这些文档是否满足了这些约束呢?这一类的工作被称为XML架构的验证n工具来完成对XML的支持,其中的一部分针对XML架构验证的工具可以帮助我们自动实现对XML文档的验

20、证。这些工具包括Altova XMLSpy、Xerces-C、XML Schema Validator等。 135 XML解析器n 1XML解析器的用途检查XML文档是否符合基本语法;将DTD和XML架构中指定的默认值传递到XML文档中;替换所有XML文档中对实体的引用;如果XML文档关联了DTD或XML架构,那么可能要检查XML文档结构的合法性。n XML解析器的种类有很多。在本节中,主要介绍基于DOM的解析器和基于事件的解析器。 2DOM方式n DOM(Document Object Model,文档对象模型)是W3C制定的一套规范标准,也就是规定了解析文件的接口。各种语言可以按照DOM规

21、范去实现这些接口,给出解析文件的解析器。如果使用某种语言使用DOM规范实现了这些接口,并给出实现这些接口的类的集合,那么把这个过程称为语言绑定。 DOM规范中所包含的文件范围很广,包括XML文档和HTML文档。n在使用基于DOM方式对XML文档进行解析的过程中,解析的数据存储在内存中。这些数据是以树的形式进行存储的,当文档解析完成后,整个文档的DOM表示就存放在了内存中,并可以以各种树的遍历方式进行访问。 3SAX方式n SAX(Simple API for XML)提供了解析XML文档的API。n基于SAX的解析器将XML文档从头到尾扫描一遍,在扫描过程中,每当遇到一个语法结构(比如标记、属

22、性、文本、标记的结束等),就会调用一个事件处理程序向事件处理器发送事件信息,事件处理器会处理所发现的数据。这些事件处理器的接口描述都是在SAX的API中定义的。 n DOM方式的优点在于:如果文档的某个部分被多次重复,那么使用DOM方式仅需处理一次,而SAX方式则需处理多次;如果解析器需要对文档做一些调整,那么使用DOM方式要方便得多; DOM方式可以随机访问文档的某个部分,而SAX方式必须从文档的开头进行扫描;因为DOM方式的解析器在处理前可以看到整个文档,所以可以根据DTD或XML架构的规定来避免某些无效的操作。n SAX方式的优势在于,因为DOM方式的整个扫描结果都存储在内存中,因此如果文档如果特别大的话,使用DOM方式会占用大量的内存空间,如果文档足够大,在内存中存储它的树形处理结构甚至是不可能的。而SAX方式则会轻松获取这些标记的文本数据, SAX方式的另一个优势是它的处理速度比DOM方式要快。 思考题:n 13.2 DTD的作用是什么?n 13.3 什么是命名空间?它的作用是什么?n 13.4 什么是XML架构?n 13.5 什么是XML解析器?

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!