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檔案就必須程式員去摸著石頭過河了。