整理一下XSLT的優缺點

XSLT的英文標準名稱爲eXtensible Stylesheet Language Transformation。根據W3C的規範說明書(http://www.w3.org/TR/xslt),最早設計XSLT的用意是幫助XML文檔(document)轉換爲其它文檔。但是隨着發展,XSLT已不僅僅用於將XML轉換爲HTML或其它文本格式,更全面的定義應該是:XSLT是一種用來轉換XML文檔結構的語言。
            爲了使數據便於人們的閱讀理解,我們需要將信息顯示出來或者打印出來,例如將數據變成一個HTML文件,一個PDF文件,甚至是一段聲音;同樣,爲了使數據適合不同的應用程序,我們必須有能夠將一種數據格式轉換爲另一種數據格式,比如需求格式可能是一個文本文件,一個SQL語句,一個HTTP信息,一定順序的數據調用等。而XSLT就是我們用來實現這種轉換功能的語言。將XML轉換爲HTML,是目前XSLT最主要的功能。
1.XSLT stylesheets can automate the conversion of the same input into multiple output formats.
2.XSLT一個很大的優勢就是可以在任何地方隨時在XML數據全局範圍內抓取需要的任何數據,不受XML數據結構影響。

3.將數據和表達形式分離。就象天氣預報的信息可以顯示在不同的設備上,電視,手機或者其它。這樣給你一個XML,一個DTD,就可以開發XSLT,而不用關心後臺數據如何實現。比如如果有一天突然覺得要換界面了,那麼重新做一個xsl就好了,後臺的程序和xml的結構完全不需要修改,如果你用傳統的方法,由於數據和顯示耦合的太緊密,所有的頁面都將重寫...
 
4.將XSLT轉化在客戶端進行可以大大減少服務器壓力,服務器只需要將XML數據發送到客戶端,XSLT已經保存在本地,從而減小網絡流量.

5.可以很好的避免安全性問題,以XSLT轉化得到的頁面通過查看源代碼得到的只有XML數據。

6.能夠很好的適應需求的快速變化,不用修改邏輯代碼,不用編譯,甚至可以直接在線修改,就可以解決比較一般的需求變化。

 

7.另外,是因爲它專門用來處理xml,它處理xml比DOM方便多了,對於目前盛行的Ajax應用來說,尤其有其發揮空間,比較典型的可以參考AJAXSLT
ajaxslt是一個針對Ajax在取得XML資料格式後,利用Javascript動態加入XSL-T(XML Stylesheet Language - Transformation)與及XPath的運用所開發的一套元件。一般上,XMLHttpRequest在傳回XML字串後,我們必須花另一個功夫將這些XML數據轉換成能夠顯示的用戶界面,這是非常繁瑣的工作,而且程序碼的重用是一個惡夢。不過,通過ajaxslt,我們可以利用XSLT模版對XML文件進行處理,然後輸出一個用戶界面,當然我們不必瞭解ajaxslt是怎樣處理XML和XSLT的,只要熟悉XSLT和XPath的原理就可以很輕鬆地處理XML文件了。詳細請看:http://nixeon.blogspot.com/2006/01/google-ajaxslt.html

 

8.一個xslt可以生成N種版面佈局,但html就只能通過script來實現.

 

 

 

2.語法學習需要時間,大部分程序員可以對它比較陌生;但是語法非常直觀,只要稍微投入,就可以輕鬆入門.

3.xslt格式檢查嚴謹,這在coding階段也許稍微麻煩一點,但在應用和維護階段非常有好處.
 
另外給大家推薦一個學習XML的論壇.http://bbs.xml.org.cn/index.asp
關於目前XML涉及到的一些新應用,比如:MathML,SVG,SMIL,VoiceXML,XSL-FO...可以看看:http://www.simonstl.com/articles/navigateur/index.html
 --------------------------------------------------------------------------------------------------------------------------------
轉載:
        XSL是參考SGML中的DSSSL(用來設置SGML的表現樣式)而設計的。最初設計XSL的目的就是採用XML格式提供一種爲XML文檔設置表現樣式的新方法。雖然也可以使用CSS來爲XML文檔設置表現樣式(而且CSS還是非常成熟的一套規範,擁有大量的優點),但是CSS所採用的是與XML不同的一套語法,無法使用相同的XML解析器來進行處理,這爲開發帶來了額外的負擔。後來W3C發現制定XSL規範的工作量實在太大,就將整個工作分成了兩個部分:XSLT(T代表Transform)和XSL-FO(FO代表Formatting Objects)。XSLT主要是面向轉換類應用,很快(1999年內)就作爲正式規範推出了,參見 W3C XSLT 1.0規範;XSL-FO主要是面向精確的表現樣式定義(例如生成PDF),在 W3C XSL 1.0規範 中描述。所以,XSL=XSLT+XSL-FO。
        XSLT雖然名字中也有Stylesheet,但是它其實不是爲設置文檔的表現樣式的目的而設計的,用來替代CSS的是XSL-FO。然而XSL-FO目前還沒有瀏覽器能夠支持(其複雜性造成了其可能很多年以後纔會被應用在瀏覽器之中,這是“委員會驅動”設計方法的通病),所以我們在這裏就不討論了。XSLT的主要作用是將XML由一種格式轉換爲另一種格式,例如:由XML的一種詞彙錶轉換爲另一種詞彙表;或者由XML轉換爲HTML或者XHTML,便於在瀏覽器中顯示。後面一種應用(XML->HTML/XHTML)是目前XSLT應用最爲廣泛的領域,被應用在一些J2EE表現層框架中(例如,Cocoon是一個典型的代表。其他的J2EE表現層框架也可以通過集成Jakarta Taglibs來實現類似的功能)。這些框架在服務器端做XSLT轉換,將生成的HTML/XHTML發送給瀏覽器。基於這種技術的框架可以非常方便地支持各種瘦客戶端,例如:具有無線上網功能的PDA或WAP手機(這時候是XML->WML,也就是由XML的一種詞彙錶轉換爲另一種詞彙表,WML本身也是XML的一種詞彙表),無非就是另外再寫一套XSLT轉換規則。有一些需要定期生成靜態頁面的網站也在服務器端採用XML+XSLT來定期生成靜態頁面(這類進程一般是以後臺方式來運行的)。
        在IE 5.0中就可以支持XSLT了,不過當時採用的不是XSLT的正式規範,而是這個規範的一個草案(namespace爲http://www.w3.org/TR/WD-xsl)。IE 6.0支持XSLT的正式規範(namespace爲http://www.w3.org/1999/XSL/Transform)。Mozilla也在2001年就可以支持XSLT了。既然IE和基於Mozilla的瀏覽器(Mozilla Suite、Firefox、Netscape、etc.)都可以很好地支持XSLT,這就引起了一種思考,究竟是在服務器端做XSLT轉換好還是在瀏覽器端做XSLT轉換好呢?我的考慮是儘管在服務器端做XSLT轉換更加靈活,功能更加強大,我卻更願意在瀏覽器端做轉換。因爲XSLT轉換是非常耗費資源(內存、CPU)的操作,如果在服務器端做大量的轉換操作必然會極大地影響服務器的性能(設想有100個併發連接,同時在服務器端做100個XSLT轉換的情況)。必須要在服務器端做轉換的更好的方案是以後臺方式定期生成靜態的HTML頁面(一些新聞網站就是這樣做的);或者在服務器端通過軟件實現某種緩存機制,而不必重複做相同的轉換。這也符合我們的一貫思路:瀏覽器其實能做很多事情,而且現在主流PC機型(P4 2G、256M 以上內存)的處理能力已經非常強了,所以在瀏覽器力所能及的情況下應該將盡量多的工作交給瀏覽器去做。
        然而,目前除了IE與基於Mozilla的瀏覽器之外,其他的瀏覽器(例如Opera和Safari)目前仍然還不支持在瀏覽器端做XSLT轉換,因此如果計劃支持這些瀏覽器,必須要提供在服務器端做XSLT轉換的對應功能,使得應用在這些瀏覽器上也能正常運行。
        XSLT目前已經達到了實用的階段並且被廣泛採用。我們做Ajax開發有的時候也會用到XSLT。Google Maps的那個可愛的彈出式小氣球就是使用客戶端的XSLT(至少在IE和Firefox上是這樣做的)來生成的。在《Ajax實戰》(Ajax in Action中文版)第12章:使用XSLT的動態搜索,也通過一個完整的實例演示了客戶端XSLT的威力。使用XSLT的好處是可以將很多界面生成的工作自動化,減少錯誤的發生。當然XSLT也有一定的複雜性,需要花一些時間來學習,帶來了額外的學習成本,因此需要在做設計之前做一些權衡。在適當的場合使用XSLT,無疑會成爲Ajax開發者的一件利器。
雖然XSLT在IE與基於Mozilla的瀏覽器中都可以支持XSLT,然而它們的調用語法差別很大,這又爲我們帶來了頭疼的跨瀏覽器不兼容問題。不必擔心,解決之道就是使用一些成熟的跨瀏覽器庫,例如 Sarissa。Google支持的一個開源項目 Google AjaxSLT,代碼基於Google的工作,用來執行XSLT轉換,以及XPath查詢.
 
html/jsp/php時必須按頁面順序寫的(除非用script對innerhtml處理可以例外)
xslt完全不需要按順序,把全站廣告都放在一起,全站菜單放在一起,這是充分利用xsl:template的結果.
缺點:
1.兼容性問題: 部分瀏覽器不支持XSLT,不過解決方案可以將解析放在服務器端執行;
發佈了31 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章