日期:2012-03-09  浏览次数:21006 次


     读者可能会觉得在一本A S P书中讲述本章内容不太合适,事实上扩展标记语言( e X t e n s i b l eMarkup Language,X M L )正在越来越深入我们的生活,这是一件好事。X M L可以跨越所有边界,要获得真正独立的、跨平台的数据传送格式, X M L可能是唯一的选择。
    这种说法可能会令人感到沮丧,但在计算机业内X M L几乎得到了所有大型(或小型)开发厂商的认可。标准能达到如此的统一,过去也只有在T C P / I P协议被采纳为网络协议的标准时出现过这种现象。X M L是一种国际标准,受一个工业标准团体的控制,得到全世界的广泛支持,并成为为数不多的只有一个标准的技术之一。
    读者可能会觉得很奇怪,当今世界各种标准的变化就像季节更替一样频繁,即使是单个标准也被多个公司分成数段以追求竞争优势。然而, X M L却是个例外,因为它确实获得了许多公司的广泛支持。令人惊奇的是所有的人似乎都在努力实现并遵循这种唯一的标准。如果回想一下过去给工业界造成那么多麻烦的有关标准问题的争论, X M L就更令人惊奇了。
    既然X M L是一个被普遍实现的标准,因此,在A S P中使用它也很简单。如果使用A S P创建一个We b站点,那么很有可能会使用某种形式的数据库来存储数据。而X M L是另一种存储数据的格式,其应用也越来越广泛,因此必须掌握它。当然X M L的功能不仅于此。
    尽管立刻得到全面支持还不大可能,但我们已经看到X M L支持确实已引入到I E和A D O中。困难在于I E和A D O的发展速度不一致,所以它们之间的交互还不够理想,故本章没有介绍人们所希望的有关数据传输的万能技术。在写这本书时, I E和A D O的结合还不是紧密,但它们都在不断改进。所以尽管现在还没有新版本发布的具体消息,但A D O和I E将来肯定会更好地结合。
    在给X M L一个明确的定义之前,最好了解什么是标记语言。首先这里有一个问题,因为“语言”这个术语用得并不恰当。实际上, X M L并不是编程语言,而V B或C + +才是真正的编程语言,X M L只是定义了如何标记文本或文档的一套规则。那么“标记”又是指什么?标记一个文档是指标识出文档的某些部分有特殊含义的过程。这可能难以理解,我们举一个有关超文本标记语言(Hypertext Markup Language,H T M L )的例子,因为“H T M L”中的“M”就代表了标记( M a r k u p )。
    H T M L是一套规定文档布局的标记。H T M L包含了一些预先定义好的标记,每一种标记都有各自的含义,例如:

    这是一个含有少量标记的文本。文本以< B O D Y >标记开始,在H T M L里,该标记表示文档主体的开始,主体部分以< / B O D Y >标记结束。在这个文档的主体内有标题,放在< H 1 >和< / H 1 >标记之间;另外还有一些粗体文本,放在< B >和< / B >标记之间。这些文本标记为有特殊含义的文本。
    你可能注意到上面的例子没有使用格式化这个词。这是经过仔细考虑的,因为标记和格式化并不是一回事。< B O D Y >标记标定的是文档的一块区域,并没有定义任何格式。然而,< B >标记却标定文档的这一块区域用粗体显示。这是因为H T M L中的< B >标记是隐含了指定格式的标记。
    所以请记住,标记语言只是一种规则,定义了如何给一篇文档中的特定部分增加特殊含义。这种定义可能会起到很好的格式化作用,但这并不是使用标记的唯一原因。
11.1.1 XML和H T M L的差别
    尽管X M L和H T M L都使用标记,但是它们是不同的。其中最主要的区别是X M L专门用来描述文本的结构,而不是用于描述如何显示文本。X M L并没有一套固定的标记,例如:

    上面的代码看起来与上一节的H T M L代码不是完全一样吗?如果它是H T M L文档,的确一样。如果把其加载到浏览器,以上内容就会显示如图11 - 1所示的结果,其作用好像是格式化文档。

    但是,如果上面的代码是X M L文档,那么其中的标记就不具有任何含义,其内容只是说明:
    ? 有一个名为B O D Y的标记,在这个标记里面有一些文本。
    ? 有一个名为H 1的标记,在这个标记里面有一些文本。
    ? 有一个名为B的标记,在这个标记里面有一些文本。
    如果以上代码作为一个X M L文档(文件的扩展名为. x m l )加载到I E浏览器中,可以看得非常清楚,其结果如图11 - 2所示。

    I E解释该X M L文档并将其显示出来。请注意, I E并没对这个X M L文档做任何处理,仅仅是显示出来而已。浏览器知道如何解释H T M L文档,并且知道如何用标记所定义的格式来显示文档。同样,浏览器也知道如何解释X M L文档,但由于X M L标记不定义格式,所以文档不会得到格式化,于是原样显示这些标记。
    但I E实际上还是做了一点格式编排,使X M L更易读了。它把标记分为不同的层次,所以我们看到了一套结构化的标记,且I E没有解释这些标记。
    迄今为止所学的X M L文档由标记文档某些部分的标记组成。那么X M L使用数据会有什么问题呢,再看另一个例子。这个例子在前面的章节中出现过,读者会发现X M L在这里十分有意义。

    上面的例子中使用了几对不同的标记。一开始,你可能会认为这些标记一定有其含义。他们都有一个有意义的名称,定义了A u t h o r的一个列表、单个A u t h o r以及一些与A u t h o r有关的值。在前面的章节中,这些内容出现了多次,当在一个浏览器中查看时,我们可以把它格式化成一个表来显示。但因为这