《java第一章XML基础.ppt》由会员分享,可在线阅读,更多相关《java第一章XML基础.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章XML基础基础学习目标学习目标了解XML的相关概念,理解它产生的原因。精通利用XML进行数据的表示和交换。了解文件类型描述DTD。了解XMLSchema大纲。XMLXML概述概述-1-1XML称之为“可扩展标记语言”,是Web应用的一种技术,是万维网联盟(W3C)制定的标准。XML简化了网络中数据交换和表示,使得代码、数据和表示可以分离,可以作为数据交换的标准格式。就这点而言,XML被称为智能数据文档。1、XML的定义:WorldWideWebConsortium(W3C)对XML进行了如下描述:eXtensibleMarkupLanguage,缩写为XML,描述了一类被称为XML文档的
2、数据XMLXML概述概述-2-22、XML的优点:XML允许各种不同的领域开发与自己的特定领域有关的标记语言。这就使得该领域中的人们可以交换数据和信息,可以按照更通用得规则交换数据。(1)XML文档是纯文本(2)基于内容的数据标识,因而可被不同程序用于不同用途(3)可格式化(4)易于处理XMLXML概述概述-3-3对象,并部分描述了处理它们的计算机程序的行为。XML是SGML(StandardGeneralizedMarkupLanguageISO8879)的一个应用实例或一种受限形式。从结构上说,XML文档顺从SGML文档标准。XML并非像HTML那样提供了一套事先已经定义好了的标记,而是提
3、供了一个标准,利用这个标准,我们可以根据实际需要定义自己的新的标记。利用这个标准,我们可以制定各种各样的标记。XMLXML概述概述-4-43、XML文档的结构:每个XML文档都有一个逻辑结构和物理结构。从物理结构角度来看,文档由实体单元组成,一个实体也可以在其他文档的实体中被引用。一个文档以一个根元素或文档实体来开始。从逻辑上讲,文档由声明(declaration)、元素(element)、注释(comment)、字符引用(characterreference)和处理说明(processinginstruction)组成。XMLXML概述概述-5-5例如:我们用XML定义一个学校学生的花名册,
4、内容如下。张三辽宁25XMLXML概述概述-6-李四北京XMLXML概述概述-7-74、XML文档的编写规则(1)标记:XML的标记和HTML的标记大体上相同,除了注释和CDATA部分之外,所有符号“”之间的内容都称为标记。基本形式:(2)CDATA:以结束的字符数据段(CDATASection)凌驾于解析器之上,其中的内容将不被解析。字符数据段中除了不能有结束标志外,可以包括任意字符序列。XMLXML概述概述-8-8(3)注释:在HTML中,注释是用“”引起来的。在XML中,注释的方法完全相同。不过,在XML文件中使用注释时,同样要遵守几个规则:在注释文本中不能出现字符“-”或字符串“-”、
5、不要把注释文本放在实体声明中,也不要放在XML声明之前、注释不能被嵌套。DTD-1DTD-1在XML中,“文档类型定义(DTD)”可以伴随文档,且文档类型定义实质上定义文档的规则,例如哪些元素可被显示以及元素之间的结构关系。当接收应用程序没有传入数据的内部描述时,DTD将帮助验证该数据。然而,在XML中,DTD是可选的。与DTD一起发送的数据称为有效XML。此时,XML语法分析程序应对照DTD中定义的规则校正传入的数据,以确保该数据被正确构造。没有与DTD一起发送的数据称为结构良好的XML。DTD-2DTD-21、DTD分类(1)内部DTD,是最简单的使用DTD的方法,在XML文档中加入一个D
6、TD描述,加入的位置是紧接在XML处理指示之后。(2)外部DTD的好处是:它可以方便高效地被多个XML文件所共享。我们只要编写一个DTD文件,就可以被多个XML文件所引用。事实上,当许多组织需要统一它们的数据交换格式时,它们就是通过外部DTD来完成的。这样做不仅简化了输入工DTD-3DTD-3作,还保证当我们需要对DTD做出改动时,不用去改每个引用了它的XML文件,只要修改一个公用的DTD文件就可以了。在DOCTYPE声明中,应该加入SYSTEM属性,格式为:(3)使用外部DTD时,要在DOCTYPE中使用关键字SYSTEM。SYSTEM不是引用外部DTD的唯一方法,这个关键字主要DTD-4D
7、TD-4用于引用一个作者或组织所编写的众多XML文件中通用的DTD。还存在另外一种外部DTD,它是一个由权威机构制订的,提供给特定行业或公众使用的DTD。因此,另一个引用外部DTD的办法是使用关键字PUBLIC。当使用关键字PUBLIC进行引用时,这个外部DTD还需要得到一个标识名。引用公共DTD的形式为:DTD-5DTD-52、DTD文档定义规则(1)元素类型声明,一个DTD不仅要告诉语法分析器它所关联的XML文档的根元素是什么,而且还要告诉语法分析器文件的内部和结构,说清文件结构的每一个细节。为了定义这些细节,我们必须使用元素类型(ETD)来声明所有有效的文件元素。元素类型声明(ETD)的
8、格式如下:DTD-6DTD-6(2)定义元素及其子元素,通常情况下,很少只有一个根元素,基本上都会包含若干个子元素,而子元素还可以包含子子元素。那么,我们可以通过“正则表达式”来描述父元素与子元素之间的这种关系。例如,使用正则表达式可以这样描述父子元素的关系:元素有一个子元素,有一个或多个子元素,有零个或多个子元素,至少有一个子元素。元素定义是由元素内容模型(ECM)来描DTD-7DTD-7述的,所以在描述“联系人”和“姓名”、“EMAIL”关系可以用以下方式描述。DTD-8DTD-8(3)定义元素的属性,我们已经知道如何定义一个元素以及它的内容,如何描述父元素与子元素之间错综复杂的关系,下面
9、我们讲述如何定义元素的属性。定义属性时,我们使用下面的格式:XML Schema 1XML Schema 1(附加)(附加)1、XMLSchema的定义:XMLSchema如同DTD一样是负责定义和描述XML文档的结构和内容模式。它可以定义XML文档中存在哪些元素和元素之间的关系,并且可以定义元素和属性的数据类型。XMLSchema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。2、使用XMLSchema的原因:XMLSchema比DTD具有更强的描述性、拥有更XML Schema 2XML Schema 2(附加)(附加)多的应用环境、能做出更细致的语义限制、结构
10、化明显、重用代价低等等。3、一个简单的XMLSchema文档XML Schema 3XML Schema 3(附加)(附加)4、Schema中的类型:Schema中主要包括三种部件:元素(element)、属性(attribute)、注释(notation)。这三种基本的部件还能组合成以下的部件:类型定义部件(简单类型和复合类型)、组部件、属性组部件。5、简单类型:XMLSchema中定义了一些内建的数据类型,这些类型可以用来描述元素的内容和属性值。一个元素中如果仅仅包含数字、字符串或其他数据,但不包括子元素,这种被称为简单类型。XML Schema 4XML Schema 4(附加)(附加)
11、6、内建的简单类型:包括原始类型string,boolean等近20种,还有language(tonken),normalizedString(string)等几十种衍生类型。7、创建简单类型:XML Schema 5XML Schema 5(附加)(附加)在上例中,我们首先创建了一个简单类型:quantityType,它是从integer继承过来的,minInclusive和maxInclusive定义了它的最小值2和最大值5。XML Schema 6XML Schema 6(附加)(附加)最后我们定义元素quantity的类型为quantityType。正确:38、列表类型XML Sche
12、ma 7XML Schema 7(附加)(附加)list可以用来定义列表类型,listOfIntType这个类型被定义为一个Integer的列表,元素listOfMyInt的值可以几个整数,他们之间用空格隔开。正确:151503795977959459、联合类型XML Schema 8XML Schema 8(附加)(附加)上例中,我们用union来定义了一个联合类型,里面的成员类型包括USState和listOfMyIntType,应用了联合类型的元素的值可以是这些原始类型或列表类型中的一个类型的实例,但是一个元素实例不能同时包含两个类型。10、匿名类型的定义XML Schema 9XML
13、Schema 9(附加)(附加)XML Schema 10XML Schema 10(附加)(附加)前面我们在定义元素类型时总是先定义一个数据类型,然后再把元素的type设成新定义的数据类型。如果这个新的数据类型只会用一次,我们就可以直接设置在元素定义里面,而不用另外来设置。如上面元素quantity的类型就是一个从1到99的整数。这种新的类型没有自己的名字的定义方法我们称之为匿名类型定义。11、复合类型XML Schema 11XML Schema 11(附加)(附加)XML Schema 12XML Schema 12(附加)(附加)在上面的代码中,我们用complexType表示这是一个
14、复合类型(这里我们是用匿名类型定义的)。simpleContent表示这个元素下面不包括子元素,extension表示这个元素值是decimal的,attribute来设置它的一个属性currency,类型为string。正确:423.46XML Schema 13XML Schema 13(附加)(附加)12、混合内容XML Schema 14XML Schema 14(附加)(附加)同样,我们采用了匿名类型方式来定义一个元素salutation。我们注意到在complexType后面多了一个mixed=true,这表明这是一个混合类型:里面既有元素本身的内容,又有其它子元素。name元素就
15、是salutation的子元素。13、空内容XML Schema 15XML Schema 15(附加)(附加)XML Schema 16XML Schema 16(附加)(附加)有的时候元素根本没有内容,它的内容模型是空。为了定义内容是空的类型,我们可以通过这样的方式:首先我们定义一个元素,它只能包含子元素而不能包含元素内容,然后我们又不定义任何子元素,依靠这样的方式,我们就能够定义出内容模型为空的元素。14、anytypeXML Schema 17XML Schema 17(附加)(附加)一个anyType类型不以任何形式约束其包含的内容。我们可以象使用其他类型一样使用anyType,如上
16、面代码第一个语句,这个方式声明的元素是不受约束的。所以元素的值可以为423.46,也可以为任何其他的字符序列,或者甚至是字符和元素的混合。实际上,anyType是默认类型,所以上面的可以被重写为第二个语句。15、注释XML Schema 18XML Schema 18(附加)(附加)elementdeclaredwithanonymoustypeXML Schema 19XML Schema 19(附加)(附加)elementanonymoustypewith2attributesXML Schema 20XML Schema 20(附加)(附加)上面代码中,我们在documentation元
17、素中放置了一个基本的模式描述和版权信息,这是放置适合人阅读的信息的推荐位置。推荐大家在任何的documentation元素中使用xml:lang属性来表示这些描述信息使用的语言。XML Schema 21XML Schema 21(附加)(附加)16、构造内容类型XML Schema 22XML Schema 22(附加)(附加)XML Schema 23XML Schema 23(附加)(附加)在上面代码中,我们在purchaseOrderType定义中引入两个元素组定义,购买订单就可以有两种选择来描述地址:一是包含彼此独立的送货地址和收款地址,第二种情况则是仅XML Schema 24XM
18、L Schema 24(附加)(附加)包含一个简单的地址,这个地址即是送货地址也是收款地址。17、属性组XML Schema 25XML Schema 25(附加)(附加)XML Schema 26XML Schema 26(附加)(附加)XML Schema 27XML Schema 27(附加)(附加)我们可以建立一个被命名的属性组来包含所有item元素所期望的属性,并且在item元素声明中通过名字来引用这个属性组ItemDeleivery。18、空值XML Schema 28XML Schema 28(附加)(附加)Lawnmower1148.95Confirmthisiselectri
19、cBabyMonitorXML Schema 29XML Schema 29(附加)(附加)139.981999-05-21XMLSchema空值机制包括一个空值信号。换句话说,作为元素内容而言,并没有真正的空值,代之的是一个说明元素的内容是空值的属性。为了显示这点,我们修改shipDate元素的声明,这样空值就能够被明确地告知用户了。XML Schema 30XML Schema 30(附加)(附加)XMLSchema提供了一种比DTD更强大、更灵活的语法机制。与DTD相比,Schema的最大好处是它本身就是XML,具有与其他XML文档一样的可移植特性,可以使用标准工具对其进行处理的能力(如进行XSL转换)。对于所约束的XML结构的类型,它们比DTD更具表达性、更为灵活。小结小结Java语言已经成为Internet的主流编程语言,而XML则是数据描述的优秀工具,本章主要讲述了XML语言的基础知识,如XML文档的基本结构,以及XML的优点,还有文档类型定义(DTD)以及XML大纲(Schema)等相关的知识。谢谢 谢!谢!
限制150内