《XML案例教程》課件第8章_第1頁
《XML案例教程》課件第8章_第2頁
《XML案例教程》課件第8章_第3頁
《XML案例教程》課件第8章_第4頁
《XML案例教程》課件第8章_第5頁
已閱讀5頁,還剩98頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第8章XML與數(shù)據(jù)島8.1數(shù)據(jù)島概述8.2數(shù)據(jù)島的使用8.3XML數(shù)據(jù)與HTML元素綁定8.4XML數(shù)據(jù)記錄綁定8.5使用表格綁定顯示數(shù)據(jù)島8.6顯示數(shù)據(jù)島中的XML元素屬性8.7綜合實(shí)例8.8本章小結(jié)習(xí)題8

8.1數(shù)?據(jù)?島?概?述

XML的數(shù)據(jù)源對象(XMLDataSourceObject,XMLDSO)又稱數(shù)據(jù)島(DataIslands)。數(shù)據(jù)島本質(zhì)上是HTML標(biāo)記,使用該標(biāo)記可以在HTML文檔中直接嵌入XML數(shù)據(jù),或者使用引用方式將外部XML文檔加載到HTML文檔中。微軟從IE5開始將該項(xiàng)技術(shù)引入到瀏覽器中,可以通過XML標(biāo)簽輕松將XML數(shù)據(jù)源插入到HTML文檔中。使用數(shù)據(jù)島很容易將XML數(shù)據(jù)和HTML元素進(jìn)行綁定,免去了用手工把數(shù)據(jù)填充到HTML中的麻煩。如果修改數(shù)據(jù)島中的數(shù)據(jù),頁面上與之綁定的HTML元素的值也隨之改變。

8.2數(shù)據(jù)島的使用

XML數(shù)據(jù)島的實(shí)現(xiàn)方法是在HTML文檔中使用<XML>標(biāo)簽。<XML>元素標(biāo)記數(shù)據(jù)島的開始,它的id屬性提供了一個(gè)可以用來引用數(shù)據(jù)島的名稱。XML數(shù)據(jù)島的常用屬性和事件如表8-1和表8-2所示。表8-1XML數(shù)據(jù)島常用屬性表8-2XML數(shù)據(jù)島常用事件

XML數(shù)據(jù)島代碼的嵌入方式有兩種:直接嵌入和外部引用。

直接嵌入數(shù)據(jù)島指將XML文檔內(nèi)容放在<xml>標(biāo)記中,使用方法如例8-1所示?!纠?-1】

案例說明:使用<xml>標(biāo)記將數(shù)據(jù)島直接嵌入到XML文檔中。

程序名稱:ch8-1.htm

01<html>

02<head><title>數(shù)據(jù)島的直接嵌入</title></head>

03<body>

04<p>XML文檔內(nèi)嵌在HTML文檔中</p>

05<xmlid="XMLData">

06<?xmlversion="1.0"encoding="UTF-8"?>

07<Book>08<Title>軟件工程</Title>

09<Author>鄧良松,劉海巖,陸麗娜</Author>

10<Publisher>西安電子科技大學(xué)出版社</Publisher>

11<PubDate>2001年6月</PubDate>

12<ISBN>7-5606-0924-4</ISBN>

13</Book>

14</xml>

15</body>

16</html>案例分析:第05行至第14行使用<xml>標(biāo)記封裝XML數(shù)據(jù)源,屬性id定義數(shù)據(jù)源標(biāo)識(shí)“XMLData”。

外部引入數(shù)據(jù)島指使用<xml>標(biāo)記的src屬性將外部XML文檔加載到HTML文檔中,使用方法如例8-2所示?!纠?-2】

案例說明:使用外部引用方式將xml數(shù)據(jù)源引入到HTML文檔中。

程序名稱:ch8-2.htm

01<html>

02<head><title>數(shù)據(jù)島的外部引用</title></head>

03<body>

04<p>使用外部引用方式將xml數(shù)據(jù)源引入到HTML文檔中</p>

05<xmlid="XMLData"src="ch8-1.xml">

06</body>

07</html>案例分析:第05行使用<xml>標(biāo)記的src屬性將外部XML文件“ch8-1.xml”引入到HTML文檔中。

8.3XML數(shù)據(jù)與HTML元素綁定

在IE5.0以上的版本中存在部分標(biāo)記支持?jǐn)?shù)據(jù)島綁定。表8-3為支持XML數(shù)據(jù)綁定的常用HTML標(biāo)記。表8-3可以綁定XML數(shù)據(jù)的常用HTML標(biāo)記表中被綁定的innerHTML屬性允許XML元素內(nèi)容中出現(xiàn)HTML標(biāo)記,這些標(biāo)記在瀏覽器中被解釋執(zhí)行。當(dāng)含有HTML標(biāo)記的XML元素被綁定到src、value、innerText等屬性時(shí),瀏覽器不處理這些標(biāo)記,只原樣顯示。

8.4XML數(shù)據(jù)記錄綁定

可以使用綁定技術(shù)將XML數(shù)據(jù)源綁定到HTML單標(biāo)記來顯示XML單記錄數(shù)據(jù)。XML多記錄數(shù)據(jù)顯示需要使用數(shù)據(jù)源對象的記錄集。下面討論單記錄數(shù)據(jù)及多記錄數(shù)據(jù)集的綁定和顯示。8.4.1單記錄數(shù)據(jù)綁定

【例8-3】

案例說明:綁定單個(gè)HTML標(biāo)記的XML文檔的處理。

程序名稱:ch8-3.htm

01<html>

02<head><title>綁定單個(gè)記錄的XML文檔</title></head>

03<body>

04<xmlid="XMLData">

05<?xmlversion="1.0"encoding="UTF-8"?>

06<BookList>07<Book>

08<Title>軟件工程</Title>

09<Author>鄧良松,劉海巖,陸麗娜</Author>

10<Publisher>西安電子科技大學(xué)出版社</Publisher>

11<PubDate>2001年6月</PubDate>

12<ISBN>7-5606-0924-4</ISBN>

13</Book>

14</BookList>

15</xml>16<h3>被綁定的圖書信息:</h3>

17<divid="htmlDiv"style="border:1pxsolidblack;padding:10px;">

18書名:

19<spandatasrc="#XMLData"datafld="Title"></span><br/>

20作者:

21<spandatasrc="#XMLData"datafld="Author"></span><br/>

22出版社:23<spaniddatasrc="#XMLData"datafld="Publisher"></span><br/>

24出版日期:

25<spandatasrc="#XMLData"datafld="PubDate"></span><br/>

26ISBN:

27<spandatasrc="#XMLData"datafld="ISBN"></span><br/>

28</div>

29</body>

30</html>案例分析:使用單標(biāo)記綁定XML文檔時(shí),被綁定的XML文檔通常是三層結(jié)構(gòu)——第一層為根元素,如例8-3中程序ch8-3.htm中第06行的<BookList>元素;第二層子元素為記錄元素,如第07行的<Book>元素;第三層的子元素為記錄的字段,如第08行至第12行的<Title>等元素。

第04行和第15行的<xml>元素使用內(nèi)嵌方式封裝了XML數(shù)據(jù)源,屬性id定義數(shù)據(jù)源對象的標(biāo)識(shí)符為“XMLData”。第17行和第28行使用<div>定義了一個(gè)層對象,用于顯示數(shù)據(jù)島中的數(shù)據(jù)。在層對象中使用<span>標(biāo)記綁定XML數(shù)據(jù)源,如第19行的代碼:

<spandatasrc="#XMLData"datafld="Title"></span>被綁定標(biāo)記<span>的“datasrc”屬性指向所使用的數(shù)據(jù)島標(biāo)識(shí)“XMLData”,注意在標(biāo)識(shí)前需加“#”;被綁定標(biāo)記的datafld屬性指向數(shù)據(jù)島記錄元素的字段<Title>,其他記錄字段的處理方法類似。

程序ch8-3.htm在瀏覽器中的運(yùn)行結(jié)果如圖8-1所示。圖8-1程序ch8-3.htm在瀏覽器中的運(yùn)行結(jié)果8.4.2多記錄數(shù)據(jù)集綁定

數(shù)據(jù)島對象本質(zhì)上是個(gè)記錄集(recordset),當(dāng)要顯示多個(gè)記錄時(shí),可以用記錄集所提供的方法瀏覽記錄。表8-4列出了數(shù)據(jù)島記錄集的方法。表8-4數(shù)據(jù)島記錄集recordset對象的方法【例8-4】

案例說明:使用數(shù)據(jù)島記錄集屬性翻頁顯示多條記錄。

程序名稱:ch8-2.xml

01<?xmlversion="1.0"encoding="UTF-8"?>

02<BookList>

03<Book>

04<Title>軟件系統(tǒng)開發(fā)技術(shù)(修訂版)</Title>

05<Author>潘錦平,施小英,姚天昉</Author>

06<Publisher>西安電子科技大學(xué)出版社</Publisher>

07<PubDate>2001年1月</PubDate>08<ISBN>7-5606-0492-7</ISBN>

09</Book>

10…

11</BookList>程序名稱:ch8-4.htm

01<html>

02<head><title>綁定單個(gè)記錄的XML文檔</title></head>

03<body>

04<xmlid="XMLData"src="ch8-2.xml"></xml>

05<h3>被綁定的圖書信息:</h3>

06<divid="htmlDiv"style="border:1pxsolidblack;padding:10px;">

07書名:

08<spandatasrc="#XMLData"datafld="Title"></span><br/>09作者:

10<spandatasrc="#XMLData"datafld="Author"></span><br/>

11出版社:

12<spaniddatasrc="#XMLData"datafld="Publisher"></span><br/>

13出版日期:

14<spandatasrc="#XMLData"datafld="PubDate"></span><br/>

15ISBN:16<spandatasrc="#XMLData"datafld="ISBN"></span><br/>

17</div>

18<buttononclick="XMLData.recordset.moveFirst()">第一條記錄</button>

19<buttononclick="if(!XMLData.recordset.BOF){XMLData.recordset.movePrevious();}">前一記錄</button>

20<buttononclick="if(!XMLData.recordset.EOF){XMLData.recordset.moveNext();}">下一記錄</button>21<buttononclick="XMLData.recordset.moveLast()">最后一條記錄</button>

22</body>

23</html>案例分析:程序ch8-4.htm的第04行使用<xml>標(biāo)記定義一個(gè)數(shù)據(jù)島“XMLData”將外部文件“ch8-2.xml”引入到HTML中。第08行至第16行將數(shù)據(jù)島字段“Title”、“Author”、“Publisher”、“PubDate”、“ISBN”與<span>標(biāo)記綁定,內(nèi)嵌在第06行定義的層對象“htmlDiv”中。第18行至第21行定義了四個(gè)“Button”按鈕,按鈕的“onclick”事件調(diào)用數(shù)據(jù)島記錄集的方法實(shí)現(xiàn)翻頁顯示記錄集記錄。第19行的JavaScript腳本:

if(!XMLData.recordset.BOF){XMLData.recordset.movePrevious();}

先判斷記錄指針是否已經(jīng)移到記錄集的首部,然后再?zèng)Q定是否訪問前一條記錄。

第20行的JavaScript腳本:

if(!XMLData.recordset.EOF){XMLData.recordset.

moveNext();}

先判斷記錄指針是否已經(jīng)移到記錄集的尾部,然后再?zèng)Q定是否訪問后一條記錄。

程序ch8-4.htm在瀏覽器中的運(yùn)行結(jié)果如圖8-2所示。圖8-2程序ch8-4.htm在瀏覽器中的運(yùn)行結(jié)果

8.5使用表格綁定顯示數(shù)據(jù)島

XML數(shù)據(jù)源對象可以綁定在HTML表格標(biāo)記上,綁定表格后XML數(shù)據(jù)源對象的數(shù)據(jù)將顯示在表格中。通過表格顯示數(shù)據(jù)島數(shù)據(jù)時(shí),表頭必須通過<thead>和<th>標(biāo)記設(shè)定。8.5.1綁定簡單表格

【例8-5】

案例說明:使用HTML表格綁定顯示簡單XML文檔。

程序名稱:ch8-5.htm

01<html>

02<head><title>綁定單個(gè)記錄的XML文檔</title></head>

03<body>

04<xmlid="XMLData"src="ch8-2.xml"></xml>

05<h3align="center">圖書信息列表</h3>

06<tabledatasrc="#XMLData"cellspacing="5"align="center">07<theadbgcolor="#c0c060">

08<th>書名</th>

09<th>作者</th>

10<th>出版社</th>

11<th>出版日期</th>

12<th>ISBN</th>

13</thead>

14<trbgcolor="#ffffc0">

15<td><spandatafld="Title"></span></td>

16<td><spandatafld="Author"></span></td>

17<td><spandatafld="Publisher"></span></td>18<td><spandatafld="PubDate"></span></td>

19<td><spandatafld="ISBN"></span></td>

20</tr>

21</table>

22</body>

23</html>案例分析:程序ch8-5.htm中第04行定義數(shù)據(jù)島XMLData將外部文件ch8-2.xml引入到HTML文檔中;第06行的datasrc屬性綁定數(shù)據(jù)島標(biāo)識(shí)XMLData;第15行至第20行使用標(biāo)記<span>綁定要顯示的XML字段,<span>標(biāo)記嵌入到表格的單元格中。

程序ch8-5.htm在瀏覽器中的運(yùn)行結(jié)果如圖8-3所示。圖8-3程序ch8-5.htm在瀏覽器中的運(yùn)行結(jié)果8.5.2綁定嵌套表格

表格的HTML代碼是一個(gè)三層的XML程序,根元素是<table>標(biāo)記,第二層元素是<tr>標(biāo)記,第三層元素是<td>標(biāo)記。表格的樹狀結(jié)構(gòu)對應(yīng)了普通的三層XML文檔,只有簡單的二級(jí)XML文檔才能與簡單表格綁定。如果XML文檔多于二級(jí)且多出的級(jí)數(shù)又能構(gòu)成二級(jí)結(jié)構(gòu),則可以使用嵌套表格顯示。【例8-6】

案例說明:使用嵌套表格顯示多層結(jié)構(gòu)的XML文檔。

程序名稱:ch8-3.xml

01<?xmlversion="1.0"encoding="UTF-8"?>

02<BookList>

03<Category>

04<Type>計(jì)算機(jī)</Type>

05<Book>

06<Title>軟件系統(tǒng)開發(fā)技術(shù)(修訂版)</Title>

07<Author>潘錦平,施小英,姚天昉</Author>08<Publisher>西安電子科技大學(xué)出版社</Publisher>

09<PubDate>2001年1月</PubDate>

10<ISBN>7-5606-0492-7</ISBN>

11</Book>

12…

13</Category>

14<Category>

15<Type>小說</Type>

16<Book>

17<Title>基督山伯爵(上下冊)</Title>

18<Author>大仲馬(法)</Author>19<Publisher>上海譯文出版社</Publisher>

20<PubDate>2001年8月</PubDate>

21<ISBN>7-5327-2651-7</ISBN>

22</Book>

23…

24</Category>

25</BookList>程序名稱:ch8-6.htm

01<html>

02<head><title>綁定嵌套表格</title></head>

03<body>

04<xmlid="XMLData"src="ch8-3.xml"></xml>

05<h3align="center">圖書信息列表</h3>

06<tabledatasrc="#XMLData"align="center"width="650"bgcolor="#c0c060">

07<tr>

08<thalign="left"><spandatafld="Type"></span></th>09</tr>

10<tr>

11<td>

12<tabledatasrc="#XMLData"datafld="Book"width="655"bgcolor="#ffffc0">

13<theadalign="left">

14<th>書名</th>

15<th>作者</th>

16<th>出版社</th>17<th>出版日期</th>

18<th>ISBN</th>

19</thead>

20<tr>

21<td><spandatafld="Title"></span></td>

22<td><spandatafld="Author"></span></td>

23<td><spandatafld="Publisher"></span></td>

24<td><spandatafld="PubDate"></span></td>

25<td><spandatafld="ISBN"></span></td>26</tr>

27</table>

28</td>

29</tr>

30</table>

31</body>

32</html>案例分析:例8-6中的ch8-3.xml文檔具有兩個(gè)二級(jí)結(jié)構(gòu)的XML文檔。第一個(gè)二級(jí)結(jié)構(gòu)的字段<Book>同時(shí)是第二個(gè)二級(jí)結(jié)構(gòu)的根。程序ch8-6.htm第06行綁定第一層表格,第12行綁定第二層表格,表格屬性datafld與XML元素Book綁定。

程序ch8-6.htm在瀏覽器中的運(yùn)行結(jié)果如圖8-4所示。圖8-4程序ch8-6.htm在瀏覽器中的運(yùn)行結(jié)果8.5.3表格分頁顯示

表格可以分頁顯示XML文檔,表格標(biāo)記<table>的datapagesize屬性用于設(shè)定一頁可以顯示的記錄條數(shù)。表格標(biāo)記提供的方法可以瀏覽各頁的內(nèi)容。表8-5列出了<table>標(biāo)記用于分頁瀏覽的方法。表8-5<table>標(biāo)記的方法【例8-7】

案例說明:使用表格標(biāo)記的分頁屬性對綁定到表格的XML數(shù)據(jù)進(jìn)行分頁顯示。

程序名稱:ch8-7.htm

01<html>

02<head><title>綁定簡單表格</title></head>

03<body>

04<xmlid=“XMLData”src=“ch8-2.xml”></xml>

05<h3align="center">圖書信息列表</h3>06<tableid="xmltable"datasrc="#XMLData"align="center"datapagesize="1"width="650">

07<theadbgcolor="#c0c060"align="left">

08<th>書名</th>

09<th>作者</th>

10<th>出版社</th>

11<th>出版日期</th>

12<th>ISBN</th>

13</thead>

14<trbgcolor="#ffffc0">15<td><spandatafld="Title"></span></td>

16<td><spandatafld="Author"></span></td>

17<td><spandatafld="Publisher"></span></td>

18<td><spandatafld="PubDate"></span></td>

19<td><spandatafld="ISBN"></span></td>

20</tr>

21</table>

22<hr/>

23<divalign="center">24<buttononclick="xmltable.firstPage()">第一頁</button>

25<buttononclick="xmltable.previousPage()">前一頁</button>

26<buttononclick="xmltable.nextPage()">后一頁</button>

27<buttononclick="xmltable.lastPage()">最后一頁</button>

28</div>

29</body>

30</html>案例分析:程序ch8-7.htm中第04行定義數(shù)據(jù)島XMLData將外部文件ch8-2.xml引入到HTML文檔中;第06行定義表格xmltable,表格的屬性datasrc綁定數(shù)據(jù)島XMLdata,屬性datapagesize的值為1即設(shè)置每頁顯示1條記錄;第24行至第27行使用表格及Button按鈕的onclick事件執(zhí)行表格xmltable的分頁瀏覽方法,實(shí)現(xiàn)綁定了表格的XML數(shù)據(jù)的分頁瀏覽。

程序ch8-7.htm在瀏覽器中的運(yùn)行結(jié)果如圖8-5所示。圖8-5程序ch8-7.htm在瀏覽器中的運(yùn)行結(jié)果

8.6顯示數(shù)據(jù)島中的XML元素屬性

前面各節(jié)介紹的是XML數(shù)據(jù)源元素的綁定及顯示,這些XML元素中不含屬性。當(dāng)XML元素中含有屬性時(shí),數(shù)據(jù)島將屬性作為該元素的子元素進(jìn)行處理。元素分為底層元素和非底層元素,處理方法有所區(qū)別。下面介紹XML數(shù)據(jù)源元素屬性的綁定及顯示。8.6.1顯示XML非底層元素屬性

【例8-8】

案例說明:使用表格綁定技術(shù)顯示XML文檔非底層元素的屬性,本案例使用ch8-6.htm綁定ch8-4.xml文檔。程序名稱:ch8-4.xml

01<?xmlversion="1.0"encoding="UTF-8"?>

02<BookList>

03<CategoryType="計(jì)算機(jī)">

04<Book>

05<Title>軟件系統(tǒng)開發(fā)技術(shù)(修訂版)</Title>

06<Author>潘錦平施小英姚天昉</Author>

07<Publisher>西安電子科技大學(xué)出版社</Publisher>

08<PubDate>2001年1月</PubDate>

09<ISBN>7-5606-0492-7</ISBN>10</Book>

11…

12</Category>

13<CategoryType="小說">

14<Book>

15<Title>基督山伯爵(上下冊)</Title>

16<Author>大仲馬(法)</Author>

17<Publisher>上海譯文出版社</Publisher>

18<PubDate>2001年8月</PubDate>

19<ISBN>7-5327-2651-7</ISBN>20</Book>

21…

22</Category>

23</BookList>案例分析:當(dāng)XML的元素含有屬性,同時(shí)又有子元素時(shí),該XML元素為非底層元素,屬性將作為該元素的子元素進(jìn)行處理。如ch8-4.xml文檔的第03行和第13行,在與數(shù)據(jù)島進(jìn)行綁定時(shí),元素<Category>的屬性Type將作為<Category>元素的子元素與HTML的<span>標(biāo)記進(jìn)行綁定,所以ch8-4.xml文檔可以使用例8-6中的程序ch8-6.htm來處理。8.6.2顯示XML底層元素屬性

【例8-9】

案例說明:使用表格綁定技術(shù)顯示XML數(shù)據(jù)底層元素的屬性。

程序名稱:ch8-5.xml

01<?xmlversion=“1.0”encoding=“UTF-8”?>

02<BookList>

03<Book>

04<TitleType=“計(jì)算機(jī)”>軟件系統(tǒng)開發(fā)技術(shù)(修訂版)</Title>

05<Author>潘錦平,施小英,姚天昉</Author>06<Publisher>西安電子科技大學(xué)出版社</Publisher>

07<PubDate>2001年1月</PubDate>

08<ISBN>7-5606-0492-7</ISBN>

09</Book>

10…

11</BookList>程序名稱:ch8-8.htm

01<html>

02<head><title>顯示XML底層元素</title></head>

03<body>

04<xmlid="XMLData"src="ch8-5.xml"></xml>

05<h3align="center">圖書信息列表</h3>

06<tabledatasrc="#XMLData"align="center"bgcolor="#c0c060">

07<theadalign="left">

08<th>書名</th>

09<th>類別</th>10<th>作者</th>

11<th>出版社</th>

12<th>出版日期</th>

13<th>ISBN</th>

14</thead>

15<trbgcolor="#ffffc0">

16<td>

17<tabledatasrc="#XMLData"datafld="Title">

18<tr>19<td><spandatafld="$text"></span></td>

20</tr>

21</table>

22</td>

23<td>

24<tabledatasrc="#XMLData"datafld="Title">

25<tr>

26<td><spandatafld="Type"></span></td>

27</tr>

28</table>29</td>

30<td><spandatafld="Author"></span></td>

31<td><spandatafld="Publisher"></span></td>

32<td><spandatafld="PubDate"></span></td>

33<td><spandatafld="ISBN"></span></td>

34</tr>

35</table>

36</body>

37</html>案例分析:XML底層元素包含屬性,如ch8-5.xml文檔的第04行底層元素<Title>具有屬性Type,在與HTML元素進(jìn)行綁定時(shí),屬性Type看做元素<Title>的子元素,同時(shí)元素的內(nèi)容也看做該元素的子元素,內(nèi)容作為子元素時(shí)命名為$text。程序ch8-8.htm的第17行至第21行定義嵌套的表格綁定<Title>,元素<Title>的內(nèi)容$text綁定<span>。第24行至第28行也定義嵌套表格綁定<Title>,屬性Type看做<Title>子元素綁定<span>。

程序ch8-8.htm在瀏覽器中的運(yùn)行結(jié)果如圖8-6所示。圖8-6程序ch8-8.htm在瀏覽器中的運(yùn)行結(jié)果

8.7綜合實(shí)例

本節(jié)將使用前幾章的內(nèi)容和本章的數(shù)據(jù)島知識(shí)設(shè)計(jì)一個(gè)簡單的圖書檢索系統(tǒng)。圖書檢索系統(tǒng)的功能頁面如圖8-7所示,頁面的上半?yún)^(qū)域?yàn)閳D書簡要信息列表,下半?yún)^(qū)域?yàn)橐槐緢D書的內(nèi)容簡介。當(dāng)點(diǎn)擊“查看”按鈕時(shí),被查閱的圖書內(nèi)容簡介將顯示在“圖書主要內(nèi)容介紹”區(qū)域。圖8-7使用數(shù)據(jù)島檢索圖書信息

1.編寫XML文檔

首先編寫存儲(chǔ)圖書簡要信息的XML文檔和每本圖書內(nèi)容簡介的XML文檔。圖書簡要信息XML文檔存儲(chǔ)“圖書編號(hào)”、“書名”、“作者”、“出版社”、“出版日期”和“ISBN”等圖書簡要信息。通過“圖書編號(hào)”可以鏈接到存儲(chǔ)該圖書內(nèi)容簡介的XML文檔。每本圖書的內(nèi)容介紹信息各自存放在不同的XML檔中。

存儲(chǔ)圖書簡要信息的XML文檔(BookIndex.xml)和存儲(chǔ)第一本圖書介紹信息的XML文檔(Book.xml)結(jié)構(gòu)如下:

案例說明:存儲(chǔ)圖書簡要信息的XML文檔。程序名稱:BookIndex.xml

01<?xmlversion="1.0"encoding="UTF-8"?>

02<BookList>

03<Book>

04<BookID>1</BookID>

05<Title>軟件系統(tǒng)開發(fā)技術(shù)(修訂版)</Title>

06<Author>潘錦平,施小英,姚天昉</Author>

07<Publisher>西安電子科技大學(xué)出版社</Publisher>08<PubDate>2001年1月</PubDate>

09<ISBN>7-5606-0492-7</ISBN>

10</Book>

11…

12</BookList>案例分析:XML文檔“BookIndex.xml”是一個(gè)三層的結(jié)構(gòu),文檔中的第03行至第10行存儲(chǔ)了一條圖書記錄。字段<BookID>元素存儲(chǔ)了第一本圖書的編號(hào),圖書的編號(hào)唯一確定一本圖書。存儲(chǔ)其他圖書的記錄元素結(jié)構(gòu)與此類似。案例說明:存儲(chǔ)圖書內(nèi)容簡介的XML文檔。

程序名稱:Book1.xml

01<?xmlversion="1.0"encoding="UTF-8"?>

02<Book>

03<Title>軟件系統(tǒng)開發(fā)技術(shù)(修訂版)</Title>

04<CoverName>cover1.jpg</CoverName>

05<BigCover>cover1-1.jpg</BigCover>06<Abstract><![CDATA[本書介紹大型軟件系統(tǒng)的開發(fā)技術(shù),主要是目前軟件界最為流行,也較實(shí)用的結(jié)構(gòu)化方法,包括支持這一方法的工具和環(huán)境;還簡述了其他一些方法和技術(shù),如Jackson方法、面向?qū)ο蟮能浖_發(fā)方法、測試和維護(hù)技術(shù)以及數(shù)據(jù)庫設(shè)計(jì)等,使材料更系統(tǒng)化,并有所比較。]]></Abstract>

07</Book>案例分析:程序“Book1.xml”中第03行的元素<Title>存儲(chǔ)書名,第04行的元素<CoverName>存儲(chǔ)圖書封面縮略圖文件名稱,第05行存儲(chǔ)圖書封面放大圖文件名稱,第06行的元素<Abstract>存儲(chǔ)圖書的內(nèi)容簡介。

2.編寫XSL轉(zhuǎn)換文檔

使用XSLT模板轉(zhuǎn)換技術(shù)將存儲(chǔ)圖書內(nèi)容簡介的XML文檔(如Book1.xml)轉(zhuǎn)換為HTML文檔,呈現(xiàn)在圖8-7所示頁面“圖書主要內(nèi)容介紹”區(qū)域。使用如下的XSL轉(zhuǎn)換程序“TransformBookContent.xsl”進(jìn)行XML文檔的轉(zhuǎn)換(如轉(zhuǎn)換Book1.xml)。

案例說明:將存儲(chǔ)圖書內(nèi)容簡介的XML文檔(如Book1.xml)轉(zhuǎn)換為可以顯示的HTML文檔。程序“TransformBookContent.xsl”給出主要代碼。程序名稱:TransformBookContent.xsl

01<tableborder="0">

02<tr>

03<thalign="center"colspan="2"style="color:#8B0000">內(nèi)容簡介</th>

04</tr>

05<xsl:for-eachselect="Book">

06<tr>

07<tdrowspan="2"height="6">

08<xsl:elementname="a">09<xsl:attributename="href"><xsl:value-ofselect="BigCover"/></xsl:attribute>

10<xsl:attributename="target">_blank</xsl:attribute>

11<xsl:elementname="img">

12<xsl:attributename="src"><xsl:value-ofselect="CoverName"/></xsl:attribute>

13</xsl:element>

14</xsl:element>

15</td>16<tdstyle="font-weight:bold"><xsl:value-ofselect="Title"/></td>

17</tr>

18<tr>

19<tdclass="a1"><xsl:value-ofselect="Abstract"/></td>

20</tr>

21</xsl:for-each>

22</table>案例分析:程序“TransformBookContent.xsl”中第08行至第14行定義一個(gè)HTML超鏈接元素<a>。第11行至第13行定義一個(gè)圖片元素<img>,第12行為<img>元素增加一個(gè)屬性“src”,屬性值為元素<CoberName>的內(nèi)容(如Book1.xml中的“cover1.jpg”),<img>元素將外部圖片文件引入到HTML文檔中作為元素<a>的鏈接圖標(biāo)。第09行為元素<a>增加一個(gè)屬性“href”,屬性值為元素“BigCover”的內(nèi)容(如Book1.xml中的“cover1-1.jpg”);第10行為元素<a>增加一個(gè)屬性“target”,屬性值為“_blank”。當(dāng)單擊圖片(“cover1.jpg”)超鏈接時(shí),將在新空白窗口中打開圖片“cover1-1.jpg”。第08行至第14行嵌入在表格單元格中的HTML標(biāo)記如下所示:

<ahref=“cover1.jpg”target=“_blank”><imgsrc=“cover1-1.jpg”></a>

第14行和第19行分別將圖書的標(biāo)題和內(nèi)容簡介嵌入到HTML表格單元格中。

3.使用數(shù)據(jù)島檢索圖書信息

程序“BookIndex.htm”使用數(shù)據(jù)島技術(shù)將“BookIndex.xml”文檔(存儲(chǔ)圖書簡要信息)與表格綁定,并使用表格的分頁顯示屬性將XML內(nèi)容顯示在圖8-7所示頁面的上半?yún)^(qū)域。當(dāng)點(diǎn)擊表格單元格中的“查詢”按鈕時(shí),程序根據(jù)圖書的編號(hào)將包含圖書詳細(xì)內(nèi)容的XML文檔從服務(wù)器取到客戶端的數(shù)據(jù)島中,然后啟用“TransformBookContent.xsl”轉(zhuǎn)換程序?qū)D書標(biāo)題、封面和內(nèi)容簡介嵌入到含有表格標(biāo)記的HTML文檔中,并顯示在“圖書主要內(nèi)容介紹”文字下方的層對象中。使用數(shù)據(jù)島技術(shù)異步回發(fā)請求,在客戶端和服務(wù)器端之間傳輸XML文檔,不需要刷新網(wǎng)頁,實(shí)現(xiàn)頁面的局部更新。

案例說明:使用數(shù)據(jù)島技術(shù)檢索圖書的信息。下面對“BookIndex.htm”的主要代碼進(jìn)行分析。

程序名稱:BookIndex.htm

定義層對象BookDetail_Div用于顯示“Transform

BookContent.xsl”程序的轉(zhuǎn)換結(jié)果:

<divid="BookDetail_Div"style="border:1pxsolidblack;padding:10px;width:800px;height:200px"></div>

數(shù)據(jù)島的定義:

01<!--加載圖書簡要信息數(shù)據(jù)島-->

02<xmlid="XMLDataIndex"src="BookIndex.xml"></xml>

03<!--圖書簡介數(shù)據(jù)島-->

04<xmlid="XMLDataDetail"onDatasetComplete="show_BookDetail(window.event.srcElement)"></xml>

05<!--XSL轉(zhuǎn)換文檔數(shù)據(jù)島-->

06<xmlid="XSLData"src="TransformBookContent.xsl"></xml>案例分析:第02行定義數(shù)據(jù)島“XMLDataIndex”在程序第一次啟動(dòng)時(shí),將“BookIndex.xml”文檔加載到客戶端。第04行定義數(shù)據(jù)島“XMLDataDetail”用于接收存儲(chǔ)圖書內(nèi)容簡介等詳細(xì)信息的XML文檔,當(dāng)XML文檔下載到客戶端時(shí),觸發(fā)事件“show_BookDetail”將XML文檔轉(zhuǎn)換為HTML文檔顯示在層“BookDetail_Div”中。“window.event.srcElement”是當(dāng)前的事件源,此處指當(dāng)前的數(shù)據(jù)島對象“XMLDataDetail”。第06行定義數(shù)據(jù)島“XSLData”在頁面第一次被訪問時(shí),將“TransformBookContent.xsl”文檔下載到客戶端,用于以后的XML轉(zhuǎn)換。

定義表格“xmltable”用于綁定“XMLDataIndex”數(shù)據(jù)島:

01<tableid="xmltable"datasrc="#XMLDataIndex"align="center"datapagesize="2"width="800">

02<trbgcolor="#ffffc0">

03<td><spandatafld="BookID"></span></td>

04<td><spandatafld="Title"></span></td>

05<td><spandatafld="Author"></span></td>06<td><spandatafld="Publisher"></span></td>

07<td><spandatafld="PubDate"></span></td>

08<td><spandatafld="ISBN"></span></td>

09<td><buttonid="ref_button"

onclick="ref_BookDetail_DSO(window.event.srcElement)">查看</button></td>

10</tr>

11</table>

12<divid="bt_div"align="center">13<buttononclick="xmltable.firstPage()">第一頁</button>

14<buttononclick="xmltable.previousPage()">前一頁</button>

15<buttononclick="xmltable.nextPage()">后一頁</button>

16<buttononclick="xmltable.lastPage()">最后一頁</button>

17</div>案例分析:第03行至第08行將數(shù)據(jù)島中的XML標(biāo)記綁定到<span>元素上,嵌入在表格的單元格中。第09行b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論