电脑报精华 · 2000 年 · 2000wl056

Web的新生命——XML

Web的新生命——XML

1996 年11月,波士顿“SGM”世界年会产生一项重大变革:与会代表一致公认将目前 Internet Home page 撰写标准“HTML”宣告终结,取而代之,采用最新电子文件格式化通用标准——可延伸的标识语言“XML”(Extensible Markup Language)。以下我们将向你介绍有关XML的情况。
根据美国电子商务专家预测,XML可以改善传统网页设计语言HTML的描述方式,未来将可取代HTML成为新一代的网页标示语言,这转变将革命性地改变以Web为基础的电子商业应用型态。利用XML所具有的可延伸性以及自我描述(slef-descriptive)特性,Web文件可以在企业间的应用程序中自动传输、处理及储存,不同厂商的电子商品可以在同一个使用者界面同时展现,资讯的搜寻变得更为精确快速,不同系统间可以流畅的互通,而中小企业也可以轻易享受EDI的好处。
另据微软官员透露,微软公司已经完全加入XML支持者的行列,该公司代号为Shiloh的下一代数据库软件将支持XML;已经将XML集成到Microsoft Office 2000中,这种软件以XML格式存储Word,Excel,PowerPoint以及其它类型的文件;今年3月发布的Internet Explorer 5也广泛使用了XML。其公司的XML产品主管Dave Wascha说:“XML确实影响了所有的软件产品系列,我们仍然在观察它所能带来的好处。”
Netscape 新版本也肯定会支持XML。其他公司,包括Adobe、ArborText、Sun 和Xerox 也宣布支持XML。
所以,XML 将给 Web 注入一股新的生命。它带来的应该是一个全新的视野,一种对于整个电子商务架构在观念上的颠覆。
一、从 HTML 到 XML
其实,早就有一个全世界标准的标识语言,可以用来定义某一类文件格式标志,那就是电子通讯文件交换格式标准语言SGML(Standard Generalized Markup Language)。它是一个国际性标准(ISO 8879),用来形容和定义结构化的电子文件,在1980年代就制订了。不过,由于SGML太过于详细和复杂,所以一直没有被广泛地采用。
Internet 的广泛应用,需要人人都易上手的描述语言。作为SGML 的子集,超文本标识语言 HTML(Hyper Text Markup Language)应运而生。它受到Internet和全球资讯网热潮的推波助澜,很快地就成为在网上制作页面的标准语言格式。
XML也是从SGML所衍生出来的简化格式,它取名叫做可以延伸的标示语言(Extensible Markup Language)的原因主要是有别于HTML那种单一固定的语法,要让制作页面时,有一个更具弹性、更容易添加新功能,而又不失统一标准的语言格式。相对于HTML 只是SGML 衍生出来的一种文件格式,XML 则免除了SGML 的繁复但仍保持其威力,这使SGML 的优秀品质能方便而直接地被用在Web 开发上。
严格说起来,XML本身不是一个单一的标示语言,它是一种元语言(meta-language),可以被用来定义任何一种新的标示语言。像HTML之类的传统标示语言,是用来定义某一类文件的格式,以便于展示或列印;而XML则是可以用来创造类别文件的格式定义,也就是在XML之中可以创造出很多不同的标示语言,用来定义不同的文件类别。
XML 继承了SGML 具有的可扩展性、结构性及可校验性,与 HTML 语言相比,区别主要在三方面:
(1)可扩展性方面:HTML 不允许用户自行定义他们自己的标识或属性,而在XML 中,用户能够根据需要,自行定义新的标识及属性名,以便更好地从语义上修饰数据。
(2)结构性方面:HTML 不支持深层的结构描述,XML 的文件结构嵌套可以复杂到任意程度,能表示面向对象的等级层次。
 (3)可校验性方面:HTML 没有提供规范文件以支持应用软件对HTML 文件进行结构校验;而XML 文件可以包括一个语法描述,使应用程序可以对此文件进行结构确认。
需要指出的重要一点是,HTML 与 XML 二者相互之间并不是竞争关系,而是互相补充的关系。各种浏览器都将能够处理这两种语言,而且将来的HTML 标准可能允许在同一文档中混合使用 HTML 和 XML。
二、XML语言结构
XML有许多部分,但是只需要了解其中的三个就可以了解它是怎样工作的。它们是,文档类型定义(DocumentTypeDefinition:DTD),也就是XML的布局语言;可扩展的样式语言(ExtensibleStyleLanguage:XSL),也就是XML的样式表语言;以及可扩展链接语言(ExtensibleLinkLanguage:XLL)。
1.文档类型定义(DTD)
DTD规定文档的逻辑结构。它可以定义文档的语法,而文档的语法反过来能够让XML语法分析程序确认某张页面标记使用的合法性。DTD定义页面的元素、元素的属性以及元素和属性之间的关系。例如,DTD能够规定某个表项只能在某个列表中使用。
理想的定义应面向描述与应用程序有关的数据结构而不是如何显示数据。换句话说,应把一个元素定义为一个标题行,然后让样式表和脚本定义如何显示标题行。
DTD不是强制性的。对于简单应用程序来说,开发商不需要建立他们自己的DTD(因为没有意义);他们可以使用预先定义的公共DTD,或者根本就不使用。即使某个文档已经有了DTD,只要文档是组织良好的,语法分析程序也可以不对照DTD来检验文档的合法性。服务器可能已经执行了检查,所以检验的时间和带宽将得以节省。
2.可扩展的样式语言(XSL)
XSL是用于规定XML文档样式的语言。XSL能使Web浏览器改变文档的表示法,例如数据的显示顺序改变,就不需要再与服务器进行交互通信。通过变换样式表,同一个文档可以显示得更大,或者经过叠折只显示外面的一层,或者变为打印格式。可以设想一个适合用户学习特点的技术手册,它为初学者和更高一级的用户提供不同的样式,而且所有的样式都是根据同样的文本产生的。
XSL凭借其可扩展性能够控制无穷无尽的标记,而控制每个标记的方式也是无穷尽的。这就给Web提供了高级的布局特性。例如旋转的文本、多列和独立区域。它支持国际书写格式,可以在一页上混合使用从左至右、从右至左和从上至下的书写格式。
正如XML介于HTML和SGML之间一样,XSL标准介于CSS和SGML的文档样式语义和规范语言(DSSSL)之间。
DSSSL(DocumentStyleSemanticsandSpecifi-cationLanguage)定义格式化对象的全特征模式。由于DSSSL使用框架语法,而且是很复杂的,所以DSSSL未能得到推广应用。相比较而言,CSS使用简单的模型(例如它不能将元素再排序)。XSL支持DSSSL流对象和CSS对象,使用XML语法,并对复杂的任务提供进入ECMAScript的转码,而且允许扩展。实现从CSS到XSL的映射是可能的,内容开发商无需学习这种语言的全部。
3.可扩展链接语言(XLL)
XLL将支持目前Web上已有的简单链接,并且将进一步扩展链接,包括结束死链接的间接链接以及可以从服务器中仅查询某个元素的相关部分的连接符"|"。
XML工作组组长JonBosak说,所谓超文本标记语言HTML只执行历来与超文本系统概念相关的极少功能,只支持最简单的链接形式,即指向硬编码位置的单向链接,这与XML相比有很大的差别。在为XML所设想的真正的超文本系统中,所有典型的超文本链接机制都将得到支持,包括:
枣与位置无关的命名;
枣双向链接;
枣可以在文档外规定和管理的链接;
枣n元超链接(如环路、多个窗口);
枣集合链接(多来源);
枣Transclusion(链接目标文档是链接源文档的一部分);
枣链接属性(链接类型)。
这些可以通过目前尚在开发中的XLL来实现。由于XML以SGML为基础,XSL以DSSSL为基础,所以XLL基本上是Hytime(超媒体/基于时间的结构语言,ISO10744)的一个子集。它还遵循文本编码倡议(TextEncodingInitiative)规定的链接概念。
三、XML应用范围
XML是一种网络标准,能够简化互联网和企业网上的数据交换,自1996年开发以来已取得了巨大进展。
按照XML 工作组的Bosak 的看法,XML 的应用范围可分为4大类:
(1)要求Web 客户机在两个或多个不同的数据库之间传递信息的应用;
(2)希望将Web 服务器的大量处理负荷转移给Web 客户机的应用;
(3)要求Web 客户机把同一数据以不同的表现方式提供给不同用户的应用;
(4)适应特定用户需求的智能Web 工具应用。
电子商务属于第一类应用,尤其是以电子数据交换(EDI)为基础的电子商务。XML赋予Web 数据的结构使其更容易添加上数字签名,同时更容易对文档或文档的一部分进行加密。W3C数字签名倡议从事的正是XML 的安全和认证研究。在要求自动化和信息重复使用的其他应用方面,XML也将对HTML有所补充。将来不管什么时候,从HTML 向XML 的过渡将是顺畅的,不会给用户带来任何不便。
四、制作XML文件
我们以一份菜谱的例子开始。
我发明了一些可以最好地描述菜谱内容的标记符如、等,并把它们组织起来,用文本编辑器写了下来,文档的后缀是.xml。
<?xml version="1.0"?>
<list>
<recipe>
<author>Carol Schmidt</author>
<recipe_name>Chocolate Chip Bars</recipe_name>
<meal>Dinner <course>Dessert</course>
</meal>
<ingredients>
<item>2/3 C butter</item>
<item>2 C brown sugar</item>
<item>1 tsp vanilla</item>
<item>1 3/4 C unsifted all-purpose flour</item>
<item>1 1/2 tsp baking powder</item>
<item>1/2 tsp salt</item>
<item>3 eggs</item>
<item>1/2 C chopped nuts</item>
<item>2 cups (12-oz pkg.)semi-sweet choc. chips</item>
</ingredients>
<directions>
Preheat oven to 350 degrees. Melt butter;
combine with brown sugar and vanilla in large mixing bowl.
Set aside to cool. Combine flour,baking powder,and salt;
set aside.Add eggs to cooled sugar mixture; beat well.
Stir in reserved dryingredients,nuts,and chips.
Spread in greased 13-by-9-inch pan.
Bake for 25 to 30 minutes until goldenbrown; cool. Cut into squares.
</directions>
</recipe>
</list>
这就是一份可以接受的XML文档 ,它告诉了你XML是什么:把数据以一种有实际意义的方式进行组织。
表面上看,XML 文件与HTML 文件比较相似,都以一对相互匹配的起始和结束标记符来标记信息,但二者功能不同,HTML 的标记符用来显示数据,XML 的标记符则是描述数据对角,后者可以多种方式显示,这和把地址簿的信息放在数据库的字段和记录中而不是放在字处理器产生的清单中的道理一样,数据库可以让你把地址簿中的信息合成到标签、信封、信件或其它任何想要的载体上面。最终,就是把这份 XML 菜谱文件合成到一种表现语言中,如HTML或CSS 上显示出来。
XML 的标记符也可以由其他应用软件进行深入的处理。进一步说,你还可以告诉其它程序如何使用这些有意义的标记符;也可以通过编码把标记符中的内容放入数据库的某个域中,然后把它输出到一本书的硬拷贝中;还可以用一个支持XML的字处理器使网页的出版轻而易举;等等。这就是XML的本质:使标记对人和机器都可读。
从例子可以看出,一个XML文件必须满足以下三项基本规则:
1.文档以XML定义<?xml version="1.0"?>开始。1.0表示其版本编号。
2.有一个包含所有其它内容的根元素,如上面例子中的<list>和</list>标记符。
3.所有元素必须合理地嵌套,不允许交叉嵌套。
上面的例子中,几个<item>元素被合理地嵌套<ingredients>和</ingredients>标记符中。但是下面的标记却有严重的问题:
<ingredients><item></ingredients>chocolate chips</item>
于是"chocolate chips"没有被包含在ingredients清单中。因此 这份文档就没有组织好。这在HTML中可能不算什么,因为浏览器已经被设计成可以处理这种问题。但是在XML中却是致命的 -- 应用程序将拒绝处理没有组织好的文件。
如果产生一个致命错误,排错将非常困难 -- 你将一行一行地寻找丢失的标记符。如果使用几层嵌套,发现错误将很困难。但是可以找到很好的帮手--XML 分析器,即 XML代码和报告格式错误的应用程序,它们可以在网上免费得到。其中最好的是Lark(http://xml.com/xml/pub/tools/ruwf/check.html),它的作者是由Tim Bray --XML规范的技术编辑和极力鼓吹者。当你的XML 文件产生错误时,不妨一试。
五、结语
为了在Web 上推出更多的应用,人们需要用更有效的办法取代简单的HTML,XML 1.0 也许是目前最有效的替代方法。有兴趣的朋友可以在 http://www.xml.com/xml/pub 上查阅有关XML更详细的资料。
另外值得一提的是,未来,有4种不同的网页语言将会被使用在网络上。
(1)XML 是用来帮助组织和找寻资料。
(2)CSS (cascading style sheets)是用来帮助网页继承和展示。
(3)DHTML (Dynamic HTML)是用来展示动态网页。
(4)HTML 4.0 则是HTML 3.2的新版本。
所有这些新技术,均是用来解决目前HTML的问题,例如过多的过期连结,慢速的搜寻,静态网页等今日互联网和企业内部网(Intranet)的问题。
(唐进华)