我知道用xalan的Process类就可以,但是要自己打命令,不是全自动的
命令如下
java org.apache.xalan.xslt.Process -in a.xml -xsl b.xsl -out c.htmlxalan 要用2.5.1以上的版本,
其他的我就不知道了哦,我现在还不知道怎么从数据库中读出数据形成xml呢

解决方案 »

  1.   

    相信你也知道,其实xsl也是一个标准的XML文件。所以可以提供一个大致思路给你,我自己只是用两个很简单的XML文件来实现了,从数据库里形成DOM文档相信你会吧。
        :)   我的思路是:
           1.    从数据库里生成XML与XSL相对应的两个DOM
           2.    从上面两个DOM分别创建两个源(DOMSource)对象。
           3.    创建结果(DOMResult || StreamResult || SAXResult)对象,用以保存输出     
           4.    创建转换(Transformer)对象。
           5.    调用Transformer的方法执行转换。   我在本机上测试,用文件系统的XML与XSL文件执行成功,只不过这时我用的源对象与结果对象略有不同(StreamSource与StreamResult)   具体可以查阅上述几个类的方法与例子。
      

  2.   

    能否把你的例子源码“共享”一下[email protected] 多谢!
      

  3.   

    //文件 G:/WaynePrj/xmlmenu/xml/links2.xml   可以跳过去不看
    <?xml version = "1.0" standalone = "yes" ?>
    <links>
    <link>
    <text>China.com</text>
    <url newWindow = "no">http://www.china.com</url>
    <author>China.com</author>
    <date>
    <day>1</day>
    <month>1</month>
    <year>2001</year>
    </date>
    <description>Have a look?</description>
    </link>
    <link>
    <text>CSDN</text>
    <url newWindow = "no">http://www.csdn.net</url>
    <author>CSDN</author>
    <date>
    <day>1</day>
    <month>1</month>
    <year>2001</year>
    </date>
    <description>Have a look?</description>
    </link>
    <link>
    <text>JSTUDY</text>
    <url newWindow = "no">http://jstudy.5956.com</url>
    <author>Wayne Liu   Yiang Tian</author>
    <date>
    <day>1</day>
    <month>1</month>
    <year>2001</year>
    </date>
    <description>Have a look?</description>
    </link>
    <link>
    <text>Yunsi</text>
    <url newWindow = "no">http://www.china.com</url>
    <author>Worx</author>
    <date>
    <day>1</day>
    <month>1</month>
    <year>2001</year>
    </date>
    <description>Have a look?</description>
    </link>
    </links>//文件  G:/WaynePrj/xmlmenu/xml/c2html.xsl  也可以跳过去
    <?xml version = "1.0" ?>
    <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
    <xsl:output method = "html" indent = "yes" />
    <xsl:template match = "links" >
    <HTML>
    <HEAD>
    <TITLE>Fun with XSL</TITLE>
    </HEAD>
    <BODY>
    <table cellspacing = "0" width = "100%">
    <tr>
    <td class = "clear" align = "center">
    <table width = "95%" >
    <xsl:apply-templates select = "link" />
    </table>
    </td>
    </tr>
    </table>
    </BODY>
    </HTML>
    </xsl:template><xsl:template match = "link" >
    <tr>
    <td class = "clear" >
    <table cellpadding = "0" cellspacing = "0" width = "100%">
    <tr>
    <td style = " font-family: verdana; font-size: 10pt; background: #aabbbb;
    border-style: groove; border-width: 2px; border-color: #fffff;
    padding: 2px;">
    <A xsl:use-attribute-sets = "a"><xsl:value-of select = "text" /></A><br />
    </td>
    </tr>
    <tr>
    <td style = " font-family: verdana; font-size: 10pt; background: #f5f5f5;
    border-style: groove; border-width: 2px; border-color: #fffff;
    padding: 2px; border-top-width: 0px; padding-left: 10px; padding-top 0px; margin-top: 0px;">
    <xsl:value-of select = "author" /><br />
    </td>
    </tr>
    <tr>
    <td style = " font-family: verdana; font-size: 10pt; background: #eeeeee;
    border-style: groove; border-width: 2px; border-color: #ffffff;
    padding: 2px; border-top-width: 0px; padding-left: 10px; padding-top 0px; margin-top: 0px;">
    <xsl:value-of select = "description" /><br />
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </xsl:template>
    <xsl:attribute-set name = "a" >
    <xsl:attribute name = "href">
    <xsl:value-of select = "url" />
    </xsl:attribute>
    </xsl:attribute-set>
    </xsl:stylesheet>
    //JSP,用以完成转换过程
    <%@ page contentType="text/html" %>
    <%@ page import = "javax.xml.parsers.*" %>
    <%@ page import = "org.w3c.dom.*" %>
    <%@ page import = "javax.xml.transform.*" %>
    <%@ page import = "javax.xml.transform.stream.*" %>
    <%@ page import = "java.io.*" %>
    <%@ page import = "javax.xml.transform.dom.DOMSource" %><%
    StreamSource xml = new StreamSource(new File("G:/WaynePrj/xmlmenu/xml/links2.xml"));
    StreamSource xsl = new StreamSource(new File("G:/WaynePrj/xmlmenu/xml/c2html.xsl"));
        StreamResult result = new StreamResult(out);
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer = tFactory.newTransformer(xsl);
    transformer.transform(xml,result);
    %>    全部示例,抄自《JSP编程指南 第二版 》第12章“JSP和XML”,很容易看懂吧,你只要把生成源对象与结果对象的语句作相应改动就可以了。
      

  4.   

    修改后,运行时提示如下错误信息:
    javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: stylesheet 要求属性:version
      

  5.   

    给我发一份 [email protected]