您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第9章XML程序设计基础知识
第九章XML程序设计基础知识课程目标了解XML掌握XML文档的组成、语法规则、有效性掌握元素的语法了解DTD、Schema、XSL、XPathASP.NET中操作XML文件XML简介XML的起源和目的XML是ExtensibleMarkupLanguage的缩写,即可扩展标记语言。它是一种用来创建的标记的标记语言。1996年,万维网协会(或者叫W3C,)开始设计一种可扩展的标记语言,1998年2月,XML1.0成为了W3C的推荐标准。这种XML语言继承了SGML的规范,StandardGeneralizedMarkupLanguage(SGML)是一种基于记号文本的语言。XML还保持了对现有的面向SGML系统的向下兼容性。XML将SGML的灵活性和强大功能与已经被广泛采用的HTML结合起来,简化了计算机对文档和数据交换的处理,使得现有的协议和软件更为协调,从而简化了数据的处理和传输。使用XML标记语言可以做到数据或数据结构在任何编程语言环境下的共享。例如我们在某个计算机平台上用某种编程语言编写了一些数据或数据结构,然后用XML标记语言进行处理,那样的话,其他人就可以在其他的计算机平台上来访问这些数据或数据结构,甚至可以用其他的编程语言来操作这些数据或数据结构了。这就是XML标记语言作为一种数据交换语言存在的价值。标记语言家谱表GML(1969)SGML(1985)XML(1998)HTML(1993)XHTMLSVGSMILHDMLOEB…通用标记语言标准通用标记语言可扩展标记语言超文本标记语言可扩展超文本标记语言可缩放矢量图形语言同步多媒体综合语言手持设备标记语言开放电子结构规范XML和HTML的区别XML和HTML都是用于操作数据或数据结构,在结构上大致是相同的,但它们在本质上却存在着明显的区别,它们的区别主要有以下几点:语法要求不同标记不同作用不同在HTML中不区分大小写,在XML中对大小写要求非常严格。HTML使用固有的标记,而XML没有固有标记。HTML用于显示页面,而XML用于描述页面内容的数据或数据的结构。HTML把数据和显示合在一起,在页面中把这些数据显示出来,而XML则将数据和显示分开。XML的优势每种语言的产生都能完成某些特定的功能,XML作为一种标记语言也不例外。XML最大的优势在于它能对各种编程语言编写的数据进行管理,使得在任何平台下都能通过解析器来读取XML数据。它的优势可归纳为以下几点:数据的搜索数据的显示数据的交换在XML中可以提取文档中任何位置的数据,XML将数据的结构和数据的显示形式分开,根据需要使数据呈现出多种显示方式。如HTML、PDF等格式。XML标记语言的语法非常简单,可以通过解析器在任何机器上解读。并可以在各种计算机平台上使用。逐渐成为一种数据交换的语言。XML文档的组成XML文档也属于纯文本文件,该文档一般如下四部分组成:XML文档注释XML标识及其内容XML文档的声明XML文档类型定义按照这种文档格式来编写的一个XML文件,如下所示:?xmlversion=1.0encoding=UTF-8?!--XML文档注释--?xml:stylesheettype=text/xslhref=stu.xsl?!--班级中学生的信息--classstudentnameJone/nameage20/age/student/classXML文档有效性结构良好的XML文档如果某个文档符合XML语法规范,那么我们就说这个文档是“结构良好”的文档。有效的XML文档所谓有效的XML文档是指通过了DTD的验证的,具有良好结构的XML文档,在此大家要明白XML文档可分为结构良好的XML文档和有效的XML文档,以及他们之间的关系。即具有结构良好的XML文档并不一定就是有效的XML文档,反之一个有效的XML文档必定是一个结构良好的XML文档。XML的基本语法XML的语法规则XML的语法规则既简单又严格,非常容易学习,在使用过程中只需认真仔细,没有多大困难。一般XML的语法规则大致可归纳为以下几点:正确的嵌套包含结束标记不可忽略区分大小写在HTML中某个标记有起始标记,却可以没有结束标记,但在XML文档中却不可以。在XML中严格区分大小写,主要表现在开始标记和结束标记的大小写必须相同。还包括文档的声明部分和文档类型定义部分的大小写区分。元素元素是XML文档的重要组成部分,在XML文档中必须存在元素。XML文档的元素一般是由标记头、标记末和标记间的字符串数据构成,如下代码所示:rootathisistest/a/root元素a的元素名或标签名元素a的值XML文档中的第一个元素被称为根元素,在任何一个XML文档中有且只有一个元素被称为根元素。其余所有的元素都是子元素,子元素必须正确的嵌套在根元素中。标记间的字符串数据就是该元素的值,在XML中,如果元素的值中存在空格,那么这些空格将按原样解析出来实体预定义实体表如下所示:实体名引用格式表示的符号lt<gt>amp&&apos''quot"实体在XML文档中的一般引用格式如下:&实体名;属性属性是用来修饰某个元素的,如:rootaattribute=aathisistest/a/root属性名属性值关于元素的属性需注意如下几个问题:属性的值必须用引号括起来,如:attribute1=“aa”或attribute3=‘aa';元素的属性以名和值成对出现;用来修饰同一个元素的属性的属性名不能相同;属性值不能包含“&”、“’”、“”等字符。CDATA节通过CDATA节可以通知分析器,在CDATA节包含的字符中没有标记。这样,如果文档包含可能会出现的标记字符,但我们又不是把它当作标记来使用,而只是属于文本字符,那么使用CDATA节来创建这样的文档就容易得多。CDATA节主要用于脚本语言内容、示例XML文档内容和HTML内容。如下所示:?xmlversion=1.0encoding=gb2312?程序titletest/title内容![CDATA[if(2010){return你好;}else{returnhello;}]]/内容/程序注意:在“![CDATA[”和“]]”之间不能再加入CDATA节或“]]”DTD简介什么是DTD在信息的高速交流中,不同领域之间的信息交换越来越紧密,如何才能保证这些不同领域之间的信息可以更容易且更有效率地交换成为我们首要关注的问题。为了解决这个问题,就需要不同的领域来针对领域的特性制定共同的信息内容模型(contentmodel),然后再通过这个共同的内容模型来标识信息。而DTD就是一种内容模型。DTD(文档类型定义)可以定义合法的XML文档结构,它使用一系列合法元素来定义文档的结构。DTD分为内部DTD和外部DTD,所谓内部DTD是指该DTD在某个文档的内部,只被该文档使用。外部DTD是指该DTD不在文档内部,可以被其他所有的文档来共享。DTD文档与XML文档实例的关系可以看成是类和对象的关系。DTD的优势每一个XML文档都可携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。既然DTD有外部和内部之分,当然就可以为某个独立的团体定义一个公用的外部DTD,那么多个XML文档就都可以共享使用该DTD,使得数据交换更为有效。甚至在某些文档中还可以使内部DTD和外部DTD相结合。在应用程序中也可以用某个DTD来检测接收到的数据是否符合某个标准。对于XML文档而言,虽然DTD不是必须的,但它为文档的编制带来了方便。加强了文档标记内参数的一致性,使XML语法分析器能够确认文档。如果不使用DTD来对XML文档进行定义,那么XML语法分析器将无法对该文档进行确认。元素的定义根元素的声明每个XML文档都只有一个根元素,其它的子元素都包含在该根元素中。因此在DTD中对根元素的声明是必不可少的。根元素声明的一般形式如下:!DOCTYPEroot[!--子元素--]!--文件体--DOCTYPE是“documenttype”(文档类型)的简写,DOCTYPE声明必须放在文档最顶部,在所有代码和标识之上,DOCTYPE声明是必不可少的关键组成部分。DTD语法要求DOCTYPE必须要大写,而且DOCTYPE和元素之间必须要有空格隔开。如在以上代码中DOCTYPE和根元素root之间要有空格隔开。元素类型子元素的定义格式如下:!ELEMENT元素名元素类型ELEMENT是关键字,后面跟元素名和元素类型,中间用空格分开。元素类型一般分为以下几种:EMPTY#PCDATAANY关键字和符号的综合只包含子元素使用符号其它非关键字类型其它非关键字类型只包含子元素将某个元素定义为只包含子元素,没有字符串数据。如下:!ELEMENTname(smallname,secondname)使用符号一般可使用的符号分为以下几种:问号(?),表示该元素可以出现一次或不出现。加号(+),表示该元素可以出现一次或多次。星号(*),表示该元素可以出现一次、多次或不出现。或(|),表示两个元素中只出现一个,且必须出现一个。逗号(,),定义各元素间的顺序。属性的定义属性定义的一般格式如下:!ATTLIST元素名属性名类型属性特征ATTLIST是关键字;元素名是指该属性所属的元素的名称;属性名是该属性的标识;类型是表示该属性属于何种类型;属性特征是对该属性的约束,比如设置是否每个元素实例都必须有该属性等控制。如下:!DOCTYPEproducts[!ELEMENTproducts(product+)!ELEMENTproduct(#PCDATA)!ATTLISTproduct编号CDATA#IMPLIED]productsproduct编号=A-FSdaaa/productproductbbb/product/products“product”是元素名,“编号”是属性名,“CDATA”是属性类型,“#IMPLIED”是属性的特征。属性的类型属性的类型有以下十种:NMTOKENS属性类型CDATA属性类型NMTOKEN属性类型IDREF属性类型IDREFS属性类型Enumerated(枚举型)属性类型NOTATION属性类型ENTITY属性类型ENTITIES属性类型Enumerated不是关键字ID属性类型属性的类型CDATA类型表示属性值可以是任意的字符、数字、符号等。NMTOKEN类型要求属性值中不能包含空格且必须以下划线、数字或字母开头。NMTOKENS类型与NMTOKEN类型类似,NMTOKENS类型要求属性值必须以下划线、数字或字母开头。但可以包含空格。ID类型要求每个元素实例的属性值必须不同。被声明为IDREF属性类型的属性值等于ID属性类型的属性值。IDREFS属性类型与IDREF类似。该属性类型的属性值可为多个ID属性类型的属性值的字符串和,并加上空格分开。枚举型列举出要选的项,与下拉列表类似。ENTITY的属性值必须对应某个实体。ENTITIES与ENTITY类似,ENTITIES的属性值对应多个实体,并用空格分开。NOTATION类型属性的值为DTD中声明的注释名。属性的特征属性的特征主要有以下几种:#REQUIRED:表示该属性必须有。#IMPLIED:表示该属性可以有也可以没有。#FIXED:表示该属性的属性值固定。实体的定义及其应用在XML中有五种预定义实体例如下面的代码中,使用“>”表示对“”的引用,使用“"”表示对单引号的引用。?xmlversion=1.0encoding=utf-8?!DOCTYPE计算题[!ELEMENT计算题ANY!ELEMENT计算ANY!ATTLIST计算式子CDATA#IMPLIED!ATTLIS
本文标题:第9章XML程序设计基础知识
链接地址:https://www.777doc.com/doc-3156542 .html