// В элементе Session создаем по элементу
// для каждого из параметров сессии
for (int i=0; i < names.length; i++)
addElement(elSession, session.getValueNames()[i],
session.getValue(session.getValueNames()[i]).toString());
// Создаем элемент Cookie
Element elCookie = addElement(elRequest, "Cookie", null);
// Создаем по элементу для каждого из объектов cookies
for (int i=0; i < cookies.length; i++)
addElement(elCookie, cookies[i].getName(), cookies[i].getValue());
// Преобразовываем созданный документ и выводим результат
try {
// Загружаем преобразование
XSLStylesheet stylesheet = new XSLStylesheet(
new URL("http://localhost/stylesheet.xsl"), null);
// Выполняем преобразование
XMLDocumentFragment fragment =
(XMLDocumentFragment)doc.transformNode(stylesheet);
// Выводим результат
fragment.print(out);
}
catch (MalformedURLException mue) {}
catch (XSLException xsle) {}
// Закрываем выходящий поток
out.close();
}
}
В этом сервлете вместо того, чтобы просто печатать в выходящий поток данные и HTML-разметку, в переменной
doc
мы генерируем DOM-объект XML-документа. После того как все текстовые узлы и узлы элементов будут сгенерированы, документ, содержащийся в переменной doc
, примет приблизительно следующий вид.Листинг 9.24. XML-документ, сгенерированный в сервлете
aphrodite.fzi.de
80
127.0.0.1
HTTP/1.1
GET
/servlet/example1
x=1&y=2&z=3&x=4&y=5&z=6
3
6
2
5
1
4
4
apple jam
aaenbyjqc0
После того как генерация документа завершена, к нему применяется преобразование
stylesheet.xsl
, которое создает его HTML-представление.Листинг 9.25. Преобразование stylesheet.xsl
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Request information
General information
Request parameters
Session parameters
Cookies
Server name
Server port
Remote address
Request URI
Query string
Результатом этого преобразования является следующий HTML-документ, внешний вид которого полностью идентичен документу, показанному на рис. 9.13.
Листинг 9.26. Результирующий HTML-документ
Request information
General information
Server name
aphrodite.fzi.de
Server port
80
Remote address
127.0.0.1
Protocol
HTTP/1.1
Method
GET
Request URI
/servlet/example1
Query string
x=1&y=2&z=3&x=4&y=5&z=6
<