曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
協議和軟件更為協調,從而簡化了數據處理和傳輸。作為一個不錯的S G M L子集, X M L還保持
了對現有的面向S G M L的系統的向下兼容性,這樣,用X M L標記過的數據就仍然可以在這些系
統中使用,為基于S G M L的行業節省了大筆的改造費用,同時,與We b的結合也使得它們更便于
被訪問。
1998年2月,XML 1.0成為了W3C的推薦標準。包括Extended Backus-Naur Form (EBNF) 中語法
標識在內的這個正式的規范可以很容易地從W 3 C的We b站點(h t t p : / / w w w. w 3 c . o rg / T R / R E C - x m l)上
得到;此外,X M L規范的制定者之一Tim Bray還在h t t p : / / w w w. x m l . c o m / a x m l / t e s t a x m l . h t m上提供了
一個有著非常不錯的注解的版本。
在http://www.ucc.ie/xml/上,由Peter Flynn等人代表W3C的XML研究組維護的一個XML 1.0
FAQ還提供了到其他與XML相關的主題的鏈接。
X M L是一種界定文本數據的簡便而標準的方法。它曾經被人稱作“ We b上的A S C I I碼”。就
好像你可以使用自己喜愛的編程語言來創建任何一種數據結構,然后同其他人在其他計算平臺
上使用的其他語言來共享一樣。X M L的標記用來說明你所描述的概念,而屬性則用來控制它們
的結構。所以,你可以定義自己所設計出的語法并同其他人共享。
下面讓我們來看一個簡單的例子:
程序清單1 - 2
我們不必過多地擔心語法的特殊性,下面你會看到這種機制的強大所在—只要簡單地添
加標記就可以描述它們所封裝的信息。
X M L的數據描述機制意味著它將成為一種在I n t e r n e t上共享信息的強大途徑,因為:
• 它是開放的;X M L能夠在不同的用戶和程序之間交換數據,而不論其平臺如何。
• 它的自描述的特性使其對于B 2 B和企業內部網解決方案來說是一種有效的選擇。
• 無需事先協調,我們就可以在程序之間共享數據。后面我們將看到, X M L的機制使我們能
夠找出一類X M L文檔的結構。
為了使用X M L 文檔, W 3 C 為X M L標準化了一套應用程序編程接口( A p p l i c a t i o n
Programming Interface, API),這樣我們就可以輕松地編制讀寫X M L的程序,同時,開發者團體
第1章XML 簡介使用3 下載
還設計了一套特殊的,免費贈送的,基于事件的替代A P I。此外, X M L在設計時已準備支持非
歐洲語言和進行國際化。同HTML 4.01一樣,X M L基于的是在ISO/IEC 10646字符集標準(等同
于現在著名的U n i c o d e標準,h t t p : / / w w w. u n i c o d e . o rg)中定義的通用字符集( Universal Character
S e t,U C S)。可以說,所有促使H T M L得以流行的特性都出現在了X M L當中。
但是, X M L并非H T M L的直接替代品。在仔細閱讀了X M L推薦標準( W W W協會的對等標
準)中的每一個字之后,我們并沒有發現任何與可視化表現形式有關的內容。與注重數據及其
表達方式的H T M L不同,X M L只關心數據本身。
雖然X M L本身是數據,但X M L的研究者并沒有忘記如何表達的問題。與依靠擴充代碼部分
的傳統數據表示方法不同, X M L樣式的表現技術是由數據驅動的。從最簡單的到極端復雜的,
無所不能。但是,不論采用什么技術, X M L的樣式化都是通過另一個被稱作樣式單的文檔來實
現的。在其中,設計者會格式化樣式和決定何時應用樣式的規則。然后,這個樣式單又可以用
于其他多個文檔中,以產生類似的效果。
樣式和規則在顯示時會應用到X M L的數據上,它們甚至可以轉換為H T M L—或者其他什
么數據格式。本書的一條主線就是研究如何可視化地表示X M L標記出的數據。在H T M L中實現
樣式的特性可以說易如反掌,但老實說X M L在這方面并不擅長。
最后,不管We b上把X M L吹得多么神乎其神,但它并不能把之前的難題一掃而光。它能夠
使編程者輕松自如地完成許多有趣的事情,但X M L并不是編程語言,也不是基于對象的平臺,
更不是操作系統。它只是一種能夠思考、交換和表示數據的,獨立于平臺的,強大而精巧的技
術。
現在,我們已經對X M L略知一二,下面讓我們來看一看它是如何應用到We b的體系結構當
中的。
1.3 Web體系結構:過去與未來
第一代We b應用程序繼承了傳統的客戶機-服務器模式的軟件體系結構。其中某些將關系型
數據庫作為第三層使用,但所有各層由專用的、固定的方法進行控制。頗具諷刺意義的是,這
與We b的精髓是背道而馳的—由簡單的協議控制的松散的、開放的資源集合。與此相反,
X M L則出色地實現了這一目標。它為編程者提供的工具能夠構建真正的、由開放標準和自描述
數據控制的多層分布式系統。讓我們比較一下傳統We b體系結構與X M L驅動下的We b體系結構。
1.3.1 傳統Web體系結構
首先,讓我們了解一下We b應用程序的體系結構(參見圖1 - 1)。客戶端程序是一個瀏覽器,
它充當著瀏覽者的代理的角色。瀏覽器將對頁面的請求發送給H T T P服務器。這個請求會跟隨著
一系列的參數名稱和值。這些可能是被添加在頁面U R L的后面(HTTP GET),也可能是單獨發
送(HTTP POST)(要了解關于H T T P的詳細內容,請訪問h t t p : / / w w w. w 3 . o rg / P r o t o c o l s /)。參數
及其名稱是由應用程序決定的,而且必須為客戶端所知曉,要做到這一點,就需要把它們放置
到發出請求的頁面中。隨后,服務器應用程序的開發者也必須創建客戶端頁面。任何希望利用
服務器的人員都必須使用客戶端頁面,或者在客戶端頁面顛倒設計請求的結構。但是,只要服
4使用XML 高級編程
下載
務器改變請求的結構,這類顛倒設計就不再起作用。
在這種前提下,服務器會通過C G I腳本或A S P代碼來動態生成H T M L以滿足這類請求。這類
腳本可能使用一套數據庫,或者進行自身的一些處理。很少(如果有的話)有多個H T T P服務器
協作完成一個請求。
當然,這種結構足以正常的工作,但它確實有一些重要的限制:
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(2)