DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3339>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3339 TRaX XSLTC implementation not working in Servlets [EMAIL PROTECTED] changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WORKSFORME ------- Additional Comments From [EMAIL PROTECTED] 2001-10-03 12:31 ------- Maybe something has been fixed since you ran into this problem. We have been doing some peformance tests on a servlet running XSLTC with TrAX on Tomcat 3.2.2. I'm closing this as "WORKSFORME". Here is the code for the servlet, which may help you get your servlet working. If you still have the problem, reopen the bug, but please give more information so we can decipher what is causing your servlet to fail. import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.Enumeration; import java.net.URL; import org.xml.sax.*; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.Templates; import javax.xml.transform.Transformer; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamResult; public final class XSLTCTraxServlet extends HttpServlet { private static Templates templates = null; private static TransformerFactory tFactory = null; public void init(ServletConfig config) throws ServletException { super.init(config); System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl"); tFactory = TransformerFactory.newInstance(); String xsl = "search.xsl"; Source xslSource = null; try { System.out.println("in the try"); // Get the stylesheet. if (xsl != null && xsl.length()> 0) xslSource = new StreamSource(xsl); if (xslSource != null) { // Now do we have a stylesheet? // if yes, create template for reuse System.out.println("xslSource is " + xslSource); System.out.println("tFactory is " + tFactory); templates = tFactory.newTemplates(xslSource); System.out.println("template is " + templates); } else { System.out.println("No Stylesheet!"); } } catch (TransformerConfigurationException e) { System.out.println("can't make templates, " + e.getMessage()); e.printStackTrace(System.err); } catch (Exception e) { e.printStackTrace(System.out); } } //end of init public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // The servlet returns HTML; charset is UTF8. // See ApplyXSLT.getContentType() to get output properties from <xsl:output>. response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); Source xmlSource = null; String xml = "http://glrr.east:8080/calendar/calendar.xml"; try { if (xml != null && xml.length()> 0) { xmlSource = new StreamSource(new URL(xml).openStream()); } else { out.write("No XML Input Document!"); } long start = System.currentTimeMillis(); Transformer transformer = null; System.out.println("in doPost, templates is " + templates); transformer = templates.newTransformer(); setParameters(transformer, request); // Set stylesheet params. // Perform the transformation. transformer.transform(xmlSource, new StreamResult(out)); long stop = System.currentTimeMillis(); out.println("<!-- transformed in "+ (stop-start)+"ms -->"); } catch (Exception e) { e.printStackTrace(out); } out.close(); } // end of doPost // Get parameters from the request URL. String getRequestParam(HttpServletRequest request, String param) { if (request != null) { String paramVal = request.getParameter(param); return paramVal; } return null; } // Set stylesheet parameters from the request URL. void setParameters(Transformer transformer, HttpServletRequest request) { Enumeration paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { String name = (String) paramNames.nextElement(); String other; try { String value = request.getParameter(name); if (!(name.equals("style") || name.equals("source") || name.equals("action") || name.equals("class"))) { if(name.equals("states")){ value = ""; String [] values = request.getParameterValues("states"); value = values[0]; for (int i = 1; i < values.length; i++){ value = value + " " + values[i]; } } else { value = request.getParameter(name); } // set country to ocountry so stylesheet only deals with country if(name.equals("country") && value.equals("Other")){ other = request.getParameter("ocountry"); value = new String(other); } if(name.equals("town") && (value.length() < 2)){ value = new String(""); } if(name.equals("zip") && (value.length() < 2)){ value = new String(""); } if(name.equals("ldist") && (value != null)){ String lval = request.getParameter("ldist"); String ulval = request.getParameter("lunits"); double ldistance = Double.parseDouble(lval) * Double.parseDouble(ulval); value = new String(Double.toString(ldistance)); } if(name.equals("gdist") && (value != null)){ String gval = request.getParameter("gdist"); String ugval = request.getParameter("gunits"); double ldistance = Double.parseDouble(gval) * Double.parseDouble(ugval); value = new String(Double.toString(ldistance)); } if(value != null && value.length() >= 1){ transformer.setParameter(name, value); } }// end of if not style, source, action or class } catch (Exception e) { } } } }
