Книга: XSLT

Применение 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.

Оглавление книги


Генерация: 1.469. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз