<!-- Обработка сообщений -->

 <xsl:template match='messages'>

  <xsl:apply-templates select='message'/>

 </xsl:template>

 <!-- Вывод сообщения -->

 <xsl:template match='message'>

  <p>

   <xsl:text>From: </xsl:text>

   <xsl:choose>

    <!-- Если e-mail не указан, выводим просто имя -->

    <xsl:when test='not(EMAIL)'>

     <xsl:value-of select='PERSON'/>

    </xsl:when>

    <!-- Если e-mail указан, выводим гиперссылку -->

    <xsl:otherwise>

     <A href='mailto:{EMAIL}'><xsl:value-of select='PERSON'/></A>

    </xsl:otherwise>

   </xsl:choose>

   <!-- Выводим дату записи -->

   <xsl:value-of select='concat(', ', POSTED)'/><br/>

   <!-- Если была указана тема, выводим ее -->

   <xsl:if test='SUBJECT'>

    <xsl:text>Subject: </xsl:text>

    <xsl:value-of select='SUBJECT'/><BR/>

   </xsl:if>

   <HR/>

   <!-- Выводим текст сообщения -->

   <xsl:value-of select='MSG'/>

  </p>

 </xsl:template>

</xsl:stylesheet>

Теперь займемся самим php-скриптом.

Листинг 9.5. Скрипт guestbook.php

<html>

 <head>

  <title>Guestbook</title>

  <META

   http-equiv='Content-Type'

   content='text/html; charset=windows-1251'>

  <link rel='stylesheet' type='text/css' href='style.css'/>

 </head>

 <body>

  <?php

   // Загружаем входящий документ

   $sourcefile = 'source.xml';

   $sourcehandle = fopen($sourcefile, 'r')

    or die('Невозможно открыть входящий документ.');

   $source = fread($sourcehandle, filesize($sourcefile));

   // Загружаем преобразование

   $stylesheetfile = 'stylesheet.xsl';

   $stylesheethandle = fopen($stylesheetfile, 'r')

    or die('Невозможно открыть файл преобразования');

   $stylesheet = fread($stylesheethandle, filesize($stylesheetfile));

   // Инициализируем XSLT-процессор

   $xslt = @xslt_create() or die('Can't create XSLT handle!');

   // Выполняем преобразование

   @xslt_process($stylesheet, $source, $result);

   // Выводим результат

   echo $result;

   // Освобождаем ресурсы

   @xslt_free($xslt);

  ?>

 </body>

</html>

Приблизительный результат выполнения этого скрипта можно видеть на рис. 9.9.

Рис. 9.9. Сгенерированная из PHP-скрипта страница гостевой книги

Выполнение XSLT-преобразований в JavaScript

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

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

Листинг 9.6. XML-документ каталога

<?xml version='1.0' encoding='windows-1251'?>

<catalog>

 <category title='Компьютеры'>

  <category title='Настольные компьютеры'/>

  <category title='Серверы'/>

 </category>

 <category title='Комплектующие'>

  <category title='Процессоры'/>

  <category title='Материнские платы'/>

 </category>

 <category title='Расходные материалы'>

  <category title='Картриджи'>

   <category title='Картриджи для плоттеров'/>

   <category title='Картриджи для принтеров'/>

  </category>

  <category title='Тонеры'/>

  <category title='Бумага'/>

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

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