要實(shí)現(xiàn)的一個功能就是在JAVA的服務(wù)器端將數(shù)據(jù)庫中的數(shù)據(jù)取出然后寫入XML中,然后XML+XSLT相結(jié)合再轉(zhuǎn)換為HTML代碼片段。 基本的思路如下: 第一步,就是首先將數(shù)據(jù)和XML綁定??梢允褂肑AXB將數(shù)據(jù)寫入XML。但是此處并不打算這么做。因?yàn)閄ML結(jié)構(gòu)不復(fù)雜。所以決定還是通過程序?qū)?shù)據(jù)與XML綁定。本例子假設(shè)數(shù)據(jù)與XML綁定已經(jīng)完成。 第二步,將XSL解析設(shè)置放到內(nèi)存中緩存起來等待使用。 第三步,使用javax.XML.transform將XML與XSLT結(jié)合最后返回HTML代碼片段。 代碼如下: import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.io.DocumentSource; import org.dom4j.io.SAXReader; /** * 將xml+xslt 轉(zhuǎn)換為 html * @author xiaoyue * */ public class TestXmlXsltToHtml { public static void main(String[] args) { try { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("D:\\work_myeclipse_6.5\\testSSI\\WebRoot\\tpl\\books.xml")); TransformerFactory factory = TransformerFactory.newInstance(); //XSLT樣式表是靜態(tài)存儲在文件中的, //javax.XML.transform.Templates接口把它們解析好了進(jìn)內(nèi)存里緩存起來 StreamSource xsl = new StreamSource("D:\\work_myeclipse_6.5\\testSSI\\WebRoot\\tpl\\books.xsl"); Transformer transformer = factory.newTransformer(xsl); Properties props = transformer.getOutputProperties(); props.setProperty(OutputKeys.ENCODING,"GBK"); props.setProperty(OutputKeys.METHOD,"html"); props.setProperty(OutputKeys.VERSION,"4.0"); transformer.setOutputProperties(props); DocumentSource docSource = new DocumentSource(document); StringWriter strWriter = new StringWriter(); StreamResult docResult =new StreamResult(strWriter) ; transformer.transform(docSource, docResult); System.out.println("strWriter:"+strWriter.toString()); } catch(Exception e) { } } } |
|