我建议将这种类型的代码放在servlet中,而不是JSP页面中。如果您有一些需要JSP的特定约束,那么可以修改代码以在JSP页面上工作。
xalan站点有一个使用servlet的很好的示例,为了方便起见,我将在这里复制它:
原件可以找到
here
. 在本例中,它们硬编码XSL和XML文件的名称,但是很容易修改以使用按照您的描述生成的文件名。重要的是,生成的输出流到浏览器。
public class SampleXSLTServlet extends javax.servlet.http.HttpServlet {
public final static String FS = System.getProperty("file.separator");
public void doGet (javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException
{
response.setContentType("text/html; charset=UTF-8");
java.io.PrintWriter out = response.getWriter();
try
{
javax.xml.transform.TransformerFactory tFactory =
javax.xml.transform.TransformerFactory.newInstance();
String ctx = getServletContext().getRealPath("") + FS;
javax.xml.transform.Source xmlSource =
new javax.xml.transform.stream.StreamSource
(new java.net.URL("file", "", ctx+"foo.xml").openStream());
javax.xml.transform.Source xslSource =
new javax.xml.transform.stream.StreamSource
(new java.net.URL("file", "", ctx+"foo.xsl").openStream());
javax.xml.transform.Transformer transformer =
tFactory.newTransformer(xslSource);
transformer.transform(xmlSource,
new javax.xml.transform.stream.StreamResult(out));
}
catch (Exception e)
{
out.write(e.getMessage());
e.printStackTrace(out);
}
out.close();
}
}