一、XML導(dǎo)讀
XML 是獨(dú)立于軟件和硬件的信息傳輸工具。XML 是 W3C 的推薦標(biāo)準(zhǔn)。XML 無所不在,當(dāng)我們看到 XML 標(biāo)準(zhǔn)突飛猛進(jìn)的開發(fā)進(jìn)度,和大批的軟件開發(fā)商采取這個(gè)標(biāo)準(zhǔn)的日新月異的速度時(shí),真的是不由感嘆這真的使人嘆為觀止。
目前,XML 在 Web 中起到的作用不會亞于一直作為 Web 基石的 HTML 。XML 是各種利用程序之間進(jìn)行數(shù)據(jù)傳輸?shù)淖罱?jīng)常使用的工具,并且在信息存儲和描寫領(lǐng)域變得越來越流行。想要學(xué)習(xí)XML,可以通過XML.DOM教程
二、XML基本概述
XML(可擴(kuò)大標(biāo)記語言),標(biāo)準(zhǔn)通用標(biāo)記語言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言。在電子計(jì)算機(jī)中,標(biāo)記指計(jì)算機(jī)所能理解的信息符號,通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包括各種的信息比如文章等。
它可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。它非常適合萬維網(wǎng)傳輸,提供統(tǒng)一的方法來描寫和交換獨(dú)立于利用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。是 Internet 環(huán)境中跨平臺的、依賴于內(nèi)容的技術(shù),也是現(xiàn)今處理散布式結(jié)構(gòu)信息的有效工具。早在1998年,W3C 就發(fā)布了 XML1.0 規(guī)范,使用它來簡化 Internet 的文檔信息傳輸。
三、什么是XML?
- XML 是指可擴(kuò)大標(biāo)記語言(EXtensible Markup Language)
- XMl 是一種標(biāo)記語言,很類似 HTML (超文本標(biāo)記語言)
- XML 的設(shè)計(jì)主旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
- XML 標(biāo)簽沒有被預(yù)定義,您需要自行定義標(biāo)簽
- XML 被設(shè)計(jì)為具有自我描寫性
- XML 是 W3C 的推薦標(biāo)準(zhǔn)
四、XML與HTML的主要差異
- XML 和 HTML 為不同的目的而設(shè)計(jì)
- XML 被設(shè)計(jì)為傳輸和存儲數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容
- HTML 被設(shè)計(jì)用來顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀
- HTML 旨在顯示信息,而 XML 旨在傳輸信息
- XML 不是對 HTML 的替換,XML 是對 HTML 的補(bǔ)充
- XML 不會替換 HTML,理解這一點(diǎn)很重要。在大多數(shù) Web 利用程序中,XML 用于傳輸數(shù)據(jù),而 HTML 用于格式化并顯示數(shù)據(jù)
五、為何需要 XML
- 解決了數(shù)據(jù)傳輸不規(guī)范的問題
- 可以非常好的描寫樹形結(jié)構(gòu)的事物
- 可以用作配置文件
六、沒有任何行動的 XML
XML 是不作為的?;蛟S這有點(diǎn)難以理解,但是 XML 不會做任何事情。XML 被設(shè)計(jì)用來結(jié)構(gòu)化、存儲和傳輸息。
我們在這里舉一個(gè)在記事本書寫的簡單例子來講明一下。
下面是一個(gè)書籍列表,存儲為 XML:
<?xml version="1.0" encoding="gb2312"?>
<書籍列表>
<計(jì)算機(jī)書籍>
<bookname>XML利用大全</bookname>
<price>39.00</price>
</計(jì)算機(jī)書籍>
<計(jì)算機(jī)書籍>
<bookname>Java利用大全</bookname>
<price>139.00</price>
</計(jì)算機(jī)書籍>
<計(jì)算機(jī)書籍>
<bookname>Oracle利用大全</bookname>
<price>59.00</price>
</計(jì)算機(jī)書籍>
</書籍列表>
上面的這條便簽具有自我描寫性。它具有標(biāo)題和留言,同時(shí)包括了發(fā)送者和接受者的信息。但是,這個(gè) XML 文檔依然沒有做任何事情。它僅僅是包裝在 XML 標(biāo)簽中單純的信息。我們需要編寫軟件或程序,才能傳送、接收和顯示出這個(gè)文檔。
七、XML僅僅是純文本
XML 沒什么特別的。它僅僅是純文本而已。有能力處理純文本的軟件都可以處理 XML。不過,能夠讀懂 XML 的應(yīng)用程序可以有針對性地處理 XML 的標(biāo)簽。標(biāo)簽的功能性意義依賴于利用程序的特性。這里的內(nèi)容我們會在以后的內(nèi)容中逐步體會到 XML 標(biāo)簽的作用。
八、通過 XML 您可以發(fā)明自己的標(biāo)簽
上例中的標(biāo)簽沒有在任何 XML 標(biāo)準(zhǔn)中定義過(比如<bookname>和<price>等等)。這些標(biāo)簽是由文檔的創(chuàng)作者發(fā)明的。這是由于 XML 沒有預(yù)定義的標(biāo)簽。XML 允許創(chuàng)作者定義自己的標(biāo)簽和自己的文檔結(jié)構(gòu)。
在 HTML 中使用的標(biāo)簽(和 HTML 的結(jié)構(gòu))是預(yù)定義的。HTML 文檔只使用在 HTML 標(biāo)準(zhǔn)中定義過的標(biāo)簽(比如<p>,<h1>等等)。
九、XML樹結(jié)構(gòu)
我們在上面的書籍實(shí)例中可以看出 XML 文檔構(gòu)成了一種樹結(jié)構(gòu),它從“根部”開始,然后擴(kuò)大到“枝葉”。
一個(gè) XML 文檔實(shí)例
XML使用簡單的具有自我描寫性的語法:
<?xml version="1.0" encoding="UTF⑻"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第一行是 XML 聲明。它定義 XML 的版本(1.0)和所使用的編碼(UTF-8,GBK等);
下一行描寫文檔的根元素(像在說:“本文檔是一個(gè)便簽”):<note>;
接下來4行描寫根的4個(gè)子元素(to、from、heading和body):
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>;
最后一行定義根元素的結(jié)尾:</note>。
從本例可以假想,該 XML 文檔包括了John給George的一張便簽。
XML 具有出色的自我描寫性,你同意嗎?
XML 文檔構(gòu)成一種樹結(jié)構(gòu)
XML 文檔必須包括根元素。該元素是所有其他元素的父元素。
XML 文檔中的元素構(gòu)成了一棵文檔樹。這棵樹從根部開始,并擴(kuò)大到樹的最底端。
所有元素都可具有子元素:
<root> <child> <subchild>.....</subchild> </child> </root>
父、子和同胞等術(shù)語用于描寫元素之間的關(guān)系。父元素具有子元素。相同層級上的子元素成為同胞(兄弟或姐妹)。所有元素都可具有文本內(nèi)容和屬性(類似 HTML 中)。
實(shí)例:
上圖表示下面的 XML 中的一本書:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
例子中的根元素是<bookstore>。文檔中的所有<book>元素都被包括在<bookstore>中。<book>元素有 4 個(gè)子元素:
<title>、< author>、<year>、<price>。
十、XML用處
XML 經(jīng)常使用于簡化數(shù)據(jù)的存儲和共享
(1)XML 把數(shù)據(jù)從 HTML 分離
如果你需要在 HTML 文檔中顯示動態(tài)數(shù)據(jù),那末每當(dāng)數(shù)據(jù)改變時(shí)將花費(fèi)大量的時(shí)間來編輯 HTML。通過 XML,數(shù)據(jù)能夠存儲在獨(dú)立的XML 文件中。這樣你就能夠?qū)W⒂谑褂?HTML 進(jìn)行布局和顯示,并確保修改底層數(shù)據(jù)不再需要對 HTML 進(jìn)行任何的改變。通過使用幾行JavaScript,你就能夠讀取一個(gè)外部 XML 文件,然后更新 HTML 中的數(shù)據(jù)內(nèi)容。
(2)XML簡化數(shù)據(jù)同享
在真實(shí)的世界中,計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)使用不兼容的格式來存儲數(shù)據(jù)。XML 數(shù)據(jù)以純文本格式進(jìn)行存儲,因此提供了一種獨(dú)立于軟件和硬件的數(shù)據(jù)存儲方法。這讓創(chuàng)建不同利用程序可以同享的數(shù)據(jù)變得更加容易。
(3)XML簡化數(shù)據(jù)傳輸
通過 XML,可以在不兼容的系統(tǒng)之間輕松地交換數(shù)據(jù)。對開發(fā)人員來講,其中一項(xiàng)最費(fèi)時(shí)的挑戰(zhàn)一直是在因特網(wǎng)上的不兼容系統(tǒng)之間交換數(shù)據(jù)。由于可以通過各種不兼容的利用程序來讀取數(shù)據(jù),以 XML 交換數(shù)據(jù)下降了這類復(fù)雜性。
(4)XML簡化平臺的變更
升級到新的系統(tǒng)(硬件或軟件平臺),總是非常費(fèi)時(shí)的。必須轉(zhuǎn)換大量的數(shù)據(jù),不兼容的數(shù)據(jù)常常會丟失。XML 數(shù)據(jù)以文本格式存儲。這使得 XML 在不損失數(shù)據(jù)的情況下,更容易擴(kuò)大或升級到新的操作系統(tǒng)、新利用程序或新的瀏覽器。
(5)XML使您的數(shù)據(jù)更有用
由于 XML 獨(dú)立于硬件、軟件和利用程序,XML 使您的數(shù)據(jù)更可用,也更有用。不同的利用程序都能夠訪問您的數(shù)據(jù),不單單在 HTML 頁中,也能夠從 XML 數(shù)據(jù)源中進(jìn)行訪問。通過 XML,您的數(shù)據(jù)可供各種瀏覽裝備使用(手持的計(jì)算機(jī)、語音裝備、新聞瀏覽器等),還可以供盲人或其他殘障人士使用。
(6)XML用于創(chuàng)建新的Internet語言
很多新的Internet語言是通過XML創(chuàng)建的,其中的例子包括:
- XHTML - 最新的HTML版本
- WSDL - 用于描寫可用的web service
- WAP 和 WML - 用于手持裝備的標(biāo)記語言
- RSS - 用于RSS feed的語言
- RDF 和 OWL - 用于描寫資源和本體
- SMIL - 用于描寫針針對web的多媒體
您還可以通過XML實(shí)例去實(shí)踐并掌握
以及XML測驗(yàn)評估您的學(xué)習(xí)狀況