1、xml文件:test.xml:
<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="test.xsl"?><book><title>XML与JSP</title> <chapter><title>第1章 认识XML与DTD</title> <section><title>XML的产生</title> <example>HelloWorld.html</example> </section> </chapter> <chapter><title>第2章 XML名称空间</title> <section><title>名称空间在元素和属性中的应用</title> <section><title>名称空间在元素中的应用</title> <example>people.xml</example> </section> <section><title>缺省名称空间</title> <example>book.xml</example> </section> <section><title>名称空间在属性中的应用</title> <example>book2.xml</example> </section> </section> <section><title>名称空间和DTD</title></section> </chapter></book>
2、XSL文件:test.xsl
<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="html" version="1.0" encoding="utf-8" standalone="yes"/><xsl:template match="/"> <html> <head> <title>使用XML+XSLT生成的HTML文件</title> </head> <body> <xsl:apply-templates select="book"/> </body> </html></xsl:template> <xsl:template match="chapter"> <br/><br/> <xsl:value-of select="./title"/> <xsl:apply-templates select="./section"/> </xsl:template> <xsl:template match="chapter/section"> <br/><br/><xsl:text> </xsl:text> <!--<xsl:number format="1. " level="multiple"/>--> <xsl:number format="1. " level="multiple" count="chapter | section" from="book"/> <xsl:value-of select="./title"/> <xsl:apply-templates select="./section"/> </xsl:template> <xsl:template match="chapter/section/section"> <br/><br/><xsl:text> </xsl:text> <!--<xsl:number format="1. " level="multiple"/>--> <xsl:number format="1. " level="multiple" count="chapter | section" from="book"/> <xsl:value-of select="./title"/><xsl:number value="123456789" grouping-separator="," grouping-size="3"/> </xsl:template> </xsl:stylesheet>
3、处理文件:testxslt.java
package xmltest;
import java.io.File;import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;import org.xml.sax.SAXException;
public class testxslt {
/** * @param args * @throws ParserConfigurationException */ public static void main(String[] args) throws ParserConfigurationException { // TODO 自动生成方法存根 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); try { DocumentBuilder db=dbf.newDocumentBuilder(); Document doc=db.parse("test.xml"); DOMSource source=new DOMSource(doc); StreamResult result=new StreamResult(new File("test.html")); StreamSource ss=new StreamSource(new File("test.xsl")); TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(ss); tf.setOutputProperty("encoding", "utf-8"); tf.transform(source, result); } catch(ParserConfigurationException e){e.printStackTrace();} catch(SAXException e){e.printStackTrace();} catch(IOException e){e.printStackTrace();} catch(TransformerConfigurationException e){e.printStackTrace();} catch(TransformerException e){e.printStackTrace();} }}4、生成的HTML文件:test.html
<html><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><title>使用XML+XSLT生成的HTML文件</title></head><body>XML与JSP
<br><br>第1章 认识XML与DTD<br><br> 1.1. XML的产生 <br><br>第2章 XML名称空间<br><br> 2.1. 名称空间在元素和属性中的应用<br><br> 2.1.1. 名称空间在元素中的应用123,456,789<br><br> 2.1.2. 缺省名称空间123,456,789<br><br> 2.1.3. 名称空间在属性中的应用123,456,789<br><br> 2.2. 名称空间和DTD </body></html>
外观:
XML与JSP 第1章 认识XML与DTD 1.1. XML的产生 第2章 XML名称空间 2.1. 名称空间在元素和属性中的应用 2.1.1. 名称空间在元素中的应用123,456,789 2.1.2. 缺省名称空间123,456,789 2.1.3. 名称空间在属性中的应用123,456,789 2.2. 名称空间和DTD
PS:XSLT功能强大,但感觉在生成静态网页上,没有FREEMARKER直观。Freemarker的模板至少美工是完全可以编制的,XSL文件就必须程序员去摸着石头过河了。
