閱讀202 返回首頁    go 技術社區[雲棲]


刨根究底:XML的本質和作用探討

                 刨根究底:XML的本質和作用探討

要是有人和你說起“XML”而你卻一臉茫然的話,那麼真的就要被人狠狠的鄙視一把了,真是“平生不識XML,就稱高手也枉然”!

 

XML到底有哪些用途呢?下麵是網上搜索的一篇比較詳細的文章(原文較多,以下僅摘錄,原文地址:https://www.webjx.com/xml/20080104/xml_xslt_2806.html ):

1XML可以將HTML與數據分離

通過使用XML,您的數據可存儲於HTML之外。

2XML用於交換數據

通過使用XML,可以在互不兼容的係統間交換數據。

3XML可被用來共享數據

通過使用XML,純文本文件可用於共享數據。

4XML可用於存儲數據

通過使用XML,純文本文件可用於存儲數據。

5XML使您的數據更有用

通過使用XML,您的數據可供更多的用戶使用。

6XML可被用來創建新的語言

XMLWAPWML之母。

 

除了第一條比較容易理解外,其它看起來都很正確,但我細思考了一下,發現事情沒有描述的這麼簡單:這些作用不是XML的用途,而是純文本的用途,隻要是純文本,不管是XML,還是Windowsini,還是Javaproperties文件,都有這些用途。你能說XML能夠來交換數據,難道我隨便寫一個文本文件不能交換數據嗎?說白了,不是XML太牛,而是因為XML是純文本,所以才這麼牛!

 

啊哈,我一棍子就把XML打死了,難道其他人都是傻瓜嗎?

當然不是,既然這麼流行,自然有它的原因,而且原因一直隱藏在你視而不見的地方,那就是它的名稱所包含的信息:

1X:可擴展。

熟悉HTML的人應該能夠很容易理解這個“X”的意思,因為HTML中的標簽和結構是不可擴展的,是固定的。

 

可擴展的好處就是任何人都可以根據自己的需要定義標簽和結構,而且隨便你怎麼定義。比如說“父親”,張三可以定義為“father”,李四可以定義為“dad”,王五可以定義為“爸爸”。。。。。。等等,而如果是HTML,那麼可能就隻能定義為“father”。

 

當然,也不是說可擴展就完美無缺了,它的缺點在於XML的含義是由定義者決定的,而不是通用的。

 

2M:標記

標記就是用來描述“內容”(在此我不用通常所說的“數據”,後麵會進行解釋)的,與普通的文本文件或者二進製文件相比,標記的好處就是“容易書寫、容易理解”。例如,不管“父親”是定義成“father”、“dad”還是“爸爸”,都是很容易理解和書寫的,而如果用二進製表示,無論是“0101010101”還是“1100110101”都是很難書寫和理解的。

 

不要小看了“容易”這兩個字,曆史已經證明,活下來的不是最優秀的,而是最容易使用的,TCP/IPATMUNIXWindows都是很好的例子。

 

請注意這裏隻是容易理解,不是說看到標簽就完全理解了,在上麵的“X”部分已經說了:標簽的含義是由定義者決定的。

 

3L:語言

這個才是XML的關鍵特性:XML本質上和C++Java,甚至英語等一樣,都是語言

 

什麼是“語言”?簡單來說就是描述內容:將你想的東西說出來給別人聽,寫出來給別人看。隻要是一門語言,就應該具備“描述內容”這個作用。

 

既然XML是一門語言,那麼它肯定具備“描述內容”這個作用,這也是我在第2部分“M”部分特別說明的不是指“數據”,因為“數據”很容易迷惑人,一說到數據,大家基本上想到了數據庫表的一條條記錄,或者配置數據(例如“price=100”),如果XML僅僅是用來記錄這些數據,那XML作用也太小了,而如果是“內容”,那範圍就廣了。

 

既然是描述內容,那麼毫不誇張的說:XML可以做任何事情!但關鍵是你需要讓它做什麼:XML隻是一個語言,具體描述什麼,是由你來決定的;你定義出XML後,怎麼解釋也是你的事情。如果你要使用XML,關鍵不在XML本身,而是你要決定兩件事:如何用XML描述你要的東東、如何解釋你定義的XML

 

我們看一些XML應用實例,來說明是“內容”而不是單純的“數據”(當然,如果你硬要說內容也是數據的話,那我就沒有辦法了):

1AndroidXML來定義一個GUI界麵;

2AntXML來定義一個編譯流程;

3SpringXML來定義依賴注入;

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

有人說,XML不像C++Java那樣,不能編譯成可執行程序。其實不然,隻要你願意,你完全可以寫一個基於XML的編譯器,將你規定的XML文檔編譯成可執行程序。

 

再加上XML已經形成了標準,全世界都來遵守和使用XML,理所當然的XML會取代其它各種各樣的非標準的文本格式了。

 

最後更新:2017-04-02 04:26:02

  上一篇:go 想考研
  下一篇:go magento -- 現有暢銷排行(Bestseller)插件中存在的問題