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

怎樣用XML和XSL來生成動態(tài)頁面(2)_Xml教程

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

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

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

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

生成xml文檔相對來說比較簡單,因為它只需要一個可以處理字符串的系統(tǒng)。我們建立了一個使用java servlet、enterprise javabean server、jdbc和rdbms(關(guān)系型數(shù)據(jù)庫管理系統(tǒng))的系統(tǒng)。

 

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

 

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

生成xml的例子

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

啟動xml生成過程的代碼放在ejb方法里。這一實例會立即創(chuàng)建一個stringbuffer,以便存儲生成的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());

 

后面的三個xml.append()變元本身就是對其他方法的調(diào)用。

產(chǎn)生文件頭

第一個附加方法調(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://hl5o.cn/\"")
.append(stylesheet).append("\"")
.append(" type =\"text/xsl\"?>\n");
xml.append("<").append(page).append(">\n");
return xml.tostring();
}

 

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

 

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

 

填入產(chǎn)品信息

完成了文件頭后,控制方法會調(diào)用java對象來產(chǎn)生它的xml。本例中調(diào)用的是product對象。product對象使用兩個方法來產(chǎn)生它的xml表示。第一個方法toxml()通過產(chǎn)生<product>和</product>標簽來建立product節(jié)點。然后它會調(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)用。這個調(diào)用關(guān)閉xml標簽(本例中為),并最終完成架構(gòu)好的xml文件。來自控制方法的整個stringbuffer也轉(zhuǎn)換成字符串,并返回給處理最初http請求的servlet。

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

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