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

ЖАНРЫ

Технология XSLT

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

Шрифт:

<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
.

Рис. 9.11. Внешний вид страницы, возвращаемой

sms.asp

При вызове страницы

sms.asp
или
sms.asp?id=p1
форма отправки сообщений будет сгенерирована в следующем виде:

<form action="http://www.mtnsms.com/sendsms.php" method="GET">

 <input type="hidden" name="num" value="18005557684">

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

 </textarea>

 <br><br>

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

</form>

Для

sms.asp?id=p2
форма будет иметь вид:

<form action="http://www.smshost.net/servlets/sms" method="POST">

 <input type="hidden" name="phone" value="447856273447">

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

 </textarea>

 <br><br>

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

</form>

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

Пример использования XSLT-преобразований в Python, который мы продемонстрируем ниже, будет основываться на использовании библиотек 4Suite и PyXML.

Простейший скрипт, преобразующий документ

source.xml
при помощи преобразования
stylesheet.xsl
будет выглядеть следующим образом.

Поделиться с друзьями: