Вход/Регистрация
Технология XSLT
вернуться

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

Шрифт:

Таблица

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. Функция PROCESS

CREATE 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

  • Читать дальше
  • 1
  • ...
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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