XSLT на стороне сервера

Чтобы сделать XML данные доступными во всех типах браузеров, можно преобразовать XML документ еще на сервере и пользователю в браузер отправить уже готовый XHTML.

Кросс-браузерное решение

В предыдущей главе рассказывалось как при помощи XSLT можно преобразовывать XML документ в XHTML в самом браузере. Для этого использовался JavaScript и XML парсер. Тем не менее, данный подход не сработает, если в браузере нет XML парсера.

Чтобы сделать XML данные доступными во всех типах браузеров, можно преобразовать XML документ на стороне сервера и отправлять в браузер уже готовый XHTML.

В этом заключается еще одна прелесть XSLT. Одной из целью при разработке технологии XSLT было дать возможность преобразовывать данные из одного формата в другой на стороне сервера, возвращая данные, читаемые всеми видами браузеров.

XML и XSLT файлы

Посмотрите на XML документ, который мы уже видели в предыдущих главах:


<?xml version="1.0" encoding="UTF-8"?>
<catalog>
   <cd>
     <title>Empire Burlesque</title>
     <artist>Bob Dylan</artist>
     <country>USA</country>
     <company>Columbia</company>
     <price>10.90</price>
     <year>1985</year>
   </cd>
 .
 .
</catalog>

Посмотреть XML файл

И на сопутствующую ему таблицу стилей XSL:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
   <h2>My CD Collection</h2>
   <table border="1">
     <tr bgcolor="#9acd32">
       <th style="text-align:left">Title</th>
       <th style="text-align:left">Artist</th>
     </tr>
     <xsl:for-each select="catalog/cd">
     <tr>
       <td><xsl:value-of select="title" /></td>
       <td><xsl:value-of select="artist" /></td>
     </tr>
     </xsl:for-each>
   </table>
</xsl:template>

</xsl:stylesheet> 

ВАЖНО: Обратите внимание, что в XML файле нет ссылки на XSL файл. Это означает, что XML файл может преобразовываться при помощи множества различных таблиц стилей XSL.

Преобразование XML в XHTML на стороне сервера. Код на PHP.

Ниже приводится исходный код на PHP, который позволяет преобразовать XML файл в XHTML на стороне сервера:


<?php
// Загружаем XML файл
$xml = new DOMDocument;
$xml->load('cdcatalog.xml');

// Загружаем XSL файл
$xsl = new DOMDocument;
$xsl->load('cdcatalog.xsl');

// Настраиваем преобразователь
$proc = new XSLTProcessor;

// Присоединяем xsl правила
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);
?>

Преобразование XML в XHTML на стороне сервера. Код на ASP.

Ниже приводится исходный код на ASP, который позволяет преобразовать XML файл в XHTML на стороне сервера:


<%
 'Загружаем XML файл
 set xml = Server.CreateObject("Microsoft.XMLDOM")
 xml.async = false
 xml.load(Server.MapPath("cdcatalog.xml"))

 'Загружаем XSL файл
 set xsl = Server.CreateObject("Microsoft.XMLDOM")
 xsl.async = false
 xsl.load(Server.MapPath("cdcatalog.xsl"))

 'Преобразовываем файл
 Response.Write(xml.transformNode(xsl))
 %>