背景
1996年7月 W3C在Jon Bosak(SUN公司的網絡技術專家)的建議下成立了XML規(guī)范制訂小組,其目的是為了將標準通用標記語言SGML(Standard Generic Markup Language)方便地應用于網絡,參加規(guī)范制訂的是一大批著名公司、學術機構代表和SGML 專家。在他們的共同努力下XML 1.0建議書8經W3C認可于1998年2月10日正式公布于眾。隨即,XML便成為近年來國外許多科研機構、知名數(shù)據(jù)庫廠商和網絡軟件產品開發(fā)商的研發(fā)熱點,國內對XML的研究方興未艾。11
XML是一種獨立于軟件和硬件的工具,用于存儲和傳輸數(shù)據(jù)。XML代表可擴展標記語言,是一種與HTML非常相似的標記語言,被設計用于存儲和傳輸數(shù)據(jù),XML被設計為自描述的, XML是W3C推薦標準。
原理
可擴展標記語言與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關一致性等,可擴展標記語言僅僅是存儲數(shù)據(jù)。事實上它與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:可擴展標記語言極其簡單,這是一個看上去有點瑣細的優(yōu)點,但正是這點使它與眾不同。3
XML的簡單易于在任何應用程序中讀/寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換語言(此類語言主要包括XML,JSON等,常用于接口調用,配置文件,數(shù)據(jù)存儲等場景8),雖然不同的應用軟件也支持其他的數(shù)據(jù)交換格式,但不久之后它們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS、Linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析它,并以XML格式輸出結果。3
發(fā)展
XML有兩個先驅:SGML和HTML,這兩個語言都是非常成功的標記語言,但是都有一些與生俱來的缺陷。XML正是為了解決它們的不足而誕生的。4
隨著Web應用的不斷發(fā)展,HTML的局限性也越來越明顯地顯現(xiàn)了出來,如HTML無法描述數(shù)據(jù)、可讀性差、搜索時間長等。人們又把目光轉向SGML,再次改造SGML使之適應現(xiàn)在的網絡需求。隨著先輩的努力,1998年2月10日,W3C(World Wide Web Consortium,萬維網聯(lián)盟)公布XML 1.0標準,XML誕生了。4
XML最初的設計目的是為了EDI(Electronic Data Interchange,電子數(shù)據(jù)交換),確切地說是為EDI提供一個標準數(shù)據(jù)格式。4
當前的一些網站內容建設者們已經開始開發(fā)各種各樣的XML擴展,比如數(shù)學標記語言MathML、化學標記語言CML等。此外,一些著名的IT公司,如Oracle、IBM以及微軟等都積極地投入人力與財力研發(fā)XML相關軟件與服務支持,這無疑確定了XML在IT產業(yè)的重要地位。4
SGML
早在Web未發(fā)明之前,SGML(Standard Generalized Markup Language,標準通用標記語言)就已存在,正如它的名稱所言,SGML是國際上定義電子文件結構和內容描述的標準。SGML具有非常復雜的文檔結構,主要用于大量高度結構化數(shù)據(jù)的訪問和其他各種工業(yè)領域,在分類和索引數(shù)據(jù)中非常有用。4
雖然SGML的功能很強大,但是它不適用于Web數(shù)據(jù)描述,而且SGML軟件的價格非常昂貴;另外,SGML十分龐大,既不容易學,又不容易使用,在計算機上實現(xiàn)也十分困難:不僅如此,幾個主要的瀏覽器廠商都明確拒絕支持SGML,這無疑是SGML在網上傳播遇到的最大障礙。鑒于這些因素,Web的發(fā)明者——歐洲核子物理研究中心的研究人員,根據(jù)當時(1989年)的計算機技術,發(fā)明并推出了HTML。4
HTML
1989年,HTML誕生,它拋棄了SGML復雜龐大的缺點,繼承了SGML的很多優(yōu)點。HTML最大的特點是簡單性和跨平臺性。4
HTML是一種界面技術,它只使用了SGML中很少的一部分標記,例如HTML 4.0中只定義了70余種標記。為了便于在計算機上實現(xiàn),HTML規(guī)定的標記是固定的,即HTML語法是不可擴展的。HTML這種固定的語法使它易學易用,在計算機上開發(fā)HTML的瀏覽器也十分容易。正是由于HTML的簡單性,使得基于HTML的Web應用得到了極大的發(fā)展。4
特征
XML具有以下特點:4
- XML可以從HTML中分離數(shù)據(jù)。即能夠在HTML文件之外將數(shù)據(jù)存儲在XML文檔中,這樣可以使開發(fā)者集中精力使用HTML做好數(shù)據(jù)的顯示和布局,并確保數(shù)據(jù)改動時不會導致HTML文件也需要改動,從而方便維護頁面。XML也能夠將數(shù)據(jù)以“數(shù)據(jù)島”的形式存儲在HTML頁面中,開發(fā)者依然可以把精力集中到使用HTML格式化和顯示數(shù)據(jù)上。4
- XML可用于交換數(shù)據(jù)?;赬ML可以在不兼容的系統(tǒng)之間交換數(shù)據(jù),計算機系統(tǒng)和數(shù)據(jù)庫系統(tǒng)所存儲的數(shù)據(jù)有多種形式,對于開發(fā)者來說,最耗時間的工作就是在遍布網絡的系統(tǒng)之間交換數(shù)據(jù)。把數(shù)據(jù)轉換為XML格式存儲將大大減少交換數(shù)據(jù)時的復雜性,還可以使這些數(shù)據(jù)能被不同的程序讀取。4
- XML可應用于B2B中。例如在網絡中交換金融信息, 目前XML正成為遍布網絡的商業(yè)系統(tǒng)之間交換信息所使用的主要語言,許多與B2B有關的完全基于XML的應用程序正在開發(fā)中。4
- 利用XML可以共享數(shù)據(jù)。XML數(shù)據(jù)以純文本格式存儲,這使得XML更易讀、更便于記錄、更便于調試,使不同系統(tǒng)、不同程序之間的數(shù)據(jù)共享變得更加簡單。4
- XML可以充分利用數(shù)據(jù)。XML是與軟件、硬件和應用程序無關的,數(shù)據(jù)可以被更多的用戶、設備所利用,而不僅僅限于基于HTML標準的瀏覽器。其他客戶端和應用程序可以把XML文檔作為數(shù)據(jù)源來處理,就像操作數(shù)據(jù)庫一樣,XML的數(shù)據(jù)可以被各種各樣的“閱讀器”處理。4
- XML可以用于創(chuàng)建新的語言。比如,WAP和WML語言都是由XML發(fā)展來的。WML(Wireless Markup Language,無線標記語言)是用于標識運行于手持設備上(比如手機)的Internet程序的工具,它就采用了XML的標準。4
總之,XML使用一個簡單而又靈活的標準格式,為基于Web的應用提供了一個描述數(shù)據(jù)和交換數(shù)據(jù)的有效手段。但是,XML并非是用來取代HTML的。HTML著重如何描述將文件顯示在瀏覽器中,而XML與SGML相近,它著重描述如何將數(shù)據(jù)以結構化方式表示。4
規(guī)范
XML文件格式是純文本格式,在許多方面類似于HTML,XML由XML元素組成,每個XML元素包括一個開始標記( ),一個結束標記( )以及兩個標記之間的內容,例如,可以將XML元素標記為價格、訂單編號或名稱。標記是對文檔存儲格式和邏輯結構的描述。在形式上,標記中可能包括注釋、引用、字符數(shù)據(jù)段、起始標記、結束標記、空元素、文檔類型聲明( DTD)和序言。5
具體規(guī)則如下:
1、必須有聲明語句。4
XML聲明是XML文檔的第一句,其格式如下:4
<pre data-lang="xml"><?xml?version="1.0"?encoding="utf-8"?>
2、注意大小寫
在XML文檔中,大小寫是有區(qū)別的?!癆”和“a”是不同的標記。注意在寫元素時,前后標記的大小寫要保持一致。最好養(yǎng)成一種習慣,或者全部大寫,或者全部小寫,或者大寫第一個字母,這樣可以減少因為大小寫不匹配而產生的文檔錯誤。4
3、XML文檔有且只有一個根元素
良好格式的XML文檔必須有一個根元素,就是緊接著聲明后面建立的第一個元素,其他元素都是這個根元素的子元素,根元素完全包括文檔中其他所有的元素。根元素的起始標記要放在所有其他元素的起始標記之前;根元素的結束標記要放在所有其他元素的結束標記之后。4
4、屬性值使用引號
在HTML代碼里面,屬性值可以加引號,也可以不加。但是XML規(guī)定,所有屬性值必須加引號(可以是單引號,也可以是雙引號,建議使用雙引號),否則將被視為錯誤。4
5、所有的標記必須有相應的結束標記
在HTML中,標記可以不成對出現(xiàn),而在XML中,所有標記必須成對出現(xiàn),有一個開始標記,就必須有一個結束標記,否則將被視為錯誤。4
6、所有的空標記也必須被關閉
空標記是指標記對之間沒有內容的標記,比如“”等標記。在XML中,規(guī)定所有的標記必須有結束標記。4
示例:
<pre data-lang="xml"><?xml?version="1.0"?encoding="utf-8"?><manifest?xmlns:android="http://schemas.android.com/apk/res/android"??????package="osg.AndroidExample"??????android:installLocation="preferExternal"??????android:versionCode="1"??????android:versionName="1.0">????<uses-sdk?android:targetSdkVersion="8"?android:minSdkVersion="8"></uses-sdk>????<uses-feature?android:glEsVersion="0x00020000"/>?<!--?OpenGL?min?requierements?(2.0)?-->????<uses-permission?android:name="android.permission.INTERNET"/>????<application?android:label="@string/app_name"?android:icon="@drawable/osg">????????<activity?android:name=".osgViewer"??????????????????android:label="@string/app_name"?android:screenOrientation="landscape">?<!--??Force?screen?to?landscape?-->????????????<intent-filter>????????????????<action?android:name="android.intent.action.MAIN"?/>????????????????<category?android:name="android.intent.category.LAUNCHER"?/>????????????</intent-filter>????????</activity>????</application></manifest>
XML與HTML區(qū)別
(1)可擴展性方面:HTML不允許用戶自行定義自己的標識或屬性,而在XML中,用戶能夠根據(jù)需要自行定義新的標識及屬性名,以便更好地從語義上修飾數(shù)據(jù)。6
(2)結構性方面:HTML不支持深層的結構描述,XML的文件結構嵌套可以復雜到任意程度,能表示面向對象的等級層次。6
(3)可校驗性方面:HTML沒有提供規(guī)范文件以支持應用軟件對HTML文件進行結構校驗,而XML文件可以包括一個語法描述,使應用程序可以對此文件進行結構校驗。6
(4)可以通過將html文件轉換為符合xml標準的xhtml文件,實現(xiàn)html標準和xml標準的結合。
標準
雖然XML標準本身簡單,但與XML相關的標準卻種類繁多,W3C制定的相關標準就有二十多個,采用XML制定的重要的電子商務標準就有十多個。這一方面說明XML確實是一種非常實用的結構化通用標記語言,并且已經得到廣泛應用;另一方面,這又為了解這些標準帶來一定的困難,除了標準種類繁多外,標準之間通常還互相引用,特別是應用標準,它們的制定不僅僅使用的是XML標準本身,還常常用到了其他很多標準。XML標準的體系與SGML標準的體系非常相似,XML相關標準也可分為元語言標準、基礎標準、應用標準三個層次。6
元語言標準
描述的是用來描述標準的元語言。在XML標準體系中就是XML標準,是整個體系的核心,其他XML相關標準都是用它制定的或為其服務的。6
基礎標準
這一層次的標準是為XML的進一步實用化制定的標準,規(guī)定了采用XML制定標準時的一些公用特征、方法或規(guī)則。如 XML Schema描述了更加嚴格地定義XML文檔的方法,以便可以更自動化處理XML文檔;XMLNamespace用于保證 XML DTD中名字的一致性,以便不同的DTD中的名字在需要時可以合并到一個文檔中;XSL是描述XML文檔樣式與轉換的一種語言;XLink用來描述XML文檔中的超鏈接;XPointer描述了定位到XML文檔結構內部的方法;DOM定義了與平臺和語言無關的接口,以便程序和腳本動態(tài)訪問和修改文檔內容、結構及樣式等。6
應用標準
XML已開始被廣泛接受,大量的應用標準,特別是針對因特網的應用標準,紛紛采用XML進行制定。有人甚至認為,XML標準是因特網時代的ASCII標準。在這因特網時代,幾乎所有的行業(yè)領域都與因特網有關。而它們一旦與因特網發(fā)生關系,都必然要有其行業(yè)標準,而這些標準往往采用XML來制定。6