发信人: mysunshine()
整理人: leitiger(2001-06-27 15:23:38), 站内信件
|
超文本与全球化Internet的结合引发了一场革命,XML为完成这项工作做好了准备。
电脑与人脑的区别在于,电脑无法接受提示而人脑可以。当人们看一本杂志时,只要看看过文章的标题就能猜出文章的大致内容;看看物品清单就能了解相关的购物指南;看看几行数字就知道自己银行帐户的状况。这显然是人脑的优势,电脑当然没有这么聪明。它们需要被明确告知有什么事情?相互之间的关系如何?以及该如何处理这些事情?
可扩展标记语言(Extensible Markup Language,简称为XML)正是为了用来对信息进行自我描述而设计的一种新语言。这项对计算机通信方式的简单变革有可能会将Internet从信息传送扩展到人类活动的许多其他方面。事实上,自从万维网联合组织(World Wide Web Consortium,一般称为W3C)在1998年初完成XML以来,该标准便如同燎原之火,迅速从科学领域蔓延到工业领域,包括制造业和医药行业。
这种热烈的响应来自于人们期望XML能够解决目前Web上存在的一些大问题。这些问题是众所周知的:Internet的速度极慢,有时甚至与爬行速度不相上下;虽然您可以在线获得各种信息,但要找到您需要的信息却极为困难。
上述问题产生的主要原因是由Web语言--HTML (超文本标记语言) 的性质引起的。尽管自HTML发明以来,它已成为最成功的电子发布语言,但它却过于表面化。事实上,HTML仅仅描述Web浏览器应该如何在页面上安排文字、图片和按钮。HTML注重表现形式,因此相对简单易学,但同时也有弊端存在。
首先,用HTML创建的Web站点除了像一台能发送文档的传真机外,很难实现更多的功能。个人和公司都希望通过Web站点从半个地球之遥的地方接收顾客订单或传送医疗档案,甚至管理整个工厂或操作科学仪器。但遗憾的是,HTML不是为完成这类任务而设计的。因此,虽然您的医生可以将您的药物反应历史记录拖到他的Web浏览器上,但他却无法通过电子邮件将该记录发给其他专家以便让他们直接将记录输入其医院的数据库中,因为这些专家的的电脑不知道该如何处理这些信息。在电脑的眼中,除了"〈H1〉文字〈/H1〉"、"〈BOLD〉文字〈/BOLD〉"以外,其他信息都是无法理解的。
编程方面的传奇人物Brian Kernighan
曾经提到,"所见即所得"可以理解为"您所看到的就是您所得到的一切"。在上面的例子中,尖括号叫做标记。HTML没有表示药物反应的标记,这正是它的另一个重要缺陷:不够灵活。如要增加新的标记,则要涉及一大堆烦琐的过程,花费大量的时间,没有人愿意做这种尝试。而且,不仅是医疗档案的交换,每种应用都需要自己的标记。这种局限减缓了目前在线书店、邮购目录及其他交互式Web站点的发展步伐。
在网上购物过程中,如果要对订单中的数量及运输方式进行修改,或者想查看订单中某些数字的变化,您就需要让远处超负荷运转的服务器重新发一份新的网页过来。此时,您的高性能计算机只能坐等信息。因为它只知道处理〈H1〉和〈BOLD〉,不知道如何处理价格及选择运输方式等问题。此外,对Web搜索质量的不满也源于此,由于没有办法对价格等信息做标记,因此您就无法利用价格信息进行搜索。
新旧参半
从理论上讲,解决这些问题的方法非常简单:用标记标明信息是什么,而不是它看起来像什么。例如,一张衬衫订单的标记并不像HTML提供的那样,说明其是否为黑体或者是其行列的布局,而是标明它的价格、尺寸、数量和颜色等。随后,程序可以识别出该文档是一份客户订单,并且做它该做的工作:以不同的方式显示它,或者将它传送给计帐系统,或者在第二天将一件新衬衫送到订购者的家门口。
作为W3C工作组成员,我们于1996年开始策划这样的解决方案。我们的想法很有吸引力,但并非完全独创。过去,在进行印刷排版时,印刷工要在原稿上作出标记,给排字工以指示。这种"标记"不断发展,直到1986年,国际标准化组织(ISO)终于通过了一套创建新型标记语言的系统,这种语言被命名为标准通用标记语言,即SGML。这种描述语言的语言(也被称为"元语言")已被证明在许多大型出版应用中非常有用。事实上,HTML语言就是用SGML定义的。SGML的唯一问题是它过于概括。这种语言包含大量智能化的特性,其目的是为了尽量减少击键次数,但这要求必须对每个字节都加以说明,这使得SGML过于复杂,以致于Web浏览器很难处理。
我们通过删除SGML中的虚饰来创建XML,使其成为一种更流畅、更易理解的元语言。XML包含一组规则,任何人都可以根据这组规则创建标记语言。这些规则确保使用一个简洁的程序就能处理所有这些新语言,这种简洁的程序叫做"解析器(parser)"。让我们再次考虑那位想要将您的医疗档案用电子邮件发送给专家的医生,如果医学专家用XML定义出一种对医疗档案进行编码的标记语言(事实上,已经有一些组织正在着手进行这项工作),那么,您的医生的电子邮件就能够包括各种所需信息。
接下来,为任何计算机编写程序以识别这种标准的医疗符号并将重要的统计数据添加到数据库中就变得很简单了。正如HTML为每一位计算机用户阅读Internet文档创造了一种方式一样,抛开计算机系统的不兼容问题,XML也使创建一种所有人都能够读写的世界语成为可能。与大多数计算机数据格式不同,XML标记对人类也有意义,因为它只包含普通的文本,除此之外别无其他。
XML的统一能力来自于几条精心挑选的规则。规则之一是几乎所有的标记都总是成对出现。如同括号一样,这些标记总是将应用文本包括在其中。此外,标记也像引号一样,可以多级嵌套。
嵌套规则采用树状结构,使每个XML文档达到一定程度的简化。正如家谱一样,XML文档中的每一个图形和每一个文本代表其他元素的父亲、孩子或兄弟;相互之间的关系是无歧义的。尽管树不能表示所有类型的信息,但是它的确可以表示我们需要计算机理解的大多数类型的信息。而且,程序员使用树结构是非常方便的。如果银行结算单以树状结构表示,那么编写受理交易或显示支票清单的软件就非常简单了。
XML的统一能力还源于它对Unicode新标准的依赖。这种编码标准支持世界上所有以主要语言编写的混合文本。像大多数字处理程序一样,在HTML中,文档通常是用一种特殊语言写成的,可能是英语、日语或者阿拉伯语。如果您的软件不能阅读某种语言的特殊字符,那么您就不能使用该文档。有时情况还会变得更糟:由于编码的不兼容,为台湾用户编写的软件不能阅读中国大陆的文本,因为编码不兼容。但是,能正确阅读XML的软件就能处理这些字符集的任意组合。因此,XML使得信息交换不仅能在不同的计算机系统之间实现,而且能跨越国界和不同的文化背景交换信息。
结束万维网上的等待
随着XML的扩展,Web的响应时间将大大加快。目前,连接在Web上的计算设备,无论是功能强劲的台式机,还是小型便携机,所能做的不过是获得表单,填写后返回给Web服务器,直到完成一项任务。但是,随着XML中增加的结构化和语义化信息,这些设备将可以在现场进行大量的处理。这不仅能减轻Web服务器的许多负担,而且会极大地减少网络流量。
为理解其原理,请设想到在线旅行社查询7月4日从伦敦飞往纽约的航班情况。很可能您收到的航班列表是您显示屏长度的几倍,这时,您可以通过选择起飞时间、价格或航空公司来缩短航班列表。但是,要做到这一点,您可能不得不通过Internet向旅行社发送请求,并等待它的回答。如果航班列表是以XML的形式发送的,则情形将大为不同,旅行社将随航班记录发送一小段Java程序,您可以利用这个程序在几微秒钟内分类和筛选航班记录,而无须麻烦服务器。如果几百万的Web用户都这样做,那么所获得的整体效益将是惊人的!
随着Internet上越来越多的信息采用特定行业的XML标签作标记,寻找您所需要的信息将变得更加容易。而现在,如果通过Internet搜索"股票经纪人工作",其结果将使您淹没在广告之中,而且可能搜索的结果列表上所显示的工作寥寥无几--大多数信息被隐藏在新闻网站的分类广告业务中,搜索引擎无法获得。目前,美国新闻协会正在为分类广告建立一种基于XML的标记语言,这种语言将大大提高这类搜索的效率。
很早以前,图书管理员就发现了寻找信息的有效方法,不是查找信息本身,而是查找小得多的、更集中的、能够引导找到有用信息源的数据集,这就是图书分类卡片。这种与信息有关的信息叫做元数据。从一开始,XML项目的一部分就是为元数据创建一套配套标准。1998年2月完成的资源描述框架(Resource Description Framework, RDF)就能起到这种作用,它对Web数据的作用就像图书分类卡片对图书的作用一样。RDF元数据分布在整个Web中,它将使信息的的获取更快、更准确。
当然,除了搜索以外,还有其他方式可以找到信息。但是Web毕竟是一种"超文本",其数十亿的页面由超链接连接在一起,只要点击页面上的带下划线的字,您就能迅速从一个页面链接到另一个页面。当用XML驱动后,超链接将具有更多的功能。被命名为Xlink的基于XML的超文本标准将于今年年底由W3C分布。Xlink将使您能够从目标页面列表中选择您要链接的页面。其他类型的超链接可以在您点击的地方插入文字或图片,而不是迫使您离开页面。
也许最有用的是,Xlink将使作者能够使用间接链接,该链接指向中央数据库的条目,而不是链接到页面本身。当页面地址改变时,作者只需编辑一条数据库记录就能修改所有指向该记录的超链接。这将有助于消除由于超链接断开而产生的类似于"404 File Not Found"的错误。Xlink所具有的更有效的处理、更准确的搜索、更灵活的链接等功能,将使Web结构产生革命性的变化,有可能产生全新的信息访问方式。用户将发现这个新的Web比今天的Web更快、更强大、更有用。
需要的一些组件
当然,事情并非如此简单。XML并不能使任何人都设计出全新的定制语言,但设计好的语言是一种挑战,这不是轻易就能做到的。并且,设计语言仅仅是开始,对其他人而言,您的标记的意思并不明确,除非您编写文字说明来解释它们。对计算机而言,它也不明白标记的意思,除非您编写软件来处理它们。
只需简单地想一下就能明白其原因。如果教会计算机处理采购订单只需用标签做标记就行,那么我们就不需要XML了。甚至我们也不需要程序员了--计算机聪明得可以自己照顾自己。XML所能做的并没有这么神奇,然而非常有效。它是一种底层规则,解决了编程的细节问题,让兴趣相投的人们可以集中精力处理编程中的难点--制定协议以表示他们通常用于交换的信息。这不是一个容易解决的问题,当然也不是一个新问题。
不兼容的计算机系统不断扩张,几乎给人类活动的各个领域都带来了延误、费用损失和混乱,因此需要制定一些协议。人们希望不必使用同样的计算机就能交流思想或进行交易,为使这一理想成为可能,人们已经制定了许多有针对性的交互式语言。
在设计新的XML语言草案出现之前,设计者们必须在三件事上达成一致:允许使用什么样的标记?标记元素如何相互嵌套?以及如何处理它们。对于前两者,也就是语言的词汇表和结构,它们被文档类型定义(Document Type Definition ,DTD)所规定。XML标准并不要求语言设计者必须使用DTD,但大多数新语言都将使用DTD,因为它可以使程序员更轻松地编写能够理解标记并智能地处理标记的软件。程序员同时也需要一套指南,该指南以人类的语言描述所有标记的意义。例如,HTML有DTD,但是当程序员在编写浏览器或其他Web软件时,要参考几百页描述性的文字说明。
有关样式的问题
用户而言,重要的是程序能够做什么,而不是说明什么。在许多情况下,人们希望软件能够向读者显示用XML编码的信息。但是,XML标记并没有提示如何在显示屏或页面上显示信息。
事实上,这对出版人员非常有利。出版人员总希望能够"一次写入,随处发布",即根据需要,提取出版物中的内容以各种格式显示,既可以是打印的又可以是电子的。XML通过对内容做标记来描述其意义,从而使显示与内容相分离。出版人员可以采用"样式表"的规则为不同显示设备重新定义格式。目前,针对XML样式表开发的标准被称为可扩展样式表语言(Extensible Stylesheet Language),即XSL。有几种Web浏览器的最新版本都能阅读XML文档,并采用合适的样式表,在屏幕上对信息进行分类和格式化。除了基于XML的网站运行速度更快、更易使用外,读者可能根本不知道他所看到的是XML文档而不是HTML文档。
这种发布方式对视力有缺陷的人非常有利。样式表使他们可以将XML译为盲文或可听见的语音。这项功能还给想在汽车里冲浪的人带来了好处:他们将发现将页面转换为语音非常方便。
虽然Web起源于学术界,但推动其飞速发展的是商业,准确地说,是对未来所获商业利益的预期。最近出现的通过Web进行商品零售已经引起了广泛的注意,但是B-to-B的商务活动向在线发展的速度却受到限制。例如,通过制造过程的商品流需要自动化,但实际上,依赖于复杂的程序到程序的交互作用系统的运行状况并不理想,其原因是它们所依赖的统一处理过程并不存在。几个世纪以来,人类在商务活动中已经成功地采用了交换标准化文档的方式,如采购订单、发票、货物清单、收据等。文档能够在商务活动中起作用是因为它并不要求所涉及的各方知道对方的内部处理过程。每条记录所表述的信息正是其接收者所需知道的信息,除此别无其他。也许,这种交换文档的方式也是在线进行商务活动的最佳方式。但是,HTML并不是为此项任务而创建的,相反地,XML是为文档交换所设计的。而且越来越清晰的是,全球化的电子商务将主要依赖于协议流,几百万条协议以XML文档形式在Internet上传送。
这样,对用户而言,由XML驱动的Web将更快、更友好、更适合进行商务活动。另一方面,Web站点设计者将发现越来越需要XML。大批程序员将被要求尽量开发新的XML语言。而且,虽然自学成才的网络黑客还没有消失,危险依然存在。将来的Web设计者不仅需要精通如何创建文字和图形,而且还要精通如何构建多层次独立的DTD系统、数据树、超链接结构、元数据和样式表,也就是为第二代Web构建更加健壮的基础结构。
---- $$ $$$$$$
$$ $$
$$ $$
$$ $$
$$ $$
$$$$$$ $$$ |
|