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) • • • • • < steht für ’<’-Zeichen > steht für ’>’-Zeichen & steht für ’&’-Zeichen ' steht für Apostroph (’)-Zeichen " 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 "ß"> <!ENTITY ouml "ö"> <!ENTITY auml "ä"> ]> <schlafplatz> ... Die Residenz Badens ist &ka; mit angelegten Straßen ... &anschrift; </schlafplatz> Dr. Christian Senger XML fächerfö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 "ß"> <!ENTITY ouml "ö"> <!ENTITY auml "ä"> ]> <!–- anschrift.xml --> … <anschrift> <strasse> <name> Kaiserstraße </name> <hausnummer> 45 </hausnummer> </strasse> </anschrift> <schlafplatz > ... Die Residenz Badens ist &ka; mit fächerförmig angelegten Straß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