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

ЖАНРЫ

Технология XSLT

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

Шрифт:

id="source"

width="0"

height="0"

classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221">

<param name="async" value="false">

<param name="validateOnParse" value="false">

</object>

<!-- Объект, представляющий документ преобразования -->

<object

id="stylesheet"

width="0"

height="0"

classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221">

<param name="async" value="false">

<param name="validateOnParse" value="false">

</object>

<a href="#">Каталог</а>

<!--
В этом элементе мы будем выводить результат -->

<div id="result"/>

 </body>

</html>

В браузере эта страница будет выглядеть следующим образом (рис. 9.10).

Рис. 9.10. Динамический каталог на HTML с использованием JavaScript, MSXML на основе XML и XSLT

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

Использование MSXML на стороне сервера не сильно отличается от клиентской версии, которую мы разобрали выше. Поскольку MSXML является стандартным СОМ-объектом, его можно использовать в любом языке программирования, умеющем работать с COM. В следующем примере будет показано, как можно использовать MSXML в ASP-странице, написанной на языке VBScript. Мы напишем небольшое Web-приложение, которое позволит отправлять короткие сообщения (SMS) через разные службы, используя один интерфейс.

Почти у всех операторов мобильной связи формы для отправки сообщений более или менее стандартны, например:

<form action="" method="POST">

 <input type="hidden" name="num" value="номер телефона">

 <textarea rows="10" cols="50" name="msg">текст сообщения</textarea>

 <br><br>

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

</form>

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

Листинг 9.9. Документ, описывающий формы служб отправки сообщений — services.xml

<services>

 <service id="MTNSMS">

<action>http://www.mtnsms.com/sendsms.php</action>

<method>GET</method>

<text>msg</text>

<number>num</number>

 </service>

 <service id="SMSHost">

<action>http://www.smshost.net/servlets/sms</action>

<method>POST</method>

<text>message</text>

<number>phone</number>

 </service>

</services>

Контакт-лист

после этого может быть оформлен следующим образом.

Листинг 9.10. Контакт-лист — документ source.xml

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

<people>

 <person id="p1">

<name>Иван Иванович</name>

<number>18005557684</number>

<service id="MTNSMS"/>

 </person>

 <person id="p2">

<name>Иван Никифорович</name>

<number>447856273447</number>

<service id="SMSHost"/>

 </person>

</people>

Преобразование, генерирующее HTML-страницу с формой отправки можно задать как.

Листинг 9.11. Преобразование stylesheet.xsl

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

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transfоrm">

 <xsl:output

method="html"

indent="yes"

encoding="windows-1251"/>

 <!-- Параметр, указывающий выбранного адресата, по умолчанию - p1 -->

 <xsl:param name="id" select="p1"/>

 <xsl:template match="/">

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

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