1 / 187

扩展标记语言 XML (Extensible Markup Language)

扩展标记语言 XML (Extensible Markup Language). 一个 XML 文档 浏览器中显示 问题: 什么是 XML? XML 为什么如此重要? 如何使用 XML 来定义自己的数据结构? 如何建立一个使用 XML 的应用? 如何把 XML 转化为 HTML?. 扩展标记语言 XML (Extensible Markup Language). XML 简介 XML 语法 XML 文档的定义 文档类型定义 (Document Type Definition) XML 模式 (XML Schema) XML 文档的解析

soo
Download Presentation

扩展标记语言 XML (Extensible Markup Language)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 扩展标记语言XML (ExtensibleMarkup Language) 一个XML文档浏览器中显示 问题: • 什么是XML? • XML为什么如此重要? • 如何使用XML来定义自己的数据结构? • 如何建立一个使用XML的应用? • 如何把XML转化为HTML?

  2. 扩展标记语言XML (ExtensibleMarkup Language) • XML简介 • XML语法 • XML文档的定义 • 文档类型定义(Document Type Definition) • XML模式(XML Schema) • XML文档的解析 • 简单应用程序接口(Simple API for XML) • 文档对象模型(Document Object Model) • XML文档的显示 • 层叠样式单(Cascading Style Sheets) • 扩展样式单语言(eXtensible Style sheet Language)

  3. XML主要术语 • 文档类型定义(DTD):它规定了文档的逻辑结构,可以定义文档的语法以及使用XML解析器验证文档的合法性,它也可以定义文档的元素、元素的属性以及元素和属性的关系。其不足之处是:采用了非XML的语法规则、缺乏种类丰富的数据类型以及扩展性较差等。 • XML模式(Schema):针对DTD的上述缺点,微软公司等推出了XML模式,其特点是保留并扩充了DTD原有的功能并弥补了它的不足。

  4. XML主要术语 • 文档对象模型(DOM):一个结构化文档编程接口,它定义了文档的逻辑结构以及访问和操作文档的方法,XML文档中的元素就是DOM树中的节点对象,使用DOM模型,可以方便地创建文档,导航其结构或增加、删除、修改和移动文档中的任何成分。 • 简单应用程序接口(SAX):一种基于事件的模型,可用于避免构造复杂的文档结构,尤其是当文档规模特别庞大或只对其中某一点感兴趣时,SAX就会更显出其优越性。SAX事件由解析器在进入或离开文档、元素、子树、属性时产生。

  5. XML主要术语 • XML文档分类:XML文档可以分为两大类,即以数据为中心和以文档为中心。以数据为中心的文档具有非常规则的结果,比如关于销售订单XML文档等,它通常是为机器设计的,即主要是方便机器进行处理;而以文档为中心的文档主要是为人类而设计的,它的文档具有不规则的结构,而且数据的粒度也比较大,比如书本、电子邮件、广告等等。

  6. XML简介 • XML起源 • XML特征 • XML应用举例 • XML下的Web体系结构 • XML词汇表

  7. XML起源 • 60年代末,IBM公司为了解决不同专用格式创建的法律文件无法在公司的各部门间相互移植的问题,提出了通用标记语言,后建立了标准通用标记语言(Standard Generalized Markup Language , SGML) 。1986年,国际标准化组织ISO采用了SGML。 • HTML是SGML的一个子集,仅仅用来格式化数据,是一个不可扩充的标记集合,用户不能够增加有意义的可以让其他人使用的标记。

  8. XML起源 • 1996年,万维网协会(W3C)开始设计一种可扩展的标记语言,使其能够将SGML的灵活性和强大功能与已经被广泛采用的HTML结合起来。后来称这种语言为XML,它继承了SGML的规范,是后者的一个子集。 • 1998年2月,XML1.0成为了W3C的推荐标准。 • XML是一种界定文本数据的简便而标准的方法。它曾经被人称作"Web上的ASCII码"。就好像用户可以使用自己喜爱的编程语言来创建任何一种数据结构,然后同其他人在其他计算平台上使用的其他语言来共享一样。XML的标记用来说明用户所描述的概念,而属性则用来控制它们的结构。所以,用户可以定义自己所设计出的语法并同其他人共享。

  9. XML特征 • XML是一种使用标记标记内容以传输信息的简单方法。标记用于界定内容,允许自行定义任意复杂度的结构。这一切都是使用普通的文本。 • 自描述数据。界定XML内容的标记会给所界定的数据中的每一个元素命名。在标记中,可以定义特定的属性,它们会为所描述的元素提供某些附加信息。 • XML中的“扩展”一词指的是定义新的标记及其用途的标准机制。由于这一切均是标准化的,所以新的标记可以采用固定不变的途径来描述,并可以同其他XML用户交流。对于在标记中使用的属性来说,情况也是如此。

  10. XML特征 • XML用来描述数据结构,而HTML只是用来描述数据的显示,并不能给出有关于数据的信息。XML并非HTML的替代品,XML中没有与可视化表现形式有关的内容,与注重数据及其表达方式的HTML不同,XML只关心数据本身。 • 文档的数据库化和数据的文档化是XML走向成功的主要推动力之一。在XML之前,即使对于不太复杂的数据,Web也没有标准的数据交换格式。XML文档在很多方面与传统的关系和对象数据库数据相似,掌握了XML,就能够像处理其他类型的数据一样来处理文档了。

  11. XML特征 • W3C为XML标准化了一套应用程序编程接口(Application Programming Interface, API),用户可以轻松地编制读写XML的程序。 • XML的数据描述机制意味着它将成为一种在Internet上共享信息的强大途径,因为: • 它是开放的:XML能够在不同的用户和程序之间交换数据,而不论其平台如何。 • 它的自描述的特性使其对于B2B和企业内部网解决方案来说是一种有效的选择。 • 无需事先协调,我们就可以在程序之间共享数据。

  12. XML特征 • 数据发布和交换 XML是数据库信息交换方面的一个重要工具。典型情况下,数据库用来进行信息交换的文件格式是很简单的,比如每行一个记录,记录的域之间用分号隔开。但这种方法对于数据库产生的面向对象的新信息是不够的,因为对象可能有其内部结构,对象之间还可能有链接。XML可以用元素和属性来表示这种信息,它为在数据库之间传送记录提供了一种公共格式。 • 电子商务 XML将使电子商务更加易于标准化、具有更高的可扩展性、并能够与Internet的其他主要技术更好地结合起来。这种软件和标准的易用性使更多小组织可以使用电子商务。

  13. XML特征 • 元数据(metadata) 元数据就是关于信息的信息,定义了一套创建标记语言的语法,开发者可以使用它们来定义自己的标记语言。元数据在Web上的下一个发展趋势是在XML之上形成一个标准化层,称为资源描述框架结构(Resource Description Frame)。 • Web上的科学研究 万维网协会制定了一种新的基于XML的语言,称为MathML,主要用于在Web上进行数学研究,描述数学公式等。

  14. 数据库和XML XML文档具有“可自描述”、“无限嵌套”、“树形结构”等特点,因此在某种意义上,一个XML文档就是一个数据库或其中的一张表。 <student> <id>03040010</id> <name>Mike</name> <sex>male</sex> <birth>19800101</birth> </student> <student> … </student> student:

  15. 数据库和XML 数据库和XML有很多相同的地方,但是XML作为数据交换的标准,更着重于统一数据结构,而不是提供数据库的特性,不要设法让其中的任何一个做所有的事情。 XML数据本身的树形结构不同于关系模型中的二维表结构。数据库产品处理XML数据一般有两种方式: • 扩展RDBMS,加入XML支持模块,完成XML数据和数据库之间的格式转换和传输,如把整个XML文档作为表中一行,或把XML文档进行解析后,存储到相应的表格中。同时支持W3C的一些XML操作标准,提供优化的XML处理模块。 • 采用层次数据存储模型,保持XML文档的树形结构,省掉了XML文档和传统数据库的数据转换过程,形成了Native XML数据库。

  16. 数据库和XML

  17. 数据库和XML select CustomerID,ContactName from dbo.customers where city='London'; CustomerID ContactName ---------- ------------------------------ AROUT Thomas Hardy BSBEV Victoria Ashworth CONSH Elizabeth Brown EASTC Ann Devon NORTS Simon Crowther SEVES Hari Kumar

  18. 数据库和XML select CustomerID,ContactName from dbo.customers where city='London' for xml auto; <dbo.customers CustomerID="AROUT" ContactName="Thomas Hardy"/><dbo.customers CustomerID="BSBEV" ContactName="Victoria Ashworth"/><dbo.customers CustomerID="CONSH" ContactName="Elizabeth Brown"/><dbo.customers CustomerID="EASTC" ContactName="Ann Devon"/><db

  19. XML下的Web体系结构 关系型 数据 客户 端浏 览器 XML或 HTML 文档 有脚本的 HTTP 服务器 应用程序 服务器 程序或 代理 XML 文档 HTTP 服务器 层次型 数据

  20. 词汇表 XML一向致力于简便而快速地根据企业、科学规范或者其他方面的需要来构造定制的标记集。同时,每一个企业(甚至每一个人)都可以选择定义自己的XML标记集,XML的一个好处就在于能够共享这类"词汇表",它们都使用同样的基本语法、分析程序以及其他工具。可共享的XML词汇表不仅提供了更易于查询的文档和数据库,而且为在不同的组织和计算机应用程序之间交换信息提供了一条途径。 • 科学词汇表 • 商业词汇表 • 法律词汇表 • 医学词汇表 • 计算机词汇表

  21. 词汇表 所有XML命名都必需以字母、下划线(_)或冒号开头,后面跟着的是有效命名字符。有效命名字符除了前面的内容,还包括数字、连字符(-)、句点(.)。在实际应用当中不应该使用冒号,除非是用作命名空间的分隔符。记住字母并非局限于ASCII码是非常重要的,因为人们可以把自己的语言用在标记当中。

  22. XML语法 • 标记语法 • 文档结构 • 元素 • 属性 • 实体

  23. 标记语法 XML标记负责提供和描述一个XML文件或XML实体的内容结构。它们由界定内容的不同部分的标记(tag)组成,负责提供到特殊符号和文本宏的引用,或者将特殊指令传递给应用软件,以及把注释传递给文档编辑器。 XML元素组成结构如下图: <B1 ALIGN="CENTER" > A Heading </B1> 属性 标记 内容 标记 元素

  24. 标记语法 XML元素的结构与HTML基本相同,XML也同样使用<>来界定标记,但二者的相同点也就仅此而已。 与HTML不同,所有的XML标记都是大小写敏感的,其中包括元素的标记名和属性值。大小写敏感,主要是满足XML国际化的设计目标和简化处理过程的需要。 XML指定的字符均在16位的Unicode2.1字符集中定义。合法的XML字符包括三个ASCII控制符,所有普通的ASCII可显示字符,以及所有其他统一代码字符值(用十六进制表示)。 统一代码中包含一个数量超过137000的字符集合用于应用程序特定字符,它被称为"保留区域"。使用这些私有字符进行任何XML数据的交换都需要就这些字符的解释单独达成一致,所以统一代码的这个部分不应该在XML数据对象中使用。

  25. 标记语法

  26. 文档结构 • 元素 • 标记 • 属性 • 控制信息 • 注释 • 处理指令 • 文档类型声明 • 实体

  27. 元素 • 元素被标记包围 • 有一个根元素 • 标记嵌套 错误的嵌套: <serves> <instructions> </serves> </instructions> • 大小写敏感 • 标记成对使用 • 空标记 <ingredient/> (<ingredient> </ingredient>)

  28. 属性 属性用来描述元素的性质,其特点如下: • 属性值使用单引号或双引号加以标注,两者等价 • 一个元素可以有多个属性,排列不区分次序 • 使用子元素也可以达到相同的效果,只不过子元素是有次序的 <img src="./photos/myfriend.jpg" height="120" width="34" alt="Mr. Wang"/> <img> <src> ./photos/myfriend.jpg </src> <height>120</height> <width>34</width> <alt>Mr. Wang</alt> </img>

  29. 控制信息 • 注释 <!-- comments text here --> • 处理指令 XML处理指令有助于XML文档的使用者和自动处理软件确定该文档为XML文档,同时也规定了XML的版本和字符编码,有助于优化XML文档的解析。 处理指令<?xml …?>一般可以包含3个属性: • version:XML的版本,必需属性 • encoding:XML文档采用的字符集,可选属性 • standalone:XML文档是否使用外部DTD子集,可选属性 <?xml version="1.0"?> <?xml version="1.0" encoding="GB2312"?> <?xml version="1.0" standalone="yes"?>

  30. 控制信息 • 文档类型声明 声明DTD文件,用来保存XML文档的语法规则 • DTD保存在XML文档外部 <!DOCTYPE cookbook SYSTEM "./recipe.dtd"> XML文档类型 : cookbook 属于:SYSTEM (自定义),PUBLIC (W3C) 文件:recipe.dtd(URL) • DTD保存在XML文档内部

  31. 实体 实体可以视为一个容器,它是XML文档的一部分,而不仅仅是一个简单的元素。它类似于C/C++语言中的define宏定义指令。 实体可以是网络服务器或其他应用系统返回的一个文件、一个数据库记录、一个对象或一个字节流,也可以包含一个完整的XML文档或者只是一些元素或声明。 通常使用的实体一般分为如下几类: • 预定义实体:&lt; &gt; &amp; &apos; &quot; • 通用实体: • 内部实体:实体内容定义在使用该实体的XML文档中 • 外部实体:实体内容定义在使用该实体的XML文档外

  32. 文档类型定义 元素声明的基本格式为: <!ELEMENT 元素名 元素内容模式> 元素内部模式: • 星号:item* • 括号:(item1, item2) • 逗号:(item1, item2, item3) • 管道:(item1 | item2) • 加号:item+ • 问号:item?

  33. 文档类型定义 元素定义举例: <!ELEMENT cookbook (category+)> <!ELEMENT recipe (name, ingredient+, cooking+, serves?, instruction*)> <!ELEMENT name (#PCDATA)>

  34. 文档类型定义 属性的声明包含: • 元素的名字 • 属性的名字 • 属性的数据类型 • 属性的值 属性声明的基本格式为: <!ATTLIST 元素名 属性名1 类型 缺省值 属性名2 类型 缺省值 … >

  35. 文档类型定义 常用的属性数据类型: • PCDATA : 可解析字符串 • CDATA : 字符串 属性的值: • #REQUIRED : 属性必须有具体的取值 • #IMPLIED : 属性可有具体的值,也可以为空 • #FIXED "value" : 属性的取值是常量 • "value" : 缺省值 属性声明举例: <!ATTLIST qty amount CDATA #REQUIRED unit CDATA "g">

  36. 文档类型定义 实体的声明与引用 • 预定义实体 &lt; &gt; &amp; &apos; &quot; • 内部实体:包含在XML文档中 语法格式为:<!ENTITY 实体名 "实体内容"> <!ENTITY POS "pinch of salt"> <item>Finally add the &POS;</item> • 外部实体:包含XML文档外 <!ENTITY myimage SYSTEM "photo.png" NDATA PNG> <IMG PIC="myimage"/>

  37. 一个完整的XML文档 食谱的定义: • XML文档 • DTD • 浏览器中显示 • XMLSPY:正规与有效

  38. 命名空间 一个例子: <staff> <name> Chris Bates </name> <dept> <name> School of CMS </name> </dept> </staff> 两个名字相同的元素代表不同的对象,如何处理? XML命名空间:名称的集合,是把多个词汇混合为一个单一文档的标准工具。一般情况下,为了方便使用者集成词汇,所有的XML应用都应该为元素定义一个命名空间。

  39. 命名空间 命名空间与元素的关系,就如同元素和属性的关系一样。通常情况,如果需要把一个命名空间应用到整个文档,可以在根元素中对命名空间进行声明。 声明形式:xmlns : Prefix = "URI" URI是统一资源标识符。命名空间的URI可以使用http URL和URN(统一资源命名)。URN规范RFC2141中指出,URN是永久且不依赖位置的资源标识符。所有命名空间的URI必须是绝对值,而不应该是相对值。 URL: http://namespace.cafeconleche.org/chess URL: /chess (error) URN:uuid:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882 URN:schemas-microsoft-com:xml-data URN:ISBN:059600292

  40. 命名空间 根据是否含有Prefix,命名空间声明分为缺省命名空间和显式命名空间。 <movies xmlns="http://www.michaelmorrison.com/ns/movies"> <mov:movies xmlns:mov="http://www.michaelmorrison.com/ns/movies"> 根据是否含有有Prefix,元素名字分为非受限名(unqualified name)和受限名(qualified name)。 <mov : title>Raising Arizona</mov : title> <title>Raising Arizona</title>

  41. 命名空间 • 缺省命名空间 <movies xmlns="http://www.michaelmorrison.com/ns/movies"> <movie type="comedy" rating="R" review="5" year="1988"> <title>Midnight Run</title> <comments>The quintessential road comedy.</comments> </movie> </movies>

  42. 命名空间 <movies xmlns="http://www.michaelmorrison.com/ns/movies"> <movie type="comedy" rating="R" review="5" year="1988"> <title xmlns="http://www.michaelmorrison.com/ns/title"> Midnight Run </title> <comments>The quintessential road comedy. </comments> </movie> </movies>

  43. 命名空间 • 显式命名空间 <mov:movies xmlns:mov="http://www.michaelmorrison.com/ns/movies"> <mov:movie type="comedy" rating="R" review="5" year="1988"> <mov:title>Midnight Run</mov:title> <mov:comments>The quintessential road comedy.</mov:comments> </mov:movie> </mov:movies>

  44. 命名空间 多个命名空间的混合使用: • 显式命名空间 • 缺省和显式命名空间

  45. 命名空间 在XML文档中,标记中的属性也可以使用命名空间。 对属性使用命名空间应该避免出现下面两种情况: • 属性具有相同的名字; • 属性是受限名,本地名相同,而且前缀指向的命名空间是相同的。 错误的例子: <?xml version="1.0"?> <x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org"> <bad a="1" a="2"/> <bad n1:a="1" n2:a="2"/> </x>

  46. 命名空间 对属性正确使用命名空间的例子: <?xml version="1.0"?> <x xmlns:n1="http://www.n1.org" xmlns:n2="http://www.n2.org"> <good n1:a="1" n2:b="2"/> </x> <?xml version="1.0"?> <x xmlns="http://www.w3.org" xmlns:n2="http://www.n2.org"> <good a="1" n2:a="2"/> </x>

  47. 命名空间与DTD • 利用DTD可以验证XML文档的有效性,一个XML文档可以没有DTD,但可以是格式正规的。同样一个使用了命名空间的XML文档也可以没有DTD。 • 命名空间引入了一个新的命名系统,但是没有涉及有效性验证,也没有涉及其在DTD中的声明。命名空间声明对DTD无作用。 • 受限名(bread:name)在XML文档中分为两部分,前缀+本地名,前缀(bread)被映射到一个URI。 • 在DTD中的受限名bread:name没有特殊的含义,不能被转化为两部分,而是一个整体。

  48. 命名空间与DTD 创建使用命名空间的XML文档应遵循的规则: • 在DTD中声明所有的xmlns属性 • 在DTD和XML文档中使用相同的受限名 • 每个命名空间使用一个前缀 • 不同的命名空间不要使用相同的前缀 • 最多使用一个缺省命名空间 一个没有使用命名空间的XML文档 <?xml version="1.0"?> <!DOCTYPE A [<!ELEMENT A (#PCDATA)>]> <A>a simple xml document</A>

  49. 命名空间与DTD-单个命名空间 如何使用单个命名空间? 错误的例子: <?xmlversion="1.0"?> <!DOCTYPEfoo:A[ <!ELEMENTfoo:A(#PCDATA)>]> • <foo:A>a simple xml document</foo:A> • <A>a simple xml document</A> 说明: • 有效,但是没有命名空间的声明,因此格式不正规 • 格式正规,但是在DTD中没有对A的定义,因此无效

  50. 命名空间与DTD-单个命名空间 1.使用了显示命名空间声明的XML文档 <?xml version="1.0"?> <!DOCTYPE foo:A[ <!ELEMENT foo:A (#PCDATA)> <!ATTLIST foo:A xmlns:foo CDATA #FIXED "http://www.foo.org/">]> <foo:A xmlns:foo="http://www.foo.org/"> a simple xml document</foo:A>

More Related