java使用XSL+XML生成HTML文件

    技术2022-05-12  14

     

    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文件就必须程序员去摸着石头过河了。


    最新回复(0)