XML - 可擴展標記語言
XML即可擴展置標語言(英文:Extensible Markup Language,簡稱XML),又稱可擴展標記語言,是一種置標語言。置標指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。它與HTML一樣,都是SGML - 標準通用標記語言。XML是Internet環(huán)境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數據要占用更多的空間,但XML極其簡單易于掌握和使用。

簡介
XML,可擴展的標識語言(eXtensible?Markup?Language),其先驅是SGML和HTML。SGML,通用標識語言標準(Standard?Generalized?Markup?Language),是國際上定義電子文件結構和內容描述的標準,是一種非常復雜的文檔結構,主要用于大量高度結構化數據的防衛(wèi)區(qū)和其它各種工業(yè)領域,便于分類和索引。同XML相比,SGML定義的功能很強大,然而它不適于Web數據描述,而且價格非常昂貴。
XML與Access,Oracle和SQLServer等數據庫不同,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是展示數據。事實上XML與其他數據表現形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優(yōu)點,但正是這點使XML與眾不同。
XML的簡單使其易于在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟件也支持其它的數據交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows、MacOS、Linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數據到程序中并分析他,并以XML格式輸出結果。
為了使得SGML顯得用戶友好,XML重新定義了SGML的一些內部值和參數,去掉了大量的很少用到的功能,這些繁雜的功能使得SGML在設計網站時顯得復雜化。XML保留了SGML的結構化功能,這樣就使得網站設計者可以定義自己的文檔類型,XML同時也推出一種新型文檔類型,使得開發(fā)者也可以不必定義文檔類型。
XML是W3C制定的,XML的標準化工作由W3C的XML工作組負責,該小組成員由來自各個地方和行業(yè)的專家組成。因為XML是個公共格式, - 它不專屬于任何一家公司,不必擔心XML技術會成為少數公司的盈利工具,XML不是一個依附于特定瀏覽器的語言。
歷史回溯
XML是從1996年開始有其雛形,并向W3C(全球信息網聯盟)提案,而在1998二月發(fā)布為W3C的標準(XML1.0)。XML的前身是SGML(The Standard Generalized Markup Language),是自IBM從60年代就開始發(fā)展的GML(Generalized Markup Language)標準化后的名稱。
文件中能夠明確的將標示與內容區(qū)隔;所有文件的標簽使用方法均一致。1978年,ANSI將GML加以整理規(guī)范,發(fā)布成為SGML,1986年起為ISO所采用(ISO8879),并且被廣泛地運用在各種大型的文件計劃中,但是SGML是一種非常嚴謹的文件描述法,導致過于龐大復雜(標準手冊就有500多頁),難以理解和學習,進而影響其推廣與應用。
人們對SGML進行了簡化衍生出HTML。HTML簡單,在初期沒有任何定義文檔外觀的相關方法,僅用來在瀏覽器里顯示網頁文件。而后,隨著因特網的發(fā)展,人們?yōu)榱丝刂破湮募邮?,擴充了描述如何顯現數據的卷標。在Netscape與Microsoft之間的瀏覽器大戰(zhàn)后,HTML標準權威性遭受重大的考驗,所幸,到了HTML4.0時,W3C又恢復了其地位。
同時W3C意識到HTML的原罪:
不能解決所有解釋數據的問題-像是影音文件或化學公式、音樂符號等其它型態(tài)的內容。
效能問題-需要下載整份文件,才能開始對文件做搜尋的動作。
擴充性、彈性、易讀性均不佳。
為了解決以上問題,專家們使用SGML精簡制作,并依照HTML的發(fā)展經驗,產生出一套使用上規(guī)則嚴謹,但是簡單的描述數據語言:XML。XML是在一個這樣的背景下誕生的─是不是能有一個更中立的方式,讓消費端自行決定要如何消化、呈現從服務端所提供的信息。而XML目的即在于提供一個對信息能夠做精準描述的機制,藉以彌補HTML太過于表現導向的特質。
作用
1、豐富文件(Rich Documents)-自定文件描述并使其更豐富;
2、屬于文件為主的XML技術應用;
3、標記是用來定義一塊數據應該如何呈現;
4、解釋數據(Metadata)-描述其它文件或在線信息;
5、屬于數據為主的XML技術應用;
6、標記是用來說明一塊資料的意義;
7、組態(tài)檔案(Configuration Files)-描述軟件的組態(tài)參數。
簡明語法
SGML常用來定義針對HTML的文檔類型定義(DTD),同時它也常用于編寫XML的DTD。SGML的問題就在于,它允許出現一些奇怪的語法,這讓創(chuàng)建HTML的解析器成為一個大難題:
1、某些起始標簽不允許出現結束標簽,例如HTML中標簽。包含了結束標簽就會出現錯誤。
2、某些起始標簽可以選擇性出現結束標簽或者隱含了結束標簽,例如HTML中標簽,當出現另一個標簽或者某些其他標簽時,便假設在這之前有一個結束標簽。
3、某些起始標簽要求必須出現結束標簽,例如HTML中標簽。
4、標簽可以以任何順序嵌套。即使結束標簽不按照起始標簽的逆序出現也是允許的,例如,Thisisasamplestring是正確的。
5、某些特性要求必須包含值,例如中的src特性。
6、某些特性不要求一定有值,例如[td]中的nowrap特性。
7、定義特性的兩邊有沒有加上雙引號都是可以的,所以和都是允許的。
這些問題使建立一個SGML語言的解析器變成了一項艱巨的任務。判斷何時應用以上規(guī)則的困難導致了SGML語言的定義一直停滯不前。以這些問題作為出發(fā)點,XML逐漸步入視野。
XML去掉了之前令許多開發(fā)人員頭疼的SGML的隨意語法。在XML中,采用了如下的語法:
8、任何的起始標簽都必須有一個結束標簽。
9、可以采用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大于符號之前緊跟一個斜線(/),例如。XML解析器會將其翻譯成。
10、標簽必須按合適的順序進行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽,例如thisisasamplestring。這好比是將起始和結束標簽看作是數學中的左右括號:在沒有關閉所有的內部括號之前,是不能關閉外面的括號的。
11、所有的特性都必須有值。
12、所有的特性都必須在值的周圍加上雙引號。
這些規(guī)則使得開發(fā)一個XML解析器要簡便得多,而且也除去了解析SGML中花在判斷何時何地應用那些奇怪語法規(guī)則上的工作。僅僅在XML出現后的前六年就衍生出多種不同的語言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同時也將HTML改進為XHTML。XML已經是世界上發(fā)展最快的技術之一。它的主要目的是使用文本以結構化的方式來表示數據。在某些方面,XML文件也類似于數據庫,提供數據的結構化視圖。
與HTML相關
與HTML的關系
XML是一種類似于HTML的標記語言,XML是用來描述數據的,XML的標記不是在XML中預定義的,你必須定義自己的標記,XML使用文檔類型定義 - DTD或者模式 - Schema來描述數據,XML使用DTD或者Schema后就是自描述的語言,XML(eXtensibleMarkupLanguage)是可擴展標記語言,它與HTML一樣,都是處于SGML,標準通用語言。Xml是Internet環(huán)境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數據要占用更多的空間,但XML極其簡單易于掌握和使用。
XML的簡單使其易于在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟件也支持其它的數據交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows、MacOS,Linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數據到程序中并分析他,并以XML格式輸出結果。
因為XML是W3C制定的,XML的標準化工作由W3C的XML工作組負責,該小組成員由來自各個地方和行業(yè)的專家組成,他們通過email交流對XML標準的意見,并提出自己的看法 - www.w3.org/TR/WD-xml。因為XML是個公共格式, - 它不專屬于任何一家公司,你不必擔心XML技術會成為少數公司的盈利工具,XML不是一個依附于特定瀏覽器的語言。
與HTML的區(qū)別
XML和HTML的不同可以歸納為3點:
一、XML擴展性比HTML強
XML(Extensible Markup Languages)是擴展標記語言的英語縮寫,他可以創(chuàng)建個性化的標記語言,可以稱之為元語言。XML的標記語言可以自定義,這樣可以提供更多的數據操作,而不像HTML一樣,只能局限于按一定的格式在終端顯示出來。HTML的功能只有瀏覽器放入顯示和打印,僅僅適合靜態(tài)網頁的要求。
二、XML的語法比HTML嚴格
由于XML的擴展性強,它需要穩(wěn)定的基礎規(guī)則來支持擴展。它的嚴格規(guī)則為:
①起始和結束的標簽相匹配
②嵌套標簽不能相互嵌套
③區(qū)分大小寫
相對應XML的嚴格規(guī)則,HTML語言并沒有規(guī)定標簽的絕對位置,也不區(qū)分大小寫,而這些全部由瀏覽器來完成識別和更正。
三、XML與HTML互補
XML可以獲得應用之間的相應信息,提供終端的多項處理要求,也能被其他的解析器和工具所使用,在現階段,XML可以轉化成相應的HTML,來適應當前瀏覽器的需求。
文檔結構
每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言。這一行代碼會告訴解析器和瀏覽器,這個文件應該按照前面討論過的XML規(guī)則進行解析。第二行代碼,,則是文檔元素(documentelement),它是文件中最外面的標簽是起始標簽和結束標簽之間的內容)。所有其他的標簽必須包含在這個標簽之內來組成一個有效的XML文件。XML文件的第二行并不一定要包含文檔元素;如果有注釋或者其他內容,文檔元素可以遲些出現。
頁面再往下的一些地方,可以發(fā)現標簽里有一些特殊的語法。代碼用于表示無需進行解析的文本,允許諸如大于號和小于號之類的特殊字符包含在文本中,而無需擔心破壞XML的語法。文本必須出現在之間才能合適地避免被解析。這樣的文本稱為Character Data Section,簡稱CDATASection。
雖然很像XML序言,但實際上是一種稱為處理指令(processinginstruction)的不同類型的語法。處理指令(以下簡稱PI)的目的是為了給處理頁面的程序(例如XML解析器)提供額外的信息。PI通常情況下是沒有固定格式的,唯一的要求是緊隨第一個問號必須至少有一個字母。在此之后,PI可以包含除了小于號和大于號之外的任何字符串序列。
應用
可擴展標記語言是一種元標記語言,即定義了用于定義其他特定領域有關語義的、結構化的標記語言,這些標記語言將文檔分成許多部件并對這些部件加以標識。XML?文檔定義方式有:文檔類型定義(DTD)和XML?Schema。DTD定義了文檔的整體結構以及文檔的語法,應用廣泛并有豐富工具支持。XML?Schema用于定義管理信息等更強大、更豐富的特征。XML能夠更精確地聲明內容,方便跨越多種平臺的更有意義的搜索結果。它提供了一種描述結構數據的格式,簡化了網絡中數據交換和表示,使得代碼、數據和表示分離,并作為數據交換的標準格式,因此它常被稱為智能數據文檔。
XML技術已經廣泛應用于e-Learning應用系統(tǒng)的開發(fā),大多數的商用e-Learning平臺都支持XML標準。一些主要的網絡設備制造商,如CISCO、JUNIPER等,生產的網絡設備也已提供了對XML的支持,以利于今后基于XML的網絡管理。
XML在e-Learning管理中的應用
一、兼容現有協議
XML文檔格式的管理信息可以很容易地通過HTTP?協議傳輸,由于HTTP是建立在TCP之上的,故管理數據能夠可靠傳輸。XML還支持訪問XML文檔的標準API,如DOM,SAX,XSLT,Xpath等。
二、統(tǒng)一的管理數據存取格式
XML能夠以靈活有效的方式定義管理信息的結構。以XML格式存儲的數據不僅有良好的內在結構,而且由于它是W3C提出的國際標準,因而受到廣大軟件提供商的支持,易于進行數據交流和開發(fā)?,F有網絡管理標準如TMN、SNMP等的管理信息庫規(guī)范決定了網管數據符合層次結構和面向對象原則,這使得以XML格式存儲網管數據也非常自然,易于實現。
三、不同應用系統(tǒng)間數據的共享和交互
只要定義一套描述各項管理數據和管理功能的XML語言,用Schema對這套語言進行規(guī)定,并且共享這些數據的系統(tǒng)的XML文檔遵從這些Schema,那么管理數據和管理功能就可以在多個應用系統(tǒng)之間共享和交互。
四、底層傳輸的數據更具可讀性
網絡中傳輸的底層數據因協議不同而編碼規(guī)則不同,雖然最終傳輸時都是二進制位流,但是不同的應用協議需要提供不同的轉換機制。這種情況導致管理站在對采用不同協議發(fā)送管理信息的被管對象之間進行管理時很難實現兼容。如果協議在數據表示時都采用XML格式進行描述,這樣網絡之間傳遞的都是簡單的字符流,可以通過相同的XML解析器進行解析,然后根據不同的XML標記,對數據的不同部分進行區(qū)分處理,使底層數據更具可讀性。
五、它和json都是一種數據交換格式
XML由3個部分構成,它們分別是:文檔類型定義(Document?Type?Definition,DTD),即XML的布局語言;可擴展的樣式語言(Extensible?Style?Language,XSL),即XML的樣式表語言;以及可擴展鏈接語言(Extensible?Link?Language,XLL)。
(1)DTD
DTD規(guī)定了文檔的邏輯結構。它可定義文檔的語法,而文檔的語法反過來也能夠讓XML語法分析程序確認頁面標記使用的合法性。DTD定義了頁面的元素、元素的屬性及元素和屬性間的關系。元素與元素間用起始標記和結束標記來定界,對于空元素,用一個空元素標記來分隔。每一個元素都有一個用名字標識的類型,也稱為它的通用標識符,并且它還可以有一個屬性說明集。每個屬性說明都有一個名字和一個值。理想定義應該面向描述與應用程序相關的數據結構,而不是如何顯示數據。就是說,應該把一個元素定義為一個標題行,之后讓樣式表和腳本定義顯示標題行。
DTD不具強制性。對于簡單的應用程序來說,開發(fā)商不需建立自己的DTD,可以使用預先定義的公共DTD或不使用。即使某個文檔已經有DTD,只要文檔組織是良好的,語法分析程序也不必對照DTD來檢驗文檔的合法性。服務器可能己執(zhí)行了檢查,所以檢驗的時間和帶寬將得以大幅度節(jié)省。
(2)XSL
XSL是用來規(guī)定XML文檔樣式的語言。XSL能使Web瀏覽器改變原有文檔的表示法,例如改變數據的顯示順序,不必再與服務器進行交互通信。通過樣式表的變換,同一文檔可以顯示得更大,或經過折疊只顯示外面的一層,或者變?yōu)榇蛴「袷健?/p>
XSL憑借其本身的可擴展性,能夠控制無窮無盡的標記,而且控制每個標記的方式也是無窮盡的,這也給Web提供了高級的布局特性。如文本的旋轉、多列和獨立區(qū)域。同時支持國際書寫格式,可在一頁上混合使用從左至右、從右至左及從上至下的書寫格式。就如同XML介于HTML和SGML之間一樣,XSL標準是介于CSS和SGMI的文檔樣式語義和規(guī)范語言之間的。
(3)XLL
XLL支持Web上已有的簡單鏈接,而且將進一步擴展鏈接,包括終結死鏈接的間接鏈接及可從服務器中只查詢某個元素的相關部分鏈接等。
超文本標記語言(HTML)僅僅執(zhí)行歷來與超文本系統(tǒng)概念相關的極少功能,僅支持最簡單的鏈接形式,即指向硬編碼位置的單向鏈接,這與XML相比有著很大的差別。在為XML所設想的真正超文本系統(tǒng)中,所有典型的超文本鏈接機制全部將得到支持,包括:與位置無關命名,雙向鏈接,可在文檔外規(guī)定和管理的鏈接,元超鏈接(如環(huán)路、多個窗口),集合鏈接(多來源),Transc1usion(鏈接目標文檔是鏈接源文檔的一部分),鏈接屬性(鏈接類型)。
所有這些可通過XLL來實現。由于XML以SGML作為基礎,因此,XLL基本上屬于Hytime(超媒體/基于時間的結構語言,ISO10744)的一個子集,另外它還遵循文本編碼所倡議規(guī)定的鏈接概念。
XML能方便有效地表示結構化數據,這就使得XML可以作為描述和傳輸數據的手段。使用XML進行數據交換已經成為計算機軟件領域的標準技術模式。通過XML實現數據的標準化、結構化,解決了在不同平臺、不同系統(tǒng)之間的數據結構/模式的差異,使得數據層在XML技術的支持下統(tǒng)一起來。
Web?Service全部的規(guī)范、技術都是以XML為底層核心和構架基礎的,對Web?Service而言,SOAP、WSDL和UDDI,都是使用XML作為信息描述和交換的標準手段。XML技術的產生促使了Web?Service技術的產生與發(fā)展。
