XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
XML简介
与HTML一样,XML是从所有标记语言的元语SGML(Standard Generalized Markup Language,标准通用标记语言)中派生出来的。SGML 是一种元语言,XML也是一种元语言,一个定义 Web 应用的 SGML 子集。和 SGML 一样,也可以用XML 来定义种种不同的标记语言以满足不同应用的需要。
随着越来越多的规范对XML的支持,使得XML的功能日趋强大,不仅在Web世界,而且在整个软件系统架构过程中都发挥出巨大的作用。
(1)实现不同数据的集成。不同的数据库系统,其存储结构、应用程序接口都存在着许多不同点,因此基本上无法开发出一套能够针对这些相互不兼容的数据库的查询程序。而 XML 的出现,则改变了这个现象,由于数据是结构化的,因此即使它们的来源不同,也能够很容易地结合在一起。在开发时,可以在中间层的服务器上对从后端数据库和其他应用来的数据进行集成。然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。
(2)使用于多种应用环境。XML的高扩展性、高灵活性特性,使得其可以描述各种不同种类的应用软件中各种不同类型的数据。另外,XML 独有自描述性,可以很容易进行交换、处理,而且还不需要多余的内部描述。
(3)客户端数据处理与计算。由于 XML 格式的标准化,许多浏览器软件都能够提供很好的支持,因此只需简单地将 XML 格式的数据发送给客户端,客户端就可以自行对其进行编辑和处理,而不仅是显示。而且,DOM 还允许客户端利用脚本或其他编程语言处理数据,而无须回到服务器端。这种将数据视图与内容分离的机制,可以更容易地创建出基于 Web 的、功能强大的应用,而无须基于高端数据库。
(4)数据显示多样化。XML将显示和数据内容分离,提供了一种简单、开放、扩展的方式来描述结构化数据。与HTML不同的是,HTML描述了数据的外观,而XML则描述的是数据本身。因此,XML 定义的数据可以指定不同的显示方式,利用CSS或XSI(eXtensible Stylesheet Language,可扩展样式表语言)等工具来提供显示机制。
(5)局部数据更新。通过 XML,数据可以实现局部的更新。也就是说,当有其中的一部分数据变化时,并不需要重发整个结构化的数据,服务器只需将变化的元素发送给客户。而不是像现在的情况,只要一条数据变化了,整页都必须重建。而且,还可以将新增的信息加入到已存在的页面中,这样就可以使得应用的性能更高。
XML的相关技术
XML主要是一种数据描述方法,其魅力要在与其相关的技术的结合中才能显示出来。XML相关的技术有很多,但主要的有三个,分别是Schema、XSL和XLL(eXtensible Link Language,可扩展连接语言)。
(1)DTD(Document Type Definition,文档类型定义)与 Schema。用来对文档格式进行定义的语言,就相当于数据库中需要定义数据模式一样,DTD 和 Schema 决定了文档的内容应该是些什么类型的东西。其中 DTD 是从 SGML 继承下来的,而 Schema 是专门为XML文档格式而设计的,它们都规定了XML 文件的逻辑结构,定义了XML文件中的元素、元素的属性以及元素之间的关系。(2)CSS 和XSL。由于XML 是内容和格式分离的语言,所以需要专门的协议来定义XML 文档的显示格式,CSS 和XSL 就是用来定义XML文档显示格式的。其中CSS是随着 HTML的出现而出现的,它是一种极其简单的样式语言;XSL 则是专门为 XML设计的样式语言,它被定义为一套元素集的 XML语法规范,该语法用来将XML文件转换为 HTML 或者其他格式的文档。
(3)Xpath、Xpointer与Xlink。都是用于扩展Web 上的链接。Xlink是XML标准的一部分,用于定义对 XML 的链接。Xlink 与 HTML 中<a>标记的功能很类似,可以在XML文档中插入元素,用于创建不同资源间的链接: Xpath 是一门语言,用于把 XML文档作为带有各种节点的树来查看。使用 Xpath 可以定位 XML 文档的任意节点。在XML中,链接分为两部分,即Xlink和Xpointer。Xlink是XML的链接语言,用于描述一个文档如何链接到另一个文档。Xpointer 是 XML 语言的指针,用于定义如何寻址-个文档的各个组成部分。Xpointer 是对 Xpath 的扩展,它可以确定节点的位置和范围通过字符串匹配查找信息。Xlink 必须与Xpath或Xpointer 配合工作。Xpath 或Xpointer用于定义文档链接的位置,Xlink 提供文档中链接位置上的实际链接。
(4)XML名字空间。当多个文档创建 DTD 或者 Schema 时,需要某种方式来确定每个定义的起源。名字空间(Namespace)的使用可以有效地防止名字冲突的发生。
(5)XML 查询语句。XQL(XML Query Language,XML 查询语言)和XML-QL(XML-Query Language,XML 查询语言)是两种比较有影响力的查询语言,它们是对XSL 的一种自然的扩充,并在 SL 的基础上提供了筛选操作、布尔操作和对节点集进行索引,并为查询、定位等提供了单一的语法形式。
(6)RDF(Resource Description Framework,资源描述框架)。元数据是有关数据的数据和有关信息的信息。元数据在 Web 上有很多用途,包括管理、搜索、过滤和个性化Web 网站。RDF是用于编译、交换和重新使用结构化元数据的W3C 指的XML应用程序,它能使软件更容易理解 Web 站点的内容,以便可以发现 Web 站点上的资源。
(7)DOM、SAX和XML解析器。DOM 使用树型结构来表示XML 文档,以便更好地看出层次关系,这是很直观,方便的方法。但用 DOM 处理 XML 文档,在处理前要对整个文档进行分析,把整个 XML 文档转换成树型结构放到内存中,在文档很大时将占用很大的内存空间。SAX的目的是为处理大型文档而进行优化的标准的解析接口。它是事件驱动的,每当它发现一个新的XML标记,就用一个 SAX解析器注册柄,激活回调函数。XML Parser(解析器)是一个用于处理XML 文档的软件包,它为用户提供了操作XML文档的接口,以便减轻应用程序处理XML 数据的负担。目前解析器的类型可以分为验证的和非验证的两种。