comparison client/digitallibrary/WEB-INF/classes/Relato.java @ 207:82f0c562e2db

relato juhuii
author luginbue
date Thu, 25 Mar 2004 11:56:08 +0100
parents
children
comparison
equal deleted inserted replaced
206:fdf8ebaa780a 207:82f0c562e2db
1 import java.io.*;
2 import java.net.*;
3 import java.util.*;
4 import javax.servlet.*;
5 import javax.servlet.http.*;
6 import javax.xml.transform.*;
7 import javax.xml.transform.dom.*;
8 import javax.xml.transform.stream.*;
9 import org.apache.xerces.parsers.DOMParser;
10 import org.apache.xpath.*;
11 import org.w3c.dom.*;
12
13 public class Relato extends HttpServlet {
14
15 public final static String FS = System.getProperty("file.separator");
16
17 // Respond to HTTP GET requests from browsers.
18 public void doGet (HttpServletRequest request, HttpServletResponse response)
19 throws ServletException, IOException {
20
21 Hashtable params = new Hashtable();
22 Enumeration enum = request.getParameterNames();
23 while (enum.hasMoreElements()) {
24 String pName = (String) enum.nextElement();
25 params.put(pName, request.getParameter(pName));
26
27 }
28 // Set content type for HTML.
29 response.setContentType("text/html; charset=UTF-8");
30 // Output goes to the response PrintWriter.
31 PrintWriter out = response.getWriter();
32 DOMParser parser = new DOMParser();
33
34 try {
35 TransformerFactory tFactory = TransformerFactory.newInstance();
36 //get the real path for xml and xsl files.
37 String ctx = getServletContext().getRealPath("") + FS;
38
39 parser.parse(ctx + (String) params.get("xml"));
40 Document document = parser.getDocument();
41
42 Element topFrameset = (Element) XPathAPI.selectSingleNode(document, "/relato/frames/frameset");
43 topFrameset.setAttribute("onload", "init();");
44
45 NodeList nodelist = XPathAPI.selectNodeList(document, "//frameset/frame");
46 for (int i = 0; i < nodelist.getLength(); i++) {
47 Element elem = (Element)nodelist.item(i);
48 String name = elem.getAttribute("name");
49 if (name != "") {
50 if (params.containsKey(name)) {
51 String src = (String) params.get(name);
52 elem.setAttribute("src", src);
53 }
54 }
55 }
56
57 Source xmlSource = new DOMSource (document);
58 Source xslSource = new StreamSource (new URL("file", "", ctx+"relato/relato.xsl").openStream());
59 // Generate the transformer.
60 Transformer transformer = tFactory.newTransformer(xslSource);
61 // Perform the transformation, sending the output to the response.
62 transformer.transform(xmlSource, new StreamResult(out));
63 }
64
65 // If an Exception occurs, return the error to the client.
66 catch (Exception e) {
67 out.write(e.getMessage());
68 e.printStackTrace(out);
69 }
70
71 // Close the PrintWriter.
72 out.close();
73 }
74 }