XSQL
Szczawik
Czym jest XSQL?
XSQL jest, zgodnym ze standardem [[XML]], zapisem zapytań [[SQL]] i zwracanych przez nie wyników.Wyniki zwracane są formowane do postaci elementów XML, dzięki czemu - z punktu widzenia warstwy aplikacji - nie jest ważne źródło danych, a jedynie ich forma i dynamiczny sposób generowania.
Na ogół XSQL jest klasyfikowany jako język klasy server-side, ponieważ wymaga dodatkowego parsera (przykładowo dostępnego w ramach OC4J - Oracle Container for Java). XSQL stanowi środkową warstwę w modelu aplikacji trójwarstwowej. Bazując na określonej bazie danych (najczęściej Oracle), udostępnia określone funkcjonalności warstwie aplikacji (na przykład przeglądarce internetowej w modelu cienki klient).
Zgodność budowy dokumentu określona jest za pomocą wzorca DTD.
Przykładowym środowiskiem wspierającym tworzenie dokumentów XSQL jest Oracle JDeveloper, dostępny bezpłatnie na stronie producenta.
Przykładowy dokument XSQL
<?xml version = '1.0' encoding = 'UTF-8'?>
<?xml-stylesheet type="text/xsl" href="index.xsl" ?>
<page xmlns:xsql="urn:oracle-xsql" connection="jdbc/DBConnection1DS">
<xsql:include-request-params/>
<xsql:if-param name="name" exists="yes">
<xsql:if-param name="surname" exists="yes">
<xsql:dml>
INSERT INTO contacts VALUES(contacts_id_seq.nextval, '{@name}', '{@surname}')
</xsql:dml>
</xsql:if-param>
</xsql:if-param>
<xsql:if-param name="del" exists="yes">
<xsql:dml>
DELETE FROM contacts WHERE id='{@del}'
</xsql:dml>
</xsql:if-param>
<contacts>
<xsql:query max-rows="-1" null-indicator="no" tag-case="lower">
SELECT id, name||' '||surname AS name FROM contacts ORDER BY name
</xsql:query>
</contacts>
</page>
Jeśli plik XSL nie jest dostępny lub zadeklarowany, zwracany rezultat może mieć formę następującą:
<?xml version = '1.0' encoding = 'UTF-8'?>
<?xml-stylesheet type="text/xsl" href="index.xsl" ?>
<page>
<request>
<parameters/>
<session/>
<cookies/>
</request>
<contacts>
<rowset>
<row num="1">
<id>1</id>
<name>Jan Kowalski</name>
</row>
<row num="2">
<id>2</id>
<name>Adam Nowakowski</name>
</row>
</rowset>
</contacts>
</page>
Plik XSL pozwala przetransformować zwracane wyniki do innej formy, na przykład do postaci XHTML, dzięki czemu możliwe jest zbudowanie w pełni funkcjonalnej aplikacji w oparciu o sam format XSQL. Dane przesyłane przez formularze metodami GET, POST oraz zmienne sesji oraz ciasteczek dostępne są w postaci zmiennych, poprzedzonych znakiem @ (w powyższym przykładzie {@name}, {@surname} oraz {@del}).
Jeśli zapytanie zawiera znaki sterujące dla XML: <
oraz >
, powinno zostać zamienione na encje >
oraz <
albo zagnieżdżone jako sekcja CDATA:
<![CDATA[
ZAPYTANIE
]]>
Zapytania nie powinny być zakończone średnikiem.