这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很
少有人真正理解其含义。XML的推崇者认为它能够解决所有HTML不能解决的问题,让
数据在不同的操作系统或应用之间进行灵活交换。确实,所有的观察家们都同意XML
将引发一场内容发布和知识交换的革命。谁先进入这个领域,谁就能够大获其利。
这里的20个有关XML的热门问题能够让你成为一XML“专家”,或至少让你能够在
今后看准XML的发展方向。
1.什么是XML?
XML开发者会告诉你XML不是一种语言,而是一个定义其他语言的系统. 你可能已
经听说过, 或使用过这些语言中的一种,--如Microsoft支持"推技术" 的 Channel
Definition Format (CDF).
正从事于XML相关建议工作的W3C, 称XML为"表达数据中结构 的共同语法". 结构
化的数据指的是其内容,意义或应用被标记的数据. 例如, HTML中< H1>标记指定文本
为某一字体和大小, XML的标记将明确确定信息的种类: < BYLINE>标记可以识别文档
的作者, < PRICE>标记可以在一个存货清单中包含某一项目的成本 .
通过将结构,内容和表现分离, 同一个XML源文档只写一次, 可以用不同的方法表
现出来: 在计算机屏幕上, 在手提电话显示屏上, 在为盲人服务的设备上翻译成语
音, 等等. 它可以在可能开发的任何通讯产品上工作. 一个XML文档因此可以比其书
写时的作者和显示技术生存得更久.
所以, XML将不仅限于Internet, 例如, 可以服务于整个出版业, 特别是对于想
制作可出现在多种媒体上的文档的人. 一些使用Standard Generalized Markup
Language (SGML)多年的大型文档出版商将转向XML. 还有, 独立于平台的XML是为
Web开发的, 这是它将最具影响的地方.
DOM
XML在Web的真正实力在于它是如何与Document Object Model (DOM)交互的.
DOM是定义访问文档中数据的机制的界面.
使用DOM, 程序员可以用一个标准的方法写动态的内容. 换句话说, 他们可以使
用它来使浏览器文档树中的一部分特定内容按照一定的方式表现, 例如, 产生一个小
效果, 当用户将鼠标移至文字上时, 这些文字变成蓝色. Netscape Navigator 和
Microsoft Internet Explorer 都有他们各自的DOM ,但是他们都称将在其下一版
本的浏览器中支持W3C 的标准DOM.
2.XML何以重要?
Web领袖之间的说法是内容至上.不幸地, 内容经常和其表现紧密结合. 请问你多
少次在一个网站上遇到一个小小的提示, "最好在800x600像素的分辨率上显示"?
XML将帮助解决以上问题, 因为网站建造者不用再指明在哪里显示什么, 而是指
明文档 的结构. 例如, 你可以说明文档的标题, 作者, 关联文档的清单, 等等. 然
后, 任何一个有XML浏览器的设备都可以给出最适合它的文档版本, 这样的设备可以
是一个掌上型计算机, 置顶盒, 或高速的工作站.
但是, 也许XML的最佳特性是其内在的可扩展性. 公司和组织能够扩展XML来满足
新的挑战和应用. 一个基于XML的语言已经在使用--微软的Channel Definition
Format (CDF)-- 还有更多将出现, 包括 Resource Definition Format (RDF)
和 Open Software Description (OSD).
XML 也允诺成为交换数据和文档的标准机制. 例如, XML可能成为不同厂商的数
据库在Internet上交换信息的一种方法.现在准确地决定XML的方向还有一些早. 但
是, 其各种可能性是令人敬畏的,这就是为什么围绕着XML有如此多的激动的一个重要
原因.
3.SGML、HTML和XML有什么联系?
Standard Generalized Markup Language (SGML) 是在文字处理应用中表达
数据的一个方法. 它已经出现十多年了, XML 和 HTML 都是从SGML 发展而来的文
档形式. 因此, 它们都有一些共同点, 如相似的语法和带括弧的标记符的使用. 但
是 HTML 是SGML的一个应用, 而 XML是SGML的一个子集.
区别是重要的. 基本上HTML不能用来定义新的应用, 而XML可以. 例如,
Resource Description Format (RDF) 和 Channel Description Format (CDF)
都是使用XML定义的应用. XML和HTML更象表兄弟, 而不是亲兄弟.
事实上, XML和SGML是兼容的 -- XML文档可以通过任何SGML制作或浏览工具阅
读. 但是, XML没有SGML那么复杂, 它是设计用于有限带宽的网络的, 如Internet.
XML规范的合作者Tim Bray说, XML的设计出发点是取SGML的优点, 去除复杂的部
分, 使其保持轻巧, 可以在Web上工作.
HTML,SGML和XML将继续用于其合适的地方, 它们中的任何一个不会使其他一个
废弃. HTML仍是在Web上快速出版数据的最简单的方法, 大部分短期的数据, 如会议
议程或广告宣传册. 如果数据会长期使用, 并且需要更多的一些结构, Web建造者将
愿意使用XML. 不同于HTML和XML, SGML可能永远不会在Internet上被广泛接受, 因
为它从来没有为某个网络协议的需求而设计或优化过. 对于高端的, 复杂结构的出
版应用, SGML将继续适用.
4.如何实现XML?
XML将以几个不同的方式应用. 一个是在人机之间交换数据, 如从Web服务器至
用户的浏览器. 另外一个是在不同的应用之间交换数据, 或者是机器之间交换数据.
在这些情况下, 你都可能需要三层架构: 后端数据库, 针对数据的处理逻辑的中
间层服务器, 以及数据进一步显示和处理的客户端. 数据库可以从多个数据来源接收
信息, 可能已经是XML格式的数据. 中间层然后聚拢数据并在最终的表现层上公布.
现在, 网页有时候以这种方法传送 --CNET的NEWS.COM 从一个数据库中发表数
据. 但是要获得一页的新的视图, 如NEWS.COM的新的“打印机友好”选项, 服务器
必须产生一个新的页面. 一份适当格式化的XML文档将允许客户端的应用为不同的媒
体修改文档的表现形式, 比如为打印机.
5.什么是DTD?
文档类型定义 (DTD) 是一套关于标记符的语法规则. 它告诉你可以在文档中使
用哪些标记符, 它们应该按什么次序出现, 哪些标记符可以出现于其它标记符中,
哪些标记符有属性, 等等. DTD原来是为使用SGML开发的, 它可以是XML文档的一
部分, 但是它通常是一份单独的文档或者一系列文档
因为XML本身 不是一种语言, 而是定义语言的一个系统, 它没有象HTML 一样
拥有一个通用的DTD. 相反, 想使用XML进行数据交换的工业或组织可以定义它们自
己的DTD.
如果一个组织想用XML来标识仅在内部使用的文档, 它可以创造自己私有的DTD.
比如 Wall Street Journal Interactive Edition 拥有一个 DTD 来详细说明每
一版, 其中有关于页, 文章, 概要, 标题下署名等等的信息. 刊物目前使用SGML
DTD (称作Dow Jones Markup Language), 但是它也正在开发一个XML版本.
关于DTD并不是没有争议的. 一些人感到它给商业业务增加了实实在在的价值,
而一些人感觉它限制了创造性. 还有一些人认为DTD有用, 但是还做得不够. 微软正
尝试用它的XML数据提议来解决上一个抱怨, 但是批评者说这些改进应该在DTD规范
本身进行.
微软的schema
一些供应商, 包括微软, 已经提议了替代DTD的一个方法, 称为schema. 他们
已经将其以XML数据提交给了W3C. 就象DTD, schema提供了文档的规则, 并指出用
什么标记符, 标记符的属性, 之间的联系, 等等.
但是, 不同于DTD, schema可以定义数据类型. 例如, DTD可能有一个标记
符 , 而标记符之间的内容可以是数字或字符串. Schema 可以规定只输入数字.
这个方法显然有其优点, 特别是用于应用,对象,或数据库之间的数据传输. 唯
一的问题是它将成为DTD规范, 还是XML的一个扩展.
6.什么是格式完整和有效的文件?
基本上有两类相关的XML文档: 构造良好的和有效的. 构造良好的 XML文档遵守
XML语法的一般规则, 这些规则比HTML和SGML的更为严格. XML的字符数据决不会吊
在那里, 没有某种结束标识符, 或者是象< MYTAG>< /MYTAG> 成对出现的 结束标
识符, 或者是一个特别的在右尖括弧前带有一个斜杠的 空元素 标记, 比如
< MYTAG/>; XML 标识总是以左尖括弧或 & 开始; 元素类型和属性名称是大小写区分的; 属性需要引号; 等等.
有效的 XML 文档遵守某个特定的 文档类型定义 (DTD). 确认XML文档正确性的
工作主要由制作出版工具承担, 而XML浏览器为读取XML文档, 只需要检查其构造的良
好性. 这样, 制作工具中的解析器得要检查构造良好性 和 有效性, 而浏览器仅要考
虑寻找已经构造良好的XML.
7 如何在浏览器中阅读XML?
阅读XML文档的工具一般称为XML解析器, 虽然其更正式的名称是XML处理器. XML
处理器将数据传送到应用软件, 以做制作, 出版, 查询, 或显示. XML不给应用软件
提供 应用程序接口 (API), 它只是把数据传给应用软件. XML处理器不解析非构造良
好的数据. Netscape 和 Microsoft 都已经将XML解析器包含在其浏览器中, 或正计划将其包含到浏览器中.
XML开发者团体提供免费的XML阅读器和解析器, 来应用到应用软件或XML制作软
件:
Textuality的 Lark, 来自XML规范的作者之一.
Microstar Software的 ?lfred, 一个基于Java的解析器.
DataChannel的 DXP, 前身为著名的NXP, 或已经增加了API的Norbert的
(Mikula) XML 解析器.
8 RDF和XML有何联系?
如果XML是说语言的能力, XML应用软件则是特定的语言. 资源描述格式
(Resource Description Format RDF) 是这样的一个应用软件: 使用XML语法的
数据建模语言.
RDF是描述和访问数据的一个方法. 这意味着RDF是关于数据的数据, 或者说元
数据. 在Web中, 这些元数据将被用于建立标准的站点地图, 更精确的搜索结果,
和分层次的主题索引.
RDF也允许智能书签, 当被索引的网页变化时,书签随之发生变化. 如果你跟踪
内容定期更新的站点, 比如CNET的 NEWS.COM, 将很有用.
对于网站建造者, 建立可被搜索引擎引用的其网站内容的元数据并不困难. 我
们很快就会有商业化的软件, 来自动产生给定站点的RDF文件.
XML元数据也将活跃描述和评估数据的市场. 有许多评级机构 在网上出现, 他
们评估一切数据, 从保护孩子安全的站点到最佳电影或葡萄酒站点. RDF描述评级
机构可以使用的等级的语法. 人们将选择有他们感觉最合适的词汇表的评级机构,
词汇表指的是评级机构给不同类型内容评级使用的特别的一套术语 -- 从性和暴力
到葡萄酒酸度.
9 Netscape浏览器中如何实现XML?
Netscape将在Communicator/Navigator 5.0中以一个代号为Aurora的交付部
件来支持XML元数据. Aurora利用RDF 来获得Netscape所说的"桌面信息全面集成."
Aurora在网络, 桌面和数据库之间查找和管理信息. 它将在桌面上以"窗口"菜单
的界面出现, 会聚集指向当前项目, 研究主题, 或日常活动等资源的指针. RDF使
Aurora的导航条指向不同数据类型(文字处理文档, 表格数据, 电子邮件消息, 数据
库内容)的本地文件, 也指向Internet 或 intranet 服务器上的资源(搜索和查询的
结果, 书签链接, 等等).
一个读取RDF的XML解析器将是 Netscape 5.0 版浏览器的一部分, 并且在最终
产品交付之前会出现在某个beta版本中. 除了这个初始的RDF实现, Netscape正计划
将一个通用的XML解析器包含在浏览器中, 而其浏览器可以和其他的XML应用软件一起
工作, 比如 Shakespeare markup (一个早期的 XML 应用软件), Chemical
Markup Language (CML), 和 MathML, 一个正成为W3C推荐的数学标识语言.
"我们要使 Navigator 成为一个 XML 平台," Netscape 原理工程师R.V. Guha
说. Guha 原来开发过 MCF (MetaContent Format), MCF 后来加入了RDF规范.
10 Microsoft浏览器中如何实现XML?
微软的 Internet Explorer 4.0 是第一个实现XML的 Web浏览器. 微软提供了
一对XML处理器: 浏览器所携带的用C++写的解析器, 和一个Web建造者可以从中下载
和加入他们自己的应用程序的Java解析器的源代码.
Java解析器是一个有效的 解析器, 就是说它根据一个文档类型定义 (DTD) 或
schema 来进行检查. 为了提高性能, 浏览器所带的C++ 版的解析器是一个非有效的
解析器.
据微软的产品经理Steve Sklepowich称, 这两个解析器都是"通用的", 因为它
们不依靠特定的XML应用, 如Channel Definition Format. 由于XML数据和其表现
分离, 在一个Web浏览器本身实际显示XML的能力需要 style sheet, 例如 XSL
(Extensible Style Language).
同时, 微软使用了它所称的XML Data Source Object, 或叫 XML DSO. 它应用
了动态 HTML的数据捆绑能力, 将一端的XML数据和另一端的HTML数据相链接. (关于
数据捆绑的例子, 可以查看 BUILDER.COM 的 Browser Play ground.) IE 4.0 访
问XML文档, 从中查询数据, 然后作为HTML显示出来.
微软也使用了 XML Object Model (XML OM)来让开发者与浏览器中的XML数据
进行交互. 它的实现是通过将HTML作为基于Document Object Model (DOM)的对象
显现, 尽管HTML 和 DOM 并非直接兼容. DOM 让脚本和程序访问结构化的XML数据.
Sklepowich说, 虽然目前在微软, XML的重心在浏览器, XML将最终出现在"任何
HTML已经出现了的地方". CEO Bill Gates 已经公开宣布微软Office 未来的版本将
支持 XML, 而且公司也计划支持电子邮件包和制作XML工具的标准.