XML
维基百科,自由的百科全书
XML (英文全称 eXtensible Markup Language)延伸式標式語言,是一个实现自定义标记语言的通用标准。
目录 |
[编辑] 起源
XML是由W3C(World Wild Web Consortium 全球資訊網協會)所制定的標誌語言規範。XML的前身是SGML(The Standard Generalized Markup Language)。同時W3C也發現到HTML的問題:
‧不能解決所有解釋資料的問題 - 像是影音檔或化學公式、音樂符號等其他形態的內容。
‧效能問題 - 需要下載整份文件,才能開始對文件做搜尋。
‧擴充性、彈性、易讀性均不佳。
為了解決以上問題,專家們使用SGML精簡製作,並依照HTML的發展經驗,產生出一套使用上規則嚴謹,但是簡單的描述資料語言:XML。
[编辑] 歷史
Tim B-Lee在美國麻省理工學院計算機實驗室(MIT/LCS)聯合CERN,以及美國國防部先進計劃管理局(DARPA)和歐盟的支持下,於1994年10月創立了全球資訊網協會(World Wild Web Consortium,W3C)。W3C的成員涵蓋世界各國,藉由會員的努力,W3C擬訂了許多全球資訊網的共同標準。不過由於Netscape與IE為了爭奪市場而引發的瀏覽器大戰,各家瀏覽器競相加入各自的規格造成多特殊的HTML規格,而偏離了W3C隊HTML版本的掌控。 另一方面,GSML具有很大的彈性,可透過它解決HTML所有的問題,但就是因其太過龐大與複雜,以至於雖然他在1986年就成為國際標準,卻難以在網路的世界被廣泛的應用。基於HTML本質上無法呈現文件內容的結構,加上瀏覽器大戰所造成的失控,因此W3C在1996年底提出了GSML簡化版─「XML Special Interest Group」共同負責規劃,希望能提出具備為整文件內涵的標示語言。XML將GSM中許多不常用的特性刪除,大幅簡化了相關電腦應用程是在處理及設計上的複雜度,並於1998年2月10日公布XML1.0規格建議書。
[编辑] 功用/用途
XML用途的焦點是說明數據是什麼以及攜帶數據信息,不用來表現或展示數據,常應用於web開發的許多方面、簡化資料的存儲和共用。XML可自定文件描述並使其更豐富、描述其它文件或網路資訊和描述軟體設定的參數。 透過 XML,資料能夠存儲在獨立的 XML 檔中。這樣就可以專注於使用 HTML 進行佈局和顯示,並確保修改底層資料不再需要對 HTML 進行任何的改變。對開發人員來說,最費時的挑戰一直是在網際網路上不相容系統之間的資料交換。由於XML 可以簡化資料,通過各種不相容的應用程式來讀取資料,所以XML可以在不相容的系統之間輕鬆地交換資料,降低了這種複雜性。在不損失資料的情況下,也更容易擴展或升級到新的作業系統、新應用程式或新的瀏灠器。 目前最被大量使用的地方在於RSS機制。例如部落格有新增文章,只要部落格有遵循XML 1.0/2.0的規範去發佈新增文章的RSS資料,就可以被任何RSS Reader所擷取及辨識,而不會產生不同部落格的 RSS 格式不一,造成 RSS Reader 只能適用特定少數的部落格系統。 傳統 HTML 雖然已經很廣泛地流傳,但它有個很大的缺點:沒有嚴謹的規範,所以過去的網頁時常有不同瀏覽器顯示狀況差距很大的情形。而 XML 在這方面就有很大的優勢,因為 XML 格式非常嚴謹,一定要有節尾 tag、巢狀結構該如何等,XML 都有很嚴格的規範。
[编辑] 特色
[编辑] 可擴展性
大部分的標示語言,包括HTML都是「固定式」的標籤語言。也就是說,這些標示語言的標籤是固定的,您只能使用規範定義所定義的標籤。而XML則沒有定義任何標籤,因此彈性、延伸性都比其他「固定式」的標籤語言更強大與方便。
[编辑] 結構性
XML能描述各種複雜的文件結構。因為所有表單形式的文件結構都是欄位與子欄位之關係,也就是樹狀結構。而XML元素的層級即屬於樹狀結構,因此完全能處理所有表單型式的文件結構。
[编辑] 嚴格的語法規範
如標籤大小寫、起始的標籤必須有對應的結束標籤、屬性前後引號等等規範。而一個良好的典藏資料管理系統亦需要嚴格的格式約束能力,以確保資料儲存的一致性,以便爾後能符合系統轉移(migration)、資料轉換、批次轉換的需求。
[编辑] 可確認性
XML包括兩個定義規則的機制來控制文件如何被結構化,也就是說,決定文件的範圍包括兩個:文件型別定義(Document Type Definition,DTD)與XML Schema。透過文件結構的規範,例如,欄位是否重複、欄位出現的次序、內容格式等,XML文件能夠自動地被應用程式檢查是否符合這些規範。通常負責檢查的程式稱為XML剖析器(Parser),檢查的過程稱為剖析(Parsing)。
[编辑] 可讀性
XML可以根據DTD/XML Schema對文件進行結構確認。其中DTD是沿用SGML的型別定義,但DTD與XML(或SGML)的宣告方式完全不一樣,因此原本屬於一項缺點。但W3C於2001年5月2日正式公布XML Schema,使用同樣是XML與法的XML Schema來定義XML的結構,使得描述與定義的語法均相同,改善的使用DTD的缺點,簡化了系統開發的複雜度。
[编辑] 結構與資料分開
XML從格式化分開出標示文法,對XML而言有相當大的彈性,當然在標示這方面也就有更嚴格的限制。而彈性可以使系統有更廣大的應用空間;嚴格的限制則可以使資料更能確保其格式的正確。當然嚴格的格式限制,必須依賴系統的輔助,以便減少資料輸入人員的負荷。
[编辑] 基礎
[编辑] 軟體需求
XML本身是很簡單的電子文件,透過標籤的標示表達各元素的內涵,無論是達到資源描述,資料交換,物件存取,遠端呼叫等應用,均需依賴許多搭配的延伸技術或系統,不過XML的規格仍再持續發展當中,一些輔助XML的相關技術和術語一直出現,但事實上也沒有任何一種軟體能支援所有XML的技術。 目前,XML文件編輯、驗證的軟體種類非常多,尤其是各硬體廠商都極力支援XML,因此各大公司幾乎都有提供相關的工具。
1.XML剖析器(parser) XML屬於剖析語言,因此需要剖析器來分析及處理文件中的資料,也就是依照標籤解讀資料,分析出文件中各元素的內容取出所需要的資訊。不過因各公司應用XML的程度不一,剖析器的標準程度並不相同,目前最容易取得的是完全支援中文介面的IE瀏覽器了。此外還是許多XML的剖析器,例如:lark、SP、expat,等,不過大部分不能執行有效性的驗證。
2.XML驗證器(Validator) 如果需要執行XML有效性的驗證,也就是搭配DTD或XML SCHEMA來檢驗XML文件是否符合制定的型態結構時,就必須透過XML驗證工具來檢驗,不過許多工具也只是提供是否合乎文法的檢驗,不能執行有效性驗證。
3.XML編輯工具 因為XML件即是文字檔,因此如果只是單傳編輯XML文件,只要能支援XML文件內容字碼,尤其是UNICODE的文書處理器都可以編輯XML文件。不過如果需要編輯或是協助產生DTD與XML SCHEMA等型態定義資料,就必須要功能比較強的編輯器了。很多免費的XML編輯器,但功能都不是很強大,例如:微軟的XML NOTEPAD。不過也有一些免費軟體如XMEDIL也有不錯的功能,只是一直沒有推出正式版本。而現在具備DTD與XML SCHEMA編輯與驗證的工具有:
-TIBCO公司的TurboXML
-Altova公司的XML Spy
[编辑] 結構
XML是屬於一種描述式標示,能夠透過標式劃分個別資料的部份,清楚的區別出每一個資料項目。描述式標示強調的是標記資料的特徵,而不是呈現的方式,因此XML是一種能夠明確的表達資料之間的關係和結構的一種方式。也就是說XML的類型可以呈現出資料的標題、內文、段落、頁碼等不同層次的結構。 但是HTML就和XML不同,他是屬於程序性標示,也就是說他只是顯示資料的內容和指令,只能呈現出字體大小、形式,無法直接透過呈現的結果推出內容所包含的資訊,多數的文書軟體也都屬於這一種標示,因此這也突顯了XML的優點。
XML的使用目的則是描述資料 <?xml version="1.0" encoding="big5" ?>
<catalog>
<tutorial> <title>認識XML</title> <author>阿得</author> <date>9/19/2002</date> <category>XML教學</category> </tutorial>
<tutorial> <title>Javascript: 隨機背景音樂</title> <author>阿得</author> <date>8/31/2002</date> <category>Javascript教學</category> </tutorial>
<tutorial> <title>VBscript: Class類別</title> <author>阿得</author> <date>9/
[编辑] SGML, XML &HTML的關係
[编辑] 與SGML比較
XML是SGML的簡化版SGML的優點,並簡化了SGML複雜不意開發的特性。兩者相同之處,都是一種Meta-Language,可以定義各種標示語言。具可擴展性與認可性等優點,能夠描述各種複雜的文件結構,並可以驗證文件結構的完整性與正確性。而且XML與SGML都必須搭配延伸技術來設定文件內容的處理與呈現格式,並且都具有跨平台、可長期保存、可再利用、能被人直接閱讀等特性。 XML與SGML相異點如下表所示,SGML在與法上具有相當大的彈性,使用者可以針對不同需要選擇不同特徵,但是與法上彈性越大相對的也使得SGML剖析器與應用程式的難度級所需投入的成本提高很多,早成SGML無法被普片接受。基於SGML因過度複雜而在發展上遭遇的限制,XML捨去了SGML中相當多的功能,改由在與法上加入較多的規定與限制,來換去開發XML剖析器與應用程式的簡單性。
XML SGML
XML文件不一定要包含文獻型別的 定義(DTD或XML Schema),但必須 SGML必須具備DTD 符合文法要求(Well-formendness)
SGML可以使用包含(Inclusion)與除外
XML不支援例外處理(Exception) (Exclusion)兩種語法規則來指定內容
模式(content model)的例外處理
包括各種generate entity、parameter
entity、internal entity、subdocument
XML不支援AND(&)內容模式、SDATA entity等實體,並支援實體得參照
等語法 (reference)其中,data entity包括CDATA
、SDATA、NDATA等型態
[编辑] 與HTML比較
XML與HTML屬於不同層級的標示技術。HTML是一種特定的標示語言,目的在於網頁資料的呈現與資料間的連結。大部分的HTML可以很容易用XML來描述,因此可以很容易地將XML與既有的HTML網站作整合。但XML不是用來取代HTML的,簡易網站的架設還是使用HTML比較方便,XML則是比較適合商業應用的資訊處理或資料設計的應用。XML與HTML特性上之差異最主要的便是HTML包含一組標準的標籤集(tag set),標籤是用來指示特定的文字片段在文件中所扮演的角色,每一個標籤都有標準的意義;而XML並無既定的標籤集,所有的標籤都是依據使用需求自訂。 簡單來講,兩者最大的不同是,XML是被設計為描述資料,著重說明資料內容和資料間的關係;HTML是被設計為展示資料,它著重在資料呈現的效果。XML是為了描述資訊,HTML是為了展示資訊。
HTML XML
擴展性 標籤集與每個標籤的意義是 允許使用者根據需要,自行定義
固定的,使用者無法自行定 標籤與屬性。
義標籤或屬性。
結構性 不支援結構描述,只支援資 能描述各種複雜的文件結構。
料的呈現關係。
確認性 沒有提供嚴格的語法檢驗, 包含一個資料型別定義(DTD)或
內定的資料型別定義(DTD) XML Schema,應用程式對文件能
只著重於標籤的定義,而非 夠進行結構確認。
結構的定義。
XML在語法上必須遵守嚴格的文法要求,而HTML則有較寬鬆的限制。雖然大致上XML與HTML的文法要求相同,但XML文件並不容許任何違反文法的情況發生,而HTML則能正確無誤地被處理。
[编辑] 理論與應用
人們習慣將所有的事情都以階層的方式表示。這是處理複雜任務的唯一方法。從購買軍事補給品到建造太空船,都可以用這種方式來分析。任何有階層性結構都可以使用XML來描述。從製造飛機的零件到公司組織,都可以用XML來描述。 不過,XML也並非全無缺陷。XML並非事物物件導向的觀念。若使用者利用XML來描述物件導向觀念的計畫時,則將會產生很多困擾。為了擴大XML載物件導向領域的應用,這個問題終將會獲得解決。 舉一個非物件導向的例子來說。由於XML文件是完全揭露的,所以XM文件不能繼承也不能封裝。不過,XML文件卻擁有物件導向的一個特性,那就是多型。所以,我們可以說XML正朝向物件導向的領域邁進,此刻,我們可以用XML來完成許多事,例如: 就某個角度來說,我們已經使用XML很長一段時間了。由於HTML和XML非常接近,所以很多HTML都可以在XML處理器行無誤。XHTML1.0的標準就是從融合HTML4.0 DTD及SGML於XML DTD中所產生的。所以,HTML的文件將會相容於XHTML文件。因此,我們以前用HTML所做的文件,除了少數部分需要做修改之外,幾乎都不需要再轉換成XML文件。就算需要做部分修改,我們也可以利用一些簡單的應用程式來做批次處理。
[编辑] 未來的發展
直到目前,整個XML的標準都還在成形中。W3C將整個XML分解成各個不同的部分,這樣就能確保當W3C達成各種不同的協定時,各種意見及提議都會被加以考慮。
[编辑] 參考資料
1.余顯強,XML標準與技術簡介,數位典藏國家型科技計畫,頁9, 23-32。 2.Lee Anne Philips原著,莊金松編譯,XML全方位完全剖析,第三波資訊股份有限公司,頁3-18。
[编辑] 参见
[编辑] 外部联结
|
|
|
|---|---|
| 文档呈现语言 | HTML* - XHTML* - XML* - XForms* - DHTML* |
| 样式格式描述语言 | CSS* - XSL* |
| 动态网页技术 | CGI - ASP - ASP.NET - ColdFusion - JSP - PHP - Ruby on Rails |
| 客户端交互技术 | ActiveX - Java Applet - Flash - Flex - AJAX - XMLHTTP* AIR- Silverlight - JavaFX |
| 客户端脚本语言 | JavaScript - JScript - VBScript - ECMAScript - ActionScript |
| 标识定位语言 | URL - URI - XPath - URL重寫 |
| 文档纲要语言 | DTD* - XML Schema* |

