XML與Html的比較 Internet提供了全球范圍的網絡互連與通信功能,Web技術的發展更是一日千裡,其豐富的信息資源給人們的學習和生活帶來了極大的便利。特別是應運而生的HTML(超文本置標語言),以簡單易學、靈活通用的特性,使人們發布、檢索、交流信息都變得非常簡單,從而使Web成了最大的環球信息資源庫。然而,電子商務、電子出版、遠程教育等基於Web的新興領域的全面興起使得傳統的Web資源更加復雜化、多樣化,數據量的日趨龐大對網絡的傳輸能力也提出更高的要求。同時,人們對Web服務功能的需求也達到更高的標准,比如: 用戶需要對Web進行智能化的語義搜索和對數據按照不同的需求進行多樣化顯示等個性化服務; 公司和企業要為客戶創建和分發大量有價值的文檔信息,以降低生產成本,以及對不同平台、不同格式的數據源進行數據集成和數據轉化等等,這些需求越來越廣泛和迫切。 傳統的HTML由於自身特點的限制,不能有效地解決上述問題:作為一種簡單的表示性語言,它只能顯示內容而無法表達數據內容。而這一點恰恰是電子商務、智能搜索引擎所必需的。另外,HTML語言不能描述矢量圖形、數學公式、化學符號等特殊對象,在數據顯示方面的描述能力也不盡如人意。最重要的是:HTML只是SGML(Standard Generalized Markup Language,標准通用置標語言)的一個實例化的子集,可擴展性差,用戶根本不能自定義有意義的置標供他人使用。這一切都成為Web技術進一步發展的障礙。 SGML是一種通用的文檔結構描述置標語言,為語法置標提供了異常強大的工具,同時具有極好的擴展性,因此在數據分類和索引中非常有用。但SGML復雜度太高,不適合網絡的日常應用,加上開發成本高、不被主流浏覽器所支持等原因,使得SGML在Web上的推廣受到阻礙。在這種情況下,開發一種兼具SGML的強大功能、可擴展性以及HTML的簡單性的語言勢在必行。由此誕生了XML語言。 XML(eXtensible Markup Language,可擴展置標語言)是由W3C於1998年2月發布的一種標准。它同樣是SGML的一個簡化子集,它將SGML的豐富功能與Html的易用性結合到Web的應用中,以一種開放的自我描述方式定義了數據結構,在描述數據內容的同時能突出對結構的描述,從而體現出數據之間的關系。這樣所組織的數據對於應用程序和用戶都是友好的、可操作的。
XML的優缺點 XML的優勢之一是它允許各個組織、個人建立適合自己需要的置標集合,並且這些置標可以迅速地投入使用。這一特征使得XML可以在電子商務、政府文檔、司法、出版、CAD/CAM、保險機構、廠商和中介組織信息交換等領域中一展身手,針對不同的系統、廠商提供各具特色的獨立解決方案。 XML的最大優點在於它的數據存儲格式不受顯示格式的制約。一般來說,一篇文檔包括三個要素: 數據、結構以及顯示方式。對於HTML來說,顯示方式內嵌在數據中,這樣在創建文本時,要時時考慮輸出格式,如果因為需求不同而需要對同樣的內容進行不同風格的顯示時,要從頭創建一個全新的文檔,重復工作量很大。此外HTML缺乏對數據結構的描述,對於應用程序理解文檔內容、抽取語義信息都有諸多不便。 XML把文檔的三要素獨立開來,分別處理。首先把顯示格式從數據內容中獨立出來,保存在樣式單文件(Style Sheet)中,這樣如果需要改變文檔的顯示方式,只要修改樣式單文件就行了。XML的自我描述性質能夠很好地表現許多復雜的數據關系,使得基於XML的應用程序可以在XML文件中准確高效地搜索相關的數據內容,忽略其他不相關部分。XML還有其他許多優點,比如它有利於不同系統之間的信息交流,完全可以充當網際語言,並有希望成為數據和文檔交換的標准機制。 當然,XML作為一個新建立的標准,還有許多不足之處: 它在強調了數據結構的同時,語義表達能力上略顯不足,例如定義了<地址>這樣一個置標,如果不是在文檔中實際定義內容,我們就無法知道是要表達家庭住址還是E-mail地址。另外,XML的有些技術尚未形成統一的標准,充分支持XML的應用處理程序很少,甚至浏覽器對XML的支持也是有限的。 所以,XML還並不能完全取代HTML,畢竟HTML是最為方便、快捷的網上信息發布方式。況且Html是描述數據顯示的語言,而XML是描述數據及其結構的語言,二者在功能上也是截然不同的。
XML的使用前景 不管怎樣,Web的應用將隨著XML的發展而更加精彩:
1. 商務的自動化處理 XML的豐富置標完全可以描述不同類型的單據,例如信用證、保險單、索賠單以及各種發票等。結構化的XML文檔發送至Web的數據可以被加密,並且很容易附加上數字簽名。因此,XML有希望推動EDI(Electronic Data Interchange)技術在電子商務領域的大規模應用。有興趣的讀者可以訪問網站http://www.XMLedi.org。
2. 信息發布 信息發布在企業的競爭發展中起著重要作用。服務器只需發出一份XML文件,客戶可根據自己的需求選擇和制作不同的應用程序以處理數據。加上XSL(eXtensible Stylesheet Language)的幫助,使廣泛的、通用的分布式計算成為可能。
3. 智能化的Web應用程序和數據集成 XML能夠更准確地表達信息的真實內容,其嚴格的語法降低了應用程序的負擔,也使智能工具的開發更為便捷。來自不同應用程序的數據也能夠轉化到XML這個統一的框架中,進行交互、轉化和進一步的加工。 XML的優點備受矚目,它的發展方興未艾,未來的Web將是XML的Web!
XML的開發工具 開發XML有許多工具可以使用: ● Notepad:最直接、最簡單的文本編輯工具,在Windows附件中就可找到。 ● Microsoft XML Notepad: 微軟專門為設計XML文檔而提供的編輯軟件,可以借助它驗證XML文檔的有效性,詳細說明和下載地址: http://msdn.microsoft.com/xml/NOTEPAD/intro.asp。 ● Visual InterDev:該軟件是用來開發Web應用程序的,不僅僅局限於XML,還可以開發ASP、Html、XSL樣式單等等。 ● Microsoft XML Tree VIEwer: 利用這個軟件可以把XML文檔的內容用樹的結構形式顯示出來: http://msdn.microsoft.com/xml/demos/default.asp。 ● Microsoft XML Validator: 該軟件可以檢查XML文檔是否是“格式良好的”以及其有效性,並對錯誤發出警告,它的下載地址是:http://msdn.microsoft.com/XML/demos/default.ASP。 ● Microsoft XSL Debugger: 樣式單文件的復雜性使開發人員在編寫時容易出現錯誤,這個軟件就是幫助用戶調試樣式單文件的,把復雜枯燥的調試過程用可視化界面顯示出來。下載地址 :http://msdn.microsoft.com/xml/_archive/xsl-debugger/xsl-debugger.htm。 ● WordPerfect: 一種對開發XML和SGML提供高級支持的文字處理器,具有所見即所得的開發環境,提供向導、自動化控件的插入和文檔的自動生成等功能,它是一款收費的商業產品,支持Windows 95/98/2000和Linux平台。詳情請訪問http://www.corel.com/。 ● SixPack: 為XML的解析和開發提供簡潔的界面,支持Macintosh平台,並公開源代碼,詳情請訪問http://www.trafficstudio.com/sixpack/info.htm。 ● Xray: 一種具有實時錯誤檢查的XML編輯器。它根據DTD或者XML Schema,允許用戶創建格式良好的XML文檔或驗證文檔的有效性,並且支持多文檔編輯,是一款免費軟件,支持Windows 95/98/NT/2000平台。詳情請訪問http://architag.com/xray/。
XML的文檔格式 首先介紹XML文檔內容的基本單元——元素,它的語法格式如下: 〈標簽〉文本內容〈/標簽〉 元素是由起始標簽、元素內容和結束標簽組成。用戶把要描述的數據對象放在起始標簽和結束標簽之間。例如: <姓名>王平</姓名> 無論文本內容有多長或者多麼復雜,XML元素中還可以再嵌套別的元素,這樣使相關信息構成等級結構。下面的例子中,在<employees>的元素中包括了所有職員的信息,每位職員都由<employee>元素來描述,而<employee>元素中又嵌套了<name>和<salary>元素。 例1: <employees> <employee> <name>Lars Peterson</name> <salary>25000</salary> </employee> <employee> <name>Charlotte M. Cooper</name> <salary>34500</salary> </employee> </employees> 除了元素,XML文檔中能出現的有效對象是:處理指令、注釋、根元素、子元素和屬性。 ● 處理指令 處理指令給XML解析器提供信息,使其能夠正確解釋文檔內容,它的起始標識是“<?”,結束標識是“?>”。常見的XML聲明就是一個處理指令: <?xml version=“1.0”?> 處理指令還可以有其他的用途,比如定義文檔的編碼方式是GB碼還是Unicode編碼方式,或是把一個樣式單文件應用到XML文檔上用以顯示。 ● 注釋 注釋是XML文件中用作解釋的字符數據,XML處理器不對它們進行任何處理。注釋是用“<!--”和“ --> ”引起來的,可以出現在XML元素間的任何地方,但是不可以嵌套: <!--這是一個注釋--> ● 根元素和子元素 如果一個元素從文件頭的序言部分之後開始一直到文件尾,包含了文件中所有的數據信息,我們稱之為根元素。 XML元素是可以嵌套的,那麼被嵌套在內的元素稱為子元素。在前面的例子中,<employee>就是<employees>的子元素。 ● 屬性屬性給元素提供進一步的說明信息,它必須出現在起始標簽中。屬性以名稱/取值對出現,屬性名不能重復,名稱與取值之間用等號“=”分隔,並用引號把取值引起來。例如: <salary currency=“US$”> 25000 </salary> 上例中的屬性說明了薪水的貨幣單位是美元。
XML的語法 XML文檔的基本結構由序言部分和一個根元素組成。序言包括了XML聲明和DTD(或者是XML Schema),DTD(Document Type Define,文檔定義類型)和XML Schema都是用來描述XML文檔結構的,也就是描述元素和屬性是如何聯系在一起的。 例如,在例1的文檔前面加上如下的序言部分,就構成了一個完整的XML文檔: <?xml version=“1.0”?> <!DOCTYPE employees SYSTEM“employees.dtd”> 一個XML文檔中有且僅有一個根元素,其他所有的元素都是它的子元素,在例1中,<employees>就是根元素。 一個XML文檔首先應當是“格式良好的”(Well-Formed),該規定的正式定義位於: http://www.w3.org/TR/REC-xml “格式良好的”XML文檔除了要滿足根元素唯一的特性之外,還包括: ● 起始標簽和結束標簽應當匹配:結束標簽是必不可少的; ● 大小寫應一致:XML對字母的大小寫是敏感的,<employee>和<Employee>是完全不同的兩個標簽,所以結束標簽在匹配時一定要注意大小寫一致; ● 元素應當正確嵌套:子元素應當完全包括在父輩元素中,下面的例子就是嵌套錯誤: <A> <B> </A> </B> 正確的嵌套方式如下: <A> <B> </B> </A> ● 屬性必須包括在引號中; ● 元素中的屬性是不允許重復的。 XML文檔的“有效性”是指一個XML文檔應當遵守DTD文件或是Schema的規定,“有效的”XML文檔肯定是“格式良好的”,有關內容我們會在以後詳細說明。
XML的名稱空間 XML文檔中很可能會定義許多名字相同而意義不同的元素或屬性,尤其在把不同的XML文檔合而為一時,更容易產生沖突。名稱空間就是為了解決這個問題而提出的。它用URI(Uniform Resource Indicator,統一資源指示器)加以區別,是在XML文件的元素和屬性中出現的所有名稱的集合。如下例: <pr:payment xmlns:pr=“http://www. microsoft.com/payroll”> <pr:employee>Lars Peterson</pr:employee> <pr:description>Reimburse expenses</pr:description> <pr:total>199.76</pr:total> </pr:payment> 有了名稱空間,用戶就可以保證在文件中使用的名稱是唯一的。對元素的屬性xmlns進行定義就表示對該元素指定了一個名稱空間。namespace_name必須是一個有效的URI。 如果省略local_prefix(本地前綴),這時就構成了缺省名稱空間: <payment xmlns=“http://www.microsoft.com/acct”> <customer>1234</customer> <amount>500.00</amount> <date_received>12-03-2000</date_received> </payment> 如果對一個元素定義了缺省名稱空間,那麼該元素及其子元素,包括它們的屬性都會自動地成為該名稱空間的一部分,不用再在每一個元素和屬性前面一一標明了。 在本文開始部分,我們對XML這個新興的技術做了一個概述,對它的優缺點進行了分析,並對其美好的應用前景進行了展望。在本文後半部分則對XML文檔的相關語法、格式做了簡要的描述,並介紹了幾種有用的開發工具。在以後的內容中,我們會全面展開,深入到XML技術內部,去探索一下這個美妙的世界!