XML技术系列讲座(1)XML技术入门2006-04-30 12:59:00
【评论】
【打印】
【字体:大 中 小】
本文链接:http://blog.pfan.cn/mroske/13416.html
本文出自:http://www.computerworld.com.cn 作者: 北京邮电大学 张剑 (2002-02-06 06:15:01)
Internet提供了全球范围的网络互连与通信功能,Web技术的发展更是一日千里,其丰富的信息资源给人们的学习和生活带来了极大的便利。特别是应运而生的HTML(超文本置标语言),以简单易学、灵活通用的特性,使人们发布、检索、交流信息都变得非常简单,从而使Web成了最大的环球信息资源库。然而,电子商务、电子出版、远程教育等基于Web的新兴领域的全面兴起使得传统的Web资源更加复杂化、多样化,数据量的日趋庞大对网络的传输能力也提出更高的要求。同时,人们对Web服务功能的需求也达到更高的标准,比如: 用户需要对Web进行智能化的语义搜索和对数据按照不同的需求进行多样化显示等个性化服务; 公司和企业要为客户创建和分发大量有价值的文档信息,以降低生产成本,以及对不同平台、不同格式的数据源进行数据集成和数据转化等等,这些需求越来越广泛和迫切。 |
传统的HTML由于自身特点的限制,不能有效地解决上述问题:作为一种简单的表示性语言,它只能显示内容而无法表达数据内容。而这一点恰恰是电子商务、智能搜索引擎所必需的。另外,HTML语言不能描述矢量图形、数学公式、化学符号等特殊对象,在数据显示方面的描述能力也不尽如人意。最重要的是:HTML只是SGML(Standard Generalized Markup Language,标准通用置标语言)的一个实例化的子集,可扩展性差,用户根本不能自定义有意义的置标供他人使用。这一切都成为Web技术进一步发展的障碍。 |
SGML是一种通用的文档结构描述置标语言,为语法置标提供了异常强大的工具,同时具有极好的扩展性,因此在数据分类和索引中非常有用。但SGML复杂度太高,不适合网络的日常应用,加上开发成本高、不被主流浏览器所支持等原因,使得SGML在Web上的推广受到阻碍。在这种情况下,开发一种兼具SGML的强大功能、可扩展性以及HTML的简单性的语言势在必行。由此诞生了XML语言。 |
XML(eXtensible Markup Language,可扩展置标语言)是由W3C于1998年2月发布的一种标准。它同样是SGML的一个简化子集,它将SGML的丰富功能与HTML的易用性结合到Web的应用中,以一种开放的自我描述方式定义了数据结构,在描述数据内容的同时能突出对结构的描述,从而体现出数据之间的关系。这样所组织的数据对于应用程序和用户都是友好的、可操作的。 |
XML的优势之一是它允许各个组织、个人建立适合自己需要的置标集合,并且这些置标可以迅速地投入使用。这一特征使得XML可以在电子商务、政府文档、司法、出版、CAD/CAM、保险机构、厂商和中介组织信息交换等领域中一展身手,针对不同的系统、厂商提供各具特色的独立解决方案。 |
XML的最大优点在于它的数据存储格式不受显示格式的制约。一般来说,一篇文档包括三个要素: 数据、结构以及显示方式。对于HTML来说,显示方式内嵌在数据中,这样在创建文本时,要时时考虑输出格式,如果因为需求不同而需要对同样的内容进行不同风格的显示时,要从头创建一个全新的文档,重复工作量很大。此外HTML缺乏对数据结构的描述,对于应用程序理解文档内容、抽取语义信息都有诸多不便。 |
XML把文档的三要素独立开来,分别处理。首先把显示格式从数据内容中独立出来,保存在样式单文件(Style Sheet)中,这样如果需要改变文档的显示方式,只要修改样式单文件就行了。XML的自我描述性质能够很好地表现许多复杂的数据关系,使得基于XML的应用程序可以在XML文件中准确高效地搜索相关的数据内容,忽略其他不相关部分。XML还有其他许多优点,比如它有利于不同系统之间的信息交流,完全可以充当网际语言,并有希望成为数据和文档交换的标准机制。 |
当然,XML作为一个新建立的标准,还有许多不足之处: 它在强调了数据结构的同时,语义表达能力上略显不足,例如定义了<地址>这样一个置标,如果不是在文档中实际定义内容,我们就无法知道是要表达家庭住址还是E-mail地址。另外,XML的有些技术尚未形成统一的标准,充分支持XML的应用处理程序很少,甚至浏览器对XML的支持也是有限的。 |
所以,XML还并不能完全取代HTML,毕竟HTML是最为方便、快捷的网上信息发布方式。况且HTML是描述数据显示的语言,而XML是描述数据及其结构的语言,二者在功能上也是截然不同的。 |
不管怎样,Web的应用将随着XML的发展而更加精彩: |
XML的丰富置标完全可以描述不同类型的单据,例如信用证、保险单、索赔单以及各种发票等。结构化的XML文档发送至Web的数据可以被加密,并且很容易附加上数字签名。因此,XML有希望推动EDI(Electronic Data Interchange)技术在电子商务领域的大规模应用。有兴趣的读者可以访问网站http://www.xmledi.org。 |
信息发布在企业的竞争发展中起着重要作用。服务器只需发出一份XML文件,客户可根据自己的需求选择和制作不同的应用程序以处理数据。加上XSL(eXtensible Stylesheet Language)的帮助,使广泛的、通用的分布式计算成为可能。 |
XML能够更准确地表达信息的真实内容,其严格的语法降低了应用程序的负担,也使智能工具的开发更为便捷。来自不同应用程序的数据也能够转化到XML这个统一的框架中,进行交互、转化和进一步的加工。 |
XML的优点备受瞩目,它的发展方兴未艾,未来的Web将是XML的Web! |
● Notepad:最直接、最简单的文本编辑工具,在Windows附件中就可找到。 |
● Microsoft XML Notepad: 微软专门为设计XML文档而提供的编辑软件,可以借助它验证XML文档的有效性,详细说明和下载地址: http://msdn.microsoft.com/xml/NOTEPAD/intro.asp。 |
● Visual InterDev:该软件是用来开发Web应用程序的,不仅仅局限于XML,还可以开发ASP、HTML、XSL样式单等等。 |
● Microsoft XML Tree Viewer: 利用这个软件可以把XML文档的内容用树的结构形式显示出来: http://msdn.microsoft.com/xml/demos/default.asp。 |
● Microsoft XML Validator: 该软件可以检查XML文档是否是“格式良好的”以及其有效性,并对错误发出警告,它的下载地址是:http://msdn.microsoft.com/xml/demos/default.asp。 |
● Microsoft XSL Debugger: 样式单文件的复杂性使开发人员在编写时容易出现错误,这个软件就是帮助用户调试样式单文件的,把复杂枯燥的调试过程用可视化界面显示出来。下载地址 :http://msdn.microsoft.com/xml/_archive/xsl-debugger/xsl-debugger.htm。 |
● WordPerfect: 一种对开发XML和SGML提供高级支持的文字处理器,具有所见即所得的开发环境,提供向导、自动化控件的插入和文档的自动生成等功能,它是一款收费的商业产品,支持Windows 95/98/2000和Linux平台。详情请访问http://www.corel.com/。 |
● SixPack: 为XML的解析和开发提供简洁的界面,支持Macintosh平台,并公开源代码,详情请访问http://www.trafficstudio.com/sixpack/info.htm。 |
● Xray: 一种具有实时错误检查的XML编辑器。它根据DTD或者XML Schema,允许用户创建格式良好的XML文档或验证文档的有效性,并且支持多文档编辑,是一款免费软件,支持Windows 95/98/NT/2000平台。详情请访问http://architag.com/xray/。 |
首先介绍XML文档内容的基本单元——元素,它的语法格式如下: |
元素是由起始标签、元素内容和结束标签组成。用户把要描述的数据对象放在起始标签和结束标签之间。例如: |
无论文本内容有多长或者多么复杂,XML元素中还可以再嵌套别的元素,这样使相关信息构成等级结构。下面的例子中,在<employees>的元素中包括了所有职员的信息,每位职员都由<employee>元素来描述,而<employee>元素中又嵌套了<name>和<salary>元素。 |
<name>Lars Peterson</name> |
<name>Charlotte M. Cooper</name> |
除了元素,XML文档中能出现的有效对象是:处理指令、注释、根元素、子元素和属性。 |
处理指令给XML解析器提供信息,使其能够正确解释文档内容,它的起始标识是“<?”,结束标识是“?>”。常见的XML声明就是一个处理指令: |
处理指令还可以有其他的用途,比如定义文档的编码方式是GB码还是Unicode编码方式,或是把一个样式单文件应用到XML文档上用以显示。 |
注释是XML文件中用作解释的字符数据,XML处理器不对它们进行任何处理。注释是用“<!--”和“ --> ”引起来的,可以出现在XML元素间的任何地方,但是不可以嵌套: |
如果一个元素从文件头的序言部分之后开始一直到文件尾,包含了文件中所有的数据信息,我们称之为根元素。 |
XML元素是可以嵌套的,那么被嵌套在内的元素称为子元素。在前面的例子中,<employee>就是<employees>的子元素。 |
属性给元素提供进一步的说明信息,它必须出现在起始标签中。属性以名称/取值对出现,属性名不能重复,名称与取值之间用等号“=”分隔,并用引号把取值引起来。例如: |
<salary currency=“US$”> 25000 </salary> |
XML文档的基本结构由序言部分和一个根元素组成。序言包括了XML声明和DTD(或者是XML Schema),DTD(Document Type Define,文档定义类型)和XML Schema都是用来描述XML文档结构的,也就是描述元素和属性是如何联系在一起的。 |
例如,在例1的文档前面加上如下的序言部分,就构成了一个完整的XML文档: |
<!DOCTYPE employees SYSTEM“employees.dtd”> |
一个XML文档中有且仅有一个根元素,其他所有的元素都是它的子元素,在例1中,<employees>就是根元素。 |
一个XML文档首先应当是“格式良好的”(Well-Formed),该规定的正式定义位于: |
http://www.w3.org/TR/REC-xml |
“格式良好的”XML文档除了要满足根元素唯一的特性之外,还包括: |
● 起始标签和结束标签应当匹配:结束标签是必不可少的; |
● 大小写应一致:XML对字母的大小写是敏感的,<employee>和<Employee>是完全不同的两个标签,所以结束标签在匹配时一定要注意大小写一致; |
● 元素应当正确嵌套:子元素应当完全包括在父辈元素中,下面的例子就是嵌套错误: |
XML文档的“有效性”是指一个XML文档应当遵守DTD文件或是Schema的规定,“有效的”XML文档肯定是“格式良好的”,有关内容我们会在以后详细说明。 |
XML文档中很可能会定义许多名字相同而意义不同的元素或属性,尤其在把不同的XML文档合而为一时,更容易产生冲突。名称空间就是为了解决这个问题而提出的。它用URI(Uniform Resource Indicator,统一资源指示器)加以区别,是在XML文件的元素和属性中出现的所有名称的集合。如下例: |
<pr:payment xmlns:pr=“http://www. microsoft.com/payroll”> |
<pr:employee>Lars Peterson</pr:employee> |
<pr:description>Reimburse expenses</pr:description> |
<pr:total>199.76</pr:total> |
有了名称空间,用户就可以保证在文件中使用的名称是唯一的。对元素的属性xmlns进行定义就表示对该元素指定了一个名称空间。namespace_name必须是一个有效的URI。 |
如果省略local_prefix(本地前缀),这时就构成了缺省名称空间: |
<payment xmlns=“http://www.microsoft.com/acct”> |
<customer>1234</customer> |
<date_received>12-03-2000</date_received> |
如果对一个元素定义了缺省名称空间,那么该元素及其子元素,包括它们的属性都会自动地成为该名称空间的一部分,不用再在每一个元素和属性前面一一标明了。 |
在本文开始部分,我们对XML这个新兴的技术做了一个概述,对它的优缺点进行了分析,并对其美好的应用前景进行了展望。在本文后半部分则对XML文档的相关语法、格式做了简要的描述,并介绍了几种有用的开发工具。在以后的内容中,我们会全面展开,深入到XML技术内部,去探索一下这个美妙的世界! |
阅读(3103) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论