1、 第一部分 XML 概述与 XML 基本语法 1 笔记区 第一部分 XML 概述与 XML 基本语法 欢迎大家来到 XML 学习的天地。 在学习 XML 之前,建议您最好具备 HTML 基本的知识,如果曾动手写过 HTML 则更好。 第一部分主要介绍了 XML 概述与 XML 基本语法 ,在 XML 概述中主要介绍了为什么要学习 XML,什么是 XML, XML 的发展历程, XML的体系结构, XML 在行业方面的各种应用。 XML 的基本语法中 ,主要讲解了 XML 文档的结构和基础语法,在 XML 中如何定义元素,如何定义属性,处理指令概念,文本内容的定义,在 XML 中注释的编写等。通
2、过这部分的学习,大家在了解 了 XML 的 基础上可以根据需要熟练编写一个结构良好的 XML 文档。 第一次课 XML 概述 第二次课 XML 基本语法 第 一 部分 XML 概述与 XML 基本语法 2 笔记区 第一部分 XML 概述与 XML 基本语法 3 笔记区 学习内容 难度 为什么要学习 XML 什么是 XML XML 历史 XML 的应用 XML 技术架构概要介绍 第 一次 课 XML 概述 第 一 部分 XML 概述与 XML 基本语法 4 笔记区 1.1 为什么要学 XML 随着 Internet 的迅速发展和广泛普及 ,大量的信息通过互联网进行发布,以实现信息的共享和交流。人
3、们通过 Internet 每天都可以从世界各地获得大量的信息。 在基于 B/S 这种架构上, HTML 对 整个互联网这几年来的发展,可以说是第一功臣, HTML 在互联网上无处不在。尽管 HTML 在人机界面交互这方面很拿手,但是却非常不利于机器之间互相交流、传递信息。我们来看个网络书店的实例 ,下面这段 HTML 码 ,将书籍信息以表格 (table)方式排列 . Code 1-1 最热卖书籍 书籍编号 书称 单价 作者 出版社 YH001 企业级应用数据 传输 技术 48 漆美云,肖发辉,李灯登 电子出版社 YH002 SQL2005数据库开发 60 漆美云,王勤 电子出版社 5 第一部
4、分 XML 概述与 XML 基本语法 笔记区 YH003 JavaScriptAjax开发 68 漆美云,沈慧芳,何翠云 电子出版社 在浏览器中呈现的效果如下 : 最热卖书籍 书籍编号 书称 单价 作者 出版社 YH001 企业级应用数据传技术 48 漆美云 ,肖发辉,李灯登 电子出版社 YH002 SQL2005 数据库开发 60 漆美云,王勤 电子出版社 YH003 JavaScript所有文件的标签使用方法均一致。 1978 年, ANSI 将 GML 加以整理规范,发布成为 SGML, 1985 年起为 ISO 所采用( ISO 8879),并且被广泛地运用在各种大型的文件计划中,但是
5、 SGML 是一种非常严谨的文件描述法,导致过于庞大复杂(标准手册就有 500 多页),难以理解和学习,进而影响其推广与应用。 于是,人们对 SGML 进行了简化衍生出 HTML。 HTML 简单,在初期没有任何定义文档外观的相关方法,仅用来在浏览器里显示网页文件。而后,随着因特网的发展,人们为了控制其文件样式,扩充了描述如何显 现数据的卷标。在 Netscape 与 Microsoft 之间的浏览器大战后, HTML 标准权威性遭受重大的考验,所幸,到了 HTML4.0 时, W3C 又恢复了其地位。 同时 W3C 意识到 HTML 的原罪: - 不能解决所有解释数据的问题 - 像是影音文件
6、或化学公式、音乐符号等其它型态的内容。 - 效能问题 - 需要下载整份文件,才能开始对文件做搜寻的动作。 - 扩充性、弹性、易读性均不佳。 9 第一部分 XML 概述与 XML 基本语法 笔记区 为了解决以上问题,专家们使用 SGML 精简制作,并依照 HTML 的发展经验,产生出一套使用上规则严谨,但是简单的描述数据 语言: XML。 XML 是在一个这样的背景下诞生的 是不是能有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的信息? 而 XML 目的即在于提供一个对信息能够做精准描述的机制,藉以弥补 HTML 太过于表现导向的特质。 标记语言 家谱表 如下图所示: 图 1
7、-2 可能很多时候我们总是在困扰到底 SGML, XML,HTML 还有 XHMTL 他们之间的关系是怎么样的呢? 这张 “标记语言家谱表 图 ”给了我们答案 GML 自从 1969 年发明标记语言第一次在计算机中出 现,大量的用在文件描述中,一直到 1985 年有国际标准化组织,做成行业标准对外发布, SGML 应用的领域主要是文档的描述,由于 SGML 的语法结构过于复杂,不便使用。于是在 1993 推出了一个基于 SGML 语言的一个网页应用 HTML。 HTML 是 SGML 的语言的具体应用。用面向对象的概念来理解 SGML 如果是类,那 HTML 就是类的实例。虽然 HTML 的出
8、现解决了文档描述的问题,但是对于标记语言的其他应用来说使用 SGML 还是很复杂,这样会影响到标记语言的发展,于是在 1998 国际标准化组织对 SGML 进行简化推出了 XML可扩展标 记语言。 SGML 和 XML 的关系类似于父类和子类的关系, XML 继承了 SGML 的在标记语言方面的特性,简化了复杂性。之后基于 XML 的应用大量涌现 XHTML 可扩展的超文本标记语言, SVG 可缩放矢量图形语言, SMIL 同步多媒体综合语言, HDML 手持设备标志语言, XAML 可扩展应用程序标记语言。 MXML 是 Flex 中布局用户界面组件的一种 XML 语言。 GML(1969)
9、 SGML(1985) XML(1998) XHTML SVL SMIL HDML OEB 超文本 置标 语言 通用置标语言 HTML(1993) 标准通用置标语言 可扩展置标语言 第 一 部分 XML 概述与 XML 基本语法 10 笔记区 1.4 XML 的应用 在很多时候我遇到过许多人,他们还不明白为什么要使用 XML 也不知道如何在他们的应用中使用 XML。如果你还不清楚 XML 到底有什么好处的话,你并不是唯 一的人。 我决定把与人们和媒体关于 XML 话题的交谈整理成文,列出 XML 在应用中的五个最令人喜爱的用法。尽管这些并不能包含 XML 的所有潜在应用,至少是些最重要的领域。
10、 1. 数据交换 用 XML 在应用程序和公司之间作数据交换已不是什么秘密了,毫无疑问应被列为第一位。那么为什么 XML 在这个领域里的地位这么重要呢 ?原因就是 XML 使用元素和属性来描述数据。在数据传送过程中, XML 始终保留了诸如父 /子关系这样的数据结构。几个应用程序可以共享和解析同一个 XML 文件,不必使用传统的字符串解析或拆解过程。 相反,普通文件不对 每个数据段做描述 (除了在头文件中 ),也不保留数据关系结构。使用XML 做数据交换可以使应用程序更具有弹性,因为可以用位置 (与普通文件一样 )或用元素名(从数据库 )来存取 XML 数据。 2、 Web 服务 Web 服务
11、是最令人激动的革命之一,它让使用不同系统和不同编程语言的人们能够相互交流和分享数据。其原理在于 Web 服务器用 XML 在系统之间交换数据。交换数据通常用 XML标记,能使协议取得规范一致,比如在简单对象处理协议 (Simple Object Access Protocol, SOAP)平台上。 SOAP 可以在用不同 编程语言构造的对象之间传递消息。这意味着一个 C#对象能够与一个 Java 对象进行通讯。这种通讯甚至可以发生在运行于不同操作系统上的对象之间。 DCOM, CORBA 或 Java RMI 只能在紧密耦合的对象之间传递消息, SOAP 则可在松耦合对象之间传递消息。 3、
12、内容管理 XML 只用元素和属性来描述数据,而不提供数据的显示方法。这样, XML 就提供了一个优秀的方法来标记独立于平台和语言的内容。 使用象 XSLT 这样的语言能够轻易地将 XML 文件转换成各种格式文件,比如 HTML, WML, PDF, flat file, EDI, 等等。 XML 具有的能够运行于不同系统平台之间和转换成不同格式目标文件的能力使得它成为内容管理应用系统中的优秀选择。 4、 Web 集成 11 第一部分 XML 概述与 XML 基本语法 笔记区 现在有越来越多的设备也支持 XML 了。使得 Web 开发商可以在个人电子助理和浏览器之间用 XML 来传递数据。 为什
13、么将 XML 文本直接送进这样的设备去呢 ?这样作的目的是让用户更多地自己掌握数据显示方式,更能体验到实践的快乐。常规的客户 /服务 (C/S)方式为了获得数据排序或更换显示格式,必须向服务器发出申请 ;而 XML 则可以直接处理数据,不必经过向服务器申请查询 -返回结果这样的双向 “旅程 ”,同时在设备也不需要配制数据库。 甚至还可以对设备上的 XML 文件进行修改并将结果返回给服务器。想像一下,一台具有互 联网功能并支持 XML 的电冰箱将会给市场带来多么大的冲击吧。你从此不必早起去取牛奶了 ! 5、 配置 许多应用都将配置数据存储在各种文件里,比如 .INI 文件。虽然这样的文件格式已经
14、使用多年并一直很好用,但是 XML 还是以更为优秀的方式为应用程序标记配制数据。使用 .NET里的类,如 XmlDocument 和 XmlTextReader,将配制数据标记为 XML 格式,能使其更具可读 性,并能方便地集成到应用系统中去。使用 XML 配制文件的应用程序能够方便地处理所需数据,不用象其他应用那样要经过重新编译才能修改和维护应用系统。 6、 图形图像 SVG 是 XML 来描述二维图形的语言。 SVG 可以构造 3 种类型的图形对象:矢量图形、位图图象和文字。图形对象可被组化、样式化、变形和重组,包括图象嵌套、变形处理、剪辑路径、 Alpha 蒙板、滤镜特效和模板对象。 7
15、、 编程语言 毫无疑问, RIA( Rich Internet Applications,富网络应用程序)技术是下一代 网络应用的主流开发技术。而 XML 技 术的应用,使得 RIA 技术的可用性和易用性又得到了极大的提高。在可以预见的未来,我们可以期待 RIA 和 XML 技术的更完美结合,以及它们的结合所带来的巨大影响力。 传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于 HTML 页面之上,而 HTML 是适合于文本的传统的基于 HTML 的应用 ,他 不能满足网络浏览者的更高的、全方位的体验要求了,这就是被 Macromedia 公司称之为的 “体验问题
16、 ”( “Experience Matters“),而富网络应用程序( Rich Internet Applications,缩写为 RIA)的出现也就是为了解决这个问题。 富网络应用程序是下一代 网络应用程序,他是 将桌面应用程序的交互的用户体验与传统的 第 一 部分 XML 概述与 XML 基本语法 12 笔记区 Web 应用的部署灵活性和成本分析结合起来的网络应用程序。富网络应用程序中的富客户技术通过提供可以承载已编译客户端应用程序(以文件形式,用 HTTP 传递)的运行环境,客户端应用程序使用异步客户 /服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向
17、服务模型,这种模型由采用的 Web 服务所驱动。结合了声音、视频和实时对话的综合通 信技术使富网络应用程序( RIA)具有前所未有的网上用户体验。 “富 ”的概念包含两方面,分别是数据模型的丰富和用户界面的丰富。数据中的 “富 ”意思是用户界面可以显示和操作更为复杂的嵌入在客户端的数据模型,它可以操作客户端的计算和非同步的发送接收数据。这种模式相对于传统的 HTML 页面的优点是程序运行于客户端并且程序更多的是和用户进行交互同时更少的和服务器进行交互。平衡客户端和服务器端的复杂的数据模型可以让你有更大的空间去创建更高效和更具有交互性的网络应用程序。 “富 ”同样也描述了全面提升的用户界面, H
18、TML 只 给用户提供了非常有限的界面控制元素,而富网络应用程序( RIA)的用户界面提供了灵活多样的界面控制元素,这些控制元素可以很好的与数据模型相结合。传统的网络模型使用线性的设计,提供给用户一些选择然后用户发送选择结果给服务器,这种单一的模式不符合应用程序的灵活交互的要求和用户的意愿。频繁的服务器请求和页面刷新有很多的缺点包括页面打开缓慢和降低网络带宽。如果采用富客户界面,可以从以前的服务器响应影响整个界面,转移到只有收到请求的应用程序部分才会做出相应的变化。这本质上意味着界面被分解成许多独立模块,这些模块都会对收 到的信息做出相应的反应,有些会和服务器端进行交互,有些是这些模块之间的通
19、信。 流行的 RIA 开发技术术主要有 Macromedia 公司的 Flash/Flex、 Microsoft 公司的Avalon 技术、 Mozilla 的 XUL 技术等。 Flash 是一个已经成熟的商业产品,它可以在 Web 网页中引入交互式的图形界面。最近经过升级后,新版本包含了建立窗体风格的应用程序的功能。尽管 Flash 作为一个在 Web 上最广泛部署的前端技术还有争议(取决于所选用的 Flash Player 版本),但据称已经有 98以上的桌面系统都支持 Falsh。由于 Flash 具有强大的和可视化的动画创建功能(与之相反,其他技术则要求进行低级的图形编码),所以图形
20、设计人员使用起来十分得心应手。 Flash 采用的脚本语言是 ActionScript-ECMAScript 1.5 的一个变种,该脚本语言又被称为JavaScript。 Flex 产品对 Flash 增加了一个 XML 描述语言,即 MXML,使其可以编译用户界面,并且能够用 Flash Player 来随时进行描述。 Flex 使得传统的开发机构能更好地了解和使用 Flash。 Flex 和 Flash 的最大缺点在于对 XML 和 Web 服务等标准的支持很有限,而且作为应用开发工具的环境还不大成熟。 Flex 和 Flash 的优点在于它可以很容易地用来创建复13 第一部分 XML 概
21、述与 XML 基本语法 笔记区 杂的动画式显示,以及可以使用第三方附件。 Avalon 其实是 WinFX 三大支柱技术之一的表示子系统,而 WinFX 则是 .NET 2.0 Framework 的延伸。 Avalon 与 GDI 的区别在于,前者使用描述性模型来描述各种图形实体 : 窗口、网页、布局面板、向量图形、可重用控件、动画、 3D 对象和景物等,而后者采用过程化的方式。 Avalon 应用程序的图形输出与 GDI 不同,不是按照过程化指令 顺序执行的,而是用不同层次的对象及其属性提供的。 Avalon 中所有图形场景都是由 Avalon 的类模型中不同层次的对象 即对象树 构成的。
22、本质上说,用 GUI 元素创建对象树,就可以开发出 Avalon 应用程序的 UI(用户界面)。这时,对象树常被称为 UI 树。不过创建 UI 树只是开发图形界面的一种方式,此外还可以用 XAML。 XUL(念作 “zool”)是一个基于 XML 的用户界面语言,它来自于 Mozilla 的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla 浏览器上运行,而且也可以运行在其 他描述引擎上,如 Zulu(一个 Flash MX 组件)和 Thinleys(一个 Java 实现)。XUL 描述引擎都非常小( 100KB 以下),它可以使用 XML 数据也可以生成 XML
23、 数据。同Java 的情况一样, XUL 也有一个非常大的用户团体,这个团体有大量的开放源代码工具,如Theodore ThinletEditor,一个能够以图形化方式布局用户界面,且可以生成相应 XUL 的Java 应用程序。 XUL 的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。 XUL最大的优点在于它与 Gecko 引擎的集成(打开了通向大量 Web 标准的大门),以及与大多数其他 XML 用户界面描述语言相比它是一种非常具有表达力和简洁的语言。 以上这些 RIA 技术的共同特点便是都可以采用某种 XML 来描述 UI 的设计,表示数据,甚至进行数据通信。由此,我们可以看出
24、XML 技术对于 RIA 的重要性。 XML 在 RIA 中的应用 : XML( eXtendable Markup Lanuage)从其诞生起,就以其强大的功能成为人们关注的焦点,进而被广泛应用于许多领域。 XML 的诸多先进性令其在产生后迅速得到发展。包括IBM、微软在内的诸多国际顶级 IT 企业、著名研究机构和 国际标准化组织纷纷积极参与到基于 XML 的数据标准的制定和相关软件研发等工作中,几乎每个专业 XML 标准的制订都有该领域在全球占据技术领导地位的企业或权威机构参与。 正因为 XML 技术的强大, RIA 应用领域也逐渐采用 XML 作为主要或辅助技术。 XML 在RIA 方面
25、的应用包括以下几种: 1、 数据描述和交换标准 XML 数据标准通常是通过词汇表的形式存在的, XML 数据的描述,是元素及其属性、以第 一 部分 XML 概述与 XML 基本语法 14 笔记区 及你所指定的文档结构的规范。作为信息交换的媒介,它经常是与人类在某种领域(例如商业、化学、法律、音乐)的活动息息相关的。 XML 词汇表的高效性也正是 XML 应用成功的关键因素之一。 2、 图形化用户界面描述和构造 而仅仅有 XML 数据是不够的,必须使得信息消费者通过相应的应用程序所提供的图形化用户界面对数据进行操作才能够发挥数据存在的意义。 图形用户界面( GUI)工具包作为高级编程语言的核心技
26、术之一,能够充分地体现一门高级语言的强大功能和先进的理念。 Java 作为一门最受全世界软件开发者们欢迎的高级编程语言,其 GUI 工具包的丰富多样,一直被人们所津津乐道。不过,面对众多的选择,也有无法解决的难题。 工具包实现之 间的差异导致了互相之间的不兼容性,解决之道自然是总结和概括这些工具包之间的异同,并抽象出一种跟实现无关的图形用户界面描述方法。正因为抽象描述方法有如此的优点,很早开始,就有研究者着手于抽象描述方法的研究。 但是,一直到 XML 技术的广泛使用,才使得研究者们认识到 XML 正是用来抽象描述图形用户界面的最佳载体。上文所提到的 MXML, XAML 以及 XUL 正是这
27、方面研究的成果。 当然, MXML 等语言并不仅仅能描述 GUI 的构成,还可以定义后台的数据以及界面元素与数据之间的绑定关系。这就为简化 RIA 的开发提供了可能 开发者可以想像使用高级编程语言一样编写文本格式的 XML 脚本, RIA 引擎在运行时自动将 XML 脚本 GUI 以及相应的逻辑。 3、 数据表现样式控制 XML 技术不仅通过标准化和用户自定义的词汇表使得内容数据的描述能够得到统一的处理,更重要的是这些技术与 XSLT 的共同控制为重复出现的数据的排版和显示带来了操作上的极大便利。 XML 格式的内容数据虽然便于在网络和计算机之间交换和处理,但是对于人来说,仍然是难以阅读和理解
28、的,特别是一些大型的工业用数据集。在这方面,纯 XML 可能还比不上 HTML,毕竟通过浏览器 HTML 能提供丰富多样和接近人类阅读习惯的数据表现手段。其实,稍稍了解 HTML 的人都知道, HTML 其实可以看作 XML 技术的一个非常特别的特例。因此,基于标准的 XML 规范, W3C 组织也提出了一系列用于控制数据表现样式的技术:XSL-FO 和 XSLT 等。 15 第一部分 XML 概述与 XML 基本语法 笔记区 4、 应用流程控制 在商业领域,把一个商务事件的处理流程过程称为 “商业流程 ”;在应用软件领域,把完成一件事情的过程称为 “应用流程 ”,在电子商务日益发展的现在,这
29、两者已经几乎可以划上等号。 BPM 是 Business Process Management 的简称,我们通常所说的 BPM 事实上指的是商业过程管理系统,是一个软件组件,它以商业过程的描述为输入,监控整个商业过程的执行过程,同时安排工作,调用其他应用程序。在 BPM 系统中,其核心内容就是商业过程的描述和建模。在这方面, XML 技术也拥有其不可替代的优势。 1.5 XML 技术架构概要介绍 XML 是目前很普遍的一种数据交换技术,当然 XML 的应用并不仅限于在数据交换领域,其应用范围在不断的扩展。随着 XML 越来越多领域的应用及推广, XML 的体系架构越变得 越来越庞大和复杂。 在
30、记忆中, XML 刚推出时,仅是为了解决 HTML 结构松散导致的数据结构混乱的问题。后来发现 XML 有很好的数据描述和结构约束特性,因此便开始在数据交互领域使用。后来XML 在许多需要这些特性的领域也开始流行起来,这便是 XML 技术的现状。 XML 本身的语法、结构和概念都不算太复杂。理解 HTML 的人,用几十分钟便可以掌握XML 的结构及 XML 的描述方式。让人感到为难的是 XML 的相关技术和其扩展技术。以下是XML 相关技术的框架图: 第 一 部分 XML 概述与 XML 基本语法 16 笔记区 图 1-3 XML 结构 :包括 XML 语法 和 XML 基本概念 ,是 XML
31、 最基本的东西,也就是描述 XML是什么,怎么写,有什么特征。 DTD 和 XML Schema 是 XML 的结构描述技术, XML 本身是一个结构性的描述语言,但是其并没有描述和约束数据结构的技术,因此便有 DTD 和Schema 对其补充。简单的说, XML 是包装数据的,而 DTD 和 Schema 是描述数据和数据结构的。另外 Schema 比 DTD 有这更完整的描述特性,当然 Schema 也并不是完美的。 XML 处理 :这部分的技术架构及关系比较复杂。简单的说它包括各种领域下对 XML 的操作技术 。比较典型有 XML DOM,XPath,SAX,XMLReader 等。 X
32、ML DOM 和 HTML的 DOM 类似,就是通过对象模型来描述 XML 文档的结构,是一种把 XML 文档结构映射成对象结构的技术。 XPath 是 XML 文档查找技术,通过使用 XPath 特定的描述语法,能快速定位 XML 文档内容。 SAX 和 XMLReader 都是使用流式操作 XML 文档的技术。上面的技术在 DotNet 的 FrameWork 内都提供支持。 XML 转换 :包括 XSL 和 CSS,它们的作用是把 XML 文档转换成其它形式。其它形式有很多,比如显示形式。显示形 式简单地说,就是使用转换技术把一份 XML 文档在浏览器或者其它浏览工具中按照特定格式显示出
33、来。 XSL 是 XML 转换技术的一个体系,其中的 XSLTXML 结构 XML 语法 XML 名称空间 XML 构架 ( Schema) XML DTD XML DOM Xpath SAX XMLReader XML 处理 内存中处理 XML 路径定位模型 流式处理 XML XML 转换 XSL CSS 输出修饰 XSLT DotNet XML 框架 17 第一部分 XML 概述与 XML 基本语法 笔记区 是用于显示转换的。 CSS 仅仅用于 XML 文档的显示转换。 XML 和 XML 扩展技术的大致体系结构就是这样。这里仅仅是从一个大体上进行介绍。其实 XML 本身并不难,复杂的是其
34、扩展和外延技术。只要弄清楚 XML 的扩展技术,以及在各领域起到的作用,再结合 XML 的数据描述性去进行理解,那么就能很好的掌握它。 本书围绕这图中相关技术点讲解 ,你准备好了吗?跟随本书进入 XML 的精彩世界 ! 总结 本章我们了解到了 XML(eXtensible Markup Language)即可扩展标记语言,它与HTML 一样,都是 SGML(Standard Generalized Markup Language,标准通用标记语言 ): XML 是 EXtensible Markup Language 的缩写 XML 是一种类似于 HTML 的标记语言 XML 是用来描述数据的
35、 XML 的标记不是 在 XML 中预定义的,你必须定义自己的标记 XML 使用文档类型定义( DTD)或者模式( Schema)来描述数据 XML 使用 DTD 或者 Schema 后就是自描述的语言 使用 XML 几种场合 1、 数据交换 2、 Web 服务 3、 内容管理 4、 Web 集成 5、 配置信息 6、 图形图像 7、 编程语言 XML 在 RIA(富互联网应用程序)中的几个应用方向 1、 数据描述和交换标准 2、 图形化用户界面描述和构造 3、 数据表现样式控制 第 一 部分 XML 概述与 XML 基本语法 18 笔记区 4、 应用流程控制 XML 中常见技术 1. XML
36、 结构包括 a) XML 语法、 XML 命名空间、 XML DTD 、 XML Schema 2. XML 处理 a) Dom、 XPath 3. XML 转换 a) XSLT、 CSS b) 问 与答 1. 用你自己的话来说明为什么需要使用 XML 2. XML 与 HTML 的区别是什么 3. XML 的使用场合 4. 作业 : 1. XML 的全称是 : 2. XML 主要是用来 _数据 ,HTML 主要是用来 _数据19 第一部分 XML 概述与 XML 基本语法 笔记区 学习内容 难度 我的第一个 XML 文件 XML 文档结构 XML 文档类型 第二次 课 XML 基本概念 第
37、一 部分 XML 概述与 XML 基本语法 20 笔记区 2.1 我的第一个 XML 文件 通过第一次课的学习,相信大家都迫不及待想动手去写 XML 文档,那就让我们一起来写我们的第一个 XML 文件吧。 Code 2-1 HelloXML.xml Hello,XML 在浏览器中显示效果如图 2-1 所示: 图 2-1 从这个案例中我们可以看到 XML 的一 些特点: XML 文件第一行文档声明 和 HTML 一样是标记语言 ,标记中有数据内容。 Hello,XML 我们在这里看到的这两个特性仅仅表现出了 XML 的一小部分,在接下来的内容中会详细讲解其他部分。 21 第 一 部分 XML 概
38、述与 XML 基本语法 笔记区 2.2 XML 文档结构 HelloXML.xml 文档仅仅是一个最简化的 XML 文档, XML 文档的标准结构到底是怎样的呢?下图是一个比较典型的 XML 文档结构 ,XML 文档包括以下几部分: XML 声明、文档类型定义、注释、根元素、属性、元素文本、 CDDATA。 图 2-2 1、 XML 声明 XML 文档总是以一个 XML 声明开始的,其格式如下 : 需要注意的是, XML 声明总是在 XML 文档的最前面,其前面不能出现任何字符。下面是几种 XML 申明的形式: 小强 20 N2D09001 根元素 文档类型定义 XML 声明 注释 属性 CD
39、DATA 元素文本 XML 文档的序言部分一般包含出现在文档或者文档根元素开始标记之前的信息。它包含应用与整个文档的信息,如:字符编码 ,样式表引用,另外 ,还包含 XML 声明 ,注释 ,处理指令,但是所有这些都是可选的 . 第 一 部分 XML 概述与 XML 基本语法 22 笔记区 Code 2-2 2、 文档类型定义 DTD DTD( Document Type Definition),文档类型定义。 XML 最为强大的功能是它允许你创建自己的标签名称。但是对于任何既有的应用程序来说,任何类型的标签以任意顺序出现并没有实际意义。如果正在编写样式表或应用程 序来使得XML 确实具有意义,
40、那么就必须对次序和标签的嵌套指定一些约束。 DTD 是可以用来标识约束的一种方式。 首先提一个问题,如果你的一个 XML 文档给别人使用,别人怎么才能正确地定义 XML文档中的元素、属性呢?就好像我们用 ASP.NET 时,我们需要配置 web.config,但是怎么保证我们的配置是正确的?答案就是可以使用相对的格式化的文档来验证。这种格式化的文档有两种 ,一种是 DTD,一种是 SCHEMA. 一个遵循 XML 语法规则,并遵守相应 DTD 文件约束的 XML 文档称为有效的 XML 文档。 XML 从 SGML 继承了 用于定义语法规则的 DTD 机制, DTD 文件本身是不需要遵循 XM
41、L规则的。大部分的 XML 应用都是使用 DTD 来定义的(还有一部分是用 XML Schema 来定义的, XML Schema 在其专题中学习)。 HTML 就有一个标准的 DTD 文件,所以其组织结构和所有的标签都是固定的, DTD 文件本身也是一个文本文件,通常用 “.DTD“为其扩展名。 文档类型声明的作用就是指出 XML 文档所用的 DTD,文档类型声明有两种形式。 一种是在 XML 文档中给出 DTD 内部 DTD。 23 第 一 部分 XML 概述与 XML 基本语法 笔记区 Code 2-3 下午有事吗? 今天下午要是没事情,就一起去 游泳 一种是外部 DTD,引用 XM
42、L 文件外面单独的 DTD 文件。 Code 2-4 下午有事吗? 今天下午要是没事情,就一 起去打球 . 对应 DTD 文件 mail.dtd 内容为 : Code 2-5 第 一 部分 XML 概述与 XML 基本语法 24 笔记区 关于 DTD 的详细内容将在后面详细讲解。 3、 根元素 根元素是必须的 ,它是 XML 文档中序言和 DTD 部分后面的第一个元素 ,它可以包含属性 ,子元素 ,注释等 .前面的例子中的 就是一个文档根的例子 .在 XML 文档中只能有且仅有一个根元素。 4、 元素 元素的结构 : 在 XML 中,元素由开始标签、元素内容和结束标签构成,对于空元素,由空
43、元素标签构成。 图 2-3 元素的四种形式: 1、空元素; 2、带有属性的空元素; 3、带有内容的元素; 4、带有内容和属性的元素。 元素的命名规则 : 每一个元素都有一个用名字标识的类型,同时它可以由一个属性说明集,每一个属性说 明有一个名字和一个值。在给元素命名的时候要注意,以 ”xml”或其他任何匹配(X|x) (M|m ) (L|l )的字符串开头的名字,被保留用于 XML 规范的当前版本或者25 第 一 部分 XML 概述与 XML 基本语法 笔记区 后续版本的标准化。此外,在给元素命名时,还要遵循下列规范: 1、名字只能以字母、下划线( _)或者冒号( :)开头; 2、名字中可以包
44、含字母、数字、下划线以及其他在 XML 标准中允许的字符; 3、名字中不能包含空格; 4、名字中尽可能不要使用冒号( :),因为冒号在名字空间中被用于分隔名字空间前缀和本地部分。 自己 “发明 ”的 XML 元素还必须注意下面一些简单的规则: 任何的名字都可以使用,没有保留字(除了 XML),但是应该使元素的名字具有可读性,名字使用下划线是一个不错的选择。 例如 : , . 尽量避免使用 “-”, “.”,因为有可能引起混乱。 只要你愿意元素的名字可以很长,但也不要太夸张了哦。命名应该遵循简单易读的原则,例如: 是一个不错的名字,而 则显得罗嗦了。 XML 文档往往都对应着数据表,我们应该尽量
45、让数据库中 的字段的命名和相应的 XML文档中的命名保持一致,这样可以方便数据变换。 非英文 /字符 /字符串也可以作为 XML 元素的名字,例如 这都是完全合法的名字。但是有一些软件不能很好的支持这种命名,所以尽量使用英文字母来命名。 元素的内容 : 如果在 XML 文档中元素内容使用类似 ”if salary 为了避免 出现这种情况,必须将字符 ”if salary 1000 then 下面是五个在 XML 文档中预定义好的实体 : 大于号 单引号 “ 双引号 图 2-4 5、 注释 注释用于对文档中的内容起到一个说明作用。 XML 的注释和 HTML 的注释类似,都是以 结束。位于 之间
46、的数据将被 XML 处理器忽略。 使用 XML 注释需要注意一下几点: 1) 注释不能出现在 XML 声明之前, XML 声明必须是文档最前面的部分。下面的情况是不允许的: Code 2-8 2) 注释不能出现在标记中,下面的例子是非法的: Code 2-9 Jason Chen 3) 注释可以包围和隐藏标记,但是要注意,在注释掉标记以后,要保持文档的完整结构。 4) 字符串 “-“(双连字符)不能出现在注释中。 6、 处理指令 处理指令( Processing Instructions)允许文档中包含由应用程序来处理的指令。在XML 文档中,有可能会包含一些非 XML 格式的数据,这些数据
47、XML 处理器无法处理,我们可以通过处理指令来通知其它应用程序来处理这些数据。 处理指令的语法和 XML 声明类似,以 结束。一个常见的使用样式表单实体必须以符号 “结尾 ,只有 “ 在开始标记 标签之间的数据是 CDATA,而任何其他的数据则是 PCDATA。下面元素包含了 PCDATA: Code 2-11 非诚勿扰 Code 2-12 也可以是下面的元素包括以上两者: Code 2-13 非诚勿扰 当你想让 XML 文档中的一部分被解析器忽略而不进行处理时, CDATA 是非常有用的。虽然 XML 声明和处理指令的语法形式相似,但 XML 声明并不是处理指令, XML 处理程序对 XML
48、 声明和处理指 令采取的是不同的处理方式。 第 一 部分 XML 概述与 XML 基本语法 28 笔记区 你可以在 标签中放置任何内容而 XML 解析器不会解析。但是那些没有包括在 标签中的数据必须符合 XML 的规则。一般 CDATA 部分 会放置其他语言的代码,比如 VBScript, JavaScript, MXML( Flex 中使用)。 XML 解析器忽略 CDATA 而分析 PCDATA也就是说将其解释成为标记语言。您也许想知道为什么是 XML 解析器要区分 CDATA 和 PCDATA。某些字符,特别是 和 &,在 XML中具有特殊的意义,所以,如果需要使用他们,那么就必须包括在
49、 CDATA 中,例如,你想定义一个 range 元素,其值为 ”0 0 但是可以这样定义 Code 2-15 CDATA段中包含的都是纯字符数据,在字符数据可以出现的任何地方都可以使用 CDATA段。 CDATA 段主要用于需要将整个文本解释为字符数据而不是标记的情况下。 CDATA 段中的内容不被 XML 处理器分析,所以可以在其中包含任意的字符。 CDATA 对于 XML 文档中包括数学等式,程序清单甚至其他 XML 文档来说都非常有用。 8、 属性 XML 允许你通过元素开始标签中包含属性来添加元素的附加信息。属 性 是名称 /值的结构。下面 Movie 元素将 ID 编号作为属性而不是一个元素。 CDATA部件之间不能再包含 CDATA部件(不能嵌套)。如果 CDATA部件包含了字符 “ 或者 “之间没有空格或者换行符。 29 第 一 部分 XML 概述与 XML 基本语法 笔记区 Code 2-16 非诚勿扰 70 9、 错误