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

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

Жанры

Технология XSLT

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

Шрифт:

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

strResult = source.transformNode(stylesheet);

// Обновляем страницу

result.innerHTML = strResult;

}

//-->

</script>

 </head>

 <body onload="init">

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

<object

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

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

Лейтенант империи. Часть первая

Четвертнов Александр
6. Внутренняя сила
Фантастика:
научная фантастика
боевая фантастика
космическая фантастика
аниме
5.00
рейтинг книги
Лейтенант империи. Часть первая

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Чудовищная алхимия. Том 3

Тролль Борис Фёдорович
3. Мир в чужом кармане
Фантастика:
юмористическое фэнтези
попаданцы
фэнтези
5.00
рейтинг книги
Чудовищная алхимия. Том 3

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

Барон устанавливает правила

Ренгач Евгений
6. Закон сильного
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Барон устанавливает правила

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

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

Неудержимый. Книга XIII

Боярский Андрей
13. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIII

Бестужев. Служба Государевой Безопасности

Измайлов Сергей
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности

Жена неверного генерала, или Попаданка на отборе

Удалова Юлия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Жена неверного генерала, или Попаданка на отборе

Законы Рода. Том 10

Андрей Мельник
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 10

Кукловод

Злобин Михаил
2. О чем молчат могилы
Фантастика:
боевая фантастика
8.50
рейтинг книги
Кукловод

Идеальный мир для Демонолога 3

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

Купец из будущего

Чайка Дмитрий
1. Третий Рим
Фантастика:
попаданцы
5.25
рейтинг книги
Купец из будущего