20150509_XML

Transcription

20150509_XML
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
XML und Datenbanken
Dr. Christian Senger
XML
1
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Inhalt
XML allgemein
XML und Oracle
– SQLX
(relational -> XML)
– Syntax
– DTD, XML-Schema
– XMLType
(XML in Datenbank)
– XPATH
– XQuery in Oracle
– XSLT
– XML-Repository
– XQuery
Dr. Christian Senger
XML
2
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Was ist XML?
•
XML ist eine Metasprache zur Definition von Dokumenttypen (Beispiele:
MathML, SVG, HTML, ...)
•
XML stellt Vereinfachung von SGML dar
•
XML Dokumente sind selbstbeschreibend (sowohl Daten als auch
Informationen über die Daten)
•
Einsatzgebiete:
–
–
–
–
–
–
•
als Auszeichnungssprache für Dokumente
als Datenaustauschformat
Konfiguration
Publikations- und Dokumentationssysteme
Multimedia- und Grafikanwendungen
Webservices
offener Industriestandard, plattformneutral, geräteunabhängig (UNICODE)
Dr. Christian Senger
XML
3
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Dokumenttypen I - Dokumentenzentriert
<?xml version="1.0" encoding="UTF-8"?>
<content>
<em>XML Schema</em> ist eine Empfehlung des <link uri="ref_w3c"
text="W3C"/> zum Definieren von XML-Dokumentstrukturen. Anders
als bei den klassischen <link uri="ref_dtd" text="XML-DTDs"/>
wird die Struktur in Form eines XML-Dokuments beschrieben.
Darüber hinaus wird eine große Anzahl von <link
uri="ref_datatypes" text="Datentypen"/> unterstützt.
</content>
Dr. Christian Senger
XML
4
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Dokumenttypen II - Datenzentriert
<?xml version="1.0" encoding="UTF-8"?>
<references>
<uri id="ref_w3c">
<url>
http://de.wikipedia.org/wiki/World_Wide_Web_Consortium
</url>
</uri>
<uri id="ref_datatypes">
<url>http://de.wikipedia.org/wiki/Datentyp</url>
</uri>
<uri id="ref_dtd">
<url>
http://de.wikipedia.org/wiki/Dokumenttypdefinition
</url>
</uri>
</references>
Dr. Christian Senger
XML
5
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Dokumenttypen III - Semistrukturiert
<?xml version="1.0" encoding="UTF-8"?>
<mywikipage id="ref_xmlschema">
<meta>
<autor>Xaver Schelm</autor>
<last_modified>12.12.2007</last_modified>
</meta>
<content>
<em>XML Schema</em> ist eine Empfehlung des <link uri="ref_w3c"
text="W3C"/> zum Definieren von XML-Dokumentstrukturen. Anders
als bei den klassischen <link uri="ref_dtd" text="XML-DTDs"/>
wird die Struktur in Form eines XML-Dokuments beschrieben.
Darüber hinaus wird eine große Anzahl von <link
uri="ref_datatypes" text="Datentypen"/> unterstützt.
</content>
</mywikipage>
Dr. Christian Senger
XML
6
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Aufbau XML
<?xml version="1.0" encoding="UTF-8"?>
<Person ID="242">
<Vorname>Sebbl</Vorname>
<Nachname>Seeigel</Nachname>
<Geburtsdatum tag="9.9.1984"/>
<Adresse>
<Strasse>An der Mole</Strasse>
<Hausnr>47</Hausnr>
<Plz>65432</Plz>
<Ort>Salzhausen</Ort>
</Adresse>
<ledig/>
<Bemerkungen>Hat direkt eine
<em>sehr</em> nette <b>Bar</b> nebenan
</Bemerkungen>
<!-- und kommentare
gibts auch -->
</Person>
Dr. Christian Senger
XML
7
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Baumstruktur
Dr. Christian Senger
XML
8
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Nicht - Wohlgeformt
...
<Person ID="242">
...
<Adresse>
<Strasse>Dichterweg</Strasse>
<Hausnr>47</Hausnr>
<Plz>65432</Plz>
<Ort>Glockenhausen</Ort>
</Person>
Dr. Christian Senger
...
<fett>XML als<italic>Metasprache </fett>
für Web-Anwendungen</italic> ...
XML
9
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Entitäten
• Verschiedene Einsatzgebiete:
– Zur Repräsentation von reservierten Zeichen wie etwa: <,>, &, ...
(vordefiniert)
•
•
•
•
•
&lt; steht für ’<’-Zeichen
&gt; steht für ’>’-Zeichen
&amp; steht für ’&’-Zeichen
&apos; steht für Apostroph (’)-Zeichen
&quot; steht für Anführungszeichen(")-Zeichen
– Benutzerdefinierte Entities:
• benötigen eindeutigen Namen
• verbinden diesen Namen mit beliebigem Inhalt (z.B. auch Datei-Inhalt)
– Entities beginnen mit einem &-Zeichen und enden mit einem
Strichpunkt (;)
– Entities werden in der Dokumenttyp-Deklaration festgelegt
Dr. Christian Senger
XML
10
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Entitäten Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE schlafplatz [
<!ENTITY ka "Karlsruhe">
<!ENTITY anschrift SYSTEM "anschrift.xml">
<!ENTITY szlig "&#223;">
<!ENTITY ouml "&#246;">
<!ENTITY auml "&#228;">
]>
<schlafplatz>
...
Die Residenz Badens ist &ka; mit
angelegten Stra&szlig;en
...
&anschrift;
</schlafplatz>
Dr. Christian Senger
XML
f&auml;cherf&ouml;rmig
11
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Entitäten Beispiel
Identifier ist „systemweit“
PUBLIC: z.B. durchs W3C
<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE schlafplatz [
<!ENTITY ka "Karlsruhe">
<!ENTITY anschrift SYSTEM
"anschrift.xml">
<!ENTITY szlig "&#223;">
<!ENTITY ouml "&#246;">
<!ENTITY auml "&#228;">
]>
<!–- anschrift.xml -->
…
<anschrift>
<strasse>
<name>
Kaiserstra&szlig;e
</name>
<hausnummer>
45
</hausnummer>
</strasse>
</anschrift>
<schlafplatz >
...
Die Residenz Badens ist &ka; mit
f&auml;cherf&ouml;rmig angelegten
Stra&szlig;en
...
&anschrift;
</schlafplatz>
Dr. Christian Senger
XML
12
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel Entitäten
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE schlafplatz (View Source for full doctype...)>
-<document>
... Die Residenz Badens ist Karlsruhe mit fächerförmig
angelegten Straßen ...
-<anschrift>
-<strasse>
<name>Kaiserstraße</name>
<hausnummer>45</hausnummer>
</strasse>
</anschrift>
</document>
Dr. Christian Senger
XML
13
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
CDATA-Sektion
•
•
Text innerhalb von CDATA-Abschnitten wird vom Parser ignoriert
Innerhalb eines CDATA Abschnittes darf alles bis auf die Zeichenkette ]]> (Endmarker)
auftauchen.
Beispiel:
<script>
<![CDATA[
function min(a,b) {
if (a < b) then {
return a;
} else {
return b;
}
}
]]>
</script>
Dr. Christian Senger
XML
14
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Dokumenttypen
<?xml version="1.0" encoding="UTF-8"?>
•
Document Type Definition (DTD) und
XML-Schemas erlauben die Definition
von Dokumenttypen.
•
Bei einem Dokumenttyp wird der
strukturelle Aufbau für eine Klasse von
XML-Dokumenten festgelegt:
– welche Elemente dürfen an
welchen Stellen im Dokument (wie
häufig) vorkommen
– welche Attribute kann/muss ein
Element besitzen.
•
XML-Schema geht noch einen Schritt
weiter, indem eine echte Typisierung
mit reichen/erweiterbarem Typsystem
unterstützt wird.
<Person ID="242">
<Vorname>Sebbl</Vorname>
<Nachname>Seeigel</Nachname>
<Hubraum ccm="2000"/>
<Geburtsdatum tag="9.9.1984"/>
<Adresse>
<Strasse>An der Mole</Strasse>
<Hausnr>47</Hausnr>
<Plz>65432</Plz>
<Ort>Salzhausen</Ort>
<Spannweite>
47.4
</Spannweite>
</Adresse>
<ledig/>
</Person>
Dr. Christian Senger
XML
15
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
DTD
•
•
Beschreibt die Struktur von XML-Dokumenten (Beschreibt eine XML-Sprache)
– welche Elemente dürfen (wie oft) vorkommen
– wie dürfen Elemente ineinander geschachtelt werden
– welche Attribute dürfen/müssen vorkommen
– Vorgabe von Defaultwerten für Attribute
Fehler in der Struktur von XML-Dokumenten können durch Parser erkannt werden
<!-- DTD:-->
<!ELEMENT couchsurfer(#PCDATA)>
<!-- XML Dokument: -->
<couchsurfer>
Billy Talent
</couchsurfer>
Dr. Christian Senger
<!-- DTD:-->
<!ELEMENT couchsurfer(name, vorname)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT vorname (#PCDATA)>
<!-- XML Dokument: -->
<couchsurfer>
<name> Billy </name>
<vorname> Talent </vorname>
</couchsurfer>
XML
16
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
DTD - Elemente
Definition von Elementen:
•
Sequenz (A , B):
Elemente A und B müssen in der angegebenen Reihenfolge auftreten
•
Alternative (A | B):
Element A oder B tritt im Dokument an der entsprechenden Stelle auf
•
Anzahl der Wiederholungen von Elementen
–
–
–
A? : 0 oder 1 Mal
A* :0 bis n Mal
A+ :1 bis n Mal
•
textueller Inhalt: #PCDATA
•
Mixed Content (#PCDATA | A | B)*
immer #PCDATA zuerst, dann nur |-Zeichen, * nach schließender Klammer
obligatorisch
•
kein Inhalt: EMPTY (z.B. bei <familienstand typ="ledig"/>)
Dr. Christian Senger
XML
17
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel I
Wie könnte ein DTD aussehen?
Gültige Dokumente:
<adresse>
<plz>10999 </plz>
<ort>Berlin</ort>
<strasse>
Waldemarstrasse
</strasse>
<nummer>148</nummer>
</adresse>
Dr. Christian Senger
<adresse>
<plz>76137</plz>
<ort>Karlsruhe</ort>
<strasse>
Boeckhstrasse
</strasse>
</adresse>
XML
<adresse>
<plz>94134</plz>
<ort>Thyrnau</ort>
<postfach>1010</postfach>
</adresse>
18
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel II
<!-- DTD: -->
<!ELEMENT text (#PCDATA | fett | italic)*>
<!ELEMENT italic (#PCDATA)>
<!ELEMENT fett (#PCDATA)>
<!-- gültiges Dokument: -->
<text>Mein liebstes Essen sind <fett>Cheeseburger</fett>, aber
ich mag auch <italic>Pizza</italic> mit Anchovis.</text>
<!-- und was ist damit? -->
<text>Mein liebstes Essen sind <fett>Cheeseburger</fett> aber ich
mag auch <fett>Cheesy-Crust- <italic>Pizza</italic> mit
Bacon</fett>.</text>
Dr. Christian Senger
XML
19
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
DTD - Attribute
• Elemente können im Starttag Attribut Wert-Paare aufweisen
• Beispiel:
<couchsurfer geschlecht="w">
<vorname>Miley</vorname>
<nachname>Cyrus</nachname>
...
</couchsurfer>
• Für ein Attribut wird in der DTD festgelegt:
• Name
• Typ
• Angabe ob Attribut vorhanden sein muss (#REQUIRED) oder nicht
(#IMPLIED) oder konstant (#FIXED) ist.
• bei #FIXED muss optionaler Defaultwert angegeben werden
Dr. Christian Senger
XML
20
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
DTD - Attribute
•
CDATA (Charakter data): Zeichendaten, z.B.: titel="Hannah Montana"
•
NMTOKEN (Namens Token): Zeichenkette beginnend mit einem Buchstaben,
anschließend Buchstaben, Zahlen und folgende Zeichen: (’_’, ’-’, ’.’, ’:’) (keine
Leerzeichen), z.B.: datei="build.xml„
•
NMTOKENS (Liste aus Namens Token): Durch Leerzeichen getrennte Liste von
NMTOKEN, z.B.: farben="rot gruen gelb"
•
ID (eindeutiger Bezeichner): Eindeutiges Label innerhalb des ganzen Dokuments
(sonst wie NMTOKEN)
•
•
IDREF (Verweis): Verweist auf ein Element mit diesem Label. Es muss eine ID (s.o.)
mit diesem Label geben.
IDREFS (Verweise)
•
ENTITY: Attribut akzeptiert nur Entitybezeichner
•
Aufzählungsliste: Attribut akzeptiert nur einen der angegebenen Werte, z.B.:
<!ATTLIST couchsurfer geschlecht (m|w|u)>
Dr. Christian Senger
XML
21
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE buch [
<!ELEMENT buch (
inhaltsverzeichnis,
kapitel+,
anhang?)
>
<!ATTLIST buch
titel CDATA #REQUIRED
isbn ID #REQUIRED
>
<buch titel="XML Pocket Reference"
isbn="isbn-1-56592-709-5">
<inhaltsverzeichnis>
<kap_name kap_id="kap-1"/>
<kap_name kap_id="kap-2"/>
</inhaltsverzeichnis>
<!ELEMENT inhaltsverzeichnis
(kap_name+)>
<kapitel kap_id="kap-1">
<ueberschrift>kap1</ueberschrift>
<text>...</text>
</kapitel>
<!ELEMENT kap_name EMPTY>
<!ATTLIST kap_name kap_id IDREF
#REQUIRED>
<kapitel kap_id="kap-2">
<ueberschrift>kap2</ueberschrift>
<text>...</text>
</kapitel>
<!ELEMENT kapitel (
ueberschrift,
text
)>
<!ATTLIST kapitel kap_id ID #REQUIRED>
</buch>
<!ELEMENT ueberschrift (#PCDATA)>
<!ELEMENT text (#PCDATA)>
]>
Dr. Christian Senger
XML
22
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Einbinden von DTD
<!-- externe DTD: -->
<!-- XML-Datei: -->
<?
xml version="1.0"
encoding="UTF-8„
?>
<!DOCTYPE couchsurfer SYSTEM
"couchsurfer.dtd" [
<!ENTITY mi "Miley">
]>
<!-- interne DTD: -->
<!-- XML-Datei: -->
<?
xml version="1.0"
encoding="UTF-8„
?>
<!DOCTYPE couchsurfer [
<!ELEMENT couchsurfer
(name, vorname)
>
<!ELEMENT name (#PCDATA)>
<!ELEMENT vorname (#PCDATA)>
<!ENTITY mi "Miley">
]>
<couchsurfer>
<name>Cyrus</name>
<vorname>&mi;</vorname>
</couchsurfer>
<!-- DTD-Datei: -->
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT couchsurfer
(name, vorname)
>
<!ELEMENT name (#PCDATA)>
<!ELEMENT vorname (#PCDATA)>
<couchsurfer>
<name>Cyrus</name>
<vorname>&mi;</vorname>
</couchsurfer>
Dr. Christian Senger
XML
23
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
XML-Schema
•
Sprache zur Beschreibung von XML-Sprachen
•
Basiert selbst auf XML
•
weitergehende Möglichkeiten wie DTD
•
Spezifikation von konkreten Datentypen (z.B. xsd:integer, xsd:float, xsd:boolean,
xsd:date, ...) möglich
•
Beschränkung des Wertebereichs möglich (min, max, Aufzählung, reguläre
Ausdrücke)
•
Unterscheidung in einfache- und komplexe Typen:
–
–
•
Typen lassen sich voneinander ableiten:
–
–
•
einfach: keine Kindelemente, keine Attribute
komplex: der Rest (Kindelemente oder Attribute)
erweitern (<xsd:extension base="..."> ... </xsd:extension>)
einschränken (<xsd:restriction base="..."> ... </<xsd:restriction>)
Formulierung von zusätzlichen Constraints (primary key, unique) möglich
Dr. Christian Senger
XML
24
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<Person ID="12"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="person-schema.xsd"
>
<Vorname>Sebbl</Vorname>
<Nachname>Seeigel</Nachname>
<Alter>80</Alter>
</Person>
Dr. Christian Senger
XML
25
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel
<?xml version="1.0"
encoding="UTF-8"?>
<xs:element name="Vorname"
type="xs:string"/>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XML
Schema">
<xs:element name="Nachname"
type="xs:string"/>
<xs:element name="Alter"
type="Alter"/>
<xs:element name="Person">
<xs:complexType>
<xs:simpleType name="p_id">
<xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:sequence>
<xs:element ref="Vorname"/>
<xs:element ref="Nachname"/>
<xs:element ref="Alter"/>
</xs:sequence>
<xs:simpleType name="Alter">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="200"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="ID"
type="p_id" use="required"/>
</xs:complexType>
</xs:element>
Dr. Christian Senger
</xs:schema>
XML
26
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
XML-Schema und DBII
• Die Sprache XML-Schema ist für die Klausur nicht relevant !
• für Klausur reicht, wenn man die Unterschiede zu DTD kennt
• für Übung langt es, wenn man ein Schema aus einem XMLDokument generiert (z.B. Oxygen) und per Hand etwas
„verschönert“
• Dennoch:
– wichtig zur Definition von XML-Sprachen (weitaus aussagekräftiger als
DTD)
– wichtig für (Oracle) Datenbank zur strukturierten Ablage von XML
Dr. Christian Senger
XML
27
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Dr. Christian Senger
XML
28
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Quellen
•
A Technical Introduction to XML. By Norman Walsh:
http://www.xml.com/lpt/a/98/10/guide0.html
•
http://de.selfhtml.org/xml/
•
XML-Schema Einführung:
https://www.bg.bib.de/portale/xml/pdf/XML-Schema.pdf
•
XML-Schema Part 0 (deutsche Übersetzung):
http://www.edition-w3c.de/TR/2001/REC-xmlschema-0-20010502/
•
The XML Bible, 2nd Edition, Elliote Rusty Harold. IDG-Books
•
XML in a Nutshell, Third Edition, Elliote Rusty Harold. O’Reilly
•
Einführung in XML, 2. Auflage. Erik T. Ray. 444 Seiten. 38.00 _. O’Reilly.
•
Übersicht über XML-Editoren:
http://www.drweb.de/xml/xml-editoren.shtml
Dr. Christian Senger
XML
29

Documents pareils