我知道用xalan的Process类就可以,但是要自己打命令,不是全自动的
命令如下
java org.apache.xalan.xslt.Process -in a.xml -xsl b.xsl -out c.htmlxalan 要用2.5.1以上的版本,
其他的我就不知道了哦,我现在还不知道怎么从数据库中读出数据形成xml呢
命令如下
java org.apache.xalan.xslt.Process -in a.xml -xsl b.xsl -out c.htmlxalan 要用2.5.1以上的版本,
其他的我就不知道了哦,我现在还不知道怎么从数据库中读出数据形成xml呢
:) 我的思路是:
1. 从数据库里生成XML与XSL相对应的两个DOM
2. 从上面两个DOM分别创建两个源(DOMSource)对象。
3. 创建结果(DOMResult || StreamResult || SAXResult)对象,用以保存输出
4. 创建转换(Transformer)对象。
5. 调用Transformer的方法执行转换。 我在本机上测试,用文件系统的XML与XSL文件执行成功,只不过这时我用的源对象与结果对象略有不同(StreamSource与StreamResult) 具体可以查阅上述几个类的方法与例子。
<?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”,很容易看懂吧,你只要把生成源对象与结果对象的语句作相应改动就可以了。
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: stylesheet 要求属性:version