Oracle und XML: Ein Überblick

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Object Relational Mapping
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
MySQL.
Datenbankzugriff im WWW (Kommerzielle Systeme)
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
XML - Aufbau und Struktur - mit Einsatz im B2B
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SQL als Abfragesprache
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Entwicklung von XML-Anwendungen mit ORACLE XSU Oberseminar Datenbanken Andreas Rebs, 01INM.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
XML-Unterstützung in Oracle. © Prof. T. Kudraß, HTWK Leipzig 2 2 Überblick XML Architekturformen und Speicherungsarten XML Schema und Mapping Laden von.
Speicherung von XML- Dokumenten als Large Objects.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
XML und Datenbanken. © Prof. T. Kudraß, HTWK Leipzig Motivation XML-Dokumente können für sehr verschiedene Anwendungen eingesetzt werden Aussehen der.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Einführung MySQL mit PHP
JDBC: JAVA Database Connectivity
objekt-relationale Datenbanken
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Architektur und Funktionalitäten der Oracle XML DB - ein Überblick mit ausgewählten praktischen Beispielen - im Rahmen des 17. Workshop Grundlagen von.
Wir bauen uns eine Webapplikation!
Erstellen einer Webseitenstatistik mithilfe eines OLAP-Servers
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
HORIZONT 1 XINFO ® Das IT - Informationssystem Eclipse Plugin HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
XML und Datenbanken © 2006 Markus Röder
XML in relationalen Datenbanken
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Datenbankanbindung mit
XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne XML One 2000.
Structured Query Language
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Datenbanken im Web 1.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
PHPmyadmin Maya Kindler 6c.
Datenbanken abfragen mit SQL
Deutsche Post ITSolutions GmbH Benutzung von XML in Oracle 10g Richard Dörfler, DOAG - Trier,
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
Forms 9i - New FeaturesSeite 1 Forms 9i New Features Gerd Volberg OPITZ CONSULTING GmbH.
© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development.
1 © Thales IS GmbH 2002 Thales Information Systems GmbH Im Team für Ihren Erfolg DOAG - Regionaltreffen Hannover Donnerstag, Oracle 9i XML Datenbank.
© 2003, Rudolf Jansen Java in der Datenbank Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG SIG Development,
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Thomas Tretter, 10. Februar 2004Oracle Label Security1 Oracle Label Security (fine grained access control) 10. Februar 2004.
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
Niels Schmahljohann Systemberater STCC ORACLE Deutschland GmbH.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
ORACLE XE Bernd Tuba, Trier, Deutsche Post ITSolutions GmbH.
Abfragesprache SQL in ORACLE
Beispiele zur Datenänderung
Vorlesung #8 SQL (Teil 5).
Create Table, Rechte und Rollen
Installation und Beispiele
Betriebsmittelsuche M.Hoppe
Von Wietlisbach, Lenzin und Winter
Da·ten·bank /Dátenbank/ Substantiv, feminin [die]
Präsentation von Darleen und Michèle
Von Wietlisbach, Lenzin und Winter
ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB
(Structured Query Language)
 Präsentation transkript:

Oracle und XML: Ein Überblick Rudolf Jansen Freiberuflicher Entwickler und Autor info@rudolf-jansen.de http://www.rudolf-jansen.de DOAG Regionaltreffen NRW, 10.7.2003 © 2003, Rudolf Jansen

Agenda Oracle XML-DB Generierung von XML XML-Repository Einleitung Oracle XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Zusammenfassung © 2003, Rudolf Jansen

Einleitung Warum XML-Integration? - Zusammenfügen von zwei Standards: a) relationale Datenbanken b) XML als Datenaustauschformat - Konkurrenz durch reine XML-Datenbanken? Bisherige Integrationsansätze Speicherung von XML-Dokumenten als CLOB (Oracle 8i) Vorteil: + Zentraler Speicherort für alle Daten (XML und Nicht-XML) Nachteile: - Zugriff auf XML-Dokument nur als Ganzes - Kombination mit relationalen Daten schwierig © 2003, Rudolf Jansen

Einleitung - XML DB Externe Tools Browser SQL-Net-Zugriff http JDBC-Applikation Browser SQL-Net-Zugriff http ftp WebDAV Oracle 9i Rel.2 -Datenbank XML-DB XML-Repository XMLType-Tabellen © 2003, Rudolf Jansen

XML DB - Datentyp XMLType XMLType als Spaltentyp create table person ( prs_nr number, prs_data XMLTYPE ); XMLType als Tabellentyp ( ab 9i Rel.2 ) CREATE TABLE person_xml of XMLTYPE; © 2003, Rudolf Jansen

XML DB - Datentyp XMLType INSERT INTO person_xml VALUES (XMLType(' <Person> <Prs_Id>1</Prs_Id> <Prs_Vorname>Willi</Prs_Vorname> <Prs_Name>Schmitz</Prs_Name> <Prs_Adresse> <Adr_Strasse>Hauptstrasse</Adr_Str asse> <Adr_Hausnr>47</Adr_Hausnr> <Adr_Plz>12345</Adr_Plz> <Adr_Ort>Entenhausen</Adr_Ort> </Prs_Adresse> </Person> ')); © 2003, Rudolf Jansen

XML DB - Datentyp XMLType select p.prs_data.getClobVal() from person p; P.PRS_DATA.GETCLOBVAL() -------------------------------------------------------------------------------- <Prs_Data> <Prs_Vorname>Willi</Prs_Vorname> <Prs_Name>Schmitz</Prs_Name> <Prs_Adresse> <Adr_Strasse>Hauptstrasse</Adr_Strasse> <Adr_Hausnr>47</Adr_Hausnr> <Adr_Plz>12345</Adr_Plz> <Adr_Ort>Entenhausen</Adr_Ort> </Prs_Adresse> </Prs_Data> © 2003, Rudolf Jansen

XML DB - Datentyp XMLType UPDATE von skalaren XML-Elementen: update person p set prs_data = UPDATEXML(prs_data, '/Prs_Data/Prs_Adresse/Adr_Plz/text()', '55555', '/Prs_Data/Prs_Adresse/Adr_Ort/text()', 'IBM-Stadt') where prs_nr=2; © 2003, Rudolf Jansen

XML DB - Datentyp XMLType UPDATE von Teilbäumen: update person_xml p set value(p) = UPDATEXML(value(p),'/Person/Prs_Adresse', XMLTYPE(' <Prs_Adresse> <Adr_Strasse>DB2-Strasse</Adr_Strasse> <Adr_Hausnr>2</Adr_Hausnr> <Adr_Plz>55555</Adr_Plz> <Adr_Ort>IBM-Stadt</Adr_Ort> </Prs_Adresse> ')); © 2003, Rudolf Jansen

XML DB - XPath Standard zur Navigation durch XML-Dokumente existsNode() select count(*) from person_xml p where existsNode( value(p), '/Person/Prs_Adresse/Adr_Plz')=1; extractValue(): Zugriff auf skalare Einträge in einer XMLType-Spalte select extractValue( value(p), '/Person/Prs_Id') as id_with_plz from person_xml p where existsNode( value(p), '/Person/Prs_Adresse/Adr_Plz')=1 © 2003, Rudolf Jansen

XML DB - XPath extract (): Zugriff auf Teilbaum einer XMLType-Spalte select extract( value(p),'/Person/Prs_Adresse[@Adr_Id="1"]') as erste_post_adresse from person_xml p where existsNode( value(p), '/Person/Prs_Adresse/Adr_Plz')=1 ERSTE_POST_ADRESSE ----------------------------------------------------- <Prs_Adresse Adr_Id="1"> <Adr_Strasse>Hauptstrasse</Adr_Strasse> <Adr_Hausnr>47</Adr_Hausnr> <Adr_Plz>12345</Adr_Plz> <Adr_Ort>Entenhausen</Adr_Ort> </Prs_Adresse> © 2003, Rudolf Jansen

XML DB - Datentyp XMLType Speicheroptionen Unstrukturiert als LOB + Zugriff auf Gesamtdokument performant + Einfügen von XML mit variabler Struktur möglich - SELECT und UPDATE von einzelnen Elementen aufwendig Strukturiert über objektrelationale Tabellen Voraussetzung: XML-Schema-Definition -> Definition von SQL-Objekten, die dem XML-Schema entsprechen + Zugriff auf einzelne Elemente schneller + geringerer Speicherbedarf (Tagnamen brauchen nicht gespeichert werden) © 2003, Rudolf Jansen

XML DB - XML-Schema W3C-Standard zur Festlegung von Inhalt und Struktur von XML-Dokumenten Voraussetzung für strukturierte Speicherung Vorteil: Struktur der XML-Dokumente, die in eine Spalte eingetragen werden sollen, ist bereits bekannt -> passende Speicherobjekte können im voraus angelegt werden Bei Eintrag von Daten, die auf dem XML-Schema beruhen: - Aufsplitten der Daten in einzelne Bestandteile - (objekt-)relationale Speicherung dieser Einzelbestandteile - spätere UPDATEs nicht auf dem Gesamtdokument, sondern nur in den betroffenen Bestandteilen © 2003, Rudolf Jansen

XML DB - XML-Schema 1.Schritt: Registrieren einer XML-Schema-Definition: DECLARE xmlschema_doc varchar2(1000) := '<schema targetNamespace=http://www.xyz.de/person.xsd ...> <complexType name="PersonType"> <sequence> <element name="Prs_Id" type="decimal"/> ... <element name="Prs_Adresse"> <complexType> <sequence> <element name="Adr_Strasse" type="string"/> ... <element name="Adr_Ort" type="string"/> </sequence> </complexType> </element> </sequence> </complexType> <element name="Person" type="adr:PersonType"/> </schema>'; BEGIN DBMS_XMLSCHEMA.REGISTERSCHEMA('http://www.xyz.de/person.xsd', xmlschema_doc); END; © 2003, Rudolf Jansen

XML DB - XML-Schema 2.Schritt: (Automatische) Erzeugung passender Speicherobjekte create type PersonType_t ( Prs_Id NUMBER, Prs_Vorname VARCHAR2(4000), Prs_Nachname VARCHAR2(4000), Prs_Adresse TEST.Prs_Adresse_t ); create type Prs_Adresse_t ( Adr_Strasse VARCHAR2(4000), Adr_Hausnr NUMBER, Adr_Plz NUMBER, Adr_Ort VARCHAR2(4000) ); © 2003, Rudolf Jansen

XML DB - XML-Schema 3.Schritt: XML-Schema-Angabe bei Tabellendefinition create table person_mit_xml_schema_spalte( prs_id number, prs_data XMLType ) XMLType column prs_data XMLSCHEMA http://www.xyz.de/person.xsd ELEMENT "Person"; desc person_mit_xml_schema_spalte; Name Null? Typ --------- -------- -------------------------------- PRS_ID NUMBER PRS_DATA SYS.XMLTYPE(XMLSchema http://www.xyz.de/person.xsd Element "Person") STORAGE Object-relational TYPE "PersonType_T" © 2003, Rudolf Jansen

Agenda XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Einleitung XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Zusammenfassung © 2003, Rudolf Jansen

Generierung von XML Aufgabenstellung: Generierung eines XML-Dokumentes aus relational abgespeicherten Daten Lösungsmöglichkeiten: Oracle-eigene SQL-Funktionen PL/SQL-Package DBMS_XMLGEN SQLX-Funktionen Datentyp UriType © 2003, Rudolf Jansen

Generierung von XML Oracle-eigene SQL-Funktionen SYS_XMLGEN() SYS_XMLAGG() Beispiel: create table person_rel( prs_id number, prs_vorname varchar2(20), prs_nachname varchar2(20) ); © 2003, Rudolf Jansen

Generierung von XML SYS_XMLGEN()-Funktion operiert auf Zeilenebene, also ein Rückgabewert pro Ergebniszeile select sys_xmlgen(prs_id) from person_rel; SYS_XMLGEN(PRS_ID) ---------------------------------- <PRS_ID>1</PRS_ID> <PRS_ID>2</PRS_ID> © 2003, Rudolf Jansen

Generierung von XML SYS_XMLGEN()-Funktion Umwandlung von benutzerdefinierten Datentypen create or replace type telefon_t as object ( vorwahl varchar2(6), rufnr number(10) ); create or replace type telefon_list as VARRAY(2) OF telefon_t; create table adresse_rel( adr_id number, ... adr_telefon telefon_list ); © 2003, Rudolf Jansen

Generierung von XML SYS_XMLGEN()-Funktion select sys_xmlgen(adr_telefon) from adresse_rel; SYS_XMLGEN(ADR_TELEFON) ------------------------------- <ADR_TELEFON> <TELEFON_T> <VORWAHL>089</VORWAHL> <RUFNR>1111</RUFNR> </TELEFON_T> <TELEFON_T> <VORWAHL>0172</VORWAHL> <RUFNR>9999999</RUFNR> </TELEFON_T> </ADR_TELEFON> ... © 2003, Rudolf Jansen

Generierung von XML SYS_XMLAGG()-Funktion operiert nicht auf Zeilenebene, sondern auf der gesamten Ergebnismenge erzeugt ein XML-Dokument mit einem XML-Element pro Zeile Beispiel: select sys_xmlagg( sys_xmlgen(adr_telefon)) from adresse_rel; © 2003, Rudolf Jansen

Generierung von XML DBMS_XMLGEN-Package: Anforderungen z.B. in Webanwendungen: Festlegung der Anzahl Datensätze pro Seite mehrmaliges Durchlaufen der Ergebnismenge (Scrollen) Konfiguration der XML-Dokumente (explizite Angabe von Tagnamen) SQL-Funktionen SYS_XMLGEN und SYS_XMLAGG sind dazu nicht flexibel genug © 2003, Rudolf Jansen

Generierung von XML DBMS_XMLGEN-Package: declare queryContext DBMS_XMLGEN.ctxHandle; xmlResult XMLType; zaehler number := 1; begin -- Context mit Select-Abfrage initialisieren queryContext := DBMS_XMLGEN.newContext( 'select adr_id, adr_strasse, adr_plz, adr_ort from adresse_rel'); -- Anzahl der Zeilen pro Zugriff setzen DBMS_XMLGEN.setMaxRows(queryContext, 2); -- Tagnamen setzen DBMS_XMLGEN.setRowTag(queryContext,'PRS_ADRESSE'); DBMS_XMLGEN.setRowSetTag(queryContext, 'ADRESSENLISTE'); © 2003, Rudolf Jansen

Generierung von XML DBMS_XMLGEN-Package: -- Schleife für die Zugriffe (2 Zeilen pro Schleifendurchlauf) loop xmlResult := DBMS_XMLGEN.getXMLType(queryContext); -- Schleifenende, wenn alle Zeilen der Select-Abfrage bearbeitet wurden exit when DBMS_XMLGEN.getNumRowsProcessed(queryContext) = 0; -- Ergebnis verarbeiten insert into query_Results values (zaehler, xmlResult); zaehler := zaehler + 1; end loop; -- Context schließen DBMS_XMLGEN.closeContext(queryContext); end; / © 2003, Rudolf Jansen

Generierung von XML SQLX-Standard: SQLX (SQL/XML): Versuch, die Schnittstelle zwischen SQL und XML zu standardisieren SQLX-Standard ist noch in der Entwicklung Oracle 9i Rel. 2 bietet erste Auswahl von SQLX-Funktionen: - XMLElement() - XMLForest() - XMLAgg() - XMLConcat() Ähnlich den Oracle-eigenen Funktionen SYS_XMLGEN() und SYS_XMLAGG() © 2003, Rudolf Jansen

Agenda XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Einleitung XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Zusammenfassung © 2003, Rudolf Jansen

XML-Repository Ziel: „Einsatz der Datenbank als Dateisystem“ Zugriff über FTP, HTTP, WebDAV (Web Distributed Authoring and Versioning) © 2003, Rudolf Jansen

XML-Repository Installation: HTTP-Zugriff über Oracle XML DB Protokoll Server: Session-Pool für FTP-, HTTP- und WebDAV-Zugriffe © 2003, Rudolf Jansen

XML-Repository XML-Repository : Hierarchische Verzeichnisstruktur Verzeichnisse enthalten Ressourcen (XMLType-Instanzen) PL/SQL-Package DBMS_XDB zum Anlegen und Verwalten von Ressourcen. Beispiele: DBMS_XDB.createfolder('/home'); DBMS_XDB.createfolder('/home/xmltest'); Ähnlichkeit zu UNIX-Dateisystemen © 2003, Rudolf Jansen

XML-Repository HTTP-Zugriff auf neu angelegten Ordner über Webbrowser: © 2003, Rudolf Jansen

XML-Repository Anlegen von Inhalten: DECLARE retValue BOOLEAN; xmlDoc SYS.XMLType; BEGIN select SYS_XMLAGG(value(a)) into xmldoc from adressen_view a; retValue:= DBMS_XDB.createresource( '/home/xmltest/adressenliste.xml', xmldoc); commit; END; © 2003, Rudolf Jansen

XML-Repository Externe Anwendung (Explorer, Browser, FTP-Client) Http-, FTP-, WebDAV-Zugriff Oracle 9i - Datenbank XML-Repository-Ressource adressenliste.xml adressen_view XMLType-View Relationale Tabellen adresse_rel person_rel © 2003, Rudolf Jansen

XML-Repository © 2003, Rudolf Jansen

XML-Repository © 2003, Rudolf Jansen

XML-Repository Externer Eintrag von Dateien in das XML-Repository Beispiel: Datei neue_adressenliste.xml aus dem Windows-Dateisystem Eintrag per Drag&Drop in den XML-Repository-Ordner des Windows Explorers © 2003, Rudolf Jansen

XML-Repository © 2003, Rudolf Jansen

XML-Repository Weitere Funktionen (analog UNIX) Anlegen von Links DBMS_XDB.link('/home/xmltest/adressenliste.xml', '/public', 'adressenliste.xml'); Sicherheitskonzept: Rechtevergabe über Access Control Lists (ACL) Rechte pro Ressource oder auch für komplette Teilbäume XML DB Versioning: „Versionskontrolle in der Datenbank“ Verwaltung mehrerer Versionen von XML-Repository-Ressourcen derzeit noch keine Versionskontrolle von normalen relationalen Datenbankinhalten © 2003, Rudolf Jansen

Agenda XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Einleitung XML-DB Generierung von XML XML-Repository XML Developer‘s Kits Zusammenfassung © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) Sammlung von Tools für die Schnittstelle von XML und (Oracle-)Datenbank Einsatzgebiete: Anbindung von XML-Systemen an bestehende Datenbanken mit relational gespeicherten Daten Neue Projekte: lose Kopplung zwischen XML und DB Programmiersprachen: Java, C, C++, PL/SQL Einsatz mit jeder Datenbank, für die es JDBC-Treiber gibt Vorteil: Klare Trennung zwischen XML und SQL Portabilität (Datenbankwechsel) KnowHow-Trennung (XML-Entwickler und DB-Entwickler) © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XML Parser: DOM 2.0 SAX 2.0 JAXP 1.1 DTD-Validierung XML-Schema-Validierung Aufruf über Java-Klassen DOMParser bzw. SAXParser oder über Kommandozeilentool oraxml Grundlage bzw. Bestandteil der weiteren XDK-Komponenten © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XML Schema Prozessor: baut auf XML Parser auf Aufruf über DOMParser.setSchemaValidationMode() XSLT Prozessor: Formatumwandlung von XML-Dateien Vielzahl von Zielformaten: HTML, ASCII, XML, ... Aufruf über Java-Klassen XSLProcessor oder Kommandozeilentool oraxsl XML Class Generator: Automatische Generierung von Java-/C++-Klassen auf der Basis von DTD- oder XML-Schema-Definitionen Aufruf über Java-Klassen SchemaClassGenerator bzw DTDClassGenerator oder Kommandozeilentool oracg © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XML SQL Utility (XSU): Sammlung von Java-Klassen für Umwandlungen zwischen XML-Welt und Datenbank Kernfunktionalitäten: Generierung von XML-Dokumenten basierend auf SQL-Abfragen Ausführung von DML-Operationen (Insert, Update, Delete) ausgehend von einem XML-Dokument Generierung von XML-Schema-Definitionen und DTDs, die die Tabellenstruktur eines Datenbankschemas nachbilden Ausführung über Java-API PL/SQL-API Kommandozeilentool © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) Generierung von XML-Dokumenten: conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:TESTDB", user, password); OracleXMLQuery xmlQuery = new OracleXMLQuery( conn, "select * from adresse_rel"); System.out.println(" XML-Ergebnis:\n" + xmlQuery.getXMLString()); xmlQuery.close(); © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) Generierung von XML-Dokumenten: conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:TESTDB", user, password); Statement stmt = conn.createStatement(); resSet = stmt.executeQuery("select * from adresse_rel"); OracleXMLQuery xmlQuery = new OracleXMLQuery( conn, resSet); // Maximal zwei Adressen pro Ausgabe xmlQuery.setMaxRows(2); System.out.println(" Erste Seite:\n" + xmlQuery.getXMLString()); // die naechste Adresse ueberpringen xmlQuery.setSkipRows(1); System.out.println(" Zweite Seite:\n" + xmlQuery.getXMLString()); xmlQuery.close(); © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) Insert-Operationen: OracleXMLSave xmlSave = new OracleXMLSave( conn, "person_rel"); xmlSave.insertXML(xmlSave.getURL(argv[0])); xmlSave.close(); © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) Update-Operationen: OracleXMLSave xmlSave = new OracleXMLSave( conn, "person_rel"); // Schlüsselspalte(n) für den Update-Befehl festlegen String[] pkColumnNames = new String[1]; pkColumnNames[0] = "PRS_ID"; xmlSave.setKeyColumnList(pkColumnNames); xmlSave.updateXML(xmlSave.getURL(argv[0])); xmlSave.close(); © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) Update-Operationen: Input: <ROWSET> <ROW num="1"> <PRS_ID>1</PRS_ID> <PRS_NACHNAME>Schmidt</PRS_NACHNAME> </ROW> <ROW num="2"> <PRS_ID>2</PRS_ID> <PRS_VORNAME>Heinz</PRS_VORNAME> </ROW> </ROWSET> Durchgeführte UPDATE-Befehle: UPDATE person_rel SET prs_nachname=‘Schmidt‘ WHERE prs_id=1; UPDATE person_rel SET prs_vorname=‘Heinz‘ WHERE prs_id=2; © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XSQL-Servlet Web-Server HTTP XSQL-Servlet Client XMLParser SQL XML-SQL- JDBC-Datenbank HTML, XML, ... XSLT-Prozessor Utility (XSU) Stylesheets © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XSQL-Servlet Ausgangsbasis: XSQL-Page Beispiel: Datei person_select_mit_xslt.xsql <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="person_tabelle.xsl"?> <xsql:query connection="testdbconnection" xmlns:xsql="urn:oracle-xsql"> SELECT prs_id, prs_vorname, prs_nachname from person_rel </xsql:query> © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XSQL-Servlet Servlet-Engine-Konfiguration: Registrieren der Dateiendung .xsql mit XSQL-Servlet Aufruf: http://localhost:8080/xsql/person_select_mit_xslt.xsql Konsolenaufruf: java oracle.xml.xsql.XSQLCommandLine person_select_mit_xslt.xsql person_select_mit_xslt_ergebnis.html © 2003, Rudolf Jansen

XML Developer‘s Kits (XDK) XSQL-Servlet © 2003, Rudolf Jansen

Zusammenfassung Vielzahl von Integrationsmöglichkeiten Lose Kopplung (XML Developer‘s Kit) Enge Kopplung (Datentyp XMLType) Entscheidungskriterien: Bindung an DB-Hersteller kritisch? (Migrationsarbeiten) Entwickler-KnowHow (XML und/oder SQL) Zentrale Administration durch XML-Repository („Datenbank als Dateisystem“) © 2003, Rudolf Jansen

Literatur OTN-Webseiten http://otn.oracle.com Dokumentation XML Developer‘s Kits (aktuelle Version) Sourcecode-Beispiele „Oracle, Java, XML. Integration in Oracle 9i“ Rudolf Jansen Software&Support Verlag 360 Seiten ISBN 3-935042-33-7 © 2003, Rudolf Jansen