<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毛片一区二区三区| 亚洲综合色丁香麻豆| 无码人妻精品中文字幕免费| 亚洲日本一区二区三区在线| 一级毛片aaaaaa视频免费看| 亚洲AV成人精品日韩一区18p| 香蕉视频亚洲一级| 国产精品黄页在线播放免费| 亚洲中文字幕久久久一区| 亚洲中文无码永久免费 | 亚洲免费二区三区| 亚洲一区二区三区免费视频| 亚洲色图在线播放| 曰批视频免费40分钟试看天天| 亚洲欧洲一区二区| 最近2019免费中文字幕视频三| 18gay台湾男同亚洲男同| 最近最新高清免费中文字幕| 亚洲精品日韩专区silk| 免费观看激色视频网站bd| 亚洲伊人久久大香线蕉在观| 97无码免费人妻超级碰碰夜夜| 亚洲国产精品ⅴa在线观看| 亚洲AV日韩精品一区二区三区| 亚洲免费在线观看视频| 亚洲一区在线免费观看| 好爽好紧好大的免费视频国产| 国产精品亚洲а∨无码播放麻豆| 亚洲男人的天堂在线va拉文 | rh男男车车的车车免费网站 | 免费一区二区无码东京热| 久久精品国产精品亚洲艾草网| 中文字幕免费高清视频| 亚洲国产成人AV在线播放| 亚洲一级特黄大片在线观看| 一区二区三区四区免费视频 | 美女被免费网站在线视频免费|