前言
XML越來(lái)越熱,關(guān)于XML的基礎教程網(wǎng)絡(luò )上也隨處可見(jiàn)??墒且淮蠖训母拍詈托g(shù)語(yǔ)往往讓人望而生畏,很多朋友問(wèn)我:XML到底有什么用,我們是否需要學(xué)習它?我想就我個(gè)人學(xué)習過(guò)程的心得和經(jīng)驗,寫(xiě)一篇比較全面的介紹文章。首先有兩點(diǎn)是需要肯定的:
第一:XML肯定是未來(lái)的發(fā)展趨勢,不論是網(wǎng)頁(yè)設計師還是網(wǎng)絡(luò )程序員,都應該及時(shí)學(xué)習和了解,等待只會(huì )讓你失去機會(huì );
第二:新知識肯定會(huì )有很多新概念,嘗試理解和接受,您才可能提高。不要害怕和逃避,畢竟我們還年輕。
提綱
本文共分五大部分。分別是XML快速入門(mén),XML的概念,XML的術(shù)語(yǔ),XML的實(shí)現,XML的實(shí)例分析。最后附錄介紹了XML的相關(guān)資源。作者站在普通網(wǎng)頁(yè)設計人員的角度,用平實(shí)生動(dòng)的語(yǔ)言,向您講述XML的方方面面,幫助你撥開(kāi)XML的神秘面紗,快速步入XML的新領(lǐng)域。
第一章:XML快速入門(mén)
一. 什么是XML?
二. XML是新概念嗎?
三. 使用XML有什么好處?
四. XML很難學(xué)嗎?
五. XML和HTML的區別
六. XML的嚴格格式
七. 關(guān)于XML的更多
一. 什么是XML?
這往往是第一個(gè)問(wèn)題,也往往在第一個(gè)問(wèn)題上你就會(huì )搞不明白,因為大多的教材上這樣回答:
XML是Extensible Markup Language的簡(jiǎn)寫(xiě),一種擴展性標識語(yǔ)言。 這是標準的定義。那么什么是標志語(yǔ)言,為什么叫擴展性?已經(jīng)讓人有些糊涂。我想我們這樣來(lái)理解會(huì )好一些:
對HTML你已經(jīng)非常熟悉了吧,它就是一種標記語(yǔ)言,記得它的全稱(chēng)嗎:"Hypertext Markup Language" 超文本標記語(yǔ)言。明白了?同時(shí),HTML里面有很多標簽,類(lèi)似,等,都是在HTML
4.0里規范和定義,而XML里允許你自己創(chuàng )建這樣的標簽,所以叫做可擴展性。
這里有幾個(gè)容易混淆的概念要提醒大家:
1.XML并不是標記語(yǔ)言。它只是用來(lái)創(chuàng )造標記語(yǔ)言(比如HTML)的元語(yǔ)言。天,又糊涂了!不要緊,你只要知道這一點(diǎn):XML和HTML是不一樣的,它的用處途比HTML廣泛得多,我們將在后面仔細介紹。
2.XML并不是HTML的替代產(chǎn)品。XML不是HTML的升級,它只是HTML的補充,為HTML擴展更多功能。我們仍將在較長(cháng)的一段時(shí)間里繼續使用HTML。(但值得注意的是HTML的升級版本XHTML的確正在向適應XML靠攏。)
3.不能用XML來(lái)直接寫(xiě)網(wǎng)頁(yè)。即便是包含了XML數據,依然要轉換成HTML格式才能在瀏覽器上顯示。
下面就是一段XML示例文檔(例1),用來(lái)表示本文的信息:
<myfile><br><br>
<title>XML Quick Start</title><br><br>
<author>ajie</author><br><br>
<email>ajie@aolhoo.com</email><br><br>
<date>20010115</date><br><br>
</myfile>
注意:
1.這段代碼僅僅是代碼,讓你初步感性認識一下XML,并不能實(shí)現什么具體應用;
2.其中類(lèi)似< title>,< author>的語(yǔ)句就是自己創(chuàng )建的標記(tags),它們和HTML標記不一樣,例如這里的< title>是文章標題的意思,HTML里的< title>是頁(yè)面標題。
二. XML是新概念嗎?
不是。XML來(lái)源于SGML,一種比HTML更早的標志語(yǔ)言標準。
關(guān)于SGML,我們來(lái)簡(jiǎn)單了解一下,你只需要有個(gè)大致概念就可以。
SGML全稱(chēng)是"Standard Generalized Markup Language"(通用標識語(yǔ)言標準)??疵Q(chēng)就知道:它是標志語(yǔ)言的標準,也就是說(shuō)所有標志語(yǔ)言都是依照SGML制定的,當然包括HTML。SGML的覆蓋面很廣,凡是有一定格式的文件都屬于SGML,比如報告,樂(lè )譜等等,HTML是SGML在網(wǎng)絡(luò )上最常見(jiàn)的文件格式。因此,人們戲稱(chēng)SGML是HTML的"媽媽"。
而XML就是SGML的簡(jiǎn)化版,只不過(guò)省略了其中復雜和不常用的部分。(哦,明白了!是HTML第二個(gè)"mother",難怪比HTML功能強大呢。),和SGML一樣,XML也可以應用在金融,科研等各個(gè)領(lǐng)域,我們這里講的,只是XML在web方面的運用而已。
到這里,你應該有點(diǎn)明白了:XML是用來(lái)創(chuàng )建定義類(lèi)似HTML的標記語(yǔ)言,然后再用這個(gè)標記語(yǔ)言來(lái)顯示信息。 三. 使用XML有什么好處?
有了HTML,為什么還需要用XML?
因為現在網(wǎng)絡(luò )應用越來(lái)越廣泛,僅僅靠HTML單一文件類(lèi)型來(lái)處理千變萬(wàn)化的文檔和數據已經(jīng)力不叢心,而且HTML本身語(yǔ)法十分不嚴密,嚴重影響網(wǎng)絡(luò )信息傳送和共享。(想想瀏覽器兼容的問(wèn)題傷透多少設計師的腦細胞啊。)人們早已經(jīng)開(kāi)始探討用什么方法來(lái)滿(mǎn)足網(wǎng)絡(luò )上各種應用的需要。使用SGML是可以的,但SGML太龐大,編程復雜,于是最終選擇了"減肥"的SGML---XML作為下一代web運用的數據傳輸和交互的工具。
使用XML有什么好處?來(lái)看w3c組織(XML標準制定者)的說(shuō)明:
XML使得在網(wǎng)絡(luò )上使用SGML語(yǔ)言更加"簡(jiǎn)單和直接": 簡(jiǎn)化了定義文件類(lèi)型的過(guò)程,簡(jiǎn)化了編程和處理SGML文件的過(guò)程,簡(jiǎn)化了在Web上的傳送和共享。
1.XML可以廣泛的運用于web的任何地方;
2.XML可以滿(mǎn)足網(wǎng)絡(luò )應用的需求;
3.使用XML將使編程更加簡(jiǎn)單;
4.XML便于學(xué)習和創(chuàng )建;
5.XML代碼將清晰和便于閱讀理解;
還是抽象了些。讓我們在后面的實(shí)例教程中慢滿(mǎn)體會(huì )XML的強大優(yōu)勢吧!
四. XML很難學(xué)嗎?
如果你有興趣學(xué)習XML,不禁會(huì )問(wèn):XML難嗎?學(xué)習XML需要什么樣的基礎?
XML非常簡(jiǎn)單,學(xué)習容易。如果你熟悉HTML,你會(huì )發(fā)現它的文檔和HTML非常相似,看同樣的示例文檔(例1):
xml version="1.0"?><br><br>
<myfile><br><br>
<title>XML Quick Start</title><br><br>
<author>ajie</author><br><br>
<email>ajie@aolhoo.com</email><br><br>
<date>20010115</date><br><br>
</myfile>
第一行是一個(gè)XML聲明,表示文檔遵循的是XML的1.0 版的規范。
第二行定義了文檔里面的第一個(gè)元素(element),也稱(chēng)為根元素: < myfile>。這個(gè)就類(lèi)似HTML里的< HTML>開(kāi)頭標記。注意,這個(gè)名稱(chēng)是自己隨便定義的。
再下面定義了四個(gè)子元素:title,author,email,和date。分別說(shuō)明文章的標題,作者,郵箱和日期。當然,你可以用中文來(lái)定義這些標簽,看上去更便于理解:
<?xml version="1.0" encoding="GB2312"?>
<文章>
<標題>XML輕松學(xué)習手冊</標題>
<作者>ajie</作者>
<信箱>ajie@aolhoo.com</信箱>
<日期>20010115</日期>
</文章>
這就是XML的文檔,任何掌握HTML的網(wǎng)友都可以直接寫(xiě)出這樣簡(jiǎn)單的XML文檔。
另外,學(xué)習XML還必須掌握一種頁(yè)面腳本語(yǔ)言,常見(jiàn)的就是javascript和VB script。因為XML數據是使用script實(shí)現HTML中調用和交互的。我們看一個(gè)最簡(jiǎn)單的例子(例2):
1.將下面代碼存為myfile.htm
<html>
<head>
<script language="javascript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;[page]
title.innerText = nodesitem(0).text;
author.innerText = nodes.item(1).text;
email.innerText = nodes.item(2).text;
date.innerText = nodes.item(3).text;
</script>
<title>在HTML中調用XML數據</title>
</head>
<body bgcolor="#FFFFFF">
<b>標題: </b>
<span id="title"> </span>
<b>作者: </b>>
<span id="author"></span>
<b>信箱: </b>
<span id="email"></span>
<b>日期:</b>
<span id="date"></span>
</body><br><br>
</html><br><br>
2.將下面代碼存為myfile.xml
<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML輕松學(xué)習手冊</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
</myfile>
3.將它們放在同一個(gè)目錄下,用IE5以上版本瀏覽器打開(kāi),可以看到效果。 學(xué)習并掌握一種script,你將真正了解到XML無(wú)比的強大的功能。
五. XML和HTML的區別
XML和HTML都來(lái)自于SGML,它們都含有標記,有著(zhù)相似的語(yǔ)法,HTML和XML的最大區別在于:HTML是一個(gè)定型的標記語(yǔ)言,它用固有的標記來(lái)描述,顯示網(wǎng)頁(yè)內容。比如< H1>表示首行標題,有固定的尺寸。相對的,XML則沒(méi)有固定的標記,XML不能描述網(wǎng)頁(yè)具體的外觀(guān),內容,它只是描述內容的數據形式和結構。
這是一個(gè)質(zhì)的區別:網(wǎng)頁(yè)將數據和顯示混在一起,而XML則將數據和顯示分開(kāi)來(lái)。
我們看上面的例子,在myfile.htm中,我們只關(guān)心頁(yè)面的顯示方式,我們可以設計不同的界面,用不同的方式來(lái)排版頁(yè)面,但數據是儲存在myfile.xml中,不需要任何改變。
(如果你是程序員,你會(huì )驚訝的發(fā)現,這與模塊化面向對象編程的思想極其相似!其實(shí)網(wǎng)頁(yè)何嘗不是一種程序呢?)
正是這種區別使得XML在網(wǎng)絡(luò )應用和信息共享上方便,高效,可擴展。所以我們相信,XML做為一種先進(jìn)的數據處理方法,將使網(wǎng)絡(luò )跨越到一個(gè)新的境界。
六. XML的嚴格格式
吸取HTML松散格式帶來(lái)的經(jīng)驗教訓,XML一開(kāi)始就堅持實(shí)行"良好的格式"。
我們先看HTML的一些語(yǔ)句,這些語(yǔ)句在HTML中隨處可見(jiàn):
1.
sample
2.< b>< i>sample< /b>< /i>
3.< td>sample< /TD>
4.< font color=red>samplar< /font>
在XML文檔中,上述幾種語(yǔ)句的語(yǔ)法都是錯誤的。因為:
1.所有的標記都必須要有一個(gè)相應的結束標記;
2.所有的XML標記都必須合理嵌套;
3.所有XML標記都區分大小寫(xiě);
4.所有標記的屬性必須用""括起來(lái);
所以上列語(yǔ)句在XML中正確的寫(xiě)法是
1.
sample
2.< b>< i>sample< /i>< /b>
3.< td>sample< /td>
4.< font color="red">samplar< /font>
另外,XML標記必須遵循下面的命名規則:
1.名字中可以包含字母、數字以及其它字母;
2.名字不能以數字或"_" (下劃線(xiàn)) 開(kāi)頭;
3.名字不能以字母 xml (或 XML 或 Xml ..) 開(kāi)頭;
4.名字中不能包含空格。
在XML文檔中任何的差錯,都會(huì )得到同一個(gè)結果:網(wǎng)頁(yè)不能被顯示。各瀏覽器開(kāi)發(fā)商已經(jīng)達成協(xié)議,對XML實(shí)行嚴格而挑剔的解析,任何細小的錯誤都會(huì )被報告。你可以將上面的myfile.xml修改一下,比如將< email>改為< Email>,然后用IE5直接打開(kāi)myfile.xml,會(huì )得到一個(gè)出錯信息頁(yè)面:
<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML輕松學(xué)習手冊</title>
<author>ajie</author>
<Email>ajie@aolhoo.com</email>
<date>20010115</date>
</myfile>
七. 關(guān)于XML的更多
好了,到現在你已經(jīng)知道:
1.什么是XML;
2.XML,HTML,SGML之間的關(guān)系和區別;
3.XML的簡(jiǎn)單應用。