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最主要的功能。javascript
1.XSLT stylesheets can automate the conversion of the same input into multiple output formats.html
2.XSLT一個很大的優點就是能夠在任何地方隨時在XML數據全局範圍內抓取須要的任何數據,不受XML數據結構影響。
3.將數據和表達形式分離。就象天氣預報的信息能夠顯示在不一樣的設備上,電視,手機或者其它。這樣給你一個XML,一個DTD,就能夠開發XSLT,而不用關心後臺數據如何實現。好比若是有一天忽然以爲要換界面了,那麼從新作一個xsl就行了,後臺的程序和xml的結構徹底不須要修改,若是你用傳統的方法,因爲數據和顯示耦合的太緊密,全部的頁面都將重寫...java
4.將XSLT轉化在客戶端運行能夠大大減小服務器壓力,服務器只須要將XML數據發送到客戶端,XSLT已經保存在本地,從而減少網絡流量.python
5.能夠很好的避免安全性問題,以XSLT轉化獲得的頁面經過查看源代碼獲得的只有XML數據。ajax
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文件了。服務器
8.一個xslt能夠生成N種版面佈局,但html就只能經過script來實現.網絡
如下例子:xml轉換成HTML數據結構
以下是要轉換的xml文件howto.xml示例:佈局
<?xml version="1.0"?> <howto> <topic> <title>Java</title> <url>http://outofmemory.cn/code-snippet/tagged/java</url> </topic> <topic> <title>Python</title> <url>http://outofmemory.cn/code-snippet/tagged/python</url> </topic> <topic> <title>Javascript</title> <url>http://outofmemory.cn/code-snippet/tagged/javascript</url> </topic> <topic> <title>VBScript</title> <url>http://outofmemory.cn/code-snippet/tagged/VBScript</url> </topic> </howto>
示例xslt文件[howto.xsl]
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head><title>Real's HowTo</title></head> <body> <table border="1"> <tr> <th>Title</th> <th>URL</th> </tr> <xsl:for-each select="howto/topic"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="url"/></td> </tr> </xsl:for-each> </table> </body></html> </xsl:template> </xsl:stylesheet>
作轉換的java代碼:
import javax.xml.transform.*; import java.net.*; import java.io.*; public class HowToXSLT { public static void main(String[] args) { try { TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer (new javax.xml.transform.stream.StreamSource ("src/howto.xsl")); transformer.transform (new javax.xml.transform.stream.StreamSource ("src/howto.xml"), new javax.xml.transform.stream.StreamResult ( new FileOutputStream("src/howto.html"))); } catch (Exception e) { e.printStackTrace( ); } } }