怎樣用XML和XSL來生成動(dòng)態(tài)頁面(2)_Xml教程
推薦:XML與HTML的結(jié)合(下)XML的嵌套處理 一般情況下,我們從數(shù)據(jù)庫中查詢得到的結(jié)果集可能很大,所以從服務(wù)器返回到客戶端時(shí),數(shù)據(jù)會(huì)被分成若干個(gè)頁面分別進(jìn)行傳遞。此時(shí),利用TABLE元素中的DATAPAGESIZE屬性可以指定每
二、生成動(dòng)態(tài)xml
一旦建立了xml格式,我們需要一種能夠?qū)⑵鋸臄?shù)據(jù)庫中動(dòng)態(tài)移植的方法。
生成xml文檔相對(duì)來說比較簡(jiǎn)單,因?yàn)樗恍枰粋(gè)可以處理字符串的系統(tǒng)。我們建立了一個(gè)使用java servlet、enterprise javabean server、jdbc和rdbms(關(guān)系型數(shù)據(jù)庫管理系統(tǒng))的系統(tǒng)。
• servlet通過把生成xml文檔的任務(wù)交給enterprise javabean (ejb)來處理產(chǎn)品信息請(qǐng)求。
• ejb使用jdbc從數(shù)據(jù)庫里查詢所需的產(chǎn)品詳細(xì)信息。
• ejb生成xml文件并把它傳遞給servlet。
• servlet調(diào)用解析引擎,從xml文件和靜態(tài)的xsl樣式表中創(chuàng)建html輸出。
(有關(guān)xsl應(yīng)用的其他信息,請(qǐng)參閱用xsl作為模板語言。)
生成xml的例子
在java中創(chuàng)建xml文檔字符串的真正代碼可以分成幾個(gè)方法和類。
啟動(dòng)xml生成過程的代碼放在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類來產(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://www.wf0088.com/\"")
.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://www.wf0088.com/browse_find/browse.xsl" type="text/xsl"?> <browse>
填入產(chǎn)品信息
完成了文件頭后,控制方法會(huì)調(diào)用java對(duì)象來產(chǎn)生它的xml。本例中調(diào)用的是product對(duì)象。product對(duì)象使用兩個(gè)方法來產(chǎn)生它的xml表示。第一個(gè)方法toxml()通過產(chǎn)生<product>和</product>標(biāo)簽來建立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文件。來自控制方法的整個(gè)stringbuffer也轉(zhuǎn)換成字符串,并返回給處理最初http請(qǐng)求的servlet。
分享:如何用XSLT把ADO記錄集轉(zhuǎn)換成XML孟憲會(huì) 由于XML(可擴(kuò)展標(biāo)記語言:eXtensible Markup Language)真正的平臺(tái)無關(guān)性,它正在逐漸成為數(shù)據(jù)傳輸?shù)闹饕橘|(zhì)。XML是一種自描述的語言,數(shù)據(jù)本身就已經(jīng)包含了元數(shù)據(jù),即關(guān)于數(shù)據(jù)本身的
- xml創(chuàng)建節(jié)點(diǎn)(根節(jié)點(diǎn)、子節(jié)點(diǎn))
- WML開發(fā)教程之 WAP網(wǎng)站服務(wù)器配置方法
- WMLScript的語法基礎(chǔ)
- 收集的WML Script標(biāo)準(zhǔn)函數(shù)庫
- WML教程之文本框控件Input
- 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)
- xml文件的結(jié)構(gòu)解讀
- 關(guān)于XSL - XSL教程
- 選擇模式 - XSL教程 - 2
- XPath入門 - XSL教程 - 3
- 匹配模式 - XSL教程 - 4
- 測(cè)試模式 - XSL教程 - 5
Xml教程Rss訂閱編程教程搜索
Xml教程推薦
- 使用 XML 模板 (MSSQL手冊(cè))
- XSL-FO 初學(xué)者教程:XSL-FO 輸出和流
- XMLHTTP 對(duì)象及其方法簡(jiǎn)介
- 利用AJAX與數(shù)據(jù)島實(shí)現(xiàn)無刷新綁定
- 利用XSL和ASP在線編輯XML文檔
- XML教程:XML DOM 節(jié)點(diǎn)信息
- 淺析XML教程之XML DHTML 行為
- 怎樣實(shí)現(xiàn)一個(gè)xml數(shù)據(jù)庫登陸驗(yàn)證
- 解析XML數(shù)據(jù)查詢技術(shù)已經(jīng)成為現(xiàn)今的研究熱點(diǎn)
- 如何在HTML中引用XML數(shù)據(jù)
- 相關(guān)鏈接:
- 教程說明:
Xml教程-怎樣用XML和XSL來生成動(dòng)態(tài)頁面(2)
。