Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

processor.process(new XSLTInputSource("planets.xml"),

new XSLTInputSource("planets.xsl"),

new XSLTResultTarget("planets.html"));

 } catch(Exception e) {}

 .

 .

 .

Теперь все, что нужно сделать, — это открыть документ и отправить его обратно клиенту (листинг 10.13).

Листинг 10.13. XSLT
на сервере с применением JSP

<%@ page errorPage="error.jsp" language="java"

 contentType="text/html" import="org.apache.xalan.xslt.*;java.iо.*" %>

<%

 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) { %>

<%= instring %>

 <% } 

 filereader.close;

 pw.close;

%>

Теперь все готово. Результаты применения этого сценария JSP показаны на рис. 10.6.

Рис. 10.6. Применение XSLT с JSP

Применение 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-документ, переданный из сервлета.

Поделиться:
Популярные книги

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

Прорвемся, опера! Книга 3

Киров Никита
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 3

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Игра на чужом поле

Иванов Дмитрий
14. Девяностые
Фантастика:
попаданцы
альтернативная история
5.50
рейтинг книги
Игра на чужом поле

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Ворон. Осколки нас

Грин Эмилия
2. Ворон
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ворон. Осколки нас

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

Измена. Испорченная свадьба

Данич Дина
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Измена. Испорченная свадьба

Прометей: Неандерталец

Рави Ивар
4. Прометей
Фантастика:
героическая фантастика
альтернативная история
7.88
рейтинг книги
Прометей: Неандерталец

Генерал-адмирал. Тетралогия

Злотников Роман Валерьевич
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Генерал-адмирал. Тетралогия

Четвертый год

Каменистый Артем
3. Пограничная река
Фантастика:
фэнтези
9.22
рейтинг книги
Четвертый год