JSP+XML實(shí)現(xiàn)網(wǎng)頁內(nèi)容動(dòng)態(tài)顯示的方案
XML(eXtensible Markup Language??可擴(kuò)展標(biāo)記語言)是一種 擴(kuò)展的源標(biāo)記語言,是可以定義其他語言的語言。
它是SGML的一個(gè)簡(jiǎn)化子集,這個(gè)子集是專為Web環(huán)境設(shè)計(jì)的,這就是說,它必須處理面向數(shù)據(jù)處理的(而不是面向發(fā)布的)、生存期短的(實(shí)際上是動(dòng)態(tài)產(chǎn)生的)信息。
XML與HTML對(duì)比:
XML語法嚴(yán)格,數(shù)據(jù)與顯示分離,便于其他程序交互和檢索數(shù)據(jù)。
HTML語法容錯(cuò)性大,數(shù)據(jù)和顯示都在一起,檢索數(shù)據(jù)困難較大。
XML又明確的DOM對(duì)象,可以對(duì)XML文件進(jìn)行讀寫添刪數(shù)據(jù)的操作。
HTML沒有這種明確的對(duì)象來完成該操作。
XML克服了HTML的種種不足,將網(wǎng)絡(luò)上傳輸?shù)奈臋n規(guī)范化,并賦予標(biāo)簽一定的含義。
XML作為一種網(wǎng)絡(luò)系統(tǒng)中通用的數(shù)據(jù)交換格式迅速得到了支持,使用XML的實(shí)際好處有:
結(jié)構(gòu)化??建立有任何復(fù)雜層次的數(shù)扭模型。
可擴(kuò)展性??根椐需要定義新的標(biāo)識(shí)。
驗(yàn)證??檢查數(shù)據(jù)在結(jié)構(gòu)上的正確性。
獨(dú)立與媒介??以多種方式發(fā)布內(nèi)容。
獨(dú)立于供應(yīng)商和平臺(tái)??使用標(biāo)準(zhǔn)的商業(yè)軟件甚至文本工具處理任何符合(XML標(biāo)準(zhǔn))的文檔。
XML文檔可以通過可擴(kuò)展樣式語言XSL(Extensible Style Language XSL)轉(zhuǎn)換和格式化XML文檔。從而實(shí)現(xiàn)數(shù)據(jù)和頁面樣式的分離。
二、用JSP技術(shù)實(shí)現(xiàn)XMLJSP提供了一系列的特點(diǎn),可以非常理想地和XML協(xié)同工作,JSP網(wǎng)頁可以包含任何類型的文本數(shù)據(jù),所以JSP可以直接生成含有XML的文檔。而且,JSP可以利用強(qiáng)大的JAVA平臺(tái)來解析、轉(zhuǎn)換XML信息和文檔。由于JSP也是JAVA軟件環(huán)境的一部分,JSP也可以使用API對(duì)象來處理XML數(shù)據(jù)。JSP技術(shù)的強(qiáng)大功能和很好的靈活性加上XML技術(shù)規(guī)范化的數(shù)據(jù),可以完美的實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)顯示功能。
三、開發(fā)環(huán)境1、編輯工具
現(xiàn)在,開發(fā)XML文檔的工具越來越來多,從鏈接大型公司數(shù)據(jù)庫(kù)的企業(yè)級(jí)XML開發(fā)環(huán)境,到簡(jiǎn)化標(biāo)記開發(fā)過程的簡(jiǎn)單的小型文本編輯器。最新的工具可以從http://www.xml.com了解到。目前,常用的幾種開發(fā)工具介紹如下:
UltraEdit 由IDM Computer Solution 公司開發(fā),可到http://www.ibmcomp.com或http://www.ultraedit.com免費(fèi)下載有限期使用版。它是界面類似于Windows的資源管理器式的界面,有很強(qiáng)的文本編緝功能。
XML Spy Icon Information-Systems 公司的XML Spy 是XML 一個(gè)集成開發(fā)環(huán)境,包括進(jìn)行XML開發(fā)的各個(gè)方面,功能較強(qiáng),簡(jiǎn)單易用。XML Spy是一個(gè)真正完整的XML開發(fā)環(huán)境。它將所有開發(fā)XML所需的要素都包含在一個(gè)簡(jiǎn)單易用的產(chǎn)品中。它包括:XML編輯器和檢驗(yàn)、Schema/DTD編輯器和檢驗(yàn)、XSL編輯器和轉(zhuǎn)換。同時(shí)還包含最新的XML草案,是一個(gè)不可多得的好軟件。
XML Writer 這個(gè)軟件是由Wattle Software-Chris Howard 開發(fā)的,可從http://XMLwriter.net下載(試用)。在Window 95/98/2000 and Windows NT4下使用,也有著大家熟悉的Windows界面,提供了工程管理環(huán)境,可能刨建、查看工程,工程下包含文件,用戶可自定義工具條、快捷鍵,并且可為命令選擇顯示圖標(biāo)。可用XSL樣式表轉(zhuǎn)換XML文件為HTML文件,不僅可使用XSL,而且可以使用XQL,用DTD或XML Schema 對(duì)XML進(jìn)行檢驗(yàn),用XML格式直接的將CSS結(jié)合到XML,提供在線幫助功能,并且它對(duì)中文的支持較好。
2、XML服務(wù)器
由于XML技術(shù)有很大的發(fā)展?jié)摿Γ姸鄰S商提供了自己的XML服務(wù)器,其中有Apache、Microsoft、Sun等。
3、瀏覽XML的工具
現(xiàn)在,大多數(shù)方案是將XML存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)需要時(shí)取出代碼,將其與數(shù)據(jù)結(jié)合起來,使用XSL將其轉(zhuǎn)換為HTML,然后發(fā)送到瀏覽器。所以瀏覽XML一般選用IE可Netscape, 而且版本越新對(duì)XML文檔支持越好。
四、具體實(shí)現(xiàn)1、 規(guī)范定義XML文檔中元素名稱
首先定義XML文檔頭部,包括XML遵循的規(guī)范、編碼方式、注釋等。例如:
< ?xml version=1.0 encoding=gb2312 standalone=yes?>
“version=1.0 “,表示該XML文檔遵循XML1.0方案,這個(gè)喜劇聲明是必須的。
“encoding=gb2312 ,如果沒有這個(gè)聲明,必須使用Unicode,以UTF-8或UTF-16作為編號(hào)方式。如果文件中使用了中文,就必須進(jìn)行編碼聲明。
“standalone=yes ,XML聲明還可以有standalone特性,它說明,文檔是否在這一個(gè)文件里需要從處部導(dǎo)入文件。如果XML文檔在一個(gè)文件里完成,那么standalone特性的值就設(shè)置為“yes。
然后,根據(jù)業(yè)務(wù)的需要規(guī)范定義頁面上要顯示的元素,以及定義它們的元素名稱,元素名稱可以是中文的,這樣對(duì)數(shù)據(jù)描述更加簡(jiǎn)單明了,這是HTML無法實(shí)現(xiàn)的。元素是文檔的主要邏輯部件,由開始和結(jié)束標(biāo)記界定,格式為:
< 元素名稱 屬性名1=“屬性值1 屬性名2=“屬性值2>
元素的內(nèi)容
< /元素名稱>
元素的內(nèi)容,可以直接寫在頁面上,也可以從數(shù)據(jù)庫(kù)中取得。
文檔中還可以包括實(shí)體聲明和實(shí)體引用。簡(jiǎn)單地說,實(shí)體分為一般實(shí)體和參數(shù)實(shí)體。參數(shù)實(shí)體只能出現(xiàn)在DTD中,一般實(shí)體出現(xiàn)在一根元素開始的主XML文檔中。實(shí)體聲明格式為:。一般實(shí)體的引用很簡(jiǎn)單:“&實(shí)體名稱;,參數(shù)實(shí)體的引用與一般實(shí)體的引用類似:“%實(shí)體名稱;。實(shí)體是功能強(qiáng)大的工具,提供了管理大量?jī)?nèi)容的便捷機(jī)制。
寫好后檢查XML文檔,確保文檔的格式正確和有效。一個(gè)格式正確的XML文檔滿足:
每一元素必須有起始和結(jié)束標(biāo)注;
必須有一個(gè),而且只有一個(gè)稱為根元素或文件元素的元素,并且它不出現(xiàn)在其他任何元素的內(nèi)容中;
它包含一個(gè)或多個(gè)元素
正確的定義和表示空元素;
和結(jié)束標(biāo)記可以使用大寫或小寫,但它們必須匹配;
以起始標(biāo)簽和結(jié)束標(biāo)簽為界的各個(gè)元素必須正確地嵌套,不允許出現(xiàn)交叉;
屬性值必須使用引號(hào)括起來;
此文件中直接或間接引用的每一個(gè)己析實(shí)休都是格式正確的;
它滿足XML規(guī)范中定義的所有其他的格式正確性約束。
2、 使用XSL顯示XML文檔
XSL(eXtensible stylesheet language)是描述XML文檔樣式的一種語言,是由W3C制定的。XSL處理程序讀取XML文檔和XSL樣式單,基于處理程序在XSL樣式單中找到的指令,輸出新的XML文檔。XSL樣式表就是對(duì)XML文檔中類的描述文件,描述文件說明的是如何使用格式化詞匯將類實(shí)例轉(zhuǎn)換為一個(gè)XML文檔。同時(shí),XSL樣式表也必須是組織良好的XML。
XSL有三個(gè)組成的模塊:XSL模式(XSL Patern)、XSL名域(XSL Namespace)、fo名域(fo Namespace)。使用XSL樣式單可有三種主要方式將XML文檔轉(zhuǎn)換成其他格式:XML文檔和相關(guān)的樣式單都是用于客戶端(Web瀏覽器)的,然后客戶端程序按照樣式單中指定格式轉(zhuǎn)換文檔,并將它呈現(xiàn)給用戶;服務(wù)器將XSL樣式單應(yīng)用于XML文檔,以便此文檔能夠轉(zhuǎn)換成其他某種格式(通常為HTML),并把轉(zhuǎn)換后的文檔發(fā)送到客戶端程序(Web瀏覽器);使用第三方程序?qū)⒃碭ML文檔轉(zhuǎn)換成其他某種格式(通常為HTML),才把此文檔放置在服務(wù)器上,服務(wù)器和客戶程序只處理轉(zhuǎn)換后的文檔。由于,大多數(shù)瀏覽器是IE,而且IE對(duì)XSL的支持又好,第一種方法常被采用。
XSL轉(zhuǎn)換語言通過將XML樹形結(jié)構(gòu)變換成另一個(gè)XML樹形結(jié)構(gòu)來操作。這種語言含有操作符,此操作符用來從樹形結(jié)構(gòu)中選擇特定節(jié)點(diǎn)、對(duì)節(jié)點(diǎn)重新排序以及輸出節(jié)點(diǎn)。在XML文檔中引用XSL的說明如下:
< ?xsl-stylesheet type=text/xsl href=mystyle.xsl?>
表明該XML文檔引用的XSL樣式單為mystyle.xsl。內(nèi)容與形式分離使XML文檔更偏重于數(shù)據(jù)本身,而不受顯示方式的細(xì)枝末節(jié)的影響。而且可以通過定義不同的樣式單可以使用相同的數(shù)據(jù)呈現(xiàn)出不同的顯示外觀,實(shí)現(xiàn)XML數(shù)據(jù)的可重用性。
首先定義構(gòu)造部分輸出的模塊,或?qū)碜訶ML源文件中的數(shù)據(jù)應(yīng)用模板。轉(zhuǎn)換模板包含在元素xsl:template中,模板可定義一組將源文檔轉(zhuǎn)換為結(jié)果樹的規(guī)則,確定要處理的節(jié)點(diǎn)。然后匹配模式,一個(gè)模式是一個(gè)字符串,它用于匹配XML源文件中的一個(gè)元素。用@匹配屬性節(jié)點(diǎn)。再用XSL中的元素轉(zhuǎn)換XML文檔中的元素。用XSL可以非常方便地實(shí)現(xiàn)同HTML中同樣的表單定義。只要將要在表單中的元素放入定義好的XSL模板中即可,表單的名稱、提義方式等屬性與HTML中的定義相同。同樣的表格的范圍、樣式,頁面的顯示風(fēng)格、腳本等的定義也都與HTML相似。
另外,CSS也可以應(yīng)用到XML文檔,但CSS決定了頁面的視覺外觀,不會(huì)改變?cè)次臋n的結(jié)構(gòu)。CSS和XSL是互相補(bǔ)充,各有特色的。
經(jīng)過XSL轉(zhuǎn)換后XML文檔表單提交到JSP頁面或servlet進(jìn)行處理。這部分可以完全和頁面處理分開,可以實(shí)現(xiàn)控制邏輯的完全獨(dú)立。
3、 XML文檔數(shù)據(jù)的輸出
XML的主要應(yīng)用包括交換信息、定義文檔類型、說明信息,信息以一種結(jié)構(gòu)化的基于文本格式的方式表達(dá),可以很容易地進(jìn)行傳輸、轉(zhuǎn)換和闡釋。對(duì)數(shù)據(jù)的處理可以全部放在javabean或servlet中進(jìn)行,與頁面的顯示完全分開。
在JSP中生成XML文檔很簡(jiǎn)單,仍然可使用CSS或XSL來轉(zhuǎn)換和顯示XML。一個(gè)具有XML模板的JSP頁面,其實(shí)質(zhì)就是在XML文檔模板中,在適當(dāng)?shù)牡胤郊尤隞AVA代碼和JSP標(biāo)記。在頁面中加入< %@page contentType=text/xml% >即可以將JSP頁,以XML文檔形式顯式出來,同時(shí)把動(dòng)態(tài)數(shù)據(jù)放入< % % >標(biāo)記內(nèi)。對(duì)生成的XML同樣可以用XSL樣式單進(jìn)行格式轉(zhuǎn)換和樣式定義等。
4、 XML與JAVA結(jié)合
XML能創(chuàng)建不依賴于平臺(tái)、語言或限制性格式化協(xié)定的開放數(shù)據(jù),如果廣泛地采用,XML能變成為內(nèi)容以及下至客戶端對(duì)象通迅的廣泛標(biāo)準(zhǔn)。作為內(nèi)容平臺(tái)XML在許多方面增強(qiáng)了JAVA。XML將基于網(wǎng)絡(luò)的信息置標(biāo)化,使得開發(fā)者和電腦易于辨認(rèn)。這是有必要的因?yàn)镠TML除了隱藏的URL外,缺少有效的方法說明內(nèi)容的含義,XML的目標(biāo)就為網(wǎng)絡(luò)的對(duì)象添加那些含義,而這些曾經(jīng)就是JAVA的任務(wù)之一。
許多網(wǎng)絡(luò)開發(fā)者得出結(jié)論:XML和JAVA是完美的一對(duì),因?yàn)楸舜耸窒噍o相成,XML有助于獨(dú)立平臺(tái)、易提取信息的文檔和數(shù)據(jù)。JAVA有助于獨(dú)立平臺(tái),易于處理的面向?qū)ο蟮膽?yīng)用軟件解決方案,能驅(qū)動(dòng)XML廣泛接受的應(yīng)用是在HTML的限制下難以實(shí)現(xiàn)的那些應(yīng)用,可分為下列四類:
需要網(wǎng)絡(luò)客戶端協(xié)調(diào)各種不同類型數(shù)據(jù)庫(kù)的應(yīng)用。
力圖將比例可觀的處理工作從服務(wù)器端分布于客戶端的應(yīng)用。
要求客戶端將同一數(shù)據(jù)以不同的形式展現(xiàn)給不同的使用者的應(yīng)用。
智能網(wǎng)絡(luò)代理應(yīng)個(gè)別用戶的要求搜索定制信息的應(yīng)用。
JAVA平臺(tái)提供了在網(wǎng)絡(luò)上安全而方便地傳播代碼的基礎(chǔ),XML技術(shù)則為數(shù)據(jù)提供了同樣的能力,這是一種清晰地、平臺(tái)獨(dú)立地表示內(nèi)容的方法。在眾多編程語言中,JAVA是使用XML的優(yōu)秀平臺(tái),XML又是JAVA應(yīng)用的優(yōu)秀數(shù)據(jù)表示方法。XML和JAVA都與Internet關(guān)系密切,XML被設(shè)計(jì)成為一個(gè)優(yōu)化的,靈活的可讀格式,可直接用于Internet;而JAVA從一開始就支持socket,HTTP,HTML和服務(wù)器。它們都支持Unicode。因而很容易實(shí)現(xiàn)本地化應(yīng)用,正如JAVA向程序員提供了表達(dá)復(fù)雜數(shù)據(jù)結(jié)構(gòu)和面向?qū)ο竽P偷哪芰σ粯樱肵ML表達(dá)復(fù)雜的層次化數(shù)據(jù)模型是很理想的。
XML結(jié)合JSP技術(shù)結(jié)構(gòu)明確、條理清析、簡(jiǎn)單易懂,是開發(fā)動(dòng)態(tài)網(wǎng)站的一條快速而便捷的開發(fā)途徑。;
相關(guān)文章:
1. 讀大數(shù)據(jù)量的XML文件的讀取問題2. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼3. 一個(gè)用于MySQL的PHP XML類4. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法5. 關(guān)于Spring自定義XML schema 擴(kuò)展的問題(Spring面試高頻題)6. 解決 IDEA 2020.2 reading pom.xml 卡死問題7. XML入門的常見問題(一)8. XML基本概念XPath、XSLT與XQuery函數(shù)介紹9. 使用Java Swing創(chuàng)建一個(gè)XML編輯器之三10. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁
