java使用XSL+XML生成HTML文件

 
1、xml.xml
<? xml version="1.0" encoding="utf-8" ?>
<? xml-stylesheet type="text/xsl" href="xsl.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.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、java.java
package  test;

import  java.io.File;
import  java.io.IOException;

import  javax.xml.transform.Result;
import  javax.xml.transform.Source;
import  javax.xml.transform.Transformer;
import  javax.xml.transform.TransformerConfigurationException;
import  javax.xml.transform.TransformerException;
import  javax.xml.transform.TransformerFactory;
import  javax.xml.transform.stream.StreamResult;
import  javax.xml.transform.stream.StreamSource;

import  org.junit.Test;

public   class  Train {
    @Test
    
public   void  test()  throws  IOException {
        String xmlFileName 
=   " d:/test/xml.xml " ;
        String xslFileName 
=   " d:/test/xsl.xsl " ;
        String htmlFileName 
=   " d:/test/html.html " ;
        Train.Transform(xmlFileName, xslFileName, htmlFileName);
    }

    
public   static   void  Transform(String xmlFileName, String xslFileName,
            String htmlFileName) {
        
try  {
            TransformerFactory tFac 
=  TransformerFactory.newInstance();
            Source xslSource 
=   new  StreamSource(xslFileName);
            Transformer t 
=  tFac.newTransformer(xslSource);
            File xmlFile 
=   new  File(xmlFileName);
            File htmlFile 
=   new  File(htmlFileName);
            Source source 
=   new  StreamSource(xmlFile);
            Result result 
=   new  StreamResult(htmlFile);
            System.out.println(result.toString());
            t.transform(source, result);
        } 
catch  (TransformerConfigurationException e) {
            e.printStackTrace();
        } 
catch  (TransformerException e) {
            e.printStackTrace();
        }
    }
}

4、html.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 >

5、效果
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值