Технология 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> [&#хА0;</xsl:text>
<xsl:value-of select="name"/>
<xsl:text> ] </xsl:text>
</xsl:if>
<!-- Если адресат не выбран -->
<xsl:if test="@id != $id">
<!-- Выводим его имя без скобок и с гиперссылкой -->
<xsl:text> &#хА0;&#хА0;</xsl:text>
<A href="#">
<xsl:value-of select="name"/>
</A>
<xsl:text>   </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
для id=p1
и id=p2
.
Поделиться:
Популярные книги
Вечный. Книга I
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Попытка возврата. Тетралогия
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Аромат невинности
Любовные романы:
любовно-фантастические романы
эро литература
9.23
рейтинг книги
Теневой путь. Шаг в тень
1. Теневой путь
Фантастика:
фэнтези
6.71
рейтинг книги
Газлайтер. Том 9
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неправильный лекарь. Том 1
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мимик нового Мира 5
4. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
На границе империй. Том 7. Часть 2
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
Кодекс Крови. Книга ХIII
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Самый лучший пионер
1. Самый лучший пионер
Фантастика:
попаданцы
альтернативная история
5.62
рейтинг книги
Новый Рал 3
3. Рал!
Фантастика:
попаданцы
5.88
рейтинг книги
Помещица Бедная Лиза
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Граф
6. Помещик
Фантастика:
альтернативная история
5.00