.

 .

Теперь нам осталось только применить метод 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
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату