|
|
|
[XML初学进阶]XML(5) 网上资源
|
|
1.2.3 XML的第二大优势——超越于格式之上
XML的最大能量来源于它不仅允许你定义自己的一套标记,而且这些标记不必仅限于对于显示格式的描述。XML允许你根据各种不同的规则来制定标记,比如根据商业规则,根据数据描述甚至根据数据关系来制定标记。可能你还没有觉得这有什么好处。那好,还记得前面两节中那个关于F公司的客户列表的例子吗?现在,我们再来一起对两个不同的文件进行一个详细的比较。当这个文件使用HTML语言写时,文件的样子如下:
<UL><LI>张三</LI><UL><LI>用户ID: 001</LI><LI>公司: A公司</LI><LI>EMAIL: zhang@aaa.com</LI><LI>电话: (010)62345678</LI><LI>地址: 五街1234号</LI><LI>城市: 北京市</LI><LI>省份: 北京</LI><LI>ZIP: 100001</LI></UL><LI>李四</LI><UL><LI>ID: 002</LI><LI>公司: B公司</LI><LI>EMAIL: li@bbb.org</LI><LI>电话: (021)87654321</LI><LI>地址: 南京路9876号</LI><LI>城市: 上海市</LI><LI>省份: 上海</LI><LI>ZIP: 200002</LI></UL></UL>
尽管这也是一个存储、显示数据的可行的方法,它的效率和能力却非常有限。不知你是否已有同感,使用偏重于表现的HTML来置标你的数据有很多潜在的问题。我们至少可以看到以下三个严重的问题:
显示方式内嵌于数据之中可以看到,现在这些数据是用列表的形式来表示的。如果突然有一天,你的老板要求你用表格来表示这些数据,那么你不得不重新编码所有这样的HTML文件!天啊,这可能意味着几十页几百页要推翻重来啊!
在这些数据中寻找信息非常困难如果有一天,你需要从这个网页中找到所有北京市客户的信息,你该怎么办?显然,如果你不打算手工寻找的话,你要编一个脚本程序,譬如JavaScript,VBScript。那么,你怎么编写这个程序呢?唯一可行的办法可能就是逐字寻找“北京”这个字符串。即便你找到了所有这些字段,恐怕你也还没有解决所有麻烦。这个“北京”是指城市还是指省份呢?(别忘了北京地区的周边郊县哦。)
数据自身的逻辑不得不屈服于HTML语言规范的逻辑如果你想用Java Applet来处理你的数据,你又遇到了另一个麻烦。你的Java Applet将不得不遍历整个HTML文件,把所有的HTML标记剔除掉,再把剥离出来的有用的数据重新组织。同样,任何一个不是单纯为了显示HTML文件的应用程序,在处理一个HTML文件中的数据时,都不得不做大量额外的工作。
当使用XML时,以上的问题迎刃而解。此时,这段信息的表示是这样的:
<联系人列表> <联系人> <姓名>张三</姓名> <ID>001</ID> <公司>A公司</公司> <EMAIL>zhang@aaa.com</EMAIL> <电话>(010)62345678</电话> <地址> <街道>五街1234号</街道> <城市>北京市</城市> <省份>北京</省份> <ZIP>100001</ZIP> </地址> </联系人> <联系人> <姓名>李四</姓名> <ID>002</ID> <公司>B公司</公司> <EMAIL>li@bbb.org</EMAIL> <电话>(021)87654321</电话> <地址> <街道>南京路9876号</街道> <城市>上海</城市> <省份>上海</省份> <ZIP>200002</ZIP> </地址> </联系人></联系人列表>
可以看出,现在标记为要表现的数据赋予了一定的含义。用这种形式存储时,数据非常地简单明晰,因为它所携带的信息不是显示上的描述,而是信息的语意。就象我们后面将要看到的那样,信息的显示方式已经从信息本身中抽取出来,放在了“样式单”中。
好,我们现在逐条看一下上面所说的XML的三个问题是如何被一一解决的。
在XML中,显示样式从数据信息中抽取出来,放在样式单文件中。这样,如果需要改动信息的表现方式,无须改动信息本身,只要改动样式单文件就够了。如果这时候老板又让你把列表的数据改用表格显示,你无须再去修改那几十几百个数据信息文件,因为它们和同一个样式单文件相关联,只要改动这个样式单文件就足够了。
在XML中数据搜索可以简单高效地进行。搜索引擎没必要再去遍访整个XML文件,它只须去找一找相关标记下的内容就够了。也就是说,要想找“北京”,只要看看<城市〉这个标记下的字符串数据是不是匹配就行了。毫不夸张地说,XML的标记为搜索引擎赋予了智慧!
XML是自我描述语言。即便对于一个预先对我们的FCLML一无所知的人,这个文件也是清晰可读的。显然,<ID>002</ID>代表了一个客户的客户身份标识,可是如果面对一个<LI>002,他可能就丈二和尚——摸不着头脑了。再有,看看上面文件中严格的层次结构,你就会发现,信息之间的某些复杂关系,比如树状结构、继承关系,在这里也都得到了绝好的体现。这样一来,那些XML的应用处理程序也会感到轻松多了。
看到这里,你可能已经对XML心悦诚服了。不过,XML的优点还远不止这些哦。
| |
|
|
|