那么,什么是XML?

  很不幸地,SGML是一个非常复杂的语言以致于它并不适合在网络上交换数据。另外,虽然HTML难以置信地取得了成功,但是它受到领域的限制:它仅仅是为了在浏览器中显示文档。它所能用的标记并不提供有关它们所包含的内容的信息,而仅仅是有关如何显示那些内容的指示。这意味着你可以创建一个HTML文档来显示有关一个人的信息,不过那也是你可以在那个文档上做的所有的事情。你无法编写程序从那个文档中找出和人的姓名相关的信息片段,因为HTML并不具有描述这种特定信息的能力。实际上,HTML甚至根本不知道那个文档是关于一个人的。于是可扩展标记语言(XML)被创建出来处理这些问题。

  XML是SGML的子集,它们有着相同的目标(标记任意类型的数据),但是XML尽可能多地消除了复杂性。XML被设计为与SGML完全兼容,这意味着,任何遵循XML的语法规则的文档也都遵循SGML的语法规则,并因此可以被现存的SGML工具读取。然而,这并非是双向的,所以SGML文档并非一定是XML文档。

  有一点很重要,那就是XML本质上不是真正的“语言”,而是创建符合XML规范(我们根据这些规则创建XML文档)的语言的标准。换句话说,XML描述了你创建自己的语言时所使用的语法。例如,假设你有关于姓名的数据,并且你想要能够和别人分享那个信息,以及在计算机程序中使用那个信息。除了像这样创建文本文件之外:

  John Doe

你也可以像这样创建HTML文件:

  
    
      Name
    
    
      

John Doe

       

你也可以像下面这样创建XML文件:

  
    John
    Doe
  

  即便是从这么简单的例子中,你也可以看到为什么像SGML和XML这样的标记语言被称作是“自描述”的。你在观察数据时可以轻易地说出这是有关(“姓名”)的信息,并且你能够看到有称作(“名”)的数据以及另外的称作(“姓”)的数据。你可以给标记起任意你喜欢的名字,但是如果你打算使用XML,你最好还是给标记起有意义的名字并正确地使用它们。

  你也可以看到这个信息的XML版本比普通文本版本大很多。使用XML来标记数据增加了它的大小,有时增长甚至是巨大的,但是缩减文件大小并不是XML的目标;它的目标仅仅是通过结构化数据,使得能够更方便地编写软件来访问信息。

  如果对于你的应用来说带宽确实是个严峻的问题,你也总是可以在通过网络发送你的XML文档之前压缩它们——文本文件的压缩效果是非常棒的。

  如果你在使用Internet Explorer 5或更高版本,你可以在你的浏览器中查看前面的那段XML。

[@more@]
XML为我们带来了什么?

  我能够听到一些你所想的事情。为什么要那么麻烦去创建XML文档呢?为有关姓名的文件制定一些规则不是能够更简单一些吗,比如,“名(first name)从文件的头部开始,姓(last name)紧接在第一个空格之后”?那样的话,你的应用仍然能够读取数据,而文件的大小将会小很多。

  作为部分的答案,假设我们想要在我们的示例中添加中间名(middle name):

    John Fitzgerald Doe

  Okay,没有问题。我们只要把我们的规则修改成在第一个空格之后并且在第二个空格之前的东西是中间名,而第二个空格之后的东西是姓。当然,如果不存在第二个空格,那么我们就假设不存在中间名,并且第一条规则将被应用。我们仍然很好,除非拥有像下面这样的姓名的人出现了:

    John Fitzgerald Johansen Doe

  哎呀!这里有2个中间名。规则变得更复杂了。尽管人或许能够立即说出中间2个词组成了中间名,但是要把这个逻辑编写进计算机程序却要困难得多。我们甚至还没有讨论“John Fitzgerald Johansen Doe the 3rd”!

  不幸的是,当这样的问题出现时,许多软件开发者只是去定义更多的限制规则,而不是去处理数据的复杂性。在这个示例中,软件开发者可能决定人只能有1个中间名,并且应用不接受其它中间名。

  这个示例中的问题可能并不难以解决,但是它指出了XML背后所关注的主要问题之一。程序员以无限多种方式结构化他们的数据,并且每种新的结构化数据的方式都会带来新的抽取我们需要的信息的方法。针对那些新的方法需要进行大量的试验和测试以保证它的正确性。如果数据发生了改变,这些方法也不得不跟着改变,而测试和苦恼也不得不再次开始。XML提供了标准化的方式来获取我们需要的信息,无论我们如何结构化它们。

  另外,记住这个示例是多么地微不足道。你需要处理的数据越复杂,你所需要的逻辑也会越复杂。你会在大型应用中深深地感激XML的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/757608/viewspace-1010898/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/757608/viewspace-1010898/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值