[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Базы Данных / Oracle /

Создание серверных XSQL-страниц

Используя утилиты из Oracle XML Developer's Kit, вы можете создавать динамические XML-страницы на основе SQL-запросов.

Oracle8i содержит компоненты и утилиты, включая XSQL Servlet, которые позволяют использовать технологию XML в создаваемых вами приложениях для работы с базами данных. Следующий фрагмент из книги Oracle XML Handbook (Oracle Press 2000) расскажет, как это можно сделать.

Архитектура XSQL-страниц

XSQL Servlet - это средство, обрабатывающее SQL-запросы и поставляющее результирующие наборы данных в виде XML-документов. Этот процессор работает как Java Servlet, и в результате его работы получается XML-файл, содержащий в себе SQL-запрос. Он использует Oracle's XML Developer's Kit для осуществления большинства этих операций.

Использовать XSQL Servelt можно с любым Web-сервером, который поддерживает Java-сервлеты. Данные направляются от клиента к сервлету и возвращаются клиенту. Последовательность событий такова:

  • Пользователь в браузере задает адрес (URL), который обрабатывается и передается Java Web-сервером для XSQL Servelt. Адрес (URL) содержит имя конечного XSQL-файла (.xsql) и, возможно, набор параметров, таких как: значения и имя стиля. Кроме того, пользователь может вызвать XSQL Servelt из командной строки, минуя браузер и Java Web-сервер.
  • Сервлет передает XSQL-файл XML Java -разборщику, который разбирает XML и создает API для доступа к содержанию документа.
  • Процессор страниц (это компонент сервлета) использует API для передачи XML-параметров и SQL-выражений (находящихся между тегами "xsql:query" и "/xsql:query"). Кроме того, процессор страниц передает любые XSL-операторы XSLT-процессору.
  • Процессор страниц создает DOM (Document Object Model - объектная модель документа), посылая SQL-запрос под управлением Oracle8i, который возвращает результат запроса. Результат размещается в XML-файле на месте, которое отмечено тегом "xsql:query".
  • Если это необходимо, результат запроса и любые другие XML-данные трансформируются XSLT-процессором с использованием заданных стилей. Данные могут быть преобразованы в HTML или любые другие форматы, определенные стилем. XSLT-процессор может выборочно применять различные стили, имея в виду тип клиента, который сделал исходный URL-запрос. Информация о клиенте получается от него посредством HTTP-запроса.
  • XSLT-процессор передает готовый документ обратно на браузер клиента, который в свою очередь отображает его пользователю.


Установка XSQL Servelt

Вы можете установить и настроить XSQL Servelt на различных Web-серверах, таких как Oracle8i Lite Web-to-Go Server, Apache 1.3.9 (с JServ 1.0), и Sun JavaServer Web Development Kit (JSWDK) 1.0.1 Web Server.

В этой части мы рассмотрим установку XSQL Servelt на Apache 1.3.9 Web-сервер. Основные этапы установки следующие:

Этап 1: Правка CLASSPATH.

Убедитесь что все, необходимые для запуска XSQL Servelt, JAR- файлы прописаны в CLASSPATH для исполнительного механизма (runtime engine) Apache JServ. Вы должны добавить следующие строки в файл jserv.properties:

# Oracle XSQL Servlet
wrapper.classpath=C:xsqlliboraclexsql.jar
# Oracle JDBC (8.1.5)
wrapper.classpath=C:xsqllibclasses111.zip
# Oracle XML Parser V2 (with XSLT Engine)
wrapper.classpath=C:xsqllibxmlparserv2.jar
# XSQLConfig.xml File location
wrapper.classpath=C:xsqllib

Этап 2: Регистрация .xsql

Зарегистрируйте расширение .xsql для доступа к Java servlet class, который называется oracle.xml.xsql.XSQLServlet. Вы должны добавить следующие строки в файл конфигурации mod_jserv.conf

# Executes a servlet passing filename with proper extension
# property of servlet request.
# Syntax: ApJServAction [extension] [servlet-uri]
# Defaults: NONE
# Notes: This is used for external tools.
#ApJServAction .jsp /servlets/nl.nmg.jsp.JSPServlet
ApJServAction .xsql /servlets/oracle.xml.xsql.XSQLServlet

После регистрации расширения .xsql, перезапустите Web-сервер и откройте XSQL-файл, чтобы увидеть XML-выходной файл, а также трансформированный HTML-выходной файл.

Преобразование SQL-запросов в динамические XML-документы

Oracle XSQL-страницы (pages) - это XML-страницы (datapages) с размещенными в них SQL-запросами для получения или вставки данных. Вы можете сделать XSQL-страницу, если исправите свой XML-файл, вставив тег "xsql:query" в месте, где должен исполняться SQL. Тег "xsql:query" будет заменен выходными данными XML в запросе.

XSQL Servelt использует файл конфигурации XSQLConfig.xml для доступа и подключения к базе данных. Простейший файл конфигурации выглядит следующим образом:

"?xml version="1.0" ?"
"XSQLConfig"
"connectiondefs dumpallowed="no""
"connection name="demo""
"username"scott"/username"
"password"tiger"/password"
"dburl"jdbc:oracle:thin:@localhost:1521: ORCL"/dburl"
"driver"oracle.jdbc.driver.OracleDriver "/driver"
"/connection"
"/connectiondefs"
:
"/XSQLConfig"

Вы можете определить дополнительные элементы подключения для идентификации различных пользователей или для использования разных драйверов JDBC. XSQL Servelt ищет атрибут "connection" в вашем корневом XML-документе, это значение должно содержать название подключения, описанного в файле конфигурации.

Использавание тега "xsql:query" можно показать так:

"?xml version="1.0"?"
"xsql:query xmlns:xsql="urn:oracle-xsql" connection="demo""
SELECT 'Hello World' AS "GREETING" FROM
DUAL
"/xsql:query"

Этот XSQL-код создаст следующий XML-документ:

"?xml version = '1.0'?"
"ROWSET"
"ROW id="1""
"GREETING"Hello World"/GREETING"
"/ROW"
"/ROWSET"

Вы можете преобразовать XML-документ в другие формы XML-документов или в HTML. Можно также подключить внешние стили в XSQL-коде, используя следующую инструкцию:

"?xml-stylesheet type="text/html" href="transform.xsl"?"

Вы можете использовать объектно-ориентированные запросы в своих XSQL-страницах. Вы также можете использовать URL для передачи параметров для этих страниц. Например, вы можете использовать объекно-ориентированные возможности Oracle8i для создания пользовательского объектного типа POINT. Можно объявить этот новый тип POINT, как тип данных столбца ORIGIN в таблице LOCATIONS, используя следующие DDL-выражения.

CREATE TYPE POINT AS OBJECT (X NUMBER, Y NUMBER);
CREATE TABLE LOCATION (
NAME VARCHAR2(80),
ORIGIN POINT
);

Можно вставить строку в таблицу LOCATION, используя выражение INSERT с конструктором POINT():

SQL" INSERT INTO LOCATION VALUES ('Someplace', POINT(11,17) );
SQL" COMMIT;

Теперь вы можете использовать XSQL-страницу, как следующий point.xsql для запроса по таблице LOCATION, используя параметр x-coord.

"xsql:query connection="demo"
xmlns:xsql="urn:oracle-xsql""
SELECT name, origin
FROM location loc
WHERE loc.origin.x = {@x-coord}
"/xsql:query"

Используя следующий URL, можно получить все значения, для которых значение параметра x-coord равно 11. http://yourmachine.com/xsql/demo/point.xsql?
x-coord=11
"ROWSET"
"ROW num="1""
"NAME"Someplace"/NAME"
"ORIGIN"
"X"11"/X"
"Y"17"/Y"
"/ORIGIN"
"/ROW"
"/ROWSET"

В предыдущем примере хорошо видно, как параметры X и Y столбца ORIGIN, имеющего тип данных POINT, автоматически превращаются в элементы "X" и "Y" XML-файла.

Поддержка тегов XSLT в XSQL

XSQL-страницы Oracle привлекают тем, что позволяют собирать динамические XML-таблицы, основанные на одном или более параметрических SQL- запросах. Процессор, используя XSLT– трансформер для страниц, выводит результат в любом желаемом формате XML, HTML или текстовом. Тем не менее, можно использовать XSLT для формирования XML-страниц. Например, можно использовать XSLT для исполнения SQL запросов c условиями заданными тегами "xsl:choose" или "xsl:if". Следующий пример показывает как использовать тег "xsl:if" для нахождения полной или детальной информации в списке книг:

"?xml version="1.0"?"
"xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"
xmlns:xsl="http://www.w3.org/1999/XSL /Transform""
"xsl:if test="$detail = 'yes'""
SELECT * FROM scott.BookList
"/xsl:if"
"xsl:if test="$detail = 'no'""
SELECT Title, Authorname FROM scott.BookList"/xsql:query"
"/xsl:if"
"/xsql:query"




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Базы Данных / Oracle /

Как взломать парольную защиту Oracle или как ее обойти
07-03-2010   

В статье рассматриваются некоторые собенности парольной защиты Oracle, способствующие несанкционированному проникновению в БД и меры по снижению риска подобного проникновения... подробнее

Кол. просмотров: общее - 3691 сегодня - 2

Размышления об Oracle
07-03-2010   

Я не понимаю, это у Оракла такая политика что ли? Почему, даже казуальные продукты этой компании могут работать лишь при условии создания им идеальных условий. Возьмем например, Oracle 10XE - бесплатный учебный вариант их монстра 10g. Казалось бы: продукт предназначен для бегиннеров: студентов и джуниор девов, которые только начинают изучать платформу. И по идее, он должен быть идеально отлажен по двум причинам... подробнее

Кол. просмотров: общее - 3029 сегодня - 0

Переход с MySQL на PostgreSQL: аналог mysql_insert_id()
07-03-2010   
Кол. просмотров: общее - 3110 сегодня - 0

Наиболее популярные версии Oracle на сегодня
03-03-2010   

К сожалению, нельзя точно посчитать, какое кол-во инсталляций СУБД Oracle в мире, какой версии и на каких платформах. Существуют лишь различные приближенные оценки. Одна из таких методик подсчета - по кол-ву открытых service requestах (SR) на metalink.oracle.com... подробнее

Кол. просмотров: общее - 2947 сегодня - 0

Таблицы только для чтения в Oracle 11g Release 1
09-04-2009   

В предыдущих версиях Oracle, сделать таблицу только для чтения, для других пользователей можно было дав объектные привелегии SELECT пользователю. Но для самого владельца таблица оставалась доступной для записи. Oracle 11g позволяет создавать таблицы которые помечаются только для чтения, используя команду ALTER TABLE... подробнее

Кол. просмотров: общее - 3111 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects