第1章
XML概述
XML是一个在Internet上到处可见的流行术语,同时它也是一项日趋成熟的技术。在真实世界中有许多应用,特别是在数据管理、显示和组织等方面。毫不夸张地说,XML正在成为今天一切Web服务和大多数面向服务架构(ServiceOrientedArchitecture,SOA)的基础。XML是整天与数据打交道的使用者的重要工具,不管是在Internet上公开的数据还是某个机构内部的私有数据。
本章将向读者介绍XML的基本概念、特点、用途和应用领域等知识,XML的结构以及相关技术将在本书后面的章节进行讨论。
本章学习目标:
了解常用的标记语言和分类
熟悉XML的概念和特点
熟悉XML的用途
掌握XML与HTML的区别
了解W3C组织
掌握XML的技术标准
熟悉XML的技术优势和商业优势
了解XML的开发工具
掌握XML与CSS如何结合使用
1.1标记语言概述
XML通常被称为可扩展性标记语言,它是标记语言的一种,因此本书在介绍XML之前会首先介绍一下标记语言的知识。本节的内容包括两部分,首先了解标记语言的分类,然后再了解它的发展历史。
1.1.1标记语言的类型
标记语言是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的计算机文字编码。文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是需要使用标记进行标识。
标记语言不仅仅是一种语言,就像许多语言一样,需要一个运行时环境让它有用。提供运行时环境的元素称为用户代理。通常会将标记语言称为置标语言,一般情况下它包括以下3种类型。
1.标识性标记语言
标识性标记语言(PresentationalMarkup)定义了在编码过程中标记文档的结构信息。例如在文本文件中,文件的标题可能需要用特定的格式表示(例如居中或者放大等),这时就需要标记文件的标题。字处理以及桌面出版产品有时候能够自动地推断出这类结构信息,但是绝大多数的编辑器(像Wiki这样的纯文本编辑器)还不能解决这个问题。
2.过程性标记语言
过程性标记语言(ProceduralMarkup)一般都专注于文字的表达,但是通常对于文本编辑者可见,并且能够被软件根据出现的顺序依次解读。为了格式化一个标题,在标题文本前会紧接着插入一系列的格式标识符,以指示计算机转换到居中的显示模式,同时加大及加粗字体。在标题文本后会紧接着缀上格式中止标识,对于更高级的系统宏命令或者堆栈模式会让这一过程的实现方式更加丰富。
大多数情况下,过程性标记能力包含一个Turing-complete编程语言。过程性标记语言的范例包含nroff、troff、TeX、Lout以及PostScript。过程性标记语言被广泛应用在专业出版领域,专业的出版商会根据要求使用不同的标记语言以达到出版要求。
3.描述性标记语言
描述性标记有时被称为逻辑标记或概念上的标记,鼓励作者将编写的方式描述在概念上,而非视觉上。
下面对目前常见的几种标记语言进行简单说明。
标准通用标记语言(SGML),是一种专门的置标语言,被用作编写《牛津英语词典》的电子版本。由于它较为复杂,因此难以普及。
超文本标记语言(HTML),是为网页创建和其他可在网页浏览器中看到的信息设计的一种标记语言。
可扩展标记语言(XML),又称可扩展置标语言。其中“置标”是指计算机所能理解的信息符号,通过这种标记,计算机之间可以处理包含各种信息的文章等。
可延伸超文本标记语言(ExtensibleHyperTextMarkupLanguage,XHTML),也是一种标记语言,其表现方式与超文本标记语言类似,不过在语法上更加严格。
1.1.2标记语言的历史
标记语言用一系列约定好的标记来对电子文档进行标记,以实现对电子文档的语义、结构和格式的定义。这些标记必须很容易和内容区分,并且易于识别。
1969年,IBM公司开发了一种文档描述语言,用来解决不同系统中文档格式不同的问题。这样一来,文档的显示和打印可能更少或更多地依赖特殊的硬件,不过这样的系统需要不同的计算机系统,提供专门的软件来显示和打印文档。IBM公司把这种标识语言称作通用标记语言,英文缩写为GML,全称是GenelizedMarkupLanguage。GML是IBM公司许多文档系统的基础,包括Script和Bookmaster。IBM公司提出在各文档之间共享一些相似的属性,如字体大小和版面,并且设计了一种文档系统,通过在文档中辅加一种标记,从而可以标识文档中的每种元素。
经过若干年的发展,在标记语言的概念达成共识的基础上,IBM公司的研究人员CharlesGoldfarb带领的开发团队一直在完善GML,并将其称为标准通用语言(StandardGeneralizedMarkupLanguage,SGML)。SGML成为IBM公司内部格式化和维护合法化文件的手段。后来它被不断地扩展和修改,作为一种全面的信息标准以适应工业范围的广泛应用。1986年,SGML被国际标准化组织(ISO)所采纳。尽管SGML的功能非常强大,但是由于它非常复杂,需要一大堆昂贵的软件配合运行,因而很长一段时间都没有被推广。
1989年,欧洲物理量子实验室(CERN)的信息专家发明了万维网,通过超文本链接语言(HTML)人们可以随便浏览网页的内容,并把原来技术专家之间的网络通信,普及到了寻常百姓家。随着蒂姆?伯纳斯德?李的不懈努力,他在缔造了互联网的同时也完善了HTML。
HTML当初仅仅提供了一种对静态文本信息表现的方法,但是它显然并不能适应越来越多的需要。随后越来越多的标记诞生了,例如:使用<img>描述图片;使用<script>为网页加入脚本支持,提供动态网页内容。两大浏览器厂商微软和网景公司甚至创建了与自己的产品兼容的标记。于是HTML成为了功能强大,但是失去了严谨结构化的事物。
1996年,万维网联盟(W3C)寻找一种在Web中应用SGML的灵活性和强大功能的方法,这导致了1998年2月XML1.0版本规范的发布。XML具备了SGML的核心特性,它的规范内容甚至不到SGML的十分之一,因此其简洁性可见一斑。随着XML的发布,它的应用如雨后春笋般的出现,因此它被看作是IT的明日之星。
1.2XML的基础知识
可扩展的标记语言(eXtensibleMarkupLanguage,XML),是Internet环境中跨平台、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。本节将简单介绍XML的基础知识,包括它的特点和用途等。
1.2.1XML的概念
HTML被设计用来显示数据,而XML则是被设计用来传输和存储数据。那么到底什么是XML呢?下面几点对XML进行了简单的总结。
XML是可扩展标记语言。
XML是一种标记语言,类似于HTML。
XML的设计宗旨是传输数据。
XML标记没有被预定义,使用者需要自行定义标记。
XML被设计为具有自我描述性。
XML是W3C的推荐标准。
XML的使用方法非常简单,只要使用者遵循一定的规则即可,以下列出的几点用于对XML的详细说明。
1.XML是不作为的
XML是不会做任何事情的,它被设计用来结构化、存储和传输信息。例如,下面是John写给Lily的一个便签。XML格式如下。
<message>
<from>John</from>
<to>Lily</to>
<heading>Reminder</heading>
<body>Don'tforgetthemeeting!</body>
</message>
上述的一条便签具有自我描述性,它拥有标题和留言信息,同时包含了发送者和接收者的信息。但是,这个XML文档仍然没有做任何事情,它仅仅是包装在XML标记中的纯粹的信息。使用者需要编写软件或者程序,才能传送、接收和显示出这个文档。
2.XML仅仅是纯文本
XML并没有什么特别的,它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理XML。不过,能够读懂XML的应用程序可以有针对性地处理XML标记,标记的功能性意义依赖于应用程序的特性。
3.通过XML可以发明自己的标记
在前面所示的一段代码中,<from>、<to>和<heading>等标记没有在任何XML标准中定义过,这些标记都是由文档使用者发明的,这是因为XML没有预定义的标记。
在HTML中使用的标记都是预定义的,HTML文档只使用在HTML标记中定义过的标记,例如<p>、<img>和<span>等。XML与HTML不同,它允许使用者定义自己的标记和文档结构。
4.XML不是对HTML的替代
XML是对HTML的补充,它不会替代HTML,理解这一点很重要。在大多数的Web应用程序中,XML用于传输数据,而HTML则用于格式化并显示数据。对XML最好的描述是,XML是独立于软件和硬件的信息传输工具。
5.XML无所不在
当用户看到XML标准突飞猛进的开发进度,以及大批软件开发商采用这个标准日新月异的速度时,不禁感叹它的强大。
目前,XML在Web中起到的作用不会亚于一直作为Web基石的HTML。XML无所不在,它是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。
1.2.2XML的特点
XML是W3C推荐参考通用标记语言,同样也是SGML的子类,使用者可以自定义一组标记。它有多个特点,下面是它的3个基本特点。
(1)XML可以从HTML中分离数据
简单来说,就是能够在HTML文件之外将数据存储在XML文档中,这样能够使开发者集中精力使用HTML做好数据的显示和布局,并且确保数据改动时不会导致HTML文件也进行改动,从而可以方便地维护页面。
(2)XML可用于交换数据
把数据转换成XML格式存储时将大大减少交换数据时的复杂性,还可以使这些数据能被不同的程序读取。
(3)利用XML可以共享数据
XML数据以纯文本格式存储,这使得XML更易读,更便于记录,更便于调试,使不同系统、不同程序之间的数据共享变得更加简单。
XML具有良好的格式和丰富的显示样式,实现了数据的共享和通用。用户在遵循严格的语言要求创建XML文档时,还方便了XML在不同系统之间信息的传输。另外,XML并不是万能的,它存在着以下缺陷。
语义表达能力上略显不足。
XML的有些技术尚未形成统一标准。
应用程序/浏览器对XML的支持也是有限的。
1.2.3XML的用途
XML应用于Web开发的许多方面,常用于简化数据的存储和共享,以下通过6点说明了XML的用途。
1.XML把数据从HTML分离
如果使用者需要在HTML文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML。通过使用XML,数据能够存储在独立的XML文档中,这样使用者就可以专注使用HTML进行布局和显示,并且确保修改底层数据无须对HTML进行任何改变。
2.XML简化数据共享
在真实世界中,计算机系统和数据使用不兼容的格式来存储数据。XML数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法,这让创建不同应用程序可以共享的数据变得更加容易。
3.XML简化数据传输
通过使用XML可以在不兼容的系统之间轻松地交换数据。对于使用者来说,其中一项最费时的挑战就是Internet上不兼容系统之间交换数据。由于可以通过各种不兼容的应用程序来读取数据,以XML交换数据降低了这种复杂性。
4.XML简化平台的变更
升级到新的系统(硬件或软件平台)总是非常费时的,这必须转换大量数据,不兼容的数据经常会丢失。
XML数据以文本格式存储,这使得XML可以在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新浏览器。
5.XML使开发者的数据更有用
由于XML独立于硬件、软件以及应用程序,XML使开发者的数据更可用,也更有用。不同的应用程序都能够访问开发者的数据,不仅仅在HTML页面中,也可以从XML数据源中进行访问。
通过使用XML,开发者的数据可以供各种阅读设备使用(例如手持计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。
6.XML用于创建新的Internet语言
许多新的Internet语言是通过XML创建的,下面列出了几个示例。
XHTML,这是最新的HTML版本。
WSDL,用于描述可用的WebService,即Web服务。
WAP和WML,用于手持设备的标记语言。
RSS,用于RSSfeed的语言。
RDF和OWL,用于描述资源和本体。
SMIL,用于描述针对Web的多媒体。
1.3XML与HTML语言
XML与Access、Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如数据索引、排序、查找和相关一致性等;而XML仅仅是存储数据。事实上XML与其他数据表现形式最大的不同在于,XML极其简单,这是一个看上去有点琐细的优点,但正是这一点让它与众不同。
HTML和XML是两种应用最为广泛的标记语言,简单来说,它们都是用于操作数据或数据结构,在结构上大致相同,但是它们在本质上却存在着明显的区别。
1.3.1语法要求不同
XML的语法非常严格,它要求标记嵌套、配对和遵循DTD(文档类型定义)树形结构;而HTML不要求标记的嵌套和配置等,不要求标记之间具有一定的顺序。具体来说,HTML与XML语法的不同点如下。
在HTML中的标记不区分大小写;但是在XML中则严格区分大小写。
在HTML中有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么使用者可以省略</p>或者</li>之类的结束标记。但是在XML中有着严格的树状结构,绝对不能省略结束标记。
XML中拥有单个标记而没有匹配结束标记的元素必须用一个/字符作为结尾,这样分析器就知道不用查找结束标记了。
在XML中属性值必须分装在引号中;但是在HTML中引号是可用可不用的。
在HTML中可以拥有不带值的属性名;但是在XML中,所有的属性都必须带有相应的值。换句话说,属性值必须使用引号,在XML中,元素的属性值没有引号引着是不符合规定的。
在XML文档中,空白部分不会被解析器自动删除;但是在HTML中是可以过滤掉空白部分的。
1.3.2标记不同
在HTML中使用的标记必须是被定义过的,即必须在HTML文档中使用固有标记;但是在XML中则没有固有标记。HTML标记是预定义的;而XML的标记则是免费的、自定义的、可扩展的。
【示例1】
下面在HTML文档中使用<h1></h1>标记和<div></div>标记,其中h1显示某一篇文章的标题;而div则显示文章的内容。代码如下:
<body>
<h1>草</h1>
<div>
离离原上草,一岁一枯荣。<br/>野火烧不尽,春风吹又生。
</div>
</body>
使用XML标记语言时,可以自定义任何的标记来描述上述内容,只要遵循一定的格式即可。
【示例2】
下面自定义了一段XML代码,内容如下:
<?xmlversion="1.0"encoding="utf-8"?>
<myinfo>
<head>草</head>
<content>离离原上草,一岁一枯荣。<br/>野火烧不尽,春风吹又生。</content>
</myinfo>
1.3.3作用不同
XML与HTML的作用完全不同,下面通过以下几个方面进行说明。
XML是用来描述数据、存放数据的,所以可以作为持久化的介质;HTML是用来显示数据的,它将数据和显示结合在一起,在页面中把这些数据显示出来。总的来说,XML被设计为传输和存储数据,它的焦点是数据的内容;而HTML被设计用来显示数据,其焦点是数据的外观。简单地说,XML旨在传输信息,而HTML旨在显示信息。
XML不是HTML的替代品,它们是两种不同用途的语言。XML不是要替代HTML,实际上XML可以视作对HTML的补充。XML和HTML的目标不同:XML的设计目标是描述数据并集中于数据的内容;而HTML的设计目标是显示数据并集中于数据外观。
1.3.4其他不同
除了前面介绍的3点不同外,XML与HTML还存在着其他的不同,下面进行简单说明。
1.可扩展性不同
XML是可扩展的,它能够定义新的标记元素;HTML是不可扩展的,所有的标记元素都是固定的。
2.可读性不同
XML的结构清晰、易于阅读;而HTML则较难阅读。
3.内容不同
HTML文档主要包含显示格式,它的目的是为了浏览,而不是为计算机所使用,是显示格式描述语言;XML文档将数据与显示格式分离,是数据格式描述语言,为信息的开放、共享和交互提供基础。
1.4XML的相关技术
XML只是用来单纯地描述内容,单独浏览XML文件的内容时并没有任何意义。一个完整的XML架构需要搭配相关的技术,才能将需要的信息做适当的处理。本节将简单介绍一下XML有关的技术,在介绍这些技术之前首先让我们了解一下W3C组织。
1.4.1W3C组织
HTML和XML之所以如此成功的原因之一就是它们的标准化,标准化意味着任何人只要遵从规范和解决方案,就可以实现互操作,那么由谁建立这些标准呢?就是W3C。
W3C即WorldWideWebConsortium,又称为万维网联盟,它成立于1994年,是Web技术领域具有权威和影响力的国际中立性技术标准机构。到目前为止,W3C已经发布了两百多项影响深远的Web技术标准以及实施指南。
打开W3C的官方网站,可以看到它的宗旨是“致力于创建Web相关技术标准并促进Web向更深、更广发展,确保协同工作”。由于认识到标准化的必要性,W3C起草了许多“推荐标准”或者“规范”,规定了组成万维网的基本模块。之所以称它们为推荐标准而非标准,是希望其他人遵从这些标准,从而实现互操作。
W3C组织对万维网的最大贡献是HTML的推荐标准,当各Web浏览器的开发商声称他们的产品符合HTML推荐标准V3.2或者V4.01时,这里的V3.2或者V4.01就是指在W3C授权下开发的推荐标准。
由于W3C制定的推荐标准被引用得很普遍,以至于这些标准的制定成为一个开放的过程:任何公司或者个人都可以成为W3C组织的成员。W3C的成员都可以参与标准的起草工作。这就意味着:MozillaFirefox和微软公司的IE等Web浏览器更有可能使用同一个HTML推荐标准,因为这些浏览器的开发者参与了推荐标准的制定工作。
由于XML的目标是互操作性,W3C是开发此项技术标准的最理想机构。因此,本书介绍的大多数技术都是基于W3C标准的,全名XML1.0推荐标准、XLST推荐标准和XPath推荐标准等。
1.4.2技术标准
组织信息是一个内容相当宽泛的主题,试图只定义一个规范就囊括它的全部内容是徒劳的。基于这个理由,几个相关的规范和推荐标准共同组成了XML的全部技术。每个规范都涉及信息交换的某个方面,下面对一些重要的规范和推荐标准进行说明。
......