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

на главную

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

<input type="submit" value="Post"/>

</td>

</tr>

</table>

</form>

<!-- Обрабатываем страницу -->

<xsl:apply-templates select="page"/>

 </xsl:template>

 <!-- Обработка страницы -->

 <xsl:template match="page">

<xsl:apply-templates select="messages"/>

 </xsl:template>

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

 <xsl:template match="messages">

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

 </xsl:template>

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

 <xsl:template match="message">

<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="#"><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"/>

 </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="#"/>

 </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="Процессоры"/>

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

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Стеллар. Заклинатель

Прокофьев Роман Юрьевич
3. Стеллар
Фантастика:
боевая фантастика
8.40
рейтинг книги
Стеллар. Заклинатель

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Девочка-яд

Коэн Даша
2. Молодые, горячие, влюбленные
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка-яд

Авиатор: назад в СССР 14

Дорин Михаил
14. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 14

Метка драконов. Княжеский отбор

Максименко Анастасия
Фантастика:
фэнтези
5.50
рейтинг книги
Метка драконов. Княжеский отбор

Последний Паладин. Том 5

Саваровский Роман
5. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 5

Приручитель женщин-монстров. Том 5

Дорничев Дмитрий
5. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 5

Дайте поспать! Том II

Матисов Павел
2. Вечный Сон
Фантастика:
фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Дайте поспать! Том II

Целитель. Книга вторая

Первухин Андрей Евгеньевич
2. Целитель
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Целитель. Книга вторая

Табу на вожделение. Мечта профессора

Сладкова Людмила Викторовна
4. Яд первой любви
Любовные романы:
современные любовные романы
5.58
рейтинг книги
Табу на вожделение. Мечта профессора

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14