XML und Datenbanken

Ablauf (Planung der zeitlichen Aufteilung)

Hier wird eine ungefähre Übersicht gegeben, wann welcher Stoff behandelt werden soll. Im Laufe des Semesters ist beabsichtigt, die Liste zu aktualisieren, und den tatsächlich behandelten Stoff einzutragen. Selbstverständlich sind alle Angaben unverbindlich.

Tatsächlicher Ablauf:

1. Donnerstag, 18.10.2018:
Kapitel 0: Informationen zur Vorlesung / Organisatorisches (Folie 0-1 bis 0-23) Themen/Inhalte der Vorlesung, Semistrukturierte Daten, Motivation: Vergleich mit relationalen Datenbanken. Geschichte von SGML, HTML, XML. Prüfung, Studienleistung, Lehrbücher, Webseite.
Kapitel 1: XML Syntax (Folie 1-1 bis 1-9)
Bedeutung von XML, XML vs. SGML, DTDs, well-formed vs. valid XML, Einführung in XML-Syntax anhand von Beispielen.
2. Donnerstag, 25.10.2018:
Kapitel 1: XML Syntax (Folie 1-7 bis 1-58)
Einführung in XML-Syntax anhand von Beispielen, Elemente, Tags, Visualisierung von XML als Baum. XML zur Archivierung von Daten aus relationalen Datenbanken. Attribute. Zeichensatz, Unicode, Utf-8, Zeichenreferenzen, Kommentare, Document Type Definitions (DTDs): Element-Deklarationen, Inhalts-Spezifikationen (Content Models).
3. Donnerstag, 01.11.2018:
Kapitel 1: XML Syntax (Folie 1-53 bis 1-111)
Inhalts-Spezifikationen (Content Models), Attribut-Deklarationen. Well-formed vs. Valid, DOCTYPE Deklaration, XML Deklaration, Allgemeiner Aufbau einer XML Datei, Übersicht zu Entities, Vordefinierte General Entities, Marked Sections.
Kapitel 2: Designing XML DTDs (Folie 2-1 bis 2-13)
Übersetzung von Entity-Typen/Tabellen nach XML.
4. Donnerstag, 08.11.2018:
Kapitel 2: Designing XML DTDs (Folie 2-1 bis 2-41)
Übersetzung von Entity-Typen/Tabellen nach XML. Übersetzung von eins-zu-viele und viele-zu-viele Beziehungen nach XML, Übersetzung beliebiger ER-Diagramme nach XML.
Kapitel 2: XML Namespaces (Folie 3-1 bis 3-23)
Motivation, Beispiel XSLT für Mischung von Elementen verschiedener DTDs, Beispiel für Deklaration von Namespaces, Beispiel für Nutzung deklarierter Präfixe. Lokaler Name und Namespace URI, Präfix, Deklaration von Präfixen, Default-Namespace, Gleichheit von Namespaces.
5. Donnerstag, 15.11.2018:
Kapitel 4: XML Schema (Folie 4-1 bis 4-56)
Erstes Beispiel zu XML Schema. Verschiedene Schema-Stile, "Salami Slice" Stil, "Russian Doll" Stil, "Venetian Blind" Stil, globale und lokale Deklarationen, Element-Deklarationen und Typ-Deklarationen. "Simple Types" in XML Schema, eingebaute simple Types, "Constraining Facets" (Integritätsbedingungen zur Enschräkung von Datentypen), String-Datentypen.
6. Donnerstag, 22.11.2018:
Kapitel 4: XML Schema (Folie 4-44 bis 4-135)
Wiederholung zu "Simple Types" in XML Schema, String-Datentypen, Aufzählungstypen, Reguläre Ausdrücke (für pattern-Facet), Zahl-Datentypen, Datumsangaben, Definition von Union-Typen und Listen-Typen. Zusammenfassung und Referenz zu Einschränkungen für einfache Typen. Inhaltsmodelle, komplexe Typen.
7. Donnerstag, 29.11.2018:
Kapitel 4: XML Schema (Folie 4-138 bis 4-207)
Übersicht und Referenz für die Definition von Typen, Elementen und Attributen in XML Schema. Benannte Inhaltsmodell-Gruppen (entsprechend Parameter-Entities, Makros), Attribut-Gruppen. Schlüssel, XPath-Teilmenge zur Schlüssel-Definition, Fremdschlüssel.
8. Donnerstag, 06.12.2018:
Kapitel 4: XML Schema (Folie 4-210 bis 4-238)
Vorstellung verschiedener Möglichkeiten zur Repräsentation von Subklassen in XML Schema, Beispiel zur Darstellung von Subklassen anhand der Folien meines Vortrags auf der Wissenschaftsnacht 2007. Abgeleitete Typen in XML Schema.
Kapitel 5: XPath/XQuery Data Model (Folie 5-1 bis 5-19)
Einührung: Externe und interne Repräsentation, Beziehung verschiedener Standards für Baum-Darstellungen von XML (XML Infoset, XPath/XQuery Data Model, DOM). Syntaktische Details, die beim Parsen verloren gehen.
9. Donnerstag, 13.12.2018:
Kapitel 5: XPath/XQuery Data Model (Folie 5-20 bis 5-89)
Atomare Werte, Knoten, Items, Sequenzen, Arten von Knoten (Subklassen), Eigenschaften und Zugriffsfunktionen. Leerplatz zwischen Elementknoten. Probleme mit Namespace-Knoten. Probleme mit pattern-facet. Unterschied der Baumstruktur ohne/mit Validierung. Dokument-Ordnung von Knoten. String-Value und Typed Value. Zusammenfassung.
Kapitel 6: XPath (Folie 6-1 bis 6-27)
XPath: Einführung, Möglichkeiten zum Ausprobieren von XPath-Anfragen, Kontext für Auswertung von XPath-Anfragen.
10. Donnerstag, 20.12.2018:
Kapitel 6: XPath (Folie 6-28 bis 6-83)
Einführung zu ausfürlicher und abgekürzter Syntax, Pfadausdrücke, Auswertung von E1/E2, Achsen von XPath, Knotentests (Namentests und Typ-Tests), Prädikate: Auswertung von E1[E2], effektiver boolescher Wert. Volle Syntax (Achsenschritte), Abkürzungen. Aufgabe/Beispiel. Lexikalische Syntax. Sequenz-Konstruktor ",". Konstruktion numerischer Bereiche mit "to". Mengenoperationen. Atomisierung.
11. Donnerstag, 10.01.2019:
Kapitel 6: XPath (Folie 6-84 bis 6-128)
Vergleichsoperatoren: Wertvergleich, Knotenvergleich, allgemeine Vergleichsoperatoren. Überraschungen beim Vergleich (Verletzungen der Transitivität, gleichzeitig = und !=). Arithmetische Operatoren, Logische Operatoren, some, every. for-Ausdrücke. Diskussion über Deklarativität des for-Konstruktes (und Parallelisierungsmöglichkeiten). Bedingte Ausdrücke mit if. Datentypen: cast as, castable as, Konstruktor-Funktionen.
12. Donnerstag, 17.01.2019:
Kapitel 6: XPath (Folie 6-128 bis 6-188)
Statische und dynamische Typ-Prüfung, instance of (Typ-Test), treat as (Typ-Zusicherung). XPath-Funktionen (Einführung und Übersicht), Knoten-Eigenschaften, Lokalisation von Knoten, Funktionen für Sequenzen, unordered, Aggregations-Funktionen.
Kapitel 7: XQuery (Folie 7-1 bis 7-44)
Motivation: Allgemeine Überlegungen zu Anfragesprachen, Einschränkungen von XPath. Geschichtliches. XQuery vs. XSLT. XQuery Implementierungen. Erstes Beispiel, FLWOR-Ausdrücke, Unterschiede zu SQL, Schachtelung. Vergleich der Grammatik von XPath und XQuery, typeswitch. Direkte Konstruktoren für XML/XDM-Knoten. Boundary whitespace, preserve vs. strip. Direkte Konstruktoren und {...}.
13. Donnerstag, 24.01.2019:
Kapitel 7: XQuery (Folie 7-45 bis 7-100)
Direkte Konstruktoren und {...}, Kopieren von Knoten von der Eingabe in die konstruierten Knoten, Berechnete Konstruktoren, FLWOR-Ausdrücke mit allen Details, Unterschied for und let, Reihenfolge der konstruierten Variablenbelegungen, where-Klausel (Filter für Variablen-Belegungen), return Klausel (Berechnung des Anfrage-Ergebnisses), Positions-Variablen mit "at" in der for-Klausel, Typ-Angabe mit "as" in for- und let-Klausel, Definierte vs. undefinierte Sortierung ("Ordering Mode": ordered und unordered), order by, Beispiele für XQuery-Anfragen, Vergleich mit SQL: Einfache Anfragen, Joins, Numerische Vergleiche.
14. Donnerstag, 31.01.2019:
Kapitel 7: XQuery (Folie 7-101 bis 7-134)
Übersetzung von NOT EXISTS (SQL) nach XQuery, All-Quantifizierung, Entsprechungen zu LIKE (SQL), Duplikateliminierung, Einfache Aggregationen, GROUP BY, Restrukturierung der Daten, Prolog von XQuery-Modulen, Benutzerdefinierte Funktionen in XQuery.
Kapitel 9: XSLT (Folie 9-1 bis 9-24)
Motivation: Möglichkeiten, die Darstellung von XML zu definieren (z.B. im Browser), Einordnung von XSLT, Hinweis auf XSL-FO (Formating Objects), Einsatz von XSLT zur Übersetzung von XML nach HTML, Möglichkeit, dies im Browser (Client) oder auf dem Server zu tun, Anwendung von XSLT zur Übersetzung von XML-Daten zwischen verschiedenen DTDs, Nutzung von XSLT zur Übersetzung in andere Formate (z.B. LaTeX), Implementierungen von XSLT, erstes Beispiel (mit xsl:stylesheet, xsl:output, xsl:template, xsl:apply-templates, xsl:value-of).
...

Planung (unverbindlich, wird noch aktualisiert):

15. Donnerstag, 07.02.2019:
Kapitel 9: XSLT (Folie 9-1 bis 9-84)
...
Kapitel 10: XML-Support in Modern SQL Databases (Folie 10-1 bis 10-9)
... (mit Vorführung in PostgreSQL)
Prof. Dr. Stefan Brass
Impressum