日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

怎樣用XML和XSL來(lái)生成動(dòng)態(tài)頁(yè)面(2)_Xml教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:XML與HTML的結(jié)合(下)
XML的嵌套處理 一般情況下,我們從數(shù)據(jù)庫(kù)中查詢得到的結(jié)果集可能很大,所以從服務(wù)器返回到客戶端時(shí),數(shù)據(jù)會(huì)被分成若干個(gè)頁(yè)面分別進(jìn)行傳遞。此時(shí),利用TABLE元素中的DATAPAGESIZE屬性可以指定每

二、生成動(dòng)態(tài)xml

一旦建立了xml格式,我們需要一種能夠?qū)⑵鋸臄?shù)據(jù)庫(kù)中動(dòng)態(tài)移植的方法。

生成xml文檔相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,因?yàn)樗恍枰粋(gè)可以處理字符串的系統(tǒng)。我們建立了一個(gè)使用java servlet、enterprise javabean server、jdbc和rdbms(關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))的系統(tǒng)。

 

• servlet通過(guò)把生成xml文檔的任務(wù)交給enterprise javabean (ejb)來(lái)處理產(chǎn)品信息請(qǐng)求。
• ejb使用jdbc從數(shù)據(jù)庫(kù)里查詢所需的產(chǎn)品詳細(xì)信息。
• ejb生成xml文件并把它傳遞給servlet。
• servlet調(diào)用解析引擎,從xml文件和靜態(tài)的xsl樣式表中創(chuàng)建html輸出。

 

(有關(guān)xsl應(yīng)用的其他信息,請(qǐng)參閱用xsl作為模板語(yǔ)言。)

生成xml的例子

在java中創(chuàng)建xml文檔字符串的真正代碼可以分成幾個(gè)方法和類。

啟動(dòng)xml生成過(guò)程的代碼放在ejb方法里。這一實(shí)例會(huì)立即創(chuàng)建一個(gè)stringbuffer,以便存儲(chǔ)生成的xml字符串。

 

stringbuffer xml = new stringbuffer();
xml.append(xmlutils.begindocument("/browse_find/browse.xsl", "browse", request));
xml.append(product.toxml());
xml.append(xmlutils.enddocument("browse");
out.print(xml.tostring());

 

后面的三個(gè)xml.append()變?cè)旧砭褪菍?duì)其他方法的調(diào)用。

產(chǎn)生文件頭

第一個(gè)附加方法調(diào)用xmlutils類來(lái)產(chǎn)生xml文件頭。我們的java servlet中的代碼如下:

 

public static string begindocument(string stylesheet, string page)
{
stringbuffer xml = new stringbuffer();
xml.append("<?xml version=\"1.0\"?>\n")
.append("<?xml-stylesheet href=http://m.hl5o.cn/\"")
.append(stylesheet).append("\"")
.append(" type =\"text/xsl\"?>\n");
xml.append("<").append(page).append(">\n");
return xml.tostring();
}

 

這段代碼生成了xml文件頭。<?xml>標(biāo)簽把本文件定義為支持1.0版本的xml文件。第二行代碼指向用以顯示數(shù)據(jù)的正確樣式表的位置。最后包括進(jìn)去的是項(xiàng)級(jí)標(biāo)簽(本實(shí)例中為<browse>)。在文件末尾,只有<browse>標(biāo)簽需要被關(guān)閉。

 

<?xml version="1.0"?> <?xml-stylesheet href="http://m.hl5o.cn/browse_find/browse.xsl" type="text/xsl"?> <browse>

 

填入產(chǎn)品信息

完成了文件頭后,控制方法會(huì)調(diào)用java對(duì)象來(lái)產(chǎn)生它的xml。本例中調(diào)用的是product對(duì)象。product對(duì)象使用兩個(gè)方法來(lái)產(chǎn)生它的xml表示。第一個(gè)方法toxml()通過(guò)產(chǎn)生<product>和</product>標(biāo)簽來(lái)建立product節(jié)點(diǎn)。然后它會(huì)調(diào)用internalxml(),這樣就能提供產(chǎn)品xml所需的內(nèi)容。internalxml()是一系列的stringbuffer.append()調(diào)用。stringbuffer也被轉(zhuǎn)換成字符串并返回給控制方法。

 

public string toxml()
{
stringbuffer xml = new stringbuffer("<product>\n");
xml.append(internalxml());
xml.append("</product>\n");
return xml.tostring();
}

public string internalxml()
{
stringbuffer xml = new
stringbuffer("\t")
.append(producttype).append("\n");
xml.append("\t").append(idvalue.trim())
.append("\n");
xml.append("\t").append(idname.trim())
.append("\n");
xml.append("\t").append(page.trim())
.append("\n");

xml.append("\t").append(amount).append("\n");
xml.append("\t").append(vendor).append("\n");
xml.append("\t\n");
xml.append("\t").append(pubdesc).append("\n");
xml.append("\t").append(vendesc).append("\n");
return xml.tostring();
}

 

 

關(guān)閉文件

最后,xmlutils.enddocument()方法被調(diào)用。這個(gè)調(diào)用關(guān)閉xml標(biāo)簽(本例中為),并最終完成架構(gòu)好的xml文件。來(lái)自控制方法的整個(gè)stringbuffer也轉(zhuǎn)換成字符串,并返回給處理最初http請(qǐng)求的servlet。

分享:如何用XSLT把ADO記錄集轉(zhuǎn)換成XML
孟憲會(huì) 由于XML(可擴(kuò)展標(biāo)記語(yǔ)言:eXtensible Markup Language)真正的平臺(tái)無(wú)關(guān)性,它正在逐漸成為數(shù)據(jù)傳輸?shù)闹饕橘|(zhì)。XML是一種自描述的語(yǔ)言,數(shù)據(jù)本身就已經(jīng)包含了元數(shù)據(jù),即關(guān)于數(shù)據(jù)本身的

來(lái)源:模板無(wú)憂//所屬分類:Xml教程/更新時(shí)間:2009-05-26
相關(guān)Xml教程