佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > XML輕松學(xué)習(xí)手冊(五):XML語法

XML輕松學(xué)習(xí)手冊(五):XML語法

熱門標(biāo)簽:美圖手機 服務(wù)器配置 呼叫中心市場需求 檢查注冊表項 銀行業(yè)務(wù) 智能手機 鐵路電話系統(tǒng) 網(wǎng)站文章發(fā)布

第五章:XML實例解析 提綱: 一:實例效果 二:實例解析
1.定義新標(biāo)識。
2.建立XML文檔。
3.建立相應(yīng)的HTML文件。 XML在不同領(lǐng)域有著廣泛的應(yīng)用,比如在科技領(lǐng)域的MathML,無線通信應(yīng)用的WML,在網(wǎng)絡(luò)圖象方面的SVG等等,我們這里側(cè)重討論XML在web上的應(yīng)用。XML在web上應(yīng)用主要是利用其強大的數(shù)據(jù)操作能力。一般用XML配合javascript和asp等服務(wù)器端程序,可以實現(xiàn)網(wǎng)絡(luò)上幾乎所有的應(yīng)用需求。 考慮講解方便,我們在下面介紹一個簡單的實例,不包含服務(wù)器端程序。目的在于讓您對XML的數(shù)據(jù)操作能力有一個感性的認(rèn)識。 好,我們首先[ 點擊這里 ]來看實例的效果。(請用IE5.0以上版本瀏覽器打開) 這是一個簡單的CD唱片數(shù)據(jù)檢索功能。你通過點擊"上一張","下一張"可以看到單張CD的有關(guān)信息。這樣的效果我們原來用兩種方法可以實現(xiàn): 1.利用DHTML,將數(shù)據(jù)隱藏在不同的層中,通過鼠標(biāo)事件依次顯示; 2.利用后臺程序(如ASP,CGI,PHP,JSP等),調(diào)用服務(wù)器端的數(shù)據(jù)。 但是在這個實例中,我們打開頁面原代碼可以看到,其中沒有用DHTML的DIV,也沒有表單的action,它完全是用XML來實現(xiàn)的。下面我們來分析它的制作過程: 第一步:定義新標(biāo)識。
根據(jù)實際的CD數(shù)據(jù),首先新建一個名為CD>的標(biāo)識;其次建立它相關(guān)的數(shù)據(jù)標(biāo)識,分別是:CD名稱Title>,演唱者Artist>,出版年代Year>,國家Country>,發(fā)行公司Company>和價格Price>;最后還要建立一個名為目錄CATALOG>的標(biāo)識。為什么要再建立一個CATALOG>標(biāo)識呢?因為在XML文檔中規(guī)定,必須且只能有一個根元素(標(biāo)識),我們有多個CD數(shù)據(jù),這些數(shù)據(jù)是并列的關(guān)系,所以需要為這些并列的元素建立一個根元素。
以上元素的定義和關(guān)系都完全符合XML標(biāo)準(zhǔn),不需要特別的DTD文件來定義,所以可以省略DTD定義。如果我們想使用DTD來定義,以上過程可以表示為:

!ELEMENT CATALOG (CD)*>
!ELEMENT CD (Title,Artist,Year,Country,Company,Price)>
!ELEMENT Title (#PCDATA)>
!ELEMENT Artist (#PCDATA)>
!ELEMENT Year (#PCDATA)>
!ELEMENT Country (#PCDATA)>
!ELEMENT Company (#PCDATA)>
!ELEMENT Price (#PCDATA)>

這段代碼表示:元素CATALOG包含多個CD子元素,而子元素CD又依次包含Title, Artist, Year, Country, Company, Price 六個子元素,它們的內(nèi)容都定義為文本(字符,數(shù)字,文本)。(注:具體的語法說明可以看上一章關(guān)于DTD的介紹) 第二步:建立XML文檔。

?xml version="1.0"?>
CATALOG>
CD>
TITLE>Empire Burlesque/TITLE>
ARTIST>Bob Dylan/ARTIST>
COUNTRY>USA/COUNTRY>
COMPANY>Columbia/COMPANY>
PRICE>10.90/PRICE>
YEAR>1985/YEAR>
/CD>
CD>
TITLE>Hide your heart/TITLE>
ARTIST>Bonnie Tylor/ARTIST>
COUNTRY>UK/COUNTRY>
COMPANY>CBS Records/COMPANY>
PRICE>9.90/PRICE>
YEAR>1988/YEAR>
/CD>
CD>
TITLE>Greatest Hits/TITLE>
ARTIST>Dolly Parton/ARTIST>
COUNTRY>USA/COUNTRY>
COMPANY>RCA/COMPANY>
PRICE>9.90/PRICE>
YEAR>1982/YEAR>
/CD>
CD>
TITLE>Still got the blues/TITLE>
ARTIST>Gary More/ARTIST>
COUNTRY>UK/COUNTRY>
COMPANY>Virgin redords/COMPANY>
PRICE>10.20/PRICE>
YEAR>1990/YEAR>
/CD>
CD>
TITLE>Eros/TITLE>
ARTIST>Eros Ramazzotti/ARTIST>
COUNTRY>EU/COUNTRY>
COMPANY>BMG/COMPANY>
PRICE>9.90/PRICE>
YEAR>1997/YEAR>
/CD>
/CATALOG>

上面代碼首先用?xml version="1.0"?>聲明語句表明這是一個XML文檔,它的格式遵守XML 1.0標(biāo)準(zhǔn)規(guī)范。然后是文檔內(nèi)容,結(jié)構(gòu)樹非常清晰:
CATALOG>
CD>
......
/CD>
CD>
......
/CD>

/CATALOG>
一共定義了5組數(shù)據(jù)。我們將上面的代碼存為cd.xml文件,以備調(diào)用。 第三步:建立相應(yīng)的HTML文件。
1.導(dǎo)入XML數(shù)據(jù)。
我們知道,目前流行的瀏覽器中,暫時只有微軟的IE5.0以上版本瀏覽器支持XML。IE是通過在HTML中的object物件來支持插入XML,并通過js的XMLDocument.load()方法來導(dǎo)入數(shù)據(jù)。我們看代碼:

object WIDTH="0" HEIGHT="0"
CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="xmldso">
/object>

定義一個object,ID名為xmldso。然后在head區(qū)用js引入xml數(shù)據(jù):

script for="window" event="onload">
xmldso.XMLDocument.load("cd.xml");
/script>

2.捆綁數(shù)據(jù)。
然后將用SPAN>標(biāo)識來將XML數(shù)據(jù)綁定在表格中。其中ID,DATASRC,DTATFLD都是SPAN>的屬性。代碼如下:

table>
tr>td>Title:/td>td>SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE">/SPAN>/td>/tr>
tr>td>Artist:/td>td>SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST">/SPAN>/td>/tr>
tr>td>Year:/td>td>SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR">/SPAN>/td>/tr>
tr>td>Country:/td>td>SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY">/SPAN>/td>/tr>
tr>td>Company:/td>td>SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY">/SPAN>/td>/tr>
tr>td>Price:/td>td>SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE">/SPAN>/td>/tr>
/table>

3.動作操作。
最后,為數(shù)據(jù)提供瀏覽按鈕:
INPUT TYPE=button VALUE="上一張CD" ONCLICK="moveprevious()">
INPUT TYPE=button VALUE="下一張CD" ONCLICK="movenext()">

并利用js來完成兩個鼠標(biāo)點擊功能:movenext()和moveprevious()。在head區(qū)加入如下代碼:

script language="JavaScript">
function movenext()
{
if (xmldso.recordset.absoluteposition xmldso.recordset.recordcount)
{
xmldso.recordset.movenext();
}
}
function moveprevious()
{
if (xmldso.recordset.absoluteposition > 1)
{
xmldso.recordset.moveprevious();
}
}
/script>

好,我們先看HTML文件的全部原代碼:

html>
head>

script for="window" event="onload">
xmldso.XMLDocument.load("cd.xml");
/script>

script language="JavaScript">
function movenext()
{
if (xmldso.recordset.absoluteposition xmldso.recordset.recordcount)
{
xmldso.recordset.movenext();
}
}
function moveprevious()
{
if (xmldso.recordset.absoluteposition > 1)
{
xmldso.recordset.moveprevious();
}
}
/script>

TITLE>CD Navigate/TITLE>
/head>

body>
p>
object WIDTH="0" HEIGHT="0"
CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="xmldso">
/object>

table>
tr>td>Title:/td>td>SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE">/SPAN>/td>/tr>
tr>td>Artist:/td>td>SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST">/SPAN>/td>/tr>
tr>td>Year:/td>td>SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR">/SPAN>/td>/tr>
tr>td>Country:/td>td>SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY">/SPAN>/td>/tr>
tr>td>Company:/td>td>SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY">/SPAN>/td>/tr>
tr>td>Price:/td>td>SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE">/SPAN>/td>/tr>
/table>

p>
INPUT TYPE=button VALUE="上一張CD" ONCLICK="moveprevious()">
INPUT TYPE=button VALUE="下一張CD" ONCLICK="movenext()">
/p>

/body>
/html>

將以上代碼存為cd.htm文件,于第二步的cd.xml文件放在一起。打開cd.htm文件,你就看見和上面實例一樣的效果了。

好,到今天為止,我們已經(jīng)學(xué)習(xí)了關(guān)于XML的不少知識,我們來總結(jié)一下前面五個章節(jié),分別是XML快速入門,XML的概念原理,XML的術(shù)語,XML的語法和本章的實例解析。到這里,教程部分就結(jié)束了。在寫作過程中,阿捷盡最大努力將有關(guān)XML概念講得通俗易懂,盡量把自己的理解告訴給大家,但因為本人學(xué)習(xí)XML時間也不長,對整個XML的技術(shù)把握還不夠系統(tǒng)和深入,所以難免有疏漏的地方,請大家指正和諒解,謝謝!

在教程最后,附帶一章"XML的相關(guān)資源",提供了許多非常好的學(xué)習(xí)網(wǎng)站和資源連接,推薦您保存下來。請繼續(xù)瀏覽:XML的相關(guān)資源。
(出處:eNet學(xué)院)

標(biāo)簽:長治 河南 滄州 紅河 樂山 上海 沈陽 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《XML輕松學(xué)習(xí)手冊(五):XML語法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    涪陵区| 澳门| 安阳县| 江西省| 开远市| 赤水市| 赤峰市| 平阴县| 辛集市| 嘉祥县| 柞水县| 玉山县| 达孜县| 玛曲县| 黎城县| 绩溪县| 那坡县| 津南区| 元氏县| 固安县| 敦化市| 南汇区| 建宁县| 彰化县| 紫阳县| 比如县| 西林县| 佛学| 泸水县| 当雄县| 正镶白旗| 正蓝旗| 延庆县| 山东省| 尉犁县| 项城市| 历史| 米林县| 合水县| 县级市| 隆回县|