-
关于XML的四个神话
作者: Jon | ||
当XML被W3C批准后迅速在1998年2月进入历史舞台,被称为"当年突然涌现的技术"。它被称为HTML的继任者,还被有些人称为结构化数据交换的未来混合语。 由于XML是从它W3C开始的阴暗处涌现出来的,也许不可避免地,这一新数据格式将象它吸引狂热爱好者一样快地开始产生错误概念。在本专栏中,我将在一些关于XML的神话成为永久性错误理解前澄清它们。 神话1:XML是由微软领导的共同成果 XML是一个共同成果,但不是微软的。实际上,XML是由一个Sun微系统公司组织的标记语言专家小组提出的,以开发历史悠久的ISO标准SGML用于Web的一种形式。 微软确实是XML工作中的一个主要参与者,但是其它一些大公司也是如此(Sun,惠普,Netscape, Adobe和富士及施乐),还有主要的SGML厂商和系统集成商(ArborText,Inso, SoftQuad,Grif,Texcel和Isogen),学术团体的代表(NCSA和Text Encoding Initiative),早期使用者(DataChannel 和Vignette),和世界上最主要的SGML专家之一James Clark,他是W3CSGML的技术领袖。 关于XML,令人惊异的是所有这些人和组织都将个人和公司议事日程放在一边,合作建立一个天生开放的标准,完全由用户需求驱动。这些需求包括: l 可扩展性,以定义需要的新标记。 l 结构,以表示任意复杂程度的数据。 l 校验,以检查数据的结构正确性。 l 媒体无关性,以用多种格式发布内容。 l 厂商和平台中立,以用标准的商业软件甚至简单的文本工具处理任何满足标准的文档。 虽然我不得不钦佩微软对XML概念的熟练使用和推销,但是XML并不属于微软。XML属于世界。 神话2:XML是HTML的一个扩展 早期对XML的概括已导致许多人相信XML仅仅是一种通过增加新标记来扩展HTML的方法。实际上,XML和HTML在标记语言中处于完全不同的层次。HTML是一种标记语言--一套具有标准意义的标准分隔符,可放到文档中以指示文档中特定部分的角色。例如,在一个HTML文档中<H2>和 </H2>之间的任何东西都被理解为一个第二级文档标题。 标记语言 对标记语言的经验只局限于Web的人们经常惊讶地得知HTML只是许许多多标准标记语言中的一种,这些语言在特定行业内已被开发多年。例如,航空业有一种飞机维护手册的标记语言,称为ATA-2100,半导体行业有一种用于电路数据的标记语言,称为PCIS,而计算机行业有一种用于软件文档的标记语言,称为DocBook。 这些标记语言中有些比HTML使用得更久,其中许多面向的是要解决的问题不同的方面。例如,考虑这段HTML: <H2>Second-level heading</H2> 这是一段很可能属于上面标题的文本。</P> 一段类似的DocBook可能看起来象这样: <SECT2> <TITLE>二级标题</TITLE> <PARA>这是一段肯定属于上面标题的文本。 我们知道这一点是因为它们都包含在同一个SECT2元素内。 </PARA> </SECT2> 虽然这些不同的标记语言有它们的不同之处,所有这些,包括HTML,在三方面都是类似的。 l 每一个都定义了一套有标准化含义和标准化使用规则的标准标记--换句话说,一个标准化的语法。 l 每一个都设计为对某一特定类型的文档或数据工作得最好。 l 都使用有12年历史的国际文本处理标准SGML定义它们的标准标记集和语法。 所有这些语言看起来也相似,因为它们都使用熟悉的尖括号,继承自SGML的具体引用句法。 SGML层 根据上面的描述,应该很清楚SGML本身属于一个不同于任何用SGML定义的个别标记语言的概念层,SGML和特定标记语言的区别经常被总结为SGML是一种元语言而不是一种语言。这是一个很不精确的概括。SGML不象真正的元语言那样抽象,如巴克斯/纳尔范式(BNF),它是用于定义程序设计语言的。不过,称SGML为元语言确实使人抓住了关键:SGML不是一种特定的标记语言;它是一种定义标记语言的语言。 理解XML的关键因素是它属于SGML层,而不是HTML层。XML是SGML的一种简化形式,而不是HTML的一种扩展形式。XML和SGML的区别是XML的设计者去除了许多SGML的高级特性,这些特性使得难以在一个Web浏览器中实现一个SGML的完全解析器。 但是基本思想是一样的:XML是一种允许创建无限种不同用途的不同标记语言的技术。XML的关键--和它变得如此普及的原因--是所有可用它定义的不同的特殊用途语言都能被一个标准化的处理程序解析,这一程序小得可以内嵌入每一个Web浏览器中。 不理解这一区别的人们往往得出一个结论,认为一个对XML敏感的应用将允许他们简单地在他们的HTML文档中到处撒上新的标记。试图用这种方式"扩展"HTML将使我们已得到的一团糟更加混乱。 神话3:XML可以自己驱动Web浏览器 记住HTML概念是一种包含相对小标准标记集的标记语言,与一些多少标准化的行为相关。XML概念是一个无限大的可能标记的集合,相关的行为根本没有标准。行为的规范必须来自其它某个地方。在发布时,这通常是一个样式表,但是在其它领域可以象JavaBeans一样柔性,或者象一种行业标准协议一样专门,程序员在其上编写标准化应用。 句法不是语义 XML支持者将这一点总结为XML定义句法而不是语义。一些理论家则反对说这一简单化的表述忽视了XML句法对象和构成它们所表示的XML数据(如元素和属性)的语义联系。然而,"句法而非语义"这一口号试图强调的更多,更简单:不像HTML标记,XML标记没有预定义的含义。意义或行为必须由以程序的运行条件或者脚本或者用样式表的声明条件甚至古老而好用的普通文本提供。 当预期的XML用户可怜地询问XML如何在他们的Web浏览器上显示时,关于这一点的混淆就很明显了。回答是它并不显示--至少不是靠它自己。 要在一个浏览器内仿效现在对HTML所做的,你必须单独提供HTML作为一个整体但是难以管理的整体所提供的:你必须提供一个文档的内容(在XML中表示)和对它的处理,而这必须用程序定义(用脚本)或者声明它(用样式表)。 样式表 当前缺乏一种既使对于XML也足够强大同时又易于使用的样式表语言,这阻止了XML作为Web文档的普遍使用。为HTML开发的样式表语言层叠样式表(CSS)可用于为XML文档应用样式,但它不具备基于XML发布通常所需的转换和生成结构(例如目录)的能力。 文档样式语义和规范语言(The Document Style Semantics and Specification Language)--为SGML设计的ISO样式表语言--具有高级发布项目所需的功能。但是DSSSL(与"whistle"同韵)有一个基于模式(Scheme)程序设计语言的句法,许多人会发现很难学习。它也缺乏一个丰富的声明层,这使得几乎不可能保证独立开发的样式表编辑器能互操作。 这正是扩展样式语言(XSL)的切入点。作为一开始的XML大计划的一部分,XSL是一种新的语言,将结合DSSSL的功能和XML的简单性以及层叠样式表已建立的"样式属性"术语。1998年1月建立的一个W3C XSL工作组正忙于定义这一使基于XML的Web发布成为可能的语言。 虽然一个最终的XSL规范还需要几乎一年时间,第一个XSL工作草案现在已经在W3C Web网站上发布了,网址是http://www.w3.org/TR/WD-xsl。随着它的进入新世纪,这一初期规范值得任何想进行电子发布的人审慎关注。 神话4:XML只是针对数据的 由于我们还没有一个足够强大的样式表语言以使XML说明它作为一种发布方法的优越性,第一批XML应用是基于它自己能做的事情的:传输结构化数据。 一个单一的、可被人阅读的句法 通过串行排列任何种类的结构化数据--包括相关数据--以一种使其能用简单、随处可见的标准化工具处理和显示的方式,XML给我们提供了一个单一的、人可阅读的句法。一个标准的、易于处理的串行数据格式蕴涵的更大意义是难以想象的,但是它们显然将对电子商务有巨大的影响。另外,看来很清楚,电子商务将最终在一般意义上成为商务的同义词。 XML之于数据正如Java之于程序,将使数据与平台和厂商无关。这一能力正在推动一波XML中间件应用,1999年初将开始随处可见。然而,XML支持数据和元数据交换的能力不应使我们的注意力从XML最初的设计目的上转移。XML的设计者考虑的不仅仅是一个数据的传输层,而且是一个通用的媒体无关的发布格式,这将支持使用每一种语言的所有技术水平的用户。 媒体无关的发布 媒体无关的发布实际上是一个比数据交换要难的多的问题。事实上,可以说一般意义上的发布的需求是数据交换需求的超集。XSL的到来将使通用的发布解决方案成为可能,其后果还很少有人认识到。 理解XML革命性潜力的关键在于它只是一个更宏伟图景的一部分。XML本身可以提供标准化的数据库和电子表格的交换格式。这很好。但是XML和XSL在一起也可以取代现有的字处理和桌面出版格式。它实际上可以给我们一个单一的、完全国际化的格式,具有几乎无限的打印和在线发布的能力,在所有产品和所有平台上都完全能互操作。这一点所意味的远远超越了数据交换和Web。 标准化发布对用户意味着什么 XML和XSL的组合可能比今天的HTML要复杂和难以处理的多,所以它最初将由一些手工处理大而专业化的出版应用的专家使用。这些应用将要求最高程度的自动化和媒体无关性--报纸,工商行名录,百科全书,产品目录,电视节目表,等等。 只有当普通字处理和桌面出版程序开始用XML和XSL的组合而不是专有格式来存储文件时,标准化的处理才会开始从这一专家的专业化群体向外扩展。这不是一个技术问题,而是一个经济问题,因为出版工具的大厂商在历史上依赖于专有格式以限制他们的用户。只有当普通用户开始意识到标准化、开放的格式的益处,并且开始要求对其的支持时,厂商才会向其转变。 一个标准化的数据和表达格式的好处是无法抵御的。它们包括: l 应用和平台间内容和样式的完全互操作性; l 内容创建者脱离厂商对生产工具的控制; l 用户选择他们自己对内容查看方式的自由。 l 容易创建强有力的处理大规模内容的工具; l 独立软件开发商的一个公平竞争的场地;和 l 所有媒体上的真正国际化发布。 我相信用户对这些好处的意识将最终迫使厂商支持标准化方法,正如用户对访问因特网的需求迫使厂商支持Web一样。 作为其后果,许多种类的桌面软件应用生产者和消费者之间的关系将重新建立,这将被证明为对我们大家都有巨大的好处。这将意味着少数大公司对市场的控制的终结,另外,可能更重要的是,少数大国对市场的控制的终结。 结果将是更好的产品和人类之间更好的通讯。 |
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比