XSQL Сервлет (XSQL Servlet)

XSQL Servlet - инструмент, который обрабатывает SQL запросы и выдает результат как XML. Данный процесс реализован как Java сервлет и на вход принимает файл XML, содержащий необходимые запросы SQL. Он использует XML Parser для Java и утилиту XML SQL.

Данный сервлет может выполняться на любом вебсервере, поддерживающим Java сервлеты. Следующий рисунок показывает, как происходит обмен данными между пользователем и сервлетом. Последовательность операций следующая:

1. Пользователь в браузере вводит URL, который интерпретируется и передается XSQL сервлету посредством Java вебсервера. URL содержит название необходимого XSQL файла (.xsql) и, если необходимо, переменные, такие как значения параметров или названия таблицы стилей XSL. В качестве альтернативного варианта может использоваться вызов XSQL сервлета из командной строки, в обход браузера и сервера Java.

2. Сервлет передает XSQL файл Java XML анализатору (parser), который производит синтаксический разбор XML и создает API для доступа к содержанию XML.

3. Страничный процессор сервлета использует API, для передачи XML параметров и операторов SQL (расположенных внутри <query></query> контейнера) утилите XML SQL. Страничный процессор также передает любые XSL инструкции на XSLT процессор.

4. Утилита XML SQL отправляет запрос соответствующей базе данных Oracle, которая возвращает результаты запроса утилите.

5. Утилита XML SQL возвращает результаты запроса XSLT процессору в виде XML текста. Результат встроен в XML файл в том же самом месте, где располагался контейнер <query>.

6. Если необходимо, результаты запроса и любые другие данные XML преобразуются XSLT Процессором, используя установленную XSL таблицу стилей. Данные могут быть преобразованы в HTML или любой другой формат, определенный таблицей стилей. XSLT Процессор может выборочно применять различные таблицы стилей, основанные на типе клиента, который сделал первоначальный запрос. Эта информация может быть получена на основе переменной HTTP_USER_AGENT, передаваемой посредством протокола HTTP.

7. XSLT Процессор передает законченный документ назад на клиентский браузер для представления пользователю.

 

Пример: XSQL Servlet

Следующий пример - простой XSQL файл, который делает запрос к таблице EMP. Заданное по умолчанию поведение запроса должно возвратить все строки служащих в таблице. Если необходимо, пользователь может конкретизировать исследование, прибавляя параметр find= к URL при запросе XSQL сервлета из браузера. Например, если определить символ 'T', в качестве параметра поиска, запрос возвратит только те строки, чей ENAME содержит символ T. Также, Вы можете сортировать возвращаемые строки, определяя в URL параметр sort=. Например, определяя EMPNO, результат будет отсортирован по номерам служащих.

 

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="rowcol.xsl"?> <query connection="demo" find="%" sort="ENAME" null-indicator="yes" > SELECT * FROM EMP WHERE ENAME LIKE '%{@find}%' ORDER BY {@sort} </query>

 

XSQL файл также определяет, как возвращаемый результат должен быть обработан, используя XSL таблицу стилей rowcol.xsl. Вот как выглядит примерная таблица стилей.

 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body class="page"> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="ROWSET"> <center> <table border="0" cellpadding="4"> <xsl:choose> <xsl:when test="ROW"> <!-- present headings: row[1] columns +--> <xsl:for-each select="ROW[1]"> <tr> <xsl:for-each select="*"> <th align="left"> <xsl:attribute name="class"> </xsl:attribute> <xsl:value-of select="name(.)"/> </th> </xsl:for-each> </tr> </xsl:for-each> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <tr><td>No Matches</td></tr> </xsl:otherwise> </xsl:choose> </table> </center> </xsl:template> <!-- present rows and columns +--> <xsl:template match="ROW"> <tr> <xsl:attribute name="class"> </xsl:attribute> <xsl:for-each select="*"> <td> <xsl:attribute name="class"> </xsl:attribute> <xsl:apply-templates select='.'/> </td> </xsl:for-each> </tr> </xsl:template></xsl:stylesheet>

Рисунок ниже показывает HTML страницу, которая была сгенерирована XSQL Servlet с использованием XSQL файла emp.xsql и таблицы стилей rowcol.xsl. Этот servlet был вызван, используя URL: http://localhost/xsql/demo/emp.xsql?find=T&sort=EMPNO

 

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00.0 1250 1400 30
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00.0 3000

 

20
73369 SMITH CLERK 7902 1980-12-17 00:00:00.0 800 20
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00.0 1500 0 30

 

Источники:

 

http://otn.orcacle.com/tech/xml/htdocs/about_oracle_xml_products.html

http://otn.orcacle.com/tech/xml/relational/paper.html

http://otn.orcacle.com/tech/xml/xdk_sample/xdksample_093001.html

 

 


Замечания:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: