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

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

Жанры

Технология XSLT

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

Шрифт:

<html>

<xsl:call-template name="head"/>

<body>

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

</body>

</html>

 </xsl:template>

 <xsl:template match="people">

<!-- Создаем список адресатов -->

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

<!--
Создаем форму для выбранного адресата -->

<xsl:apply-templates select="person[@id=$id]" mode="form"/>

 </xsl:template>

 <xsl:template match="person">

<!-- Если текущий адресат выбран -->

<xsl:if test="@id = $id">

<!-- Выводим его имя в квадратных скобках и без гиперссылки -->

<xsl:text>&#xA0;[&#хА0;</xsl:text>

<xsl:value-of select="name"/>

<xsl:text>&#xA0;]&#xA0;</xsl:text>

</xsl:if>

<!-- Если адресат не выбран -->

<xsl:if test="@id != $id">

<!-- Выводим его имя без скобок и с гиперссылкой -->

<xsl:text>&#xA0;&#хА0;&#хА0;</xsl:text>

<A href="#">

<xsl:value-of select="name"/>

</A>

<xsl:text>&#xA0;&#xA0;&#xA0;</xsl:text>

</xsl:if>

 </xsl:template>

 <!-- Шаблон создания формы для выбранного адресата -->

 <xsl:template match="person" mode="form">

<!--

| Находим элемент, описывающий параметры службы отправки сообщений

| текущему адресату

+-->

<xsl:variable name="service"

select="document('services.xml')/services/

service[@id = current/service/@id]"/>

<br/>

<form

action="{$service/action}" method="{$service/method}">

<input type="hidden"

name="{$service/number}"

value="{number}"/>

<textarea class="no-scrollbar" rows="10" cols="50"

name="{$service/text}"/>

<br/>

<input class="flat" type="submit" value="Послать
сообщение"/>

</form>

 </xsl:template>

 <xsl:template name="head">

<head>

<title>SMS Center</title>

<link rel="stylesheet" type="text/css" href="#"/>

</head>

 </xsl:template>

</xsl:stylesheet>

Теперь дело осталось за ASP-страницей, которая применяла бы преобразование

stylesheet.xsl
к документу
source.xml
и возвращала результат клиенту.

Листинг 9.12. ASP-страница, использующая XSLT-преобразования

<%@ LANGUAGE = VBScript %>

<%

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

 Dim source

 Set source = Server.CreateObject("MSXML2.FreeThreadedDOMDocument.3.0")

 source.load Server.MapPath("source.xml")

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

 Dim stylesheet

 Set stylesheet =

Server.CreateObject("MSXML2.FreeThreadedDOMDocument.3.0")

 stylesheet.load Server.MapPath("stylesheet.xsl")

 ' Создаем объект XSLTemplate для преобразования

 Dim templates

 Set templates = Server.CreateObject("MSXML2.XSLTemplate")

 templates.stylesheet = stylesheet.documentElement

 ' Создаем объект XSLT-процессора

 Dim processor

 Set processor = templates.createProcessor

 processor.input = source

 ' Присваиваем параметру id значение параметра запроса id

 ' (то, что передано в sms.asp?id=...)

 processor.addParameter "id", "" + Request.QueryString("id"), ""

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

 processor.transform

 ' Возвращаем результат

 Response.Charset = "windows-1251"

 Response.Write processor.output

%>

На рис. 9.11 показаны результаты работы

sms.asp
для i
d=p1
и
id=p2
.

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

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I

Попытка возврата. Тетралогия

Конюшевский Владислав Николаевич
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Попытка возврата. Тетралогия

Аромат невинности

Вудворт Франциска
Любовные романы:
любовно-фантастические романы
эро литература
9.23
рейтинг книги
Аромат невинности

Теневой путь. Шаг в тень

Мазуров Дмитрий
1. Теневой путь
Фантастика:
фэнтези
6.71
рейтинг книги
Теневой путь. Шаг в тень

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9

Неправильный лекарь. Том 1

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

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

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

Мимик нового Мира 5

Северный Лис
4. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 5

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

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Кодекс Крови. Книга ХIII

Борзых М.
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIII

Самый лучший пионер

Смолин Павел
1. Самый лучший пионер
Фантастика:
попаданцы
альтернативная история
5.62
рейтинг книги
Самый лучший пионер

Новый Рал 3

Северный Лис
3. Рал!
Фантастика:
попаданцы
5.88
рейтинг книги
Новый Рал 3

Помещица Бедная Лиза

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Помещица Бедная Лиза

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф