互联网时代。一个正如其义所暗示的那样迅速的词汇,其发展速度之快超出了任何人的想像。第一个网站于1991年诞生于网上,20年后的今天,互联网上网站的数量大致上超过了1亿。
互联网上可用信息的数量已变得无法控制,大多数信息是用HTML(Hyper Text Markup Language,即“超文本标记语言”)来编写的,它用一种简单而优雅的方式把数据在网页浏览器中进行了显示。HTML的简洁性促进了网络的发展,然而当面对互联网不断增加的巨大的信息量时,这门语言已显现出了它的局限性。
本书第一版出版后的7年之内,XML(eXtensible Markup Language,即“可扩展标记语言”)已在网络编程上初显锋芒,略次于HTML。发展至今,XML已成为一门对数据进行分类(sorting)的十分流行的语言和在各种各样系统及应用程序间传递数据的最重要的语言了。HTML语言被设计来显示信息,而XML则被设计来管理信息。
本书以从XML语言的基础知识开始,然后讨论了其它的支持语言和系统。要从本书中学到最多的东西,你应该对HTML语言知道一些,对于再往前的知识,你不需要了解。
1.1 什么是XML?
XML (eXtensible Markup Language),即“可扩展标记语言”,用于指定如何存储信息,也指定了如何描述信息的结构。尽管XML也是标记语言(就像HTML语言那样),但它并没有自己的标签(tag),它允许写XML的人创建他们所需要的任意标签,唯一的条件只是这些新创建的标签要遵循XML的规则。
这意味着什么?读下边的例码,然后回答下边的问题:
(1) 正在存储什么信息?
(2) 信息的结构是怎样的?
(3) 为了描述信息和它的结构创建了什么标签?
那么,什么是XML呢?它是一套用于定义用户建造标记语言的规则。XML语言使人们能够定义他们自己的标记语言,然后他们就能使用这个标记语言来创建XML文档了。
右边的例子是我用我定义的XML标记语言书写的,它使用了我设计的用户标签和XML的结构存储了信息。
1.2 XML 的强大之处(The Power of XML)
那么,为什么要用XML呢?它做了哪些已有技术和语言不能做的事呢?
一方面,XML是被设计用来存储数据和交换的。XML看起来与HTML语言是很像的,都用标签、属性(attributes)和值来完成(图i.2),但XML不是用来显示信息的,而是用来存储和
另一方面,XML可被容易地扩展和改编(adapt)。你用XML来设计你自己的自定义标记语言,然后你用这些语言来描述你的信息。你的自定义标记语言将含有描述它们所含数据的标签,这些标签可在其它XML程序中被重复使用,且必要时可减少(scale back)或增加;
再者,XML可被用来在不同的系统及程序间共享数据,原因是XML只不过是个txt文件,并没有什么其它复杂的地方。它结构良好、易于理解、易于解析(parse)、易于操纵,并且被认作是“人类可读的”(human-readable),例如你能够阅读并理解上边的两个例子。
最后,XML是一门对任何人都免费的语言,它是由W3C(www.w3.gor/)创建的...。这种开放式的语言使得组织不管大小,都能用这门语言来共享信息。而且,它也极大地支持创建基于XML标准的新应用程序,从而帮助人们克服由于政府标准的不同和不同独立公司创建程序间的障碍。
1.3 对XML进行扩展
(图i.3)是用来描述数据本身的,而HTML则是用来格式化数据以便对它进行显示的。
既然XML标签是从头创建的,这些标签就没有任何继承来的格式化方面的内容,那么浏览器就无法知道怎样来显示<wonder>标签,因此,指定如何显示一个XML文档就是你的职责了,可用XSL(eXtensible Stylesheet Language,即“可扩展样式表语言”)来做到这点。
XSL实际上是由3种语言组成的:XSLT,用于转换XML文档;XPath,用于辨认(identify)XML文档的不同部分;XSL-FO,用于格式化一个XML文档。XSL让你把XML文档中的信息转换为你需要的任何格式(最经常的是转换为HTML格式),或转换为与原初结构不一样的另个XML文档。(XSL将在第二部分讲述)
除了显示一个XML文档之外,还有一些定义XML文档结构的方式,要么用DTD(Document Type Definition),要么用XML Schema language,这些结构化的定义(或schemas)指定了你在你的XML文档中可用的标签,以及那些标签含有什么内容及属性。在第3部分会学到DTD,第4部分学到XML Schema,第5部分向你讲述你如何用XML命名空间(namespace)来扩展XML Schema。