code: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements. See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership. The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the  "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  /*
   * $Id$
   */
  
  /*
  Simple Servlet Example using a stylesheet parameter
   */
  package servlet;
  // Imported TraX classes
  import javax.xml.transform.TransformerFactory;
  import javax.xml.transform.Transformer;
  import javax.xml.transform.stream.StreamSource;
  import javax.xml.transform.stream.StreamResult;
  import javax.xml.transform.TransformerException;
  import javax.xml.transform.TransformerConfigurationException;
  
  // Imported SAX classes
  import org.xml.sax.SAXException;
  
  // Imported java.io and javax.servlet classes
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
  
  public class UseStylesheetParamServlet extends HttpServlet {
  	
  
     /**
      * String representing the file separator characters for the System.
      */
      public final static String FS = System.getProperty("file.separator");
      
  	PrintWriter out;
  	String xslFile, xmlFile, paramValue;
  	public void doGet(HttpServletRequest req,
  		HttpServletResponse res)
  			throws ServletException, IOException {
  		try {
  			res.setContentType("text/html; charset=UTF-8");
  			out = res.getWriter();
  
        paramValue = req.getParameter("PVAL");
  			xmlFile    = req.getParameter("XML");
  			xslFile    = req.getParameter("XSL");
   		if (paramValue == null) {
  			out.println(
  			"<h1>No input for paramValue</h1>");
  			return;
  		}
   		if ( xmlFile == null) {
  			out.println(
  			"<h1>No input for xmlFile</h1>");
  			return;
  		}	
  		if ( xslFile == null) {
  			out.println(
  			"<h1>No input for xslFile</h1>");
  			return;
  		}
          
          // get the real path for xml and xsl files;
          String ctx = getServletContext().getRealPath("") + FS;
          xslFile = ctx + xslFile;
          xmlFile = ctx + xmlFile;
           
  		TransformerFactory tFactory =
  			TransformerFactory.newInstance();
  		Transformer transformer =
  			tFactory.newTransformer(new StreamSource(xslFile));
  
      // Set the stylesheet parameter (named param1).
  			transformer.setParameter("param1", paramValue);
      // Perform the transformation.
  			transformer.transform(new StreamSource(xmlFile),
  					                  new StreamResult(out));
  		}		
      catch (IOException e) {			
  			e.printStackTrace();
  			System.exit(-1);
  		}
  		catch (TransformerException e) {
        e.printStackTrace(out);
  			return;
  		}
  	}
  }
  