java使用XSL+XML產生HTML檔案

來源:互聯網
上載者:User

 

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>&#160;&#160;&#160;&#160;</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>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</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>&nbsp;&nbsp;&nbsp;&nbsp;1.1. XML的產生
   
    <br>
<br>第2章 XML名稱空間<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;2.1. 名稱空間在元素和屬性中的應用<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1.1. 名稱空間在元素中的應用123,456,789<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1.2. 預設名稱空間123,456,789<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1.3. 名稱空間在屬性中的應用123,456,789<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;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檔案就必須程式員去摸著石頭過河了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.