» » » Алексей Валиков - Технология XSLT


Авторские права

Алексей Валиков - Технология XSLT

Здесь можно скачать бесплатно "Алексей Валиков - Технология XSLT" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство БХВ-Петербург, год 2002. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Алексей Валиков - Технология XSLT
Рейтинг:
Название:
Технология XSLT
Издательство:
БХВ-Петербург
Год:
2002
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Технология XSLT"

Описание и краткое содержание "Технология XSLT" читать бесплатно онлайн.



Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.

Для начинающих и профессиональных программистов






import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

import java.net.*;

import oracle.xml.parser.v2.*;

import org.w3c.dom.*;


public class example extends HttpServlet {

 /**

 * Функция, создающая в элементе parent элемент с именем name и

 * текстовым значением value. Если value имеет значение null,

 * текст не создается.

 */

 public static Element addElement(Element parent, String name, String value) {

  Element child = parent.getOwnerDocument().createElement(name);

  parent.appendChild(child);

  if (value != null) {

   Text text = parent.getOwnerDocument().createTextNode(value);

   child.appendChild(text);

  }

  return child;

 }


 /**

 * Инициализация.

 */

 public void init(ServletConfig config) throws ServletException {

  super.init(config);

 }


 /**

 * Основной метод сервлета

 */

 public void service(HttpServletRequest request,

  HttpServletResponse response)

  throws ServletException, IOException {

  // Выставляем тип содержимого

  response.setContentType("text/html");

  // Инициализируем выходящий поток

  OutputStreamWriter o_sw =

   new OutputStreamWriter(response.getOutputStream());

  PrintWriter out = new PrintWriter(response.getOutputStream());

  // Получаем объекты

  cookie Cookie[] cookies = request.getCookies();

  // Создаем выходящий документ

  XMLDocument doc = new XMLDocument();

  // Создаем корневой элемент

  Request Element elRequest = doc.createElement("Request");

  doc.appendChild(elRequest);

  // Создаем элемент General

  Element elGeneral = addElement(elRequest, "General", null);

  // Создаем элементы, содержащие общую информацию

  addElement(elGeneral, "ServerName", request.getServerName());

  addElement(elGeneral, "ServerPort",

   Integer.toString(request.getServerPort()));

  addElement(elGeneral, "RemoteAddr", request.getRemoteAddr());

  addElement(elGeneral, "Protocol", request.getProtocol());

  addElement(elGeneral, "Method", request.getMethod());

  addElement(elGeneral, "RequestURI", request.getRequestURI());

  addElement(elGeneral, "QueryString", request.getQueryString());

  // Создаем элемент Param

  Element elParam = addElement(elRequest, "Param", null);

  // В элементе Param создаем элементы, описывающие параметры запроса

  for (Enumeration e = request.getParameterNames();

   e.hasMoreElements();) {

   String name = e.nextElement().toString();

   String[] values = request.getParameterValues(name);

   // Для каждого из значений каждого из параметров

   // создаем соответствующий элемент

   for (int i=0; i < values.length; i++)

    addElement(elParam, name, values[i]);

  }

  // Создаем элемент Session

  Element elSession = addElement(elRequest, "Session", null);

  // Получаем объект HTTP-сессии

  HttpSession session = request.getSession(true);

  // Получаем имена параметров сессии

  String[] names = session.getValueNames();

  // В элементе 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-документ, сгенерированный в сервлете

<Request>

 <General>

  <ServerName>aphrodite.fzi.de</ServerName>

  <ServerPort>80</ServerPort>

  <RemoteAddr>127.0.0.1</RemoteAddr>

  <Protocol>HTTP/1.1</Protocol>

  <Method>GET</Method>

  <RequestURI>/servlet/example1</RequestURI>

  <QueryString>x=1&amp;y=2&amp;z=3&amp;x=4&amp;y=5&amp;z=6

  </QueryString>

 </General>

 <Param>

  <z>3</z>

  <z>6</z>

  <y>2</y>

  <y>5</y>

  <x>1</x>

  <x>4</x>

 </Param>

 <Session>

  <v>4</v>

 </Session>

 <Cookie>

  <content>apple jam</content>

  <JServSessionIdroot>aaenbyjqc0</JServSessionIdroot>

 </Cookie>

</Request>

После того как генерация документа завершена, к нему применяется преобразование stylesheet.xsl, которое создает его HTML-представление.

Листинг 9.25. Преобразование stylesheet.xsl

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:template match="Request">

  <html>

   <head>

    <title>Request information</title>

   </head>

   <body><xsl:apply-templates mode="table"/></body>

  </html>

 </xsl:template>


 <xsl:template match="*" mode="table">

  <h1><xsl:apply-templates select="." mode="header"/></h1>

  <table><xsl:apply-templates mode="row"/></table>

 </xsl:template>


 <xsl:template match="General" mode="header">

  <xsl:text>General information</xsl:text>

 </xsl:template>


 <xsl:template match="Param" mode="header">

  <xsl:text>Request parameters</xsl:text>

 </xsl:template>


 <xsl:template match="Session" mode="header">

  <xsl:text>Session parameters</xsl:text>

 </xsl:template>


 <xsl:template match="Cookie" mode="header">

  <xsl:text>Cookies</xsl:text>

 </xsl:template>


 <xsl:template match="*" mode="row">

  <tr>

   <td><xsl:apply-templates select="." mode="name"/></td>

   <td><xsl:value-of select="."/></td>

  </tr>

 </xsl:template>


 <xsl:template match="*" mode="name">

  <xsl:value-of select="name()"/>

 </xsl:template>


 <xsl:template match="General/ServerName" mode="name">

  <xsl:text>Server name</xsl:text>

 </xsl:template>


 <xsl:template match="General/ServerPort" mode="name">

  <xsl:text>Server port</xsl:text>

 </xsl:template>


 <xsl:template match="General/RemoteAddr" mode="name">

  <xsl:text>Remote address</xsl:text>

 </xsl:template>


 <xsl:template match="General/RequestURI" mode="name">

  <xsl:text>Request URI</xsl:text>

 </xsl:template>


 <xsl:template match="General/QueryString" mode="name">

  <xsl:text>Query string</xsl:text>

 </xsl:template>

</xsl:stylesheet>

Результатом этого преобразования является следующий HTML-документ, внешний вид которого полностью идентичен документу, показанному на рис. 9.13.

Листинг 9.26. Результирующий HTML-документ

<html>

 <head>

  <title>Request information</title>

 </head>

 <body>

  <h1>General information</h1>

  <table>

   <tr>

    <td>Server name</td>

    <td>aphrodite.fzi.de</td>

   </tr>

   <tr>

    <td>Server port</td>

    <td>80</td>

   </tr>

   <tr>

    <td>Remote address</td>

    <td>127.0.0.1</td>

   </tr>

   <tr>

    <td>Protocol</td>

    <td>HTTP/1.1</td>

   </tr>

   <tr>

    <td>Method</td>

    <td>GET</td>

   </tr>

   <tr>

    <td>Request URI</td>

    <td>/servlet/example1</td>

   </tr>

   <tr>

    <td>Query string</td>

    <td>x=1&amp;y=2&amp;z=3&amp;x=4&amp;y=5&amp;z=6</td>

   </tr>

  </table>

  <h1>Request parameters</h1>

  <table>

   <tr>

    <td>z</td>


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Технология XSLT"

Книги похожие на "Технология XSLT" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Алексей Валиков

Алексей Валиков - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Алексей Валиков - Технология XSLT"

Отзывы читателей о книге "Технология XSLT", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.