XML - Comelio Medien

Werbung
1.
2.
3.
4.
5.
6.
7.
8.
9.
Einführung
DTD
XML Schema
XPath
XSLT
XSL-FO
XQuery
Web Services
XML und Datenbanken
Grundlagen:
Datenbank im XML-Kontext
Einsatzszenarien
MS SQL Server und Oracle
Datenbank im XML-Kontext
Datenbank kann Quelle und Ziel von XML-Daten sein
Verarbeitung innerhalb der Datenbank oder außerhalb
.NET
Java
PHP
T-SQL / PL/SQL
Datenbank
XPath
.xquery
.html
.xml
.xml
Abfrage
Transformation
Verarbeitung
.pdf
.rtf
Validierung
.xsd
.dtd
Regeln
.txt
.csv
.sql
.xslt
.xsl (FO)
Daten
Validierung
Transformation
/ Abfrage
Transformation
Ausgabe
Einsatzszenarien
Import-/Export-Schnittstellen können notwendig sein, weil andere Systeme
bestimmte Datenausschnitte der exportierenden Datenbank benötigen, oder weil
die eigene Datenbank als Ziel für solche Daten vorhanden ist.
Techniken der Serialisierung und Deserialisierung können interessant sein, wenn
per XML die Serialisierung durchgeführt werden soll und die Daten nicht in Form
einer reinen XML-Datei gespeichert werden soll, sondern stattdessen die Daten
relational zerlegt und in einer Datenbank gespeichert werden sollen.
Direkte Speicherung von XML oder Zerlegung von XML in relationale Daten kann
sinnvoll sein, wenn komplexe Nachrichten im Rahmen von Transaktionen mit
anderen Systemen ausgetauscht werden und deren Inhalt dauerhaft gespeichert
werden soll. Hier ist es dann möglich, sich zu entscheiden, ob man XML-Daten bei
Bedarf dynamisch erstellt und sie beim Speichervorgang relational zerlegt oder ob
sie im jeweiligen XML-Datentyp der Datenbank oder sogar in eine native XMLDatenbank in einer Ordnerstruktur gespeichert werden.
MS SQL Server und Oracle
Bereich
Oracle
MS SQL Server
XML-Datentyp
Ja, XMLType
Ja, XML
Direkte Speicherung
Validierung mit XML Schema
XML-Bearbeitung
Ja
Ja
Mit PL/SQL und Java
Unterstützung für DOM, XSLT durch
PL/SQL
Weitere Pakete für XMLVerarbeitung in PL/SQL
Ja
Verschiedene alternative Werkzeuge
sind umgesetzt.
Ja
Ja
Mit .NET
T-SQL bietet nicht die
Werkzeuge wie PL/SQL
Ja
Umfangreiche Unterstützung bei
Integration und Entwicklung
Ja (bis Version 2008)
Unterstützung zur allgemeinen
Verwendung. Aufgrund von
Unterschieden bei der XMLUmsetzung nicht die gleiche
Bedeutung wie bei Oracle.
XPath und XQuery
XML-Erzeugung bei Abfrage
Native Webservices
XML Schema
Ja
Verschiedene alternative
Werkzeuge sind umgesetzt.
Fragen...
Einsatz von XML:
Integration
De-/Serialisierung
Import/Export
Einsatz von XML:
Integration
De-/Serialisierung
Import/Export
XML: Integration
Möglichkeiten der XML-Integration:
Einsatz des Dateisystems: Die XML-Daten werden gar nicht in der
Datenbank gespeichert, sondern stattdessen im Dateisystem gespeichert.
Relationale Speicherung: Die XML-Daten werden vollständig zerlegt und die
einzelnen Datenfelder (Elemente, Attribute) komplett oder soweit es das
eigene Datenmodell erfordert, in Spalten gespeichert.
Objektrelationale Speicherung: Die Daten werden teilweise in einfachen
relationalen Spalten und teilweise in Objekte Objekt-Sammlungen zerlegt
und gespeichert.
Einsatz von XML-Datentyp: Die Daten werden vollständig oder teilweise als
XML im Datentyp XML(Type) gespeichert.
XML: Integration
Einsatz des Dateisystems
Die XML-Daten werden gar nicht in der Datenbank gespeichert,
sondern stattdessen im Dateisystem gespeichert.
In der Datenbank befinden sich dann nur Verweise auf die
einzelnen Dateien.
Bei Bedarf können sie von der Festplatte geladen und verarbeitet
werden.
Als zusätzliche Variante können sie in Form von BFILEs gespeichert
werden.
XML: Integration
Datenbank
Dateisystem
Tabelle 1
Tabelle 2
XML: Integration
Relationale Speicherung
Die XML-Daten werden vollständig zerlegt und die einzelnen
Datenfelder (Elemente, Attribute) komplett oder soweit es das eigene
Datenmodell erfordert, in Spalten gespeichert.
Die Eltern-Kind-Strukuren werden wieder zu einzelnen
Tabellen(beziehungen) aufgelöst.
Es findet gar keine XML-Speicherung statt, sondern nur ein Austausch
und eine Umwandlung.
Dieses Verfahren ist nur bei datenorientierten Dokumenten ohne
gemischtem Inhaltsmodell denkbar.
XML: Integration
Dozent
Themenverteilung
XML: Integration
Objektrelationale Speicherung
Die Daten werden teilweise in einfachen relationalen Spalten und
teilweise in Objekte Objekt-Sammlungen zerlegt und gespeichert.
Die Eltern-Kind-Strukturen führen dabei in jedem Fall zu
Objektsammlungen pro einzelnem Eltern-Datensatz. Untervarianten
lassen sich bilden, wenn nur objektrelationale Aufbereitung stattfindet
und das gesamte Dokument als Objekt gespeichert wird, oder wenn
auf unterschiedliche Weise relationale und objektrelationale
Techniken gemischt werden.
Es findet gar keine XML-Speicherung statt, sondern eine Zerlegung.
Dieses Verfahren ist nur bei datenorientierten Dokumenten ohne
gemischtes Inhaltsmodell denkbar.
XML: Integration
Name
Dozent
Adresse
Objekt
Spalten
Oracle
Themenverteilung
Collection
mit Objekten
XML: Integration
Einsatz von XML(Type)
Die Daten werden vollständig oder teilweise als XML im Datentyp
XML(Type) gespeichert.
Untervarianten lassen sich denken, wenn verschiedene Bereiche in
unterschiedlichen Datentypen und mit unterschiedlicher oder auch
keiner Zerlegung gespeichert werden. Weitere Untervarianten
ergeben sich, wenn Datentypen wie CLOB/binary oder VARCHAR(2),
die allerdings nicht die Vorteile wie XML(Type) bieten, genutzt
werden.
Dieses Verfahren ist sowohl bei datenorientierten Dokumenten als
auch bei dokumentenorientierten Dokumenten mit gemischtem
Inhaltsmodell denkbar.
XML: Integration
Name
Dozent
Adresse
Objekt
Spalten
Themenverteilung
Oracle
XMLType
XML: Integration
Dozent
Name / Adresse / Thema-Liste
XMLType
Oracle
Einsatz von XML:
Integration
De-/Serialisierung
Import/Export
XML: De-/Serialisierung
Serialisierung bedeutet, dass der Zustand eines Objekts in eine
Zeichenkette zerlegt wird. Dies ist im Normalfall eine in jeder
objektorientierten Sprache bereits vorhandene Möglichkeit. Es
entstehen dabei automatisch generierte Zeichenketten, die durchaus
kein XML-Format besitzen (müssen).
Neben der automatischen Serialisierung in eine beliebige, jedoch von
der Programmiersprache vorgegebene Zeichenkette gibt es auch die
Möglichkeit, eine eigene Serialisierung vorzunehmen. Dies ist je nach
Programmiersprache einfacher oder schwieriger.
Durch die Serialisierung ist es möglich, den Objektzustand dauerhaft zu
speichern. Dies erlaubt es, ein Objekt in eben diesem Zustand zu einem
späteren Zeitpunkt wieder zu aktivieren.
XML: De-/Serialisierung
Software
.xml
XMLSchnittstelle
XMLSchnittstelle
Datenbank
Tab 1
Tab 2
Tab 1
Tab 2
Tab 2
...
Bereich 1
Tab 3
...
Bereich 2
XML: De-/Serialisierung
Als mögliche Lösungen für die konkrete Implementierung einer solchen
Schnittstelle stehen
für den Export Prozeduren, Funktionen und Sichten,
für den Import dagegen hauptsächlich Funktionen und Prozeduren zur Verfügung.
Unterschiede bei Funktionen und Prozeduren
Während eine Funktion rechtsseitig einer Zuweisung aufgerufen werden kann und ihre
XML-Daten daher in Form des Rückgabewerts zurückliefert, wird normalerweise eine
Prozedur verwendet, welche über einen Ausgabeparameter die benötigten Daten der
Anwendung zur Verfügung stellt.
Eine Prozedur ist auch geeignet, XML-Daten entgegenzunehmen und sie dann passend
zu zerlegen. Eine Funktion bietet zwar auch eine analoge Möglichkeit an, Parameter zu
empfangen, sie muss allerdings auch einen Rückgabewert liefern, der möglicherweise
gar nicht benötigt wird.
Eine Sicht eignet sich insbesondere für die Zusammenstellung
der Daten im Bereich des Exports.
XML: De-/Serialisierung
Einsatz von XML:
Integration
De-/Serialisierung
Import/Export
XML: Import/Export
Grundsätzlich muss man unterscheiden, ob der Exportvorgang
zu konkreten XML-Dokumenten und damit auch Dateien
führt, oder ob es sich um reine Datenströme handelt.
Während die Datenströme in jedem Fall nur auf Bedarf erzeugt
werden und damit nicht notwendigerweise mit Hilfe von
zeitgesteuerten DB-Jobs erzeugt werden können, kann hier auch keine
zusätzliche Speicherung möglich sein. Daher werden die XMLDatenströme sowohl in Form eines Webservices als auch durch
Interaktion mit einem Formular erzeugt und bereitgestellt.
Die Dokumente dagegen werden als physische Dateien erzeugt und
können auf unterschiedliche Weise in einem öffentlichen
Ordner(verzeichnis) platziert und damit erneut persistent gespeichert
werden. In vielen Fällen dürften dies auch FTP- oder WebDAV-Ordner
sein, die über eine sichere Verbindung genutzt werden können.
XML: Import/Export
XML: Import/Export
Funktion: Eine Funktion ermöglicht die Erzeugung von XML-Daten mit allen XMLTechniken von T-SQL/PL/SQL und liefert die Daten über einen Rückgabewert
zurück.
Prozedur: Eine Prozedur liefert die Daten nur über einen Ausgabe-Parameter. Im
Normalfall gibt es allerdings eine Vielzahl an äußeren Programmiersprachen,
welche genau diesen Ausgabeparameter viel einfacher abfangen können als den
Rückgabewert einer Funktion. Die Übergabe von Parametern für Filter gelingt über
die Übergabeparameter.
Sicht: Eine Sicht stellt in Form einer virtuellen Tabelle die Möglichkeit dar, XMLDaten so anzubieten, dass man eine einfache Abfrage nutzen kann. In diesem Fall
muss allerdings sicher gestellt sein, dass die äußere Anwendung dieses
Abfrageergebnis auch verarbeiten kann. Eine Filterung der Daten kann dann über
SQL durchgeführt werden, was zu umfangreicheren Filtermöglichkeiten führt als
eine begrenzte Anzahl an Parametern.
XML: Import/Export
Oracle
XML: Import/Export
Der Import-Vorgang ist nicht nur aus einfach nachzuvollziehenden
Gründen das zum Export passenden Pendant. Dieser Umstand wirkt sich
auch sehr auf die allgemeine Architektur der Import-/ExportSchnittstelle aus.
Bedeutsam ist, dass auf der einen Seite natürlich auch verschiedene
Wege genutzt werden können (Export über Webservice, Import dagegen
über Upload-Formular), dass aber grundsätzlich auch die Option besteht,
beide Vorgänge über den gleichen Kanal durchzuführen, sofern ein
wechselseitiger Datenaustausch überhaupt innerhalb des
Systemumfangs liegen soll.
XML: Import/Export
XML: Import/Export
Prozedur: Eine Prozedur erwartet als Übergabeparameter die XML-Daten
und zerlegt sie relational. Als Ausgabeparameter kann dann eine
Erfolgsmeldung übergeben werden. Im Normalfall ist dies die beste
Lösung.
Funktion: Eine Funktion erwartet die Daten ebenfalls als
Übergabeparameter, kann insbesondere auch eine Erfolgsmeldung als
Rückgabewert liefern. Sie muss allerdings in Form eines längeren T-SQLSkripts genutzt werden und auf der rechten Seite der Zuweisung
erscheinen, was nicht immer gewünscht/vorteilhaft sein wird.
Tabelle: Eine Tabelle kann über einen INSERT-Befehl die XML-Daten
erwarten, validieren und dann speichern. Ein Trigger oder eine weitere
Prozedur könnte sie dann weiter relational zerlegen. Dies erlaubt die
Zwischenspeicherung von XML-Daten zur Kontrolle durch einen Benutzer
oder eine Automatik, die nicht unmittelbar mit dem Speichervorgang
gleichzeitig abläuft.
XML: Import/Export
Oracle
Fragen...
XML-Verarbeitung:
XML-APIs
ISO-Standard:
SQLX-Funktionen
XML APIs: Oracle
XMLType: PL/SQL, C und C++ APIs mit XML-Operationen für XMLType-Daten – Validierung,
Transformation.
DBMS_XMLDOM: PL/SQL Implementierung der DOM API für XMLType.
DBMS_XMLGEN: PL/SQL API für die Transformation von SQL Abfrageergebnissen nach XML.
DBMS_XMLPARSER: PL/SQL Implementierung der DOM Parser API für XMLType.
DBMS_XMLSAVE: PL/SQL API für XML-zu-DB Umwandlung.
DBMS_XMLSCHEMA: PL/SQL API für Verwaltung von XML Schema in Oracle DB – Registrierung,
Löschen.
DBMS_XMLSTORE: PL/SQL API für Speicherung von XML in relationalen Tabellen.
DBMS_XSLPROCESSOR: PL/SQL Implementierung eines XSLT-Prozessors.
XML APIs: MS SQL Server
XML-Datentyp: T-SQL-Datentyp mit XML-Operationen für Validierung und Abfrage.
SELECT…FOR XML: Funktionen zur Abfrage von relationalen Daten und Transformation in
XML.
XML Schema: T-SQL-Funktionen für Validierung mit XML Schema.
XQuery/XPath: T-SQL-Funktionen für Abfragen von XML-Daten.
XML-Verarbeitung:
XML-APIs
ISO-Standard:
SQLX-Funktionen
ISO-Standard: SQLX-Funktionen
Die SQLX-Funktionen sind die erste und einfachste Möglichkeit, aus
gegebenen relationalen Daten mit Hilfe von Abfragen XML-Daten zu
erzeugen.
Umgesetzt in Oracle und IBM DB2, nicht aber in MS SQL Server
Unterschiedliche Abdeckung der definierten Funktionen in den
jeweiligen Datenbanken und DB-Versionen.
ISO-Standard: SQLX-Funktionen
Funktion
Beschreibung
XMLElement ()
Erzeugt ein Element im Ausgabestrom und nimmt als Werte entweder einen Textknoten
(gültiger Spaltenausdruck, fester Vorgabewert) oder weitere Elemente auf.
XMLAttributes()
Erzeugt für ein gegebenes Element ein Attribut, das als Wert entweder einen gültigen
Spaltenausdruck oder einen festen Wert übernimmt.
XMLForest()
Erzeugt mehrere Elemente im Ausgabestrom, besitzt allerdings im Vergleich zu
XMLElement()eine verkürzte Syntax.
XMLCdata
Erstellt einen CDATA-Bereich in der Form <![CDATA[ inhalt]]>.
XMLComment
Erstellt einen XML-Kommentar in der Form <!--inhalt-->.
XMLParse
Erstellt eine XML-Instanz unter Angabe der drei Schlüsselwörter DOCUMENT (Ausgabe
muss unter einem einzigen Elternelement liegen) oder CONTENT (einfache Erstellung
des XML-Inhalts) sowie optional in beiden Fällen WELLFORMED (Angabe der
Wohlgeformtheit ohne Prüfung durch DB).
XMLPI
Erstellt eine Prozessoranweisung in der Form <?name inhalt?> mit zwei Parametern für
Name und Inhalt.
ISO-Standard: SQLX-Funktionen
Funktion
Beschreibung
XMLConcat()
Verbindet über Konkatenation alle übergebenen Ausdrücke zu einem XML-Ausdruck. Dabei setzen sich diese
Ausdrücke aus einzelnen XMLType-Ausdrücken in Form eines XMLSequenceType-Ausdrucks zusammen,
wobei die Funktion als Rückgabewert nur einen einzigen XMLType-Ausdruck liefert.
XMLAGG()
Erzeugt aus einer Liste übergebener bzw. abgefragter Reihen, die zusätzlich über ORDER BY und GROUP BY
eingerichtet werden können, Kind-Elemente eines Elements. Diese Funktion eignet sich besonders, um
Hierarchien korrekt abzubilden und die Form des ursprünglichen relationalen Ergebnisses mit
Wiederholungen (z. B. bei Tabellenverknüpfungen) zu vermeiden.
XMLColAttVal()
Liefert eine Reihe von Elementen mit dem Namen column, die im name-Attribut den Spaltennamen oder
einen vorgegebenen Namen tragen und als Textknoten den Wert enthalten. Diese Funktion eignet sich
für die Erzeugung von attributorientiertem Inhalt.
XMLQuery
Führt eine XQuery-Abfrage durch, wobei die allgemeine Syntax XMLQuery(abfrage PASSING [BY VALUE]
ausdruck [AS name] RETURNING CONTENT) lautet und abfrage für die XQuery-Abfrage steht und
RETURNING CONTENT angibt, dass das Ergebnis ein XML-Dokument/Fragment ist.
XMLRoot
Erstellt einen XML-Prolog in der Form <?xml version = "version" [ STANDALONE = "{yes | no}" ]?>.
XMLSerialize
Erstellt unter Angabe der beiden Schlüsselwörter DOCUMENT (Ausgabe muss unter einem einzigen
Elternelement liegen) oder CONTENT (einfache Erstellung des XML-Inhalts) eine Zeichenkette oder
einen LOB, der den XML-Inhalt enthält. Es ist alternativ eine Datentypangabe von VARCHAR2, VARCHAR
oder CLOB erlaubt.
XMLTable
Wandelt das XML-Ergebnis einer XQuery-Abfrage wieder in eine relationale Ergebnismenge um.
XMLTransform
Erlaubt unter Verwendung eines XSLT-Dokuments im Datentyp XMLType und einer XML-Eingabe als XMLType
eine Umwandlung der Eingabedaten.
ISO-Standard: SQLX-Funktionen
9i R2
10g R1
10g R2
XMLAGG
XMLCOLATTVAL
XMLCONCAT
XMLELEMENT
XMLFOREST
XMLSEQUENCE
XMLTRANSFORM
XMLAGG
XMLCOLATTVAL
XMLCONCAT
XMLELEMENT
XMLFOREST
XMLSEQUENCE
XMLTRANSFORM
XMLAGG
XMLCDATA
XMLCOLATTVAL
XMLCOMMENT
XMLCONCAT
XMLELEMENT
XMLFOREST
XMLPARSE
XMLPI
XMLQUERY
XMLROOT
XMLSEQUENCE
XMLSERIALIZE
XMLTABLE
XMLTRANSFORM
http://downloadwest.oracle.com/docs/cd/
A91202_01/901_doc/
server.901/
a90125/toc.htm
http://downloadwest.oracle.com/docs/cd/
B14117_01/server.101/
b10759/toc.htm
http://www.oracle.com/
pls/db102/to_toc?
pathname=server.102%
2Fb14200%2Ftoc.htm&
remark=portal+
%28Books%29
Fragen...
Durchgehende
Modellierung
Durchgehende Modellierung
Häufige Integration von
Datenbank und relationale Modellierung
Objektorientierte Software und OO-Modellierung
XML und hierarchische/XML-Modellierung
Verschiedene Sichten auf Daten
Relationale Sicht in der Datenbank
Objektorientierte Sicht für Software und DB
Formulare, Berichte, Importe/Exporte
Möglichkeit und Gelegenheit, überlappende und sich
ergänzende Datenstrukturen zu identifizieren und gleichartig
über die Schichten hinweg zu modellieren und zu nutzen
Durchgehende Modellierung
Durchgehende Modellierung
Die Abbildung stellt zwei verschiedene Vorgehensweisen dar:
Setzt man den traditionellen Weg über SQL und Ergebnismengen ein, so
ruft man Daten in einem nicht weiter typisierten Format ab und formt
aus diesen dann die benötigten Objektstrukturen. Sollen Daten wieder
zur Datenbank geschickt werden, muss man sie in einzelne SQLAnweisungen umwandeln, die dann die relationalen Strukturen
referenzieren und die entsprechenden Daten einhalten.
Setzt man auf die XML Schema-Bindung, dann erhält man direkt von der
Datenbank das benötigte XML, welches dann in die benötigten Objekte
umgewandelt wird. Der umgekehrte Weg ist genauso einfach, denn hier
wandelt man die Objektstruktur in XML um und übergibt dieses an die
Datenbank, die dann die XML-Daten relational zerlegen muss.
Durchgehende Modellierung
Bedeutung von XML Schema
Primär-Fokus: Modellierung von XML-Daten
Bindung an Java-/.NET-Klassen
und Mapping zwischen XML- und OO-Strukturen
Generierung von XML Schema aus OO-Klassen
oder Generierung von OO-Klassen aus XML Schema
Relationale Zerlegung von XML und OO-Strukturen für DB-Speicherung
Durchgehende Modellierung
Fragen...
Herunterladen