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

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

Жанры

Технология XSLT

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

Шрифт:

Рис. 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
будет выглядеть следующим образом.

Листинг 9.13. Простейший вызов 4Suite

python -с "import sys;from xml.xslt import _4xslt;_4xslt.Run(sys.argv[1:])" -i source.xml stylesheet.xsl

Использование XSLT-процессора в собственных программах на Python ненамного сложнее.

Листинг 9.14. Использование XSLT-процессора в Python

# Импортируем библиотеки

import sys

from xml.xslt.Processor import Processor

# Создаем XSLT-процессор

processor = Processor

# Загружаем XSLT-преобразование

processor.appendStylesheetUri('stylesheet.xsl')

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

result = processor.runUri('source.xml')

# Выводим результирующий документ print result

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

Универсальность технологии XSLT позволяет использовать ее на самых различных уровнях архитектуры приложений. В этом разделе мы приведем пример использования преобразований внутри базы данных.

На этот раз в качестве целевой платформы будет использоваться база данных Oracle 8i, которая обеспечивает поддержку XSLT несколькими встроенными пакетами:

XMLDOM
,
XMLPARSER
и
XSLPROCESSOR
.

Представим себе следующую схему элементарной БД (рис. 9.12):

Рис. 9.12. Схема простой базы данных

Таблица STYLESHEET содержит XSLT-преобразования, которые хранятся в полях

CONTENT
, поле
ID
указывает уникальный идентификатор каждого из них.

Таблица

SOURCE
содержит XML-документы (поле
CONTENT
), каждому из которых соответствует некоторое преобразование (внешний ключ
STYLESHEETID
). Нашей задачей будет создание представления, в котором документы, хранящиеся в таблице
SOURCE
, будут обрабатываться соответствующими преобразованиями из таблицы
STYLESHEET
.

Прежде всего, создадим таблицы и ключи, соответствующие приведенной выше схеме базы данных.

Листинг 9.15. Создание схемы БД

– - Создаем таблицу stylesheet

CREATE TABLE STYLESHEET

 (ID INTEGER NOT NULL,

 CONTENT CLOB NULL);

– - Создаем первичный ключ таблицы STYLESHEET

ALTER TABLE STYLESHEET

 ADD (PRIMARY KEY (ID));

– - Создаем таблицу SOURCE

CREATE TABLE SOURCE

 (ID INTEGER NOT NULL,

 CONTENT CLOB NULL,

 STYLESHEETID INTEGER NOT NULL);

– - Создаем первичный ключ таблицы SOURCE

ALTER TABLE SOURCE

 ADD (PRIMARY KEY (ID));

– - Создаем внешний ключ, связывающий таблицы SOURCE и STYLESHEET

ALTER TABLE SOURCE

 ADD (FOREIGN KEY (STYLESHEETID) REFERENCES STYLESHEET);

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

Листинг 9.16. Преобразование

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="A">

<B><xsl:value-of select="."/></B>

 </xsl:template>

</xsl:stylesheet>

Листинг 9.17. Обрабатываемый документ

<A>value</A>

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

Real-Rpg. Еретик

Жгулёв Пётр Николаевич
2. Real-Rpg
Фантастика:
фэнтези
8.19
рейтинг книги
Real-Rpg. Еретик

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

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

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Матрос империи. Начало

Четвертнов Александр
1. Матрос империи
Фантастика:
героическая фантастика
4.86
рейтинг книги
Матрос империи. Начало

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

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

Душелов

Faded Emory
1. Внутренние демоны
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Душелов

Неправильный разведчик Забабашкин

Арх Максим
5. Неправильный солдат Забабашкин
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Неправильный разведчик Забабашкин

Отмороженный 3.0

Гарцевич Евгений Александрович
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 3.0

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Дорогами алхимии

Видум Инди
2. Под знаком Песца
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Дорогами алхимии

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

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

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Сфирот

Прокофьев Роман Юрьевич
8. Стеллар
Фантастика:
боевая фантастика
рпг
6.92
рейтинг книги
Сфирот