Алексей Валиков - Технология XSLT
Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Технология XSLT"
Описание и краткое содержание "Технология XSLT" читать бесплатно онлайн.
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
<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="style.css"/>
</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.
Рис. 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. Простейший вызов 4Suitepython -с "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>
Листинг 9.18. SQL-скрипт, загружающий документ и преобразование в БД-- Сохраняем преобразование
INSERT INTO STYLESHEET VALUES
(1, '<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> ');
-- Сохраняем документ
INSERT INTO SOURCE VALUES
(1, '<A>value</A>', 1);
Для того чтобы выполнять преобразования в SELECT-выражении представления таблицы SOURCE, мы напишем функцию PROCESS, которая будет возвращать результат обработки документа с уникальным идентификатором, заданным параметром sourceID.
Листинг 9.19. Функция PROCESSCREATE OR REPLACE FUNCTION PROCESS (sourceID NUMBER) RETURN VARCHAR2 IS
-- Инициализация XML-парсера и XSLT-процессора
parser XMLPARSER.Parser := XMLPARSER.newParser;
processor XSLPROCESSOR.Processor := XSLPROCESSOR.newProcessor;
-- Переменные для CLOB-значений входящего документа и преобразования
sourceCLOB CLOB;
stylesheetCLOB CLOB;
-- Переменные для DOM-объектов входящего документа и преобразования
sourceXML XMLDOM.DOMDocument;
stylesheetXML XMLDOM.DOMDocument;
-- Переменная для объекта преобразования
stylesheet XSLPROCESSOR.Stylesheet;
-- Переменная результата
result varchar2(32767);
BEGIN
-- Получаем CLOB-значение входящего документа в переменную sourceCLOB
SELECT CONTENT
INTO sourceCLOB
FROM SOURCE
WHERE ID = sourceID;
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Технология XSLT"
Книги похожие на "Технология XSLT" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Алексей Валиков - Технология XSLT"
Отзывы читателей о книге "Технология XSLT", комментарии и мнения людей о произведении.


























