轉自:http://blog.csdn.net/crystalbruce/article/details/7401602
XSLT分為兩類:
1:客戶端轉換:需要瀏覽器的支持。
2:服務器轉換:需要使用編程將XML根據XSLT文檔轉換成相應的HTML,在輸出到客戶端。
服務器轉換分為兩類:
1:實時轉換:當服務器接收客戶端請求后,借助於JSP、PHP等動態腳本語言臨時根據XSLT轉換XML,然后在將轉換后的HTML發送給客戶端。
2:批量轉換:服務器定期轉換XML,當服務器接收到請求后直接將已有的HTML發送給客戶端,適用於XML變化頻率較低的情況。
常用的XSLT轉換處理器:
1:Xalan:Apache的子項目。網站http://xalan.apache.org
2:Saxon:SourceForge的子項目。網站http://saxon.sourceforge.net
Xalan處理器
所需包:
xalan.jar:Xalan的核心類庫,需要依賴於serializer.jar。
xercesImpl.jar、xml-apis.jar:Java API for XML Processing(JAXP)的核心類庫。
使用方法:
xalan.jar本身就是一個可執行的程序。
一:在DOS中使用
輸入
java -classpath serializer.jar -jar xalan.jar
命令會輸出xalan.jar的各種選項,以下是常用選項:
-IN:指定需要轉換的XML;
-XSL:指定使用的XSLT樣式單,如果在XML文檔中已經引入了XSLT,則可省略此項;
-OUT:指定轉換后輸出的目標文檔。
示例:
java -classpath serializer.jar -jar xalan.jar -IN name.xml -OUT.name.html
二:使用在Web應用中編程方式
主要使用的類和接口如下:
1:TransformerFactory:轉換器工廠,負責生產轉換器;
2:Transformer:XSLT轉換器,負責加載XSLT樣式單文檔,並執行轉換;
3:Source:代表源XML文檔的接口,其常用實現類有DOMSource、StreamSource、SAXSource;
4:Result:代表轉換結果的文檔接口,其常用實現類有DOMResult、StreamResult、SAXResult。
步驟:
1:使用TransformerFactory的newInstance()方法創建一個轉換器工廠;
2:調用轉換器工廠的newTransformer(Source xmlSource)方法創建一個轉換器;
3:調用轉換器的transform(Source xmlSource, Result OutputTarget)方法執行轉換。
程序示例:
- <%@ page contentType="text/html; charset="UTF-8" language="java" errorPage="" %>
- <%@ page import="javax.xml.transform.*, javax.xml.transform.stream.*" %>
- <%
- //創建一個轉換工廠
- TransformerFactory tFactory = TransformerFactory.newInstance();
- //用指定的XSLT樣式單文件創建一個轉換器
- Transformer transformer = tFactory.newTransformer(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xslt"));
- //執行轉換,並將轉換后的目標文檔作為響應輸出
- transformer.transform(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xml"), new StreamResult(response.getOutputStream()));
- %>
<%@ page contentType="text/html; charset="UTF-8" language="java" errorPage="" %> <%@ page import="javax.xml.transform.*, javax.xml.transform.stream.*" %> <% //創建一個轉換工廠 TransformerFactory tFactory = TransformerFactory.newInstance(); //用指定的XSLT樣式單文件創建一個轉換器 Transformer transformer = tFactory.newTransformer(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xslt")); //執行轉換,並將轉換后的目標文檔作為響應輸出 transformer.transform(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xml"), new StreamResult(response.getOutputStream())); %>
Saxon處理器
Saxon的功能很強大,其實現了XSLT3.0、XQuery3.0和XPath3.0等規范。
saxon9.jar與此名相似的為核心類庫。
其使用方法與Xalan類似。
使用命令:
java -jar saxon9.jar -s:xmlSource.xml -o:outputTarget.html xsl:name.xslt
編程方法與Xalan的編程方法一樣,因為都是面向JAXP規范編程