XML是什麼,講述XML基礎知識

XML基礎知識

減小字體

增大字體

隨著互聯網的迅猛發展和普及,人們可以通過計算機與互聯網聯接,從世界各地實時的接收和發送大量、最新的信息,但在信息交換的過程中存在著一個突出的問題,就是多種多樣的數據格式,給信息的有效使用帶來了障礙。所以在信息時代,如何以最便捷、最可靠、最有效的方式獲取所需的信息是一個很大的困擾。人們期待著能夠找到一種可以描述任何邏輯關係的數據格式來統一電子數據的存儲,從而不再因為數據格式的不統一而苦惱和困惑。目前,能夠擔當此任的就是xml(extensible markup language,可擴展符號化語言)。  可以說,xml的出現給數據交換帶來了一場革命;xml的出現是至今為止最聰明的一種符號化語言;xml成為下一代網路發展的基石。

什麼是XML?XML是EXtensible Markup Language的縮寫。XML是一種類似於HTML的標記語言。XML是用來描述數據的。XML的標記不是在XML中預定義的,你必須定義自己的標記。XML使用文檔類型定義(DTD)或者模式(Schema)來描述數據。XML使用DTD或者Schema後就是自描述的語言。RSS (Really Simple jkndication) 是一種用於發布和獲取網路內容(例如頭條新聞)的XML格式。使用RSS閱讀器來閱讀,你可以不用一個個去開頁面,也能夠很快地知道關注網路內容更新了沒有。目前RSS有多個版本,如:0.90、0.91、0.92、0.93、0.94、1.0 和 2.0,而應用最廣泛的有RSS 1.0 和 RSS 2.0 兩個版本。XML和HTML的主要區別是什麼。XML是用來存放數據的。

XML不是HTML的替代品,XML和HTML是兩種不同用途的語言。XML是被設計用來描述數據的,重點是:什麼是數據,如何存放數據。HTML是被設計用來顯示數據的,重點是:顯示數據以及如何顯示數據更好上面。HTML是與顯示信息相關的, XML則是與描述信息相關的。XML 什麼也不做。XML 被設計成什麼都不做的。也許看起來很難理解,但事實上XML確實什麼都不做。XML只是用來組織、存儲和發送信息的。下面的例子是Ordm給Lin的便條,使用的是XML格式:

<note> <to>Lin</to> <from>Ordm</from> <heading>Reminder</heading> <body>Don"t forget me this weekend!</body> </note>

這個便條有信息頭,又信息主體,還包括發送人和接收人。儘管如此,這個XML文檔仍然什麼都不做,他只是用XML標記存儲信息的文件。有人已經編寫出來發送和接收並且顯示這種格式信息的軟體。XML是自由的、可以擴展的。XML標記並不是預先規定好的,你必須創造你自己的標記。在HTML文檔中必須使用規則中定義好的標記。比如:<P><br><a></a>等等。XML允許你定義自己的標記以及文檔結構。比如在上面例子中的"<to>"、"<from>"標記都不是在XML規範中事先定義好的。這些標記都是XML文檔的作者「創造」出來的。

XML是HTML的補充。XML並不是HTML的替代品。XML並不是HTML的替代品,理解這一點非常重要。在將來的網頁開發中,XML將被用來描述、存儲數據,而HTML則是用來格式化和顯示數據的。對於XML最好的形容可能是: XML是一種跨平台的,與軟、硬體無關的,處理信息的工具。XML在未來Web開發中的應用。XML無處不在。XML發展的非常迅速,這實在令人感到驚奇,有很多的軟體開發商都採用了XML標準。我們相信,在未來的Web開發中,XML將和HTML一樣受到重視,他們都是Web技術的基礎。XML將成為最普遍的數據操縱和數據傳輸的工具。

xml誕生的背景 sgml介紹

  說到xml,我們一定要先了解一下sgml (standard generalized markup language) 。sgml最初是由ibm開發的一種用於排版的符號化語言,稱為gml。經過若干年的發展,1984年國際標準化協會(iso)開始對此提案進行討論,於1986年正式承認sgml為國際標準規範(iso8879)。

  圖:xml作為電子數據交換的統一格式

  sgml實際上是一種通用的文檔結構描述符號化語言,主要用來定義文獻模型的邏輯和物理類結構。一個sgml語言文件由三部分組成,即語法定義、文件類型定義dtd(definition type document)和文件實例。語法定義部分定義了文件類型定義和文件實例的語法結構;文件類型定義部分定義了文件實例的結構和組成結構的元素類型;文件實例是sgml語言程序的主體部分。  在sgml的實際使用中,每一個特定的dtd都定義了一類文件。因此,人們習慣上把具有某一特定dtd的sgml語言,稱為某某符號化語言。這樣sgml就成為那些派生語言的元語言。html的出現  1989年,歐洲物理量子實驗室(cern)的信息專家蒂姆·伯納斯·李發明了超文本鏈接語言, 使用此語言能輕鬆地將一個文件中的文字或圖形連到其它的文件中去,這就是html的前身。1991年,蒂姆·伯納斯·李在cern定義了html語言的第一個規範,之後成為w3c組織為專門在互聯網上發布信息而設計的符號化語言規範。可以說,html(hypertext markup language)是sgml的一個實例,它的dtd作為標準被固定下來。因此,html不能作為定義其它符號化語言的元語言。  作為world wide web的一個組成部分,html語言發展很快,在短短的幾年裡,它已歷經了html1.0、html2.0和html3.0、html4.0等多個版本,同時dhtml (動態)、vhtml(虛擬)、shtml等也飛速發展起來。html以簡單精練的語法、極易掌握的通用性與易學性,使web網頁可以親近於每一個普通人,互聯網因此得以普及發展以至今日輝煌。  但是,目前的html還不穩定,不同的瀏覽器會產生不同的顯示效果。此外 ,由於html對超級鏈接支持不足,並缺乏空間立體描述,處理圖形、圖像、音頻、視頻等多媒體能力較弱,圖文混排功能簡單,不能表示多種媒體的同步關係等缺點,也影響html的大規模應用以及用於複雜的多媒體數據處理。xml的誕生  xml是由w3c於1998年2月發布的一種標準。它同樣是sgml的一個簡化子集,它將sgml的豐富功能與html的易用性結合到web的應用中,以一種開放的、自我描述方式定義了數據結構。在描述數據內容的同時能突出對結構的描述,從而體現出數據之間的關係。這樣所組織的數據對於應用程序和用戶都是友好的、可操作的。之後,w3c又用xml設計出一個與html4.01功能等價的語言,稱為xhtml1.0 (extensible hyper text markup language)使之與html相兼容。  xml是sgml的一個子集,嚴格地講,xml也還是sgml。與html不同的是xml有dtd,因而也可以像sgml那樣作為元語言來定義其它文件系統,或稱其它符號化語言。如果把符號化語言分為元符號化語言和實例符號化語言的話,sgml和xml都是元符號化語言,而html和由xml派生的xhtml都是實例符號化語言。  所以可以說,xml的出現,使html存在的問題可以得到很好的解決。xml的特點  xml作為引人注目的核心技術應用於btob、web服務、.net等許多系統中。xml是it界談話中不可缺少的一個關鍵詞。因此,xml對於計算機工程師來說,是必不可少的一門知識。xml可以作為電子數據交換的統一格式  10年來,web存儲格式語言,從html發展到dhtml,直到今天最新的xml,發展的每一步,都是為了適應web應用發展的需求。雖然xml原本是為出版界設計的一種文檔描述語言,即sgml派生而來的一種符號化語言,但是它也是為互聯網的數據交換而設計的。從而,xml不僅僅是sgml定義的用於描述的文檔,而且在電子商務等各個領域使數據交換成為可能。  xml能夠應用於各種領域的原因,就是xml具有到目前為止其他方法所不具備的數據描述特點,控制信息不是採用應用軟體的獨有形式,而是採用誰都可以看得懂的標記形式來表現,所以xml最適合作為數據交換的標準,這也是 xml受人關注的原因。  用xml可以對數據關係進行定義形成特有的標準,因此各行各業都在建立自己的行業化標準,以應用於網路上處理電子商務,把後台系統通過web站點表現出來。xml還可以作為數據倉儲,一個xml文件就是一個小的資料庫,通過對數據關係的定義形成各種關係、屬性的數據,實現數據交換、上下文檢索、多媒體傳輸。xml具有其他方法所不具備的數據描述特點  xml是以文本形式來描述的一種文件格式 由於xml是以文本形式描述的,所以適合於各種平台環境的數據交換。同樣由於使用文本來描述內容,可以越過不同平台的障礙進行正常的數據交換。但是,文本形式也會因為文字代碼的不同造成不能閱讀的問題,在這一點上xml有著非常完美的解決方案。  xml使用有意義的標記(tag) 在xml中文件是由一個個稱之為元素(element)的部件構成。使用標記(tag )來描述元素。由於使用了標記的描述方法,可以保持原數據的意思和構造在互聯網上進行數據交換,進而可以保持不同系統之間數據交換的靈活性。  為什麼具有上述的優點呢?首先是使用標記描述數據的話,可以具體指出開始元素(開始標記)、結束元素(結束標記),在開始和結束元素之間是要表現的元素數據。這就是用元素表現數據的方法。標記可以作為子元素 xml中用標記符號化的元素可以作為子元素形成數據嵌套。  xml的標記名和關係可以自由定義 就像許多文章中介紹的那樣「xml是用標記描述的語言」,而且xml的標記名標記的層次結構等都可以由用戶定義。也就是說,根據xml語法可以定義用戶特殊用途的標記集合形成一個全新的符號化語言。這就是xml「可擴充(extensible)」名字的來源。  可以說,xml是「定義語言的語言」,也即是一種元語言。由於xml具有元語言的功能,所以可以成為描述電子商務數據、多媒體演示數據、數學公式等各種各樣數據應用語言的基礎語言。下面提供幾個以xml為基礎生成的數據描述語言(本文亦稱為xml應用語言)的應用例子,即出版媒體:open ebook(電子書籍)、newsml(新聞媒體);科學:mathml(數學表達式)、cml(化學);電子商務:cxml(電子商務)、fpml(金融);多媒體:smil(多媒體演示)、bml(衛星數據傳送)。  另外,就像我們使用的自然語言,講這種語言的人多了就會把它當作不認識的人之間的初次交流時的工具。同樣,在特定的企業之間或在業界內歸納出一套標記集合,即約定用一套特定的xml應用語言作為交流工具是很有價值的。但是,許多xml用戶都是用業界或集團標準化以後的應用語言,很少有人自己製作一套新的xml應用語言。

xml的不足之處  xml作為數據描述語言是非常優秀的,但是並不是所有的電子數據都是轉換到xml是最有效的。例如xml的文本表現手法、標記的符號化等會導致xml數據比二進位表現方法數據量增加,尤其當數據量很大時,會成為很大的問題。也就是說,xml的導入要根據具體需求,比較其優缺點,在充分發揮xml優點的領域進行。  儘管xml具備了作為通用數據描述語言的優秀特徵,但是xml不是編程語言,說到底它是一種數據描述的技術。因此xml文件的顯示、文件結構的變更、應用程序的操作等xml相關技術也是非常重要的。xml的主要相關技術分類  xml是描述內容的數據格式,在使用xml數據時,還需要xml數據的顯示、列印、數據結構的變更等許多相關技術。如果這些相關技術也都標準化的話,即使在不同平台開發應用程序也都可以用相同的方法,使開發難度降低。  處理xml數據時,一定要使用xml processor(也就是xml parser),把xml數據結構的檢查等交給xml parser去做。  關於xmlprocessor有許多軟體產品,當然,也有不少免費的。開發工程師只需將xml數據的檢查工作交給xmlprocessor即可,集中精力開發應用程序部分,減少了不小的負擔。  應用程序對接收到xmlprocessor傳遞來的xml樹進行處理,向用戶提供服務。此時,不管是電子商務,還是知識管理,都是定義xml數據結構的技術、顯示列印xml數據的技術、xml數據結構變更技術、xml數據聯接整合技術、用程序操作xml樹的api和其它應用技術的組合。定義xml數據結構的技術  在xml中用戶可以自由的定義標記名以及與標記相關的元素及元素層次,這是xml的主要特徵。但是,如果定義的都是只有自己才能理解的標記,就無法與其他人進行交換數據。為了在企業團體之間進行xml格式的數據的交換,xml數據的結構、元素的名稱、元素的數據類型以及元素的親子關係都需要仔細考慮,一定要設計成人和系統能夠理解的語言。這樣設計的xml數據結構在xml領域稱為schema,描述schema的語言稱為schema語言。  dtd 最普通xml的schema語言是dtd(document type definition:文檔類型定義)。dtd是遠在sgml時期就一直使用的schema語言,1998年制訂xml語法時,沿用了描述schema的dtd。  xml schema 在xml中,所謂的「dtd」就是schema文件。dtd描述的schema應用非常廣泛。但是,隨著xml的應用的發展,從sgml繼承下來的dtd顯然有許多不足的地方。為了解決這些問題,w3c制訂了schema語言xml schema。  xml schema中有下述dtd中不具備的特徵:多個schema複合使用xml名字空間;用xml語法描述;可以詳細定義元素的內容及屬性值的數據類型。  由於在xml schema中的數據結構也都是用xml數據來表現的,與dtd相比數據量增大很多。但是,xml schema的表現力要遠比dtd強得多,不僅支持字元串、10進位數、浮動小數點、日期等,還支持m回以上和n回以下出現的元素(m、n為整數)的指定。例如「郵編xxxxxx」(x是字元)是郵政編碼元素的格式指定等都是dtd所不能表現的內容。xml schema於2001年5月成為w3c的推薦規範,對xml的利用產生了重要的影響。顯示和列印xml數據的技術  xml數據定義列印、顯示排版信息主要有3種方法: 用css定義列印和顯示排版信息;用xslt轉換到html進行顯示和列印;用xslt轉換成xsl的fo(formatter object) 進行顯示和列印。  css指定文件排版信息的數據稱為樣式表,描述html樣式表的語言是css(cascading style sheet)。這裡介紹的是使用css來瀏覽、列印xml數據的方法,具體來講css是給html的每個標記元素指定排版信息,同樣也可以用來給xml的標記元素定義顯示排版方法。css不能改變xml的結構,只能在簡單的定義排版信息的時候使用。  xslt 還有一種是使用改變xml數據結構的語言xslt(extensible stylesheet language transformations)的方法。使用xslt,可以改變xml元素名、屬性名、元素層次結構等,根據xslt的指定,可以將xml的元素轉換為html元素,則可以是用瀏覽器瀏覽。現在,這種用瀏覽器顯示xml數據的方法是最常用的方法。  xsl xsl(extensible stylesheet language)是用xml描述的文件。它是一種可以詳細描述商用印刷排版水平的規範,xsl排版信息的定義。用xsl指定排版信息的方法由2步組成:  將要列印、顯示的原xml樹進 行結構變換,追加排版信息生成新的樹結構(xsl-fo樹);將這個新樹傳遞給xsl-fo對應的列印和顯示引擎進行相應的操作。xml數據結構轉換技術  在xml的應用中,有的xml數據需要轉換到其他結構的xml數據,為此w3c制訂了描述標準化的xml數據結構轉換規則的語言xslt。  xslt是為顯示和列印xml,而從xsl規範獨立出來的規範,原本是描述排版信息的語言,因此,用xslt製作的程序稱為樣式表。但是,xslt也可以用於排版以外的各種用途。  例如,使用了不同schema(標記集合)的企業團體之間交換xml數據時,需要將使用了各公司獨自數據格式的xml數據向雙方系統共同採用的業界標準格式結構轉換以後,才可能進行數據交換。在xslt中不僅描述了轉換規則,結構轉換還可以交給xslt樣式表的執行引擎(xslt processor)。為了跨過業界之間的障礙實現數據交換,其它文件格式的數據交換也會經常發生,儘管如此,結構轉換時如果利用xslt,可以不改更程序只改變樣式表就可以了。  隨著xml的普及,xslt的應用也會更加廣泛。在windows上,只需進行簡單的環境設定,用ie 5.x和任意一個文本編輯器就可以製作和執行xslt。即使只會一點點製作xslt樣式表的方法,就可以很簡單的進行xml的處理了,非常方便。  隨著計算機和網路技術的不斷發展深入xml技術的應用也將不斷擴大。該技術不僅在傳統的銀行之間數據交換、證券公司對上市公司情況的數據統計、圖書館對圖書的查詢檢索、企事業文件檔案管理等領域的應用更加迫切,在電子商務、搜索引擎軟體、自動智能翻譯、文檔發聲軟體等領域也將得到更大的發展,特別是近期發展起來的移動通訊網路服務的發展,將使各種各樣的信息經過格式轉換到達pda、甚至到達手持電話機,將來我們可以通過網路數據格式轉換服務使小小的手機可以閱讀到大千世界的豐富信息。


推薦閱讀:

服裝裁剪基礎教程第九課
八字基礎篇:學會了任何人都能3分鐘排出自己八字
理氣派是在形勢派理論的基礎上發展起來的
八字基礎普及匯總二
玄空六法基礎

TAG:知識 | 基礎知識 | 基礎 |