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

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

Жанры

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

Шрифт:

Активные серверные страницы (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;

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

Третий. Том 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 3

Майами

Фишер Марк
Детективы:
триллеры
6.40
рейтинг книги
Майами

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

Алекс и Алекс

Афанасьев Семен
1. Алекс и Алекс
Фантастика:
боевая фантастика
6.83
рейтинг книги
Алекс и Алекс

Кодекс Охотника. Книга XXXIII

Винокуров Юрий
33. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIII

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

1941: Время кровавых псов

Золотько Александр Карлович
1. Всеволод Залесский
Приключения:
исторические приключения
6.36
рейтинг книги
1941: Время кровавых псов

Главный рубильник. Расцвет и гибель информационных империй от радио до интернета

Ву Тим
Деловая литература:
о бизнесе популярно
5.00
рейтинг книги
Главный рубильник. Расцвет и гибель информационных империй от радио до интернета

Неофит

Листратов Валерий
3. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неофит

История московских кладбищ. Под кровом вечной тишины

Рябинин Юрий Валерьевич
Научно-образовательная:
история
культурология
5.75
рейтинг книги
История московских кладбищ. Под кровом вечной тишины

Дважды одаренный. Том VIII

Тарс Элиан
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Дважды одаренный. Том VIII

Кодекс Охотника. Книга II

Винокуров Юрий
2. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга II

Личный аптекарь императора. Том 2

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