www.pudn.com > chap8.rar > LanguageDemo.java


package chap8; 
 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import javax.xml.transform.*; 
import javax.xml.transform.stream.*; 
 
/** 
 * Allows any combination of English, Spanish, and Chinese XML 
 * and XSLT. 
 */ 
public class LanguageDemo extends HttpServlet { 
 
    public void doPost(HttpServletRequest req, HttpServletResponse res) 
            throws ServletException, IOException { 
        ServletContext ctx = getServletContext(); 
 
        // these are all required parameters from the HTML form 
        String xmlLang = req.getParameter("xmlLanguage"); 
        String xsltLang = req.getParameter("xsltLanguage"); 
        String charEnc = req.getParameter("charEnc"); 
 
        // convert to system-dependent path names 
        String xmlFileName = ctx.getRealPath( 
                "/WEB-INF/xml/numbers_" + xmlLang + ".xml"); 
        String xsltFileName = ctx.getRealPath( 
                "/WEB-INF/xslt/numbers_" + xsltLang + ".xslt"); 
 
        // do this BEFORE calling HttpServletResponse.getWriter() 
        res.setContentType("text/html; charset=" + charEnc); 
 
        try { 
            Source xmlSource = new StreamSource(new File(xmlFileName)); 
            Source xsltSource = new StreamSource(new File(xsltFileName)); 
 
            TransformerFactory transFact = TransformerFactory.newInstance(); 
            Transformer trans = transFact.newTransformer(xsltSource); 
 
            trans.setOutputProperty(OutputKeys.ENCODING, charEnc); 
 
            // note: res.getWriter() will use the encoding type that was 
            //       specified earlier in the call to res.setContentType() 
            trans.transform(xmlSource, new StreamResult(res.getWriter())); 
 
        } catch (TransformerConfigurationException tce) { 
            throw new ServletException(tce); 
        } catch (TransformerException te) { 
            throw new ServletException(te); 
        } 
    } 
}