Страница 3 из 3 Преобразование 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. https://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="https://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" |