Применение XSLT с сервлетами Java
Применение XSLT с сервлетами Java
Выполнять XSLT-преобразования на сервере можно также при помощи сервлетов (servlet) Java. Хотя многие процессоры XSLT предоставляют свои собственные версии сервлетов, я считаю, что гораздо проще самостоятельно выполнить преобразование при помощи Xalan или другого процессора XSLT и затем обработать результирующий документ и отправить его обратно клиенту.
В следующем примере я при помощи Xalan преобразую planets.xml во временный файл planets.html, применяя planets.xsl в сервлете:
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.servlet.*;
import org.apache.xalan.xslt.*;
public class xslservlet extends GenericServlet {
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
try {
XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
processor.process(new XSLTInputSource("planets.xml"),
new XSLTInputSource("planets.xsl"),
new XSLTResultTarget("planets.html"));
} catch(Exception e) {}
.
.
.
Все, что осталось, — отправить HTML-документ обратно клиенту (листинг 10.14).
Листинг 10.14. Применение XSLT на сервере с сервлетами Java
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.servlet.*;
import org.apache.xalan.xslt.*;
public class xslservlet extends GenericServlet {
public void service(ServletRequest request, ServletResponse response)
throws ServletException.IOException {
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
try {
XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
processor.process(new XSLTInputSource("planets.xml"),
new XSLTInputSource("planets.xsl"),
new XSLTResultTarget("planets.html"));
} catch(Exception e) {}
FileReader filereader = new FileReader("planets.html");
BufferedReader bufferedreader = new BufferedReader(filereader);
String instring;
while((instring = bufferedreader.readLine()) != null) {
pw.println(instring);
}
filereader.close();
pw.close();
}
}
Теперь все сделано, результат показан на рис. 10.7 — HTML-документ, переданный из сервлета.
Рис. 10.7. Применение XSLT с сервлетами Java
На этом мы заканчиваем изучение работы с API процессоров XSLT в программном коде. Мы рассмотрели весьма объемный материал: как взаимодействовать с API процессоров XSLT из JavaScript и Java для процессоров MSXML, Xalan, XT, Saxon и Oracle, а также примеры выполнения XSLT-преобразований на web-серверах при помощи ASP, JSP и сервлетов Java.