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

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "XSLT"
Описание и краткое содержание "XSLT" читать бесплатно онлайн.
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
Еще один аспект XSLT, в котором вам потребуется программирование, это поддержка XSLT на серверах. В качестве демонстрации далее я преобразую planets.xml при помощи planets.xsl с использованием активных серверных страниц (Active Server Pages, ASP) фирмы Microsoft, серверных страниц Java (Java Server Pages, JSP) фирмы Sun и сервлетов (servlet) Java, выполняющихся на web-серверах и возвращающих результирующий документ браузеру пользователя.
За недостатком места мы не можем подробно рассмотреть эти технологии, и если вы с ними не знакомы, вы можете получить дополнительную информацию в Интернете (как всегда, URL могут измениться):
• ASP. http://msdn.microsoft.com/workshop/c-frame.htm#/workshop/server/Default.asp (руководство и документация по ASP фирмы Microsoft);
• JSP. http://java.sun.com/products/jsp/ (главная страница Sun, посвященная JSP);
• Сервлеты. http://java.sun.com/products/servlet/ (главная страница Sun, посвященная сервлетам).
Применение XSLT с активными серверными страницами
Активные серверные страницы (Active Server Pages, ASP) выполняются на серверах Microsoft Windows NT или 2000, поэтому в ближайшем примере для преобразования planets.xml при помощи planets.xsl и возврата результата в виде документа HTML я воспользуюсь процессором Microsoft MSXML.
Это все то же преобразование, которое нам уже много раз встречалось, — создание HTML-таблицы данных о планетах — но на этот раз преобразование будет выполнено на web-сервере, который затем отправит его пользователю. В начале сценария ASP я установил тип содержимого MIME результирующего документа в «text/html», поэтому он будет трактоваться как HTML:
<%@LANGUAGE="VBScript"%>
<%
Response.ContentType = "text/html"
.
.
.
Затем, во многом аналогично предыдущим примерам в этой главе с JavaScript, я создаю два объекта документа MSXML, один для документа XML, а другой — для документа XSL:
<%@LANGUAGE="VBScript"%>
<%
Response.ContentType = "text/html"
Dim docXML
Dim docXSL
Set docXML = Server.CreateObject("MSXML2.DOMDocument.3.0")
Set docXSL = Server.CreateObject("MSXML2.DOMDocument.3.0")
.
.
.
Процедура загрузки этих документов на сервере во многом похожа на процедуру с использованием JavaScript, за тем исключением, что здесь правильные пути файлов получаются при помощи метода MapPath объекта Server. В данном случае я поместил planets.xml и planets.xsl в тот же каталог, что и сценарий ASP, поэтому документы загружаются так:
<%@LANGUAGE="VBScript"%>
<%
Response.ContentType = "text/html"
Dim docXML
Dim docXSL
Set docXML = Server.CreateObject("MSXML2.DOMDocument.3.0")
Set docXSL = Server.CreateObject("MSXML2.DOMDocument.3.0")
docXML.ValidateOnParse = True
docXSL.ValidateOnParse = True
docXML.load Server.MapPath("planets.xml")
docXSL.load Server.MapPath("planets.xsl")
.
.
.
Теперь нам осталось только применить метод transformNode (как в примере с JavaScript раньше) для выполнения XSLT-преобразования и вывода результатов (листинг 10.12).
Листинг 10.12. XSLT на сервере с применением ASP<%@LANGUAGE="VBScript"%>
<%
Response.ContentType = "text/html"
Dim docXML
Dim docXSL
Set docXML = Server.CreateObject("MSXML2.DOMDocument.3.0")
Set docXSL = Server.CreateObject("MSXML2.DOMDocument.3.0")
docXML.ValidateOnParse = True
docXSL.ValidateOnParse = True
docXML.load Server.MapPath("planets.xml")
docXSL.load Server.MapPath("planets.xsl")
strOutput = docXML.transformNode(docXSL)
Response.Write strOutput
%>
Результат этого преобразовании ASP показан на рис. 10.5. Теперь вы научились выполнению XSLT-преобразований на web-серверах.
Рис. 10.5. Применение XSLT с ASP
Нужно сделать одно замечание: при выполнении XSLT-преобразований на сервере можно подумать об оптимизации ваших преобразований в зависимости от клиента, так как необязательно генерировать для карманного компьютера тот же экран, что и для браузера настольного компьютера. Например, можно настроить ответ вашего серверного сценария ASP (где я проверяю значение серверной переменной http_user_agent чтобы определить, использует ли клиент Internet Explorer) следующим образом:
<%@LANGUAGE="VBScript"%>
<%
Response ContentType = "text/html"
If instr(request,servervariables("http_user_agent"), "MSIE") = 0 then
Response.Write "Sorry, not optimized for your device."
Response.End
End If
.
.
.
ОТДЕЛЕНИЕ ДАННЫХ ОТ ИХ ПРЕДСТАВЛЕНИЯ
Одной из преобладающих тенденций в последнее время является стремление отделить данные от представляющего их кода. Рассмотренный пример демонстрирует преимущества такого подхода: единственный набор данных можно преобразовывать в рабочем порядке для различных браузеров.
Применение XSLT с Java Server Pages
Для работы с активными серверными страницами я использовал процессор MSXML фирмы Microsoft, но серверные страницы Java (Java Server Pages, JSP) не обязаны выполняться на серверах на платформе Windows, поэтому с JSP я не использую MSXML. Для выполнения XSLT-преобразования и отправки результатов в браузер клиента я воспользуюсь API процессора Xalan для работы с Java.
Например, при помощи Xalan можно создать planets.html на сервере как временный документ (этот код предполагает, что planets.xml и planets.xsl расположены в том же каталоге, что и сценарий 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) {}
.
.
.
Теперь все, что нужно сделать, — это открыть документ и отправить его обратно клиенту (листинг 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 на сервере с сервлетами Javaimport 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"),
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "XSLT"
Книги похожие на "XSLT" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Стивен Холзнер - XSLT"
Отзывы читателей о книге "XSLT", комментарии и мнения людей о произведении.