Top Banner
Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig
32

Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Apr 05, 2015

Download

Documents

Swanhilda Katt
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Oracle – XSQL in der Anwendung

SIG Development (Tools) Oracle & XMLKassel, 04.06.2002

Thomas Matzke, HTWK Leipzig

Page 2: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Inhalt

• Vorstellung von PLANet

• Kurze Einführung der XSQL – Technologie

• Was wird bei PLANet verwendet

•Erklärung der einzelnen Techniken

Page 3: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Vorstellung von PLANet

• Datenbankbasierte Planung von Lehrveranstaltungen als Intranet-Lösung– Planer – Professoren und Dozenten

• Erzeugung von Listen– Stundenblatt– Dozentenblatt– Matrikelübersicht

• Auswertung und Statistiken• Flexible Darstellung: HTML, PDF, Graphik, Excel ...

Page 4: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Browser

Servlet-Engine+Server

Request an Server

DBOracle-

Über XSQL-SkriptQueries auf DB

Rückgabe einesResult-Sets

<?xml ver.. <rowset> <row> .... </row>

XML-Generierungaus Result-Set

<html> <body>

HTML

PDF

108

9

SVG

mit XSL-StylesheetTransformation in

JDBC

XSQL-Technologie

Page 5: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

XSQL-Technologie

Komponenten

• Datenbankserver: Oracle 8.1.6 i / 9.0.1.1.1i - Tablespace auf Oracle 8 in UTF-8 - Tablespace auf Oracle 9 in ISO-8859-1

• Web-Server: Tomcat 3.3 beta http://jakarta.apache.org

• XSQL-Servlet aus XDK 9.0.2.0.0D

Page 6: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

XSQL-Technologie

Aufbau eines XSQL-Skripts

<?xml version = "1.0" encoding = "iso-8859-1"><?xml-stylesheet type="text/xsl" href="uebersichthtml.xsl"?> <datapage connection="xml" xmlns:xsql="urn:oracle-xsql">

<xsql:query rowset-element="FBIMN" row-element="DOZENT">select name,vorname,email,telefon from dozent</xsql:query>

</datapage>

XML-Header für Deutschland

Elemente-Bezeichnungfür XML

Query

Alias für DB-Verbindung (xsqlconfig.jar)

Page 7: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

XSQL-Technologie

Page 8: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Was wird bei PLANet verwendet

• Single / Multiple Parameters

• Insert, Update, Delete - mit <xsql:xxxxx-request>

- als PL/SQL-Prozedur- als DML-Statement

• Session – Handling über <xsql:set-session-param>

• Nested Cursor

• FO

Page 9: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Insert mit <xsql:insert-request />

Pflicht-Parameter

• table - Tabellenbezeichnung

• transform - Transformationsskript mit Spaltennamen - ermöglicht einfügen mehrerer Datensätze mit einem Aufruf - kann URL oder File sein

Einsatzmöglichkeiten

• bei Formularen

Page 10: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Insert mit <xsql:insert-request />

Aufbau des Transformsheets

<?xml version = "1.0" encoding="iso-8859-1"?><ROWSET xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> <xsl:for-each select="request/parameters">

<ROW> <TITEL><xsl:value-of select="titel"/></TITEL> <VORNAME><xsl:value-of select="vorname"/></VORNAME><NAME><xsl:value-of select="name"/></NAME><FBEREICH><xsl:value-of select="fbereich"/></FBEREICH>……<ADRESSE><xsl:value-of select="adresse"/></ADRESSE></ROW> </xsl:for-each></ROWSET>

SpaltenbezeichnungenGROSS schreiben

Elemente sindSpaltenbezeichnung

Page 11: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Update mit <xsql:update-request />

Pflicht-Parameter

• table• transform

• key-columns - Angabe der Spaltennamen mit denen Datensatz identifiziert werden soll - Angabe mehrere Spalten möglich, Trennung durch Komma

Page 12: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Delete mit <xsql:delete-request />

Pflicht-Parameter

• table• transform

• key-columns - Angabe der Spaltennamen mit denen Datensatz identifiziert werden soll - Angabe mehrere Spalten möglich, Trennung durch Komma

Page 13: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Single / Multiple Parameter

• Parameter aus Formularen bzw. Session-Managment

• Parameter-Anzeige mit <xsql:include-request-params />

• Darstellung in XSQL:

<datapage><rowset> ...<!--aus Query--></rowset><request>

<parameters>... </parameters><session>... </session><cookies>... </cookies>

</request></datapage>

Page 14: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Zugriff auf Single / Multiple Parameter im XSQL-Skript

• Zugriff auf Single-Parameter mit {@name}

• keine Pfadangaben, deswegen dürfen Session-Parameter und Request-Parameter nicht die gleiche Bezeichnung haben

• falls doch, hat Session-Parameter Vorrang

• Zugriff auf alle Multiple-Parameters nicht möglich

• nur erster Parameter wird erfasst

Page 15: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Single / Multiple Parameters

- kann aus Textfeld, Listbox oder Radio-Button sein

<request> <parameters> <fachid>430</fachid> </parameters></request>

Erklärung der einzelnen Techniken

Page 16: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Single / Multiple Parameters

- kann durch mehrere Checkboxes,Textfelder mit gleichem Namen entstehen

<request> <parameters> <row> <fachid>430 </fachid> </row> <row> <fachid>429</fachid> </row> <row>... </row> </parameters></request>

Erklärung der einzelnen Techniken

Page 17: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Insert, Update, Delete mit <xsql:dml>

• Element besteht aus SQL-Statement

• Statement darf nicht mit Semikolon abgeschlossen werden

• geeignet, wenn nur Single-Parameters verarbeitet werden

• eignet sich auch zum Ausführen von Programmblöcken

• Statements müssen mit 'begin‘ und 'end‘ eingeschlossen werden

• Nachteil bei Blöcken ist nicht eindeutige Fehlerausgabe

Page 18: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Insert, Update, Delete mit <xsql:include-owa>

• Statements müssen in PL/SQL-Prozedur stehen

• Aufruf erfolgt durch Prozedur-Name

• hinter Prozedur-Name muss Semikolon stehen

• gut geeignet, wenn Parameter noch überprüft werden müssen

Page 19: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

<xsql:insert-request> mit Single/Multiple-Parameters

• Problem: unterschiedliche Parameterdarstellung für Single/Multiple-Parameters

<request> <parameters> <fachid>430</fachid> </parameters></request>

<request> <parameters> <row> <fachid>430 </fachid> </row> <row> <fachid>429</fachid> </row></parameters></request>

SINGLE MULTIPLE

Page 20: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

• Unterscheidung zwischen Single und Multiple-Parameters muss im Transform-Sheet implementiert werden

• Einsatz von <xsl:if> im Transformations-Stylesheet

• funktioniert auch bei Delete und Update

<xsql:insert-request> mit Single/Multiple-Parameters

Page 21: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

<?xml version = "1.0" encoding="iso-8859-1"?><ROWSET xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> <xsl:variable name="checkeiner" select="request/parameters/fachid"/> <xsl:variable name="checkalle" select="request/parameters/row[last()]/fachid"/>

<xsl:if test="$checkeiner != 0 "> <ROW> <FACHID><xsl:value-of select="request/parameters/dozid"/></FACHID></ROW></xsl:if>

<xsl:if test="$checkalle != 0"> <xsl:for-each select="request/parameters/row"><ROW> <FACHID><xsl:value-of select="dozid"/></FACHID> </ROW></xsl:for-each></xsl:if> </ROWSET>

Erklärung der einzelnen Techniken

Page 22: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

<xsql:query> mit Single/Multiple-Parameters

• Query mit Multiple-Parametern kann bei Formularen mit mehreren gleichnamigen Checkboxes auftreten, wenn man z.B. Detailangaben über mehrere Sachen gleichzeitig haben möchte

• Art des Zugriffes auf Parameter mit {@variable} läßt Multiple-Parameter nicht zu

• Lösung: Einsatz von Dummy-Tabellen

• Übergebene Parameter werden vor Ausführung der Query mit <xsql:insert-request> in Dummy-Tabelle gespeichert

• Parameter können dann mit Joins über Dummy-Tabelle verarbeitet werden

Page 23: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Session-Handling

• Speicherung der Session-Parameter in

<datapage><rowset> ...<!--aus Query--></rowset><request>

<parameters>... </parameters><session>... </session><cookies>... </cookies>

</request></datapage>

Page 24: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Session-Handling

• Sessionparameter müssen nur einmal gespeichert werden

• Sessionparameter mit gleichem Namen wie Requestparameter haben Vorrang im XSQL-Skript

• Sessionparameter lassen sich überschreiben

• Setzen von Parametern mit <xsql:set-session-param name="Wert">

• Wertzuweisung durch Attribut 'value' oder durch Query

Page 25: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Session-Handling

• Zuweisung mit 'value', wenn Request-Parameter als Session-Parameter gesetzt

<xsql:set-session-param name="logged" value="{@login}"/>

• Zuweisung mit Query, wenn Parameter abhängig vom Request-Parameter aus der Datenbank bestimmt werden

<xsql:set-session-param name="logid">select dozid from dozent where name=(select name from nutzer where login='{@login}')</xsql:set-session-param>

Page 26: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Nested Cursor

• kann nur in <xsql:query> erzeugt werden

• aus Query wird eine XML-typische Hierarchie erzeugt

• macht Gruppierung nach Werten einfacher

• läßt sich beliebig tief schachteln

• Grenze höchstens durch Rekursionstiefe von XSQL-Servlet

• Beispiel: Hierarchie Fachbereich, Studiengang, Semester, Fach

• Tiefe = 4

Page 27: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Nested Cursor

• Gruppierung der Elementen durch "group by" in Query

• Cursor dürfen aber hinter "group by" nicht aufgeführt werden

• Cursor bekommen eine Bezeichnung für späteren Zugriff in XSL

•Beispiel:

select f.fbereich,cursor (select fa.studiengang from faecher fa wherefa.fbereich=f.fbereich group by fa.studiengang) as studgangfrom faecher f group by f.fbereich

Page 28: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Probleme bei Nested Cursor

• Nullwertbehandlung (leere Unterbäume) - bei normalen Querys Angabe von Alternativ-Querys

<xsql:query>select fachid from faecher<xsql:no-rows-query rowset-element="FEHLER">select 'vorlesung' from dual</xsql:no-rows-query></xsql:query>

- bei Cursor Alternativ-Query nicht möglich

- Möglichkeit: Weiterer Cursor auf gleicher Ebene, der eine Count-Query enthält, der die Result-Zeilen zählt

Page 29: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

FO - Formatting Objects

• Ausgabe von PDF über XSQL möglich

• Voraussetzung: - FO-Bibliotheken (fop.jar) http://xml.apache.org/fop

- xsqlserializers.jar

• Zugriff auf Processing Engine durch Zusatz "serializer=FOP" in Stylesheet-Definition

• zusätzliche Angabe des FO-Namespace in Stylesheet

Page 30: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:version="1.0">

Erklärung der einzelnen Techniken

FO - Formatting Objects

• Angabe des Namespace von XSLT-Engine nötig, da sonst nicht mit Templates gearbeitet werden kann

• Seitenrumpf sieht dann wie folgt aus:

Page 31: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

<?xml version="1.0" encoding="iso-8859-1"?><xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:version="1.0">

<xsl:template match="/"><fo:root> …<!-- FO-Tags--></fo:root></xsl:template></xsl:stylesheet>

Erklärung der einzelnen Techniken

FO - Formatting Objects

• FOP-Beispiel in XSQL-Beispielen von ORACLE

Page 32: Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, 04.06.2002 Thomas Matzke, HTWK Leipzig.

Erklärung der einzelnen Techniken

Generelle Probleme

• Umlaute

• Nullwertbehandlung in Querys - Überprüfung ob Element leer, nicht möglich - siehe Überprüfung bei Multiple Parameters

• Speicherbegrenzung in FOP