<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    用XSLT轉換XML

    Posted on 2009-12-20 20:34 啥都寫點 閱讀(2072) 評論(0)  編輯  收藏 所屬分類: J2SE
        XSL(eXtensible Stylesheet Language)是一種XML格式的文檔,常用于定義文件的樣式,比如可以用XSL定義一個HTML的樣式。
        XSLT(XSL Transformations)是一種將XML文檔按照XSL定義的樣式進行轉換的技術。比如XSLT可以按照XSL將XML文檔轉換成HTML文檔。

          在Java中,通過JAXP(Java API for XML Processing)技術實現XSLT。
          TransformerFactory是XSLT引擎的工廠,它的newTransformer方法創建XSLT引擎Transformer,如果再創建時指定Source,則創建的XSLT引擎將按照Source進行轉換。可以用XSL文件構造Source,那么使用了改Source的引擎將按照XSL文檔定義的樣式對XML文檔進行轉換。
          通過Transformer的getOutputProperties方法獲得XSLT引擎的輸出屬性,OutputKeys.ENCODING屬性表示輸出的字符編碼,OutputKeys.METHOD表示輸出的文件格式,如html、text、xml等。
          Transformer的transform方法將Source轉換成Result,其中Source為待轉換的XML文件的Source,Result為目標文檔的Result。


    import java.io.File;
    import java.util.Properties;

    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;

    /**
     * 使用JAXP根據XSL轉換XML文檔
     * JAXP是Java API for XML Processing的英文字頭縮寫,
     * 中文含義是:用于XML文檔處理的使用Java語言編寫的編程接口。
     * JAXP支持DOM、SAX、XSLT等標準。
     
    */

    public class JAXPTransform {

        
    /**
         * 使用XSLT將XML文檔轉換成HTML
         * 
    @param xmlFileName    源XML文件名
         * 
    @param xslFileName    XSL文件名
         * 
    @param htmlFileName    輸出的HTML文件名
         * 
    @return    返回HTML文件名
         
    */

        
    public static String xml_xslt_html(String xmlFileName, String xslFileName, 
                String htmlFileName)
    throws Exception{
            
    // 創建XSLT引擎的工廠
            TransformerFactory tFactory = TransformerFactory.newInstance();
            
    // 創建XSLT引擎要使用的XSL文件源
            StreamSource source = new StreamSource(new File(xslFileName));
            
    // 創建XSLT引擎
            Transformer tx = tFactory.newTransformer(source);
            
            
    // 設置XSLT引擎的輸出屬性,使之輸出為HTML格式,并且支持中文。
            Properties properties = tx.getOutputProperties(); 
            properties.setProperty(OutputKeys.ENCODING,
    "GB2312");
            properties.setProperty(OutputKeys.METHOD, 
    "html");
            tx.setOutputProperties(properties); 
            
            
    // 創建XML文件源和HTML文件的結果流
            StreamSource xmlSource = new StreamSource(new File(xmlFileName));
            File targetFile 
    = new  File(htmlFileName);
            StreamResult result 
    = new StreamResult(targetFile);
            
            
    // 實現XSLT轉換,根據XSL文件源將XML文件源轉換成HTML結果流
            tx.transform(xmlSource,    result);
            
            
    return targetFile.getAbsolutePath();
        }

        
        
    public static void main(String[] args) throws Exception {
            
            String xmlFileName 
    = "students.xml";
            String xslFileName 
    = "students.xsl";
            String targetFileName 
    = "students.html";
            
            JAXPTransform.xml_xslt_html(xmlFileName, xslFileName, targetFileName);
        }

    }

       students.xsl定義了目標HTML的樣式,將XML文檔的相關屬性用HTML顯示出來,具體內容如下:

    <?xml version="1.0"  encoding="GB2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    <html>
    <head><title>學生信息</title></head>
    <body>
        <table border="1">
        <tr>
            <th>姓名</th>
            <th>年齡</th>
            <th>電話</th>
        </tr>

        <xsl:for-each select="學生花名冊/學生">
            <tr>
                <td><xsl:value-of select="姓名"/></td>
                <td><xsl:value-of select="年齡"/></td>
                <td><xsl:value-of select="電話"/></td>
            </tr>
        </xsl:for-each>
        </table>

    </body></html>
    </xsl:template>
    </xsl:stylesheet>








































                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: AV在线播放日韩亚洲欧| 成人免费a级毛片无码网站入口 | 亚洲精品无码aⅴ中文字幕蜜桃| 久久久久久国产精品免费免费男同| 亚洲一区视频在线播放| 日本高清不卡中文字幕免费| 又粗又大又长又爽免费视频 | 亚洲福利精品电影在线观看| 337P日本欧洲亚洲大胆精品| 成人免费毛片内射美女APP| 亚洲不卡中文字幕| 日韩av无码成人无码免费| 亚洲成年网站在线观看| 免费视频淫片aa毛片| 在线亚洲v日韩v| 久久久久久久亚洲精品| 国产成人无码区免费内射一片色欲| 亚洲中文字幕无码爆乳AV| 久久精品一区二区免费看| 亚洲最大成人网色| 国产99视频精品免费观看7| 亚洲av无码专区在线电影| 又粗又硬又大又爽免费视频播放| 国产大陆亚洲精品国产| 国产aⅴ无码专区亚洲av麻豆 | 亚洲AV无码一区二区三区牲色| 国产精品视频免费一区二区三区| 猫咪www免费人成网站| 亚洲精品夜夜夜妓女网| 最近2019年免费中文字幕高清 | 最近免费中文字幕4| 一级毛片a免费播放王色| 亚洲国产综合无码一区| 91精品国产免费久久久久久青草| 中文字幕乱码亚洲无线三区| 亚洲国产成人精品女人久久久 | 亚洲一区二区三区久久久久| 国产精品免费_区二区三区观看| 国产免费牲交视频免费播放| 亚洲视频一区在线播放| 国产又大又长又粗又硬的免费视频 |