- Wiederholung/Übung -

Ähnliche Dokumente
Gegeben ist das folgende XML-Dokument.

XML 1. Einführung, oxygen. Ulrike Henny. IDE Summer School 2013, Chemnitz

Institut für Dokumentologie und Editorik. XML-Datenbanken und XQuery

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

... MathML XHTML RDF

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Implementierung der XPath-Anfragesprache für XML-Daten in RDBMS unter Ausnutzung des Nummerierungsschemas DLN

IT-Zertifikat: Daten- und Metadatenstandards

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel

Errata-Liste zum Kurs: Einführung in XML (2. Auflage)

Komplexe Transformationen mit XSLT

XSLT Vortrag. 2. Beispiel XML. 3. Anwendungsmöglichkeiten von XSLT 4. XHTML

Klaus Schild, XML Clearinghouse Transformation von XML-Dokumenten

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Aufgaben zu XPath und XQuery

Klausur Interoperabilität

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

XML Grundlagen Teil I

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

Einführung in die Programmierung

Universität zu Köln Informationsverarbeitung WS 2009/10. Datenbanken vs. Markup Prof. Dr. M.Thaller XML als Datenbank

Projektseminar Texttechnologische Informationsmodellierung

Universität Augsburg, Institut für Informatik Wintersemester 2011/2012 Prof. Dr. W. Kießling 03. Feb Semesterklausur

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Informatik 12 Datenbanken SQL-Einführung

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

Datenbanken für Online Untersuchungen

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Erwin Grüner

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

XML. XML in relationalen Datenbanksystemen. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Datenbanken Microsoft Access 2010

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Allgemeines zu Datenbanken

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Datenaustauschformate. Datenaustauschformate - FLV

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Diana Lange. Generative Gestaltung Operatoren

XSL Templates. Mit Templates arbeiten. XSL Templates

Datenmanagement in Android-Apps. 16. Mai 2013

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

XML-Austauschformat für Sicherheitsdatenblätter

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

7. Übung - Datenbanken

Objektorientierte Programmierung

XML Schema vs. Relax NG

Prozedurale Datenbank- Anwendungsprogrammierung

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Kapitel 8: Physischer Datenbankentwurf

Daten- und Metadatenstandards Wintersemester 2011 / November 2011 XML II: DTD

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Kapiteltests zum Leitprogramm Binäre Suchbäume

Abfragen: Grundbausteine

Zählen von Objekten einer bestimmten Klasse

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Computeranwendung und Programmierung (CuP)

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Graphic Coding. Klausur. 9. Februar Kurs A

XINDICE. The Apache XML Project Name: J acqueline Langhorst blackyuriko@hotmail.de

Beuth Hochschule Die erweiterbare Markierungssprache XML WS10/11

Auswahlabfragen mit ACCESS

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SEMINAR Modifikation für die Nutzung des Community Builders

Kundenspezifische Preise im Shop WyRu Online-Shop

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1 topologisches Sortieren

Verbesserungsdetails: PTC Mathcad Prime 3.0. Copyright 2013 Parametric Technology Corporation. weiter Infos unter

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Word 2010 Schnellbausteine

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Präsentation zum Thema XML Datenaustausch und Integration

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Betriebssysteme Arbeiten mit dem Windows Explorer

Kontrollstrukturen, Strukturierte Programmierung

Datenbanken Kapitel 2

EndTermTest PROGALGO WS1516 A

FH-SY Chapter Version 3 - FH-SY.NET - FAQ -

Übersicht Programmablaufsteuerung

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

THREAD ARCS: An Thread Visualization

Statuten in leichter Sprache

Übungen Programmieren 1 Felix Rohrer. Übungen

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Funktionale Programmierung mit Haskell

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Modul 122 VBA Scribt.docx

Synchronisations- Assistent

Transkript:

- Wiederholung/Übung - Einführung, XML-Grundlagen und -Konzepte 1 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Bestandteile hat ein XML-Dokument? Bestandteile eines XML-Dokuments XML-Dokument XML-Deklaration Namespace Kommentar Attribut Text Element <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..." xmlns:dbis="http://www.minet.uni-jena.de/dbis/"> <! -Liste der Vorlesungsteilnehmer--> <dbis:teilnehmer dbis:matrikel="4711"> <dbis:name>mustermann</dbis:name> <dbis:vorname>max</dbis:vorname> <dbis:semester>5</dbis:semester> <dbis:studienfach>8</dbis:studienfach> </dbis:teilnehmer> <dbis:teilnehmer dbis:matrikel="4736"> <dbis:name>normalverbraucher</dbis:name> <dbis:vorname>otto</dbis:vorname> <dbis:semester>6</dbis:semester> <dbis:studienfach>10</dbis:studienfach> </dbis:teilnehmer> </vorlesung> 2 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Vorteile bietet XML? (6) Metasprache Offener Standard Trennung von Inhalt und Darstellung Vorteile von XML Lesbarkeit Plattformunabhängigkeit Einfacher, formaler und präziser Sprachentwurf 3 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Repräsentation passt zu unserem Beispiel? (1) (2) (3) 4 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Was ist Wohlgeformtheit und Gültigkeit? Welche Abhängigkeiten gelten? Wohlgeformheit (1) gültig wohlgeformt? (2) wohlgeformt gültig? Gültigkeit 5 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Prozesse finden statt? (1)? XML-Parsen (Analyse der Dokumentstruktur) <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> </vorlesung> <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> </vorlesung> (Rücküberführung zu Dokument) XML-Serialisieren (2)? 6 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Online Tools - Einführung, XML-Grundlagen und -Konzepte 7 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XML Formatierer (http://www.bytechaser.com/en/resources/tp9h7nivzr/free-online-xml-formatting-tool.aspx) 8 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools Syntax Highlighter (http://tohtml.com/xml/) - auch für viele weitere Typen verwendbar 9 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Wiederholung/Übung - XML-Datenmodellierung / XML-Schemasprachen 11 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Schemasprachen haben wir kennengelernt? (4) RELAX NG DTD Schematron Welche XML-Schemasprachen XML-Schema 12 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wie heißen die Hauptelemente in DTDs? Document Type Definition (DTD) <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> Attributliste Elementtyp ]> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> 13 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument dieser DTD? <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> ]> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> 14 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument dieser DTD? <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED untertitel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> ]> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> 15 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument dieser DTD? <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED untertitel CDATA #IMPLIED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> ]> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> 16 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument dieser DTD? <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> ]> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> 17 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument dieser DTD? <!DOCTYPE vorlesung[ <!ELEMENT vorlesung (teilnehmer+, raum?)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> ]> <!ELEMENT raum(#pcdata)> 18 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Nachteile hat DTD? kaum Datentypen nur dokumentweite Eindeutigkeit keine XML-Dokumente Nachteile von DTD keine Sonderzeichen für Aufzählungstyp keine Namespaces separate Editoren 19 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wie charakterisieren sich die einzelnen Typen? Erzeugung eigener Typen Typen (1)? (2)? ohne (Kind-) Elemente und Attribute umfassen (Kind-) Elemente oder Attribute einfache Typen komplexe Typen einfacher Inhalt komplexer Inhalt (3)? (4)? ohne (Kind-) Elemente mit (Kind-) Elementen 20 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument diesem Schema? <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="vorlesung"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" name="teilnehmer"> <xs:complextype> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="vorname" type="xs:string" /> <xs:element name="semester" type="xs:int" /> <xs:element name="studienfach" type="xs:int" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complextype> </xs:element> </xs:schema> 21 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument diesem Schema? <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="vorlesung"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" name="teilnehmer"> <xs:complextype> <xs:sequence> <xs:element name="name" type="xs:int" /> <xs:element name="vorname" type="xs:int" /> <xs:element name="semester" type="xs:int" /> <xs:element name="studienfach" type="xs:int" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complextype> </xs:element> </xs:schema> 22 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument diesem Schema? <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="vorlesung"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" name="teilnehmer"> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complextype> </xs:element> </xs:schema> 23 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument diesem Schema? <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="vorlesung"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" name="teilnehmer"> <xs:complextype> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="vorname" type="xs:string" /> <xs:element name="semester" type="xs:string" /> <xs:element name="studienfach" type="xs:string" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complextype> </xs:element> </xs:schema> 24 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Genügt unser XML-Dokument diesem Schema? <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element maxoccurs="unbounded" name="teilnehmer"> <xs:complextype> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="vorname" type="xs:string" /> <xs:element name="semester" type="xs:int" /> <xs:element name="studienfach" type="xs:int" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complextype> </xs:element> </xs:schema> 25 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Online Tools - XML-Datenmodellierung / XML-Schemasprachen 26 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools DTD-Generator (http://www.on-xml.com/editor_demo.php) - ist gleichzeitig vollwertiger XML-Editor 27 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XML-Schema-Generator (http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx) - verschiedene XML-Schema-Stile generierbar 28 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XML-Validierung (http://xmlvalidation.com) - unterstützt DTD- und XML-Schema-Validierung 29 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Wiederholung/Übung - XML-Abfrage- und Transformationssprachen 31 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML Warum sind die Attributwerte nicht im Ergebnis enthalten? XSLT 1.0 Standardregeln <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> <teilnehmer matrikel="4736"> <name>normalverbraucher</name> <vorname>otto</vorname> <semester>6</semester> <studienfach>10</studienfach> </teilnehmer> </vorlesung> <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> Der Name des Wurzelelements lautet: <xsl:value-of select="/child::node()/name()"/> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet> Ergebnis Der Name des Wurzelelements lautet: vorlesung Mustermann Max 5 8 Normalverbraucher Otto 6 10 32 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XSLT

Warum sind die Attributwerte nicht im Ergebnis enthalten? (1) XSLT 1.0 Standardregeln <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname>... verwendete Standardregel <xsl:template match="*"> <xsl:apply-templates /> <xsl:template> (<xsl:apply-templates /> <xsl:apply-templates select="*" />) (2) <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname>... ("*" "child::*") Attribute sind keine Kinder und daher nicht über die Achse child, sondern nur über die Achse attribute (@) selektierbar 33 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Warum sind die Attributwerte nicht im Ergebnis enthalten? XSLT XML Modifikation des Beispiels <?xml version="1.0" encoding="iso-8859-1"?> <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> <teilnehmer matrikel="4736"> <name>normalverbraucher</name> <vorname>otto</vorname> <semester>6</semester> <studienfach>10</studienfach> </teilnehmer> </vorlesung> <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> Der Name des Wurzelelements lautet: <xsl:value-of select="/child::node()/name()"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="*"> <xsl:apply-templates select="* @"/> </xsl:template> </xsl:stylesheet> Ergebnis Der Name des Wurzelelements lautet: vorlesung XML... 4711 Mustermann Max 5 8 4736 Normalverbraucher Otto 6 10 34 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XPath 1.0 Datentypen (4) Zeichenketten Ein Text ID4711 007 XPath 1.0 Datentypen Zahlen 4711 0.815 <studienfach>8</studienfach> <studienfach>10</studienfach> Knotenmengen true false Wahrheitswerte 35 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wie leiten sich Wahrheitswerte ab? Wahrheitswert Zeichenketten Länge > 0 Länge = 0 true false Knotenmenge Menge ist nicht leer Menge ist leer ( ) true false Zahl Zahl 0 und Zahl NaN Zahl = 0 oder Zahl = NaN true false 36 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Zusammensetzung eines XPath 1.0 Ausdrucks am Beispiel Lokalisierungspfad (1)? child::vorlesung/child::teilnehmer[@matrikel="4711"]/child::name/child::text() child::teilnehmer[@matrikel="4711"] Lokalisierungsschritt (2)? Achse (3)? Knotentest (4)? Prädikat (5)? 37 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Achsen werden durch die Bereiche gekennzeichnet? ancestor preceding parent self child precedingsibling followingsibling following descendant 38 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Möglichkeiten bieten Knotentests? Knotentyp (1)? node() comment() text() Einschränkung nach teilnehmer * (2)? Knotenname 39 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Operatoren(-arten) sind in Prädikaten zulässig? (4) boolesche Operatoren and or Vergleichsoperatoren =,!= >, >= < (<), <= (<=) + - * div mod Operatoren arithmetische Operatoren Mengenoperatoren 40 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? der Name des Teilnehmers mit der Matrikelnummer 4711 vorlesung/teilnehmer[ @matrikel="4711" ]/name/text() Mustermann 41 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Vorlesungen die von mindestens zwei Teilnehmern besucht werden vorlesung[ count(teilnehmer) >= 2 ]/@titel titel="xml..." 42 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? alle Teilnehmer mit dem Studiengang 7 oder 8 vorlesung/teilnehmer[ studiengang = 7 or studiengang = 8 ]/@matrikel * * Im XML-Dokument heißt es nicht studiengang sondern studienfach 43 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? der Teilnehmer, der sich zuletzt eingeschrieben hat * vorlesung/teilnehmer[last()]/@matrikel matrikel="4736" * Annahme: Teilnehmer haben sich in der Reihenfolge eingeschrieben, in der sie im Dokument vermerkt sind 44 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer, die bereits überdurchschnittlich lange studieren vorlesung/teilnehmer[ semester/text() > ( sum(../teilnehmer/semester/text()) div (count(../teilnehmer)) ) ]/@matrikel matrikel="4736" 45 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer mit der größten Matrikelnummer vorlesung/teilnehmer[ (not(@matrikel < following-sibling::teilnehmer/@matrikel) or not(following-sibling::teilnehmer)) and (not(@matrikel < preceding-sibling::teilnehmer/@matrikel) or not(preceding-sibling::teilnehmer)) ]/@matrikel matrikel="4736" 46 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Funktion erfüllen die markierten XSLT-Anweisungen? XSLT 1.0 Basics für alle Childs der Wurzel ("/") in unserem Beispiel also alle Knoten des XML- Dokuments werden (falls vorhanden) weitere Template-Matchings durchgeführt für alle Childs der Wurzel ("/child::node()/name()") also stets genau einen Knoten wird der Name in das Transformationsergebnis geschrieben für die Wurzel wird ein spezifiziertes Template-Matching durchgeführt <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> Der Name des Wurzelelements lautet: <xsl:value-of select="/child::node()/name()"/> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet> 47 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wozu passen die Inhalte der Standardregeln? Element Wurzel Attribut <xsl:apply-templates /> <xsl:value-of select="."/> Prozessorinstruktion <! - keine Aktion --> Text Kommentar 48 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Template wird bei der Regelkollision verwendet? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:apply-templates select="*/teilnehmer"/> </xsl:template> <xsl:template match="*"> 1 </xsl:template> <xsl:template match="vorlesung/teilnehmer"> 2 </xsl:template> <xsl:template match="teilnehmer"> 3 </xsl:template> </xsl:stylesheet> 49 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Möglichkeiten bieten XSLT 1.0 zum Kopieren von Knoten? xsl:copy (1)? kopiert einen einzelnen Knoten (aktuelle Kontextknoten) Möglichkeiten zum Kopieren von Knoten kopiert einen vollständigen (Teil-)Baum, entweder ausgehend vom Kontextknoten oder von beliebig selektierbarem Knoten (2)? xsl:copy-of 50 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche XSLT 1.0 Kontrollstrukturen haben wir kennengelernt? (3) bedingte Anweisungen (xsl:if) Schleifen (xsl:for-each) Welche Kontrollstrukturen Mehrfachverzweigungen (xsl:choose, xsl:when und xsl:otherwise) 51 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Platzhalter können in XSLT 1.0 verwendet werden? Variablen (1)? eher im Sinn einer Konstante zu verstehen, können innerhalb des definierten Kontexts verwendet werden Platzhalter in XSLT ähnlich zu Variablen, jedoch nur in Verbindung von benannten Templates (2)? Parameter 52 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispieltransformationen Wie lautet das Ergebnis und warum kommt es zustande? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> </xsl:stylesheet> Mustermann Max 5 8 Normalverbraucher Otto 6 10 53 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispieltransformationen Wie lautet das Ergebnis und warum kommt es zustande? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:apply-templates select="teilnehmer"/> </xsl:template> </xsl:stylesheet> 54 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispieltransformationen Wie lautet das Ergebnis und warum kommt es zustande? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:apply-templates select="vorlesung/teilnehmer"/> </xsl:template> </xsl:stylesheet> Mustermann Max 5 8 Normalverbraucher Otto 6 10 55 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispieltransformationen Wie lautet das Ergebnis und warum kommt es zustande? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:apply-templates select="vorlesung/teilnehmer/@*"/> </xsl:template> </xsl:stylesheet> 47114736 56 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispieltransformationen Wie lautet das Ergebnis und warum kommt es zustande? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:for-each select="vorlesung/teilnehmer"> <xsl:value-of select="name"/> <xsl:if test="following-sibling::teilnehmer"> <xsl:text>, </xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet> Mustermann, Normalverbraucher 57 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispieltransformationen Wie lautet das Ergebnis und warum kommt es zustande? <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="vorlesung"> <xsl:element name="verzeichnis"> <xsl:copy-of select="."/> <xsl:copy> <xsl:attribute name="titel">xml Fortsetzung</xsl:attribute> <xsl:copy-of select="teilnehmer"/> </xsl:copy> </xsl:element> </xsl:template> </xsl:stylesheet> <?xml version="1.0" encoding="iso-8859-1"?> <verzeichnis> <vorlesung titel="xml..."> <teilnehmer matrikel="4711">...</teilnehmer> <teilnehmer matrikel="4736">...</teilnehmer> </vorlesung> <vorlesung titel="xml Fortsetzung"> <teilnehmer matrikel="4711">...</teilnehmer> <teilnehmer matrikel="4736">...</teilnehmer> </vorlesung> </verzeichnis> 58 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Online Tools - XML-Abfrage- und Transformationssprachen 59 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XPath-Scanner (http://chris.photobooks.com/xml/default.htm) - kann auch XSLT-Transformationen 60 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XSLT-Prozessor (http://xslttest.appspot.com/) - besitzt Möglichkeit zur direkten Darstellung von HTML- Transformationsergebnissen 61 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Wiederholung/Übung - XML-Abfrage- und Transformationssprachen (Teil 2) 63 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Weiterentwicklungen ergaben sich durch XPath 2.0 (4) Sequenzen als Ersatz für Knotenmengen zusätzliche Ausdrücke Bedingungsausdrücke for-ausdrücke Quantifizierungsausdrücke Weiterentwicklungen in Anlehnung an XML-Schema (zzgl. 5 neuer Datentypen) erweitertes Typsystem erweiterte Operatoren und zahlreiche neue Funktionen neue Funktionen und Operatoren 64 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wie heißt das neue Konstrukt in XPath 2.0 und wie setzt es sich zusammen? XPath 2.0 Erweiterung des Datenmodells (1, "Ein Text") Sequenz (1)? Item Item (2)? (3)? (atomarer Typ) (atomarer Wert) 65 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Zusammensetzung eines XPath 2.0 Pfadausdrucks am Beispiel (1) Pfadausdruck? vorlesung/if (child) then (child::teilnehmer[@matrikel="4711"]/name) else "kein Teilnehmer" Lokalisierungsschritt (2)? XPath 2.0 Ausdruck (6)? (Bedingungsausdruck) child::teilnehmer[@matrikel="4711"] Achse (3)? Knotentest (4)? Prädikat (5)? 66 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Was gilt und warum gilt es? (1) (2) (3) (4) (5) (1 to 5) = reverse((5,4,3,2,1)) (1,2,3) = (3,2,1) ((1,3,2) > (1,2,3)) and ((1,3,2) < (1,2,3)) subsequence((1 to 5), 2, 1) = 2 0815 instance of xs:integer (6) (1,2,3,2) = (1,2,3) (7) 1,(2,3) = (1,2,3) 67 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche der Ausdrücke arbeiten mit Variablen? Bedingungsausdruck Quantifizierungsausdruck Variable for-ausdruck 68 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wo liegt der Unterschied zwischen den Vergleichsoperatoren? Sequenzvergleiche (und Einzelwertvergleiche) =,!=, <, >, <=, >= Unterschied eq, ne, lt, gt, le, ge Einzelwertvergleiche 69 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer mit der größten Matrikelnummer (vorlesung/teilnehmer[ @matrikel = max(parent::*/teilnehmer/@matrikel) ]/data(@matrikel)) (4736) vorlesung/teilnehmer[ (not(@matrikel < following-sibling::teilnehmer/@matrikel) or not(following-sibling::teilnehmer)) and (not(@matrikel < preceding-sibling::teilnehmer/@matrikel) or not(preceding-sibling::teilnehmer)) ]/@matrikel vgl. XPath 1.0 70 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Welche Veranstaltungen besuchen Max und Otto gemeinsam? (vorlesung/ (if (teilnehmer[@matrikel = 4711] and teilnehmer[@matrikel = 4736]) then @titel else ()) ) (XML...) 71 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? In welchen Semestern befinden sich die Teilnehmer der Vorlesung? (for $var1 in distinct-values(vorlesung/teilnehmer/semester) return concat( "Semester ", $var1, ": ", count(vorlesung/teilnehmer[semester = $var1]), " Teilnehmer") ) (Semester 5: 1 Teilnehmer, Semester 6: 1 Teilnehmer) 72 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer die im 5ten oder 6ten Semester sind bzw. deren Matrikelnummer mit 47 beginnt (vorlesung/teilnehmer[semester = 5 or semester = 6] /@matrikel, vorlesung/teilnehmer[starts-with(@matrikel, "47")] /@matrikel) (4711, 4736, 4711, 4736) 73 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer die im 5ten oder 6ten Semester sind bzw. deren Matrikelnummer mit 47 beginnt (vorlesung/teilnehmer[semester = 5 or semester = 6] /@matrikel union vorlesung/teilnehmer[starts-with(@matrikel, "47")] /@matrikel) (4711, 4736) 74 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer die im 5ten oder 6ten Semester sind bzw. deren Matrikelnummer mit 47 beginnt (vorlesung/teilnehmer[semester = 5 or semester = 6 or starts-with(@matrikel, "47")]/data(@matrikel)) (4711, 4736) 75 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Teilnehmer die im 5ten oder 6ten Semester sind bzw. deren Matrikelnummer mit 47 beginnt ((vorlesung/teilnehmer[semester = 5 or semester = 6], vorlesung/teilnehmer[starts-with(@matrikel, "47")]) /data(@matrikel)) (4711, 4736) 76 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Ist zu allen Teilnehmern ein Studienfach-Element enthalten? (data( every $teiln in vorlesung/teilnehmer satisfies $teiln/*[node-name(.) cast as xs:string = "studienfach"] )) true 77 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Aus welchen Klauseln besteht ein FLWOR-Ausdruck und wozu dienen diese? For definiert eine Variable, die eine Liste von Elementen durchläuft Let L definiert eine Variable, deren Wert eine ganze Liste von Elementen ist Where filtert das Ergebnis (ausgewählten Elemente) anhand einer Bedingung Order by sortiert das Ergebnis Return liefert das Ergebnis als Sequenz in der angegebenen Form zurück 78 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Selektionsklauseln sind im FLWOR-Ausdruck möglich? (2) for-klausel definiert Variable, die an jedes Element (Item) der Sequenz einzeln gebunden wird (per in) Selektionsklauseln definiert Variable, die an die ganze Sequenz gebunden wird (per :=) let-klausel 79 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welches Ergebnis resultiert für den Ausdruck in den einzelnen Fällen? for $var1 in (1,2) for $var2 in ("a","b") <t><v1>1</v1><v2>a</v2></t> <t><v1>1</v1><v2>b</v2></t> <t><v1>2</v1><v2>a</v2></t> <t><v1>2</v1><v2>b</v2></t> for $var1 in (1,2) let $var2 := ("a","b") <t><v1>1</v1><v2>a b</v2></t> <t><v1>2</v1><v2>a b</v2></t> Mehrere Variablen return <t><v1>{$var1}</v1><v2>{$var2}</v2></t> <t><v1>1 2</v1><v2>a</v2></t> <t><v1>1 2</v1><v2>b</v2></t> let $var1 := (1,2) for $var2 in ("a","b") <t><v1>1 2</v1><v2>a b</v2></t> let $var1 := (1,2) let $var2 := ("a","b") 80 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Ergebnisse liefern die FLWOR-Ausdrücke? let $var1 := (0) for $var2 in (1 to 5) let $var1 := $var1 + 1 return $var1 (1,1,1,1,1) let $var1 := (0) for $var2 in (1 to 5) for $var1 in $var1 + 1 return $var1 (1,1,1,1,1) Gültigkeitsbereich (3,3,3,3,3) let $var1 := (0) for $var2 in (1 to 5) let $var1 := $var1 + 1 let $var1 := $var1 + 2 return $var1 (1) let $var1 := (0) let $var2 := (1 to 5) let $var1 := $var1 + 1 return $var1 81 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Konstruktoren existieren in XPath 2.0? direkte Konstruktoren (1)? <name>inhalt</name> name="inhalt" Inhalt <!--Inhalt--> kein Konstruktor für Dokumentknoten <?name Inhalt?> Konstruktoren element name {Inhalt} attribute name {Inhalt} document {Inhalt} text {Inhalt} comment {Inhalt} processing-instruction name {Inhalt} (2)? berechnete Konstruktoren 82 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Wie lassen sich XML-Dokumente klassifizieren? (1)? datenorientierte Dokumente Klassifizierung (2)? dokumentorientierte Dokumente 83 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Vorteile bietet XML? (6) strenge Schemata meist gezielter Zugriff auf Dokumentteile nötig standardisierter Datenaustausch datenorientierte Dokumente stark strukturierte und typisierte Speicherung XQuery zumeist Felddaten Dokumentreihenfolge meist irrelevant 84 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Vorteile bietet XML? (6) kaum vorhandene bzw. wenig strenge Schemata in der Regel Komplettzugriff (viel) Text und (wenig) Felddaten semistrukturiertes XML dokumentorientierte Dokumente XSLT Dokumentreihenfolge relevant Präsentation, Strukturierung oder Konvertierung von Dokumenten 85 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Die folgenden Beispielabfragen erwarten, dass im voraus das Beispiel- Dokument an die Variable $document gebunden werden muss. let $document := doc("http://www.informatik.uni-jena.de /dbis/lehre/ws2012/xml/beispiel.xml") <vorlesung titel="xml..."> <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> <teilnehmer matrikel="4736"> <name>normalverbraucher</name> <vorname>otto</vorname> <semester>6</semester> <studienfach>10</studienfach> </teilnehmer> </vorlesung> 86 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Wie heißen die Initialen der Teilnehmer? for $teiln in $document/vorlesung/teilnehmer let $vorname_kurz := concat(substring($teiln/vorname, 1, 1), ".", substring($teiln/name, 1, 1), ".") return <name>{$vorname_kurz}</name> <name>m.m.</name> <name>o.n.</name> 87 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Welche Teilnehmer sind nicht im 5ten Semester? for $teiln in $document/vorlesung/teilnehmer where $teiln/semester!= 5 return <matrikel>{$teiln/@matrikel}</matrikel> <matrikel matrikel="4736"/> 88 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Welche Teilnehmer sind nicht im 5ten Semester? for $teiln in $document/vorlesung/teilnehmer where $teiln/semester!= 5 return <matrikel>{data($teiln/@matrikel)}</matrikel> <matrikel>4736</matrikel> 89 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Sortiere die angegebenen Elemente nach dem Attribut j! for $var1 in ( <i j="1" k="a"/>, <i j="2" k="b"/>, <i k="c"/> ) order by document{$var1}/i/@j empty least return $var1 <i k="c"/> <i j="1" k="a"/> <i j="2" k="b"/> 90 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? In welchem Semester befindet sich die Mehrheit der Teilnehmer? let $subquery := ( for $sems in distinct-values($document/vorlesung/teilnehmer/semester) let $anz := count($document/vorlesung/teilnehmer[semester = $sems]) return document{<semester><sem>{$sems}</sem><anz>{$anz}</anz></semester>} ) return concat ("Die meisten Teilnehmer studieren im ", ($subquery/semester/sem[parent::*/anz = max($subquery/semester/anz)])[1], "ten Semester.") Die meisten Teilnehmer studieren im 5ten Semester. 91 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Online Tools - XML-Abfrage- und Transformationssprachen 92 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XPath 2.0-Auswerter (http://www.qutoric.com/xslt/analyser/xpathtool.html) - XML-Dokument muss zuvor (per Drag-n-Drop) geuploadet werden 93 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Online Tools XQuery-Prozessor (http://www.zorba-xquery.com/html/demo) - setzt voraus, dass XML-Dokument online verfügbar ist 94 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

- Wiederholung/Übung - XML in relationalen Datenbanksystemen 96 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Gründe für XML-Datenbanken haben wir besprochen? XML in Datenbanken Warum? Datenaustausch sichere, dauerhafte Speicherung von (ausgetauschten) Dokumenten im Originalzustand (auch aufgrund rechtlicher Vorschriften)... Dokumentenverwaltung XML-Datenbanksystem als intelligentes und leistungsstarkes Backend mit Basisfunktionalitäten (wie bspw. Textsuchverfahren) für Dokumentenverwaltungssysteme XML effizientes Suchen in XML- Anwendungsdaten, Möglichkeit paralleler Mehrbenutzerzugriffe XML-basierte Anwendungen 97 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Modell für XML-Datenbanken haben wir kennengelernt? monolithische Ansatz fragmentorientierte Ansatz Modelle dokumentorientierte Ansatz 98 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche datenbankspezifischen Anforderungen stellen sich an XML-DBMS? Mehrbenutzerbetrieb Skalierbarkeit Transaktionskonzept (ACID) datenbankspezifische Sicherheit Verfügbarkeit Anforderungen Erweiterbarkeit Effizienz Speicherstrukturunabhängigkeit 99 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche XML-spezifischen Anforderungen stellen sich an XML-DBMS? Schemavorgabe und Validierung Strukturunabhängigkeit unterschiedlich granulare Möglichkeiten zur Autorisierung Schema- Evolution Dokumentenbehandlung Standardkonformität XML-spezifische Anforderungen Schemaunabhängigkeit offenes Inhaltsmodell Speicherung von Nicht-XML-Daten Web-Anbindung und andere Protokolle Kodierung und Internationalisierung XML-spezifische Schnittstellen zur Datenabfrage und manipulation 100 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Ansätze zur XML-Speicherung in rel. DBMS haben wir behandelt? inhaltsorientierte Zerlegung generisch definitorisch strukturorientierte Zerlegung XML in relationalen DBMS opake Speicherung 101 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche relationale XML-Speicherform wird beispielhaft dargestellt? strukturorientierte Zerlegung DOKUMENT- KENNUNG KNOTEN- NUMMER VORGÄNGER- NUMMER ORDNUNGS- ZAHL NAME 1 1 0 1 vorlesung WERT 1 2 1 titel XML... 1 3 1 1 teilnehmer 1 4 3 matrikel 4711 1 5 3 1 name Mustermann 1 6 3 2 vorname Max 1 7 3 <vorlesung titel="xml..."> 3 <teilnehmer semester matrikel="4711"> 5 1 8 3 4 <name>mustermann</name> <vorname>max</vorname> studienfach 8 <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> </vorlesung> 102 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche relationale XML-Speicherform wird beispielhaft dargestellt? generische inhaltsorientierte Zerlegung CREATE TABLE TEILNEHMER (MATRIKEL INT NOT NULL, NAME VARCHAR(20) NOT NULL, VORNAME VARCHAR(20) NOT NULL, STUDIENFACH INT NOT NULL, SEMESTER INT NOT NULL) <!ELEMENT TEILNEHMER (Row*)> <!ELEMENT Row (MATRIKEL, NAME, VORNAME, SEMESTER, STUDIENFACH)> <!ELEMENT MATRIKEL (#PCDATA)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT VORNAME (#PCDATA)> <!ELEMENT SEMESTER (#PCDATA)> <!ELEMENT STUDIENFACH (#PCDATA)> 103 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche relationale XML-Speicherform wird beispielhaft dargestellt? opake Speicherung CREATE TABLE VORLESUNG (ID INT NOT NULL, XML CLOB(1M)) <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> 104 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche relationale XML-Speicherform wird beispielhaft dargestellt? strukturorientierte Zerlegung CREATE TABLE VORLESUNG (DOKUMENTKENNUNG INT NOT NULL, KNOTENNUMMER INT NOT NULL, VORGÄNGERNUMMER INT NOT NULL, ORDNUNGSZAHL INT NULL, NAME VARCHAR(1000) NOT NULL, WERT VARCHAR(1000) NULL) <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT semester (#PCDATA)> <!ELEMENT studienfach (#PCDATA)> 105 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche relationale XML-Speicherform wird beispielhaft dargestellt? generische inhaltsorientierte Zerlegung MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 <TEILNEHMER> <ROW> <MATRIKEL>4711</MATRIKEL> <NAME>Mustermann</NAME> <VORNAME>Max</VORNAME> <SEMESTER>5</SEMESTER> <STUDIENFACH>8</STUDIENFACH> </ROW> </TEILNEHMER> 106 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Aspekte werden durch SQL/XML genormt? Abbildungsvorschriften zwischen SQL und XML relationaler Datentyp XML SQL/XML XML-spezifische (SQL-)Funktionen 107 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Welche Typen von Funktionen werden durch SQL/XML genormt? Konstruktionsfunktionen Funktion zur Zerlegung Funktion zur XML-Schemavalidierung XML-spezifische (SQL-)Funktionen Konvertierungsfunktionen Funktion zur Auswertung 108 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Transformiere die Daten jedes Teilnehmers ins XML-Format! MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 4736 Normalverbraucher Otto 6 10 SELECT XMLELEMENT(NAME "teilnehmer", XMLATTRIBUTES( MATRIKEL AS "matrikel" ), XMLFOREST( NAME AS "name", VORNAME AS "vorname", SEMESTER AS "semester", STUDIENFACH AS "studienfach" ) ) FROM TEILNEHMER <teilnehmer matrikel="4711"> <name>mustermann</name> <vorname>max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> <teilnehmer matrikel="4711"> <name>normalverbraucher</name> <vorname>otto</vorname> <semester>6</semester> <studienfach>10</studienfach> </teilnehmer> 109 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Erstelle im XML-Format eine Liste aller Teilnehmer! MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 4736 Normalverbraucher Otto 6 10 SELECT XMLELEMENT(NAME "TEILNEHMERLISTE", XMLAGG( XMLELEMENT(NAME "TEILNEHMER", CONCAT(VORNAME, CONCAT(' ', NAME) ) ) ) ) FROM TEILNEHMER; <TEILNEHMERLISTE> <TEILNEHMER> Max Mustermann </TEILNEHMER> <TEILNEHMER> Otto Normalverbraucher </TEILNEHMER> </TEILNEHMERLISTE> 110 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Erstelle im XML-Format eine Liste aller Teilnehmer in Abhängigkeit ihres Studienfachs! MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 4736 Normalverbraucher Otto 6 10 SELECT XMLELEMENT(NAME "TEILNEHMERLISTE", XMLAGG(SUB.FACHLISTE) ) FROM ( SELECT XMLELEMENT(NAME "STUDIENFACH", XMLATTRIBUTES(STUDIENFACH AS "ID"), XMLAGG( XMLELEMENT(NAME "TEILNEHMER", CONCAT(VORNAME, CONCAT(' ', NAME) ) ) ) ) AS FACHLISTE FROM TEILNEHMER GROUP BY STUDIENFACH) AS SUB; <TEILNEHMERLISTE> <STUDIENFACH ID="8"> <TEILNEHMER> Max Mustermann </TEILNEHMER> </STUDIENFACH> <STUDIENFACH ID="10"> <TEILNEHMER> Otto Normalverbraucher </TEILNEHMER> </STUDIENFACH> </TEILNEHMERLISTE> 111 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Ermittle die Matrikelnummern der Teilnehmer! ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>mustermann</name><vorname>max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> SELECT XMLQUERY( 'for $var1 in //teilnehmer return $var1/@matrikel' PASSING XML_DATEN ) AS ERGEBNIS FROM TEILNEHMER ERGEBNIS 4711 112 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Prüfe ob jede Matrikelnummer nur einmal vergeben wurde! ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>mustermann</name><vorname>max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> SELECT XMLQUERY( 'for $var1 in //teilnehmer return $var1/@matrikel' PASSING XML_DATEN ) AS MATRIKEL, COUNT(*) AS PRUEFWERT FROM TEILNEHMER GROUP BY PRUEFWERT ORDER BY PRUEFWERT DESC FETCH FIRST 1 ROW ONLY; MATRIKEL 4711 1 PRUEFWERT 113 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Extrahiere die Matrikelnummer aus den XML-Daten und verwende sie als ID! ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>mustermann</name><vorname>max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> ID XML_DATEN UPDATE TEILNEHMER T_NEU SET ID = SELECT X.MATRIKEL FROM TEILNEHMER T_ALT, XMLTABLE( '$xml_daten/teilnehmer' PASSING T_ALT.XML_DATEN AS "xml_daten" COLUMNS MATRIKEL INTEGER PATH '@matrikel', ) X WHERE T_ALT.ID = T_NEU.ID; 4711 <teilnehmer matrikel="4711"> <name>mustermann</name><vorname>max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> 114 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Beispielabfragen Was wird abgefragt und wie lautet das Ergebnis? Überführe die Inhalte der XML-Daten in separate Spaltenwerte! ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>mustermann</name><vorname>max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> SELECT X.MATRIKEL, X.NAME, X.VORNAME, X.SEMESTER, X.STUDIENFACH FROM TEILNEHMER T, XMLTABLE( '$xml_daten/teilnehmer' PASSING T.XML_DATEN AS "xml_daten" COLUMNS MATRIKEL INTEGER PATH '@matrikel', NAME VARCHAR(20) PATH 'name', VORNAME VARCHAR(20) PATH 'vorname', SEMESTER INTEGER PATH 'semester', STUDIENFACH INTEGER PATH 'studienfach' ) X; MATRIKEL NAME VOR- NAME 4711 Mustermann SEMESTER Max 5 8 STUDIEN- FACH 115 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen