Java/XML/XML Servlets
Версия от 18:01, 31 мая 2010; (обсуждение)
Native XML Data Management with XIS 7
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import javax.xml.parsers.*;
public class XsltDomServlet extends HttpServlet {
private DOMImplementation dom;
private Transformer transformer;
public void init () throws ServletException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
dom = db.getDOMImplementation();
} catch (ParserConfigurationException pce) {
throw new ServletException (pce);
}
// prepare the XSLT transformer
TransformerFactory tf = TransformerFactory.newInstance();
StreamSource ss = new StreamSource("/var/www/stylesheets/paramTable.xslt");
try {
transformer = tf.newTransformer (ss);
} catch (TransformerConfigurationException tce) {
throw new ServletException (tce);
}
}
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
}
public void doPost (HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
Document doc = dom.createDocument("","parameters",null);
Element parameters = doc.getDocumentElement();
parameters.setAttribute ("title", "XSLT DOM Servlet");
Enumeration parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements ()) {
String parameterName =
parameterNames.nextElement().toString();
Element parameter = doc.createElement ("parameter");
parameters.appendChild (parameter);
parameter.setAttribute ("name", parameterName);
parameter.appendChild (doc.createTextNode
(request.getParameter(parameterName)));
}
DOMSource domSource = new DOMSource (doc);
StreamResult streamResult = new StreamResult (response.getWriter());
try {
transformer.transform (domSource, streamResult);
} catch (TransformerException te) {
throw new ServletException (te);
}
}
}