大家如果学过网络的话,一定知道TCP/IP,它是互联网进行数据传输的事实标准,但是我们在学习的时候一定要被先提醒的是,TCP/IP不仅仅包括TCP和IP两个协议,它还包括了很多网络通讯中相关的协议,比如路由协议、地址解析协议、控制报文协议、用户数据报协议等等。所以我们习惯把TCP/IP称为一个协议簇。和TCP/IP表示的不仅仅是TCP和IP两个协议一样,XML并不仅仅包括XML标记语言,它同时还包括了很多相关的规范,比如文档格式化标准、文档显示模式定义、文档查询标准、文档解析标准和文档链接标准等等,而且基于XML这个低层的规范,还有很多高层的应用协议,比如开放贸易协议、SOAP、BizTalk等等。基本的XML相关的标准以及它们的关系如下图所示:
关于各个协议和标准的语法以及相关应用我们下面会陆续讲解,这里大概说明一下它们的用处,其中DTD和Schema是用来对文档格式进行定义的语言,就相当于数据库中我们需要定义数据库模式一样,DTD和Schema决定了文档的内容应该是些什么类型的东西。其中DTD是从SGML继承下来的,而Schema是专门为定义XML文档的格式而设计的,它们都规定了XML文件的逻辑结构,定义了XML文件中的元素、元素的属性以及元素和元素属性之间的关系。
因为XML是内容和格式分离的语言,所以需要专门的协议来定义XML文档的显示格式,CSS和XSL就是用来定义XML文档的显示格式的,当然CSS是随着HTML的出现而出现的,它的初衷是为了更好的控制HTML中各个元素的显示特征,它也可以应用到XML中来控制XML文档的显示,而XSL事实上就是专门为XML设计的,当然XSL的作用不仅仅是用来显示XML文档,通过模板机制,它能够取出XML文档中部分的内容,并且能够对其中的内容进行排序,当然它也能够用来定义XML文档的显示格式。所以XSL的另外一个应用就是用来把一个XML文档转化为另一个XML文档,也就是说我们可以从原始的XML文档生成一个新的XML文档。
我们知道,要在HTML文档中查询特定的内容几乎是不可能的,而因为XML文档是一个结构化的文本,所以具备了对XML文档进行内容检索的条件,但是需要有一套完善的语言来实现从简单到复杂的类似关系数据库的检索功能,这套语言就是XQL,在关系数据库中我们可以通过SELECT语句的WHERE句部分来限定查询的范围,在XQL语言中,我们也定义了一套类似的限定范围的规范,它就是XPATH。
我们知道,我们编写的C程序或者PASCAL程序能够被执行的原因是因为存在一个对应的编译系统,我们在剧本语言中编写的代码能够被执行的原因是因为存在一个对应的解析器,同样,为了对XML文档内容进行分析,我们需要一个XML解析器,也就是说用它来分析XML文档的内容是否符合XML标准,这样实际上是存在两种解析方式:一种称为DOM(Document Object Model),另外一种称为SAX(Simple API for XML)。
大家对HTML语言充满好感的一个很重要的原因是能够从任意一个HTML页面开始,逛到各种各样的网页上去,也就是说,网页之间的链接关系是吸引我们浏览Web网页的一个很重要的原因。同样作为HTML的超级增强版或者说是它的终结者也具有超链接的功能,而且作为它的后来者,它的链接功能又有很大增强,其具体的规范标准就是XLINK。在HTML中我们只能从一个网页链接到另一个网页上,但是XML规范制定者认为光光这样还不是很灵活,应该可以链接到一个具体的对象上去,这个对象可以是一个网页,也可以是网页的一部分,网页中的一个元素甚至是网页中某行的某几个字,如何定义对象呢?就需要用到XPOINTER规范。
上面对这些标准和规范的产生原因和作用做了一个大概的介绍,具体的内容等我们在下面的各个章节中慢慢道来。