电子商务第3章xmlnew.ppt
《电子商务第3章xmlnew.ppt》由会员分享,可在线阅读,更多相关《电子商务第3章xmlnew.ppt(152页珍藏版)》请在三一办公上搜索。
1、第3章 标记语言与XML技术,XML 概论和基本语法XML 名字空间DTD XML SchemaXSLT,XML概论和基本语法,XML(Extensible Markup Language),即可扩展标记语言(W3C,1998年),一种可以定义自己的标签的元标记语言,也就是说它没有一套固定的标签和元素,所以可以用来定义其他的标记规范。XML非常灵活,可用在各种网站、电子数据交换、语音邮件、远程程序调用甚至程序配置文件和操作系统中,等等,1.什么是XML,XML概论,HTML和XML的比较,XML语法严格:XML提供了一套语法来规范标签的构成和放置,以及什么是合法的元素、如何为元素设置属性等。符
2、合这种语法的XML文档称为“结构良好的”(well-formed)。这种结构良好的XML文档能被XML解析器(parser)阅读和处理,而非结构良好的XML文档将被解析器拒绝。,2XML不是编程语言 XML本身只能用来描述文档的内容和结构。注意:不要用浏览器去显示自己编写的没有相应XSLT文档的XML文档。3.XML数据格式特点 XML具有自ASCII文本文件以来最灵活最便携的文档格式,它提供了跨平台的数据格式,而且这种数据格式非常简单、直观和结构良好。XML不是为某种特殊的平台而设计的。,4.XML如何工作 编辑工具:通用文本编辑器如Emacs、MS Notepad、jEdit 专用的编辑器
3、如XMLSPY、Polo。处理过程:解析器将XML文档分解成个体的元素、属性等片段供上层程序(网络浏览器、数据库、文字处理器、绘图程序、电子表单、用户自编程序)处理。,5XML技术内容,(1)XML1.0。XML核心内容,对XML基本语法进行了定义,说明了什么是结构良好的XML文档,并定义了DTD。(2)DTD、XML Schema、DSD。DTD(Document Type Definition)即是“文档类型定义”,对XML文档结构进行简单规范(包括其中的元素、元素的属性)。DTD简单灵活,但本身不用XML语法,对数据类型没有精确规范。XML Schema提供了对数据类型进行严格定义的机制
4、,而且使用XML语法,但相对于DTD,显得较为复杂。,(3)Namespaces。Namespaces,即名字空间,是为了区分具有相同名称却有不同意思或属于不同XML应用的元素和属性。(4)XLink、XPointer、XPath。(5)XSL(XSL-FO,XSLT)。XSL(eXtensible Stylesheet Language),即可扩展式样单语言,分为两部分:XSL Tansformations(XSLT)和XSL Formatting Objects(XSL-FO)。XSLT是一种XML应用,它提供将一种XML文档转换成另一种XML文档的机制。XSL-FO是另一种XML应用,它
5、精确的描述页面的布局,简单的说,即如何按XSL-FO的约定在页面上显示XML文档。,(6)XInclude。为了支持模块化和重用,XInclude方便了在XML文档中包含别的XML文档。目前很多XInclude处理器支持整篇文档的包含,但不支持基于XPointer的包含。(7)XQuery。(8)SAX、DOM、JDOM。,XML基本语法,Bill Davenport 108 Street Chengdu Sichuan,一个简单的例子,以上例子中,其标签都被赋予了实际的意思,显然这样便于人和机器的理解。这段XML具有如上图树型结构,图中每个分支叫一个“节点(node)”。,XML文档的基本内
6、容,主要包括元素,标签,字符数据和属性,以及XML声明、处理指令、注释、实体引用、CDATA部分 1.元素,标签,字符数据和属性(1)标签(Tags)是尖括弧“”之间的文字。标签在XML中成对出现,分为起始标签和结束标签。如上述例子中的和。在XML中,标签是分大小写的。,(2)元素(Elements)是由起始标签、结束标签和任何位于起始标签和结束标签之间的内容构成,按其结构位置,分为根元素、父(parents)元素、子(children)元素、兄弟(siblings)元素。注意:1)W3C规定,一个父元素可以有多个子元素,但一个子元素只可以有一个父元素。2)根元素唯一性,根元素没有父元素。3)
7、空元素即不含任何子元素或字符数据的元素,在XML文档中可写为:或者,(3)字符数据(Character Data)包含于元素中的文字内容;位于元素中的任何空白文字;属性值也是字符数据(4)属性(Attributes)元素可以有一个或多个属性。属性是由“名字-值”组成,包含在元素的起始标签中。属性名和值由等号“=”和可选的空白相连。属性值必须包含在双引号或单引号中,,2.XML名字(XML Name)XML名字主要用来规范XML元素名和属性名的命名。命名规则:1)XML名字可以包含26个大写和小写英文字母,0-9十个数字,也可包含非英文字母和数字,如、,以及汉字。同时还可包含三种英文符号:“-”
8、、“_”和“.”。2)不能使用如“”、“”、“$”、“”、“%”、“,”等符号,冒号“:”可以使用,但被保留作为名字空间专用。,3)严格意义上,XML名字也不能包括任何空白字符,如空格、空行等。4)XML名字只能以字母、字符和英文下划线(underscore)“_”开头,但长度不限。,例:,下面是合法的XML名字:Davenport105 River Road 9/8/2004 report6001 0086 28 87748559 电子商务技术下面是非法的XML名字:DavenportDavenport105 River Road7/23/2001 report6001,3.XML声明(de
9、claration)XML文档应该(但不是必须)以声明开始。XML声明包括version,standalone和encoding 三个属性,其中version是必须的,standalone和encoding是可选的。例:E-Commerce Technology,(1)encoding。encoding属性指明了XML文档编码标准。XML文档的默认编码标准是UTF-8,但XML文档支持多种编码标准,如ASCII、ISO-8859-1、Unicode、GB2312 等。(2)standalone。standalone属性指明了XML文档是否和一个独立的DTD文件配套处理。属性为“no”时,表示使
10、用外部的(即非本XML文档内的)DTD文件。属性为“yes”时,表示不使用外部的(即非本XML文档内的)DTD文件。或没有外部DTD文件,4处理指令(Processing instructions)处理指令给阅读XML文档的应用程序,如XML解析器(parsers),提供信息。处理指令由“”结束。紧接?是XML名字,称作“目标(target)”。,5.注释(Comments)XML注释是文档中作解释的字符数据,它的语法类似于HTML,以“”结束,如:1)注释不是XML元素,它们可出现在文档中字符数据的任何位置,也可出现在根元素的前面或后面 2)因为程序常忽略注释中的内容,我们可用注释包围和隐藏
11、标记。,例:,Bill Davenport 108 Street Chengdu Sichuan-,上例使用注释后,注释中的信息被隐藏,原文档等同于:,address Bill Davenport,注意:1)注释不能出现在标签之中(只能出现在字符数据的任何位置),以下的例子是非法的:Davenport 2)在一个注释中,“-”不能出现在除开始和结束符号以外的任何地方,以下的例子是非法的:3)注释不能嵌套使用。,6.XML文档的其它内容,实体引用(Entity References)符号“”被XML解析器理解为标签的开始,当我们的字符数据中包含这类对XML解析器有特殊意义符号时,如果不采用适当的
12、方法去规避这些字符,将导致错误。如:,Installing Cocoon Locate the Cocoon.properties file in the/bin directory.,解析器解读上面XML片段时将报告错误,因为解析器认为代表开始标签,却找不到结束标签。解决这类问题的方法是使用“实体引用”。如用“”代替“&”。,XML事先定义的五个实体,(2)CDATA 部分当成段的文档片段包含大量的特殊字符时,这种替换工作是非常大的,例如我们需要在XML文档中包含XML的示例文档。可用CDATA部分。CDATA部分告诉解析器不把标明的CDATA部分作为标记语言片段(markup)处理,而只是
13、作为纯数据字符(raw character data)来处理。CDATA部分以“”结束,,注意:CDATA部分几乎可以包含任何内容,但不能包含CDATA部分,即类似于XML注释,CDATA部分不能嵌套使用。,7.XML结构良好(Well-Formed)的基本要求,XML文档必须是结构良好的,也就是说必须符合一系列规则,如下:(1)每一个起始标签必须有一个结束标签与之对应。(2)元素名和属性名必须符合XML名字规则。(3)元素是可以嵌套(nest),但不能重叠(overlap)。(4)只有一个根元素。(5)属性必须使用单引号或双引号。(6)一个元素不能有两个同名的属性。(7)注释和处理指令不能出
14、现在标签内。(8)“”和“&”不能直接出现在元素或属性的字符数据中。,其中“元素是可以嵌套”不仅可以指一个元素包含别的元素,也可以是一个元素以一定方式包含自己,如:OpenMath Symbol OpenMath Symbol,注意:1)以上规则包括了XML良好结构的基本要求也是较容易出错的地方,但并不是所有的要求。全面的要求可另行参考W3C的相关技术报告。2)做良好结构检查最简单的方法是用网页浏览器,如IE5.X或Mozilla;另外一种方法是用通用的XML解析器。,XML名字空间(Namespaces),Mrs.Mary McGoon 108 Street Chengdu,为什么引入名字空
15、间,automobile BMW S500 400,000 This car was made in China in July 2004,without any serious damage.,上面的文档中有两个title元素,一个指人的称号,另一个指财产的类别,它们的语义是不同的;文档中还有两个description元素,不仅语义不同,而且结构也不同。人可以根据上下文分清楚它们的差别,但计算机程序却不方便。,XML的标签可由任何人按自己的要求定义,用来描述自己的数据,这就不可避免的造成同名的元素可能描述不同的数据,可能有不同的结构。,名字空间的语法,名字空间提供了一种区分同名不同语义的元素
16、和属性的方法,就是赋予元素和属性URI。前缀和名字空间URI的捆绑 前缀和名字空间URI的捆绑是通过在一个元素或这个元素的祖先元素(ancestors)中附加xmlns:prefix(用具体的前缀代替prefix)属性实现的,并把xmlns:prefix属性的值设为要捆绑的URI,,例:,Mrs.Mary McGoon 108 Street Chengdu,捆绑是有范围的,在一个元素中声名了前缀并捆绑了URI,则该元素和它的所有具有该前缀的后代元素(descendants)都属于同一名字空间。前缀可以在任何使用该前缀的元素或这个元素的祖先元素进行URI捆绑,该元素可以是根元素或其它元素。可以在
17、一个元素中对多个捆绑多个前缀进行URI捆绑,注意:限制名中的前缀,必须是进行了URI捆绑的,否则,必须马上在该元素中进行URI捆绑。如本例中的ps,它是在ps:person的父元素mortgage中进行URI捆绑的,如果它未在mortgage中进行URI捆绑,则必须马上在ps:person元素中进行URI捆绑,而不能在ps:person的后代元素如ps:description中再进行捆绑。,2.默认的名字空间,为了兼容XML1.0,名字空间提供了为元素(但不包括属性)设定默认名字空间的方法:在一个元素中附加xmlns属性,并把xmlns属性的值设为要捆绑的URI。例:108 Street Ch
18、engdu,在一个元素设定默认名字空间,则该元素所有没有前缀的后代元素都属于该默认名字空间;如果该元素本身没有前缀,则该元素也属于该默认名字空间。另外,有前缀元素的无前缀后代元素也属于该默认名字空间。注意:默认名字空间并不应用于属性上,属性需要显性的指明前缀才能确定其名字空间。,3.名字空间URI 不同的前缀只要和同一个URI绑定,它们依然属于同一名字空间。,DTD 在一个XML应用中,或者说在一个具体的行业内,我们需要规范文档的结构,达成一种有关文档如何书写的约定,以便于文档的交流。DTD能够实现XML文档格式的统一化,促进行业内或系统内文档格式标准化。,有效性验证(Validation),
19、DTD以标准的语法写成,但DTD的语法不是XML语法。DTD的语法可以准确地规范元素、实体和属性的内容和结构,如一个什么样的元素可以出现在文档的什么位置,它可以有什么样的属性、子元素和内容。如下例:,每一行都声明了一个元素:第一行说明了一个address元素,它包含三个子元素name,street和city,并且三个子元素以namestreetcity的顺序出现;第二行说明了一个name元素,它包含两个子元素first-name和last-name,并且两个子元素以first-namelast-name的顺序出现;后面四行分别说明了四个元素包含PCDATA的数据(后面将具体说明什么是PCDAT
20、A数据)。,注意:如果要使用DTD进行有效性验证,就必须对XML文档中的所有内容(属性、子元素和内容)进行说明。DTD没有严格要求每行声明的顺序,可以是由上向下(如前例),也可以由下向上(如下例),也可以是其它顺序,以便于阅读理解为前提,但不能重复声明同样的元素。,DTD声明,为了把DTD和XML文档结合起来进行有效性验证,我们需要在XML文档中加入DTD声明。目前共有三中DTD声明方式:外部SYSTEM声明、外部PUBLIC声明、内部声明。,外部SYSTEM声明外部声明语法为:注意“”与“!”以及“!”与“DOCTYPE”之间都没有空格。,例:,BillDavenport108 Street
21、Chengdu,注意address.dtd 存储路径:相对路径、绝对路径、网络URL 2.外部PUBLIC声明 当一种DTD被行业或公众广泛接受时,它可能被存储在多个服务器上,允许许我们在有效性验证器(validator)中内置一个ID号代表这个DTD,再通过本地目录服务器将这个ID号转换成合适的URL供有效性验证器下载DTD。同时,也为这个DTD提供后备的URI。,具体语法为:例如:,3.内部声明 DTD也可以直接放在XML文档内使用。其语法为:内部DTD声明方式能方便调试,但不利于DTD重用,例:,BillDavenport108 StreetChengdu,4.内部DTD子集,除了上面的
22、声明方式,也可以把外部DTD和内部DTD子集一起使用。注意:内部DTD子集声明的元素不能与外部DTD声明的元素相重复 下例中,我们先将如下DTD单独存储为“addressPart.dtd”:,然后,编写如下XML文档:BillDavenport108 StreetChengdu,元素(ELements)的声明,元素声明的基本语法如下:其中,“元素内容说明”部分很复杂,包括该元素必须包含什么子元素,这些子元素将以什么顺序出现,,1.文本元素的声明 文本元素指元素只包含文本数据(PCDATA-Parsed Character Data)的元素,该元素不能包含任何形式的子元素,如:,2.空元素的声明
23、 空元素是不包含任何内容的元素,通过设置预留关键字“EMPTY”来实现,如:元素city不能包含任何内容(包括空格等),但元素city可以有它的属性。如下面就是一个含有属性的空元素:,3.ANY元素的声明 ANY元素为不确定元素,它可以包含或不包含任何内容,但如果包含子元素,该子元素必须是在相应DTD中声明过的元素。ANY元素通过设置预留关键字“ANY”来实现,如:使用ANY元素常会带来混乱,所以应尽量避免使用它,4.包含子元素的元素声明,元素可以嵌套,即一个元素可以包含子元素。(1)子元素及其出现的顺序 当子元素多于一个时,需要用“,”进行分隔,在“,”左面的元素必须先于右面的元素在XML文
24、档中出现,如:,(2)子元素的个数。子元素可以通过以下三种操作符来说明它们可以出现的次数:?:零或一次*:零或多次+:一或多次例如:注意这三个操作符与子元素名之间没有空格。,(3)子元素的选择 有时一个元素的子元素可以从两个或多个元素中选择,操作符“|”提供了“多选一”的机制。这种“多选一”是在多个中选一个,必须而且只能选一个。例如:,(4)()符号的使用 在实际应用中,一个元素的子元素可能很复杂,这时我们可以使用()符号来帮助完成子元素的限定。()符号使包含于其中的元素合并为一个整体,例:()符号可以嵌套使用构成更为复杂的限定,实体(Entities)的声明,实体是一些事先定义好的数据,通过
25、对这些实体的引用,可以把这些数据放置于XML文档中指定的位置,就象在程序中定义常量一样,这样显然可以方便数据的重用和修改,同时,也可通过实体把图形图像、音频视频等特殊数据引入到XML文档中。实体需要首先在DTD中声明,然后在XML文档中引入。实体有多种分类方式,一般可分为通用实体、外部解析实体、外部非解析实体和参数实体,,下面分别介绍,1.通用实体 通用实体声明的语法为:或 通用实体引用方法为:注意:不能在元素声明中使用通用实体引用,2.外部解析实体,外部解析实体声明的语法为:或 外部解析实体引用方法为:,3.外部非解析实体,非解析实体即是不需要通过解析器分析的实体,解析器不会对非解析实体进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子商务 xmlnew
链接地址:https://www.31ppt.com/p-6390770.html