Übung 2: XML / XQuery Übung 2: XML / XQuery.

Slides:



Advertisements
Ähnliche Präsentationen
Erfolgsstrategien auf internationalen Märkten
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Extensible Markup Language
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Bauinformatik II Softwareanwendungen 1
Grundlagen der Informatik
der Universität Oldenburg
Franziska Schmidt Sarah Ahlheit
Protokollarten.
Beispiel für einen 2-zeiligen Titel
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
Union-Find-Strukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Eine Biografie aus ADB/NDB als XML Datenbanken vs. Markup Prof Dr. Manfred Thaller WS 2009 / 2010 Referent: Bilal Erkin.
© 2002 Prof. Dr. G. Hellberg 1 XML-Seminar XML-Technologie: XML in Theorie und Praxis Prof. Dr. G. Hellberg XML-Technologie: XML in Theorie und Praxis.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Das Relationenmodell 1.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
1 Lösungen zu Übungsblatt 4 zur Vorlesung Datenstrukturen, Prof. R. Bayer, WS 2001/02 Übung 8.1: Gegeben sei der Beginn einer DTD Definition. Vervollständigen.
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Matthias Spohrer · TU München 8. Präsenzveranstaltung – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.
EDV1 - Komplexe Datentypen
Weiteres Programm Studium des Breitendurchlaufs Hierzu
PST POWERPOINT STYLEGUIDE
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Quilt: Eine XML Anfragesprache für heterogene Datenquellen
In die erste Zeile jeweils Überschriften für die Spalten eingeben, z.B.: Dann in die Spalten die Daten eingeben! In die Spalte Bemerkung werden Daten.
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 Commands (1) s.a.
Einführung in die Programmiersprache C 4
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Nach einer kleinen Pause bis gleich 62.Mitgliederversammlung Beratung unserer neuen Satzung.
PROTOKOLLFÜHRUNG.
Vom Kontext zum Projekt V Carina Berning Sabrina Gursch Pierre Streicher Intelligente Dateisysteme.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Schulungsunterlagen der AG RDA Vertretungen der Öffentlichen Bibliotheken.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Das Kurzprotokoll Gruppenarbeit von Mila, Lilly, Sabrina und Marika.
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
XML-Datenbanken Weiterentwicklung eines Prototypen zur nativen Speicherung von XML-Dokumenten Georg Kiekel
Protokolle schreiben Tipps für gelungene Dokumentation
Von Daniel Schlupf. 1. Seriendruck starten 2. Dokumenttyp wählen Weiter Brief auswählen Weiter.
Organisationsanpassung Zusammenfassung Fragen
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Der Datentyp Verbund (record)
Lösungen zum Übungsblatt 3 zur Vorlesung Datenstrukturen Prof. R. Bayer, WS 2001/02 Übung 6.1: Konstruieren Sie den B-Baum aus der Klasse  h  der.
Geoinformation3 Geoinformation III XML Grundlagen und Dokumentspezifikation Vorlesung 12b.
1 Kapitel 10: XML. 2 XML 1969GMLGeneralized Markup Language (Goldfarb/Mosher/Lorie) 1986SGMLStandardized Markup Language 1989WWWWorld Wide Web 1992HTMLHypertext.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 12: XQuery und SQL/XML.
Und B E S C H R I F T U N G Matthias Fahle
Datenbanken erstellen mit PostgreSQL
<Vorname Nachname>
Datentypen: integer, char, string, boolean
Titel der Veranstaltung Ort, Datum
Datentypen: integer, char, string, boolean
Bezeichnung der Abschlussarbeit UNTERÜBERSCHRIFT Datum
Titel Bild/ Diagramm Bild/ Diagramm Bild/ Diagramm Bild/ Diagramm
Name: Klasse: Datum: Übung: selbst korrigiert Korrektur Trainer 1 2 3
Titel Zeile 1 Zeile 2 Zeile 3
 Präsentation transkript:

Übung 2: XML / XQuery Übung 2: XML / XQuery

Übungsblatt 2 In jedem Protokoll müssen enthalten sein: Titel Datum Zeit Ort Protokollführer  Protokollkopf mit diesen Daten Übung 2: XML / XQuery

Titel, Protokolldatum, Zeit, Ort, Protokollführer Übungsblatt 2 Protokollkopf mit: Titel, Protokolldatum, Zeit, Ort, Protokollführer <!ENTITY % protokollkopf "titel,datum,zeit,ort,protokollfuehrer"> <!ELEMENT titel (#PCDATA)> <!ELEMENT datum (#PCDATA)> <!ELEMENT zeit (#PCDATA)> <!ELEMENT ort (#PCDATA)> <!ELEMENT protokollfuehrer (person)> Übung 2: XML / XQuery

Die Datentypen vorname & name Übungsblatt 2 Der Datentyp person <!ELEMENT person (%anrede;,vorname?,name)> <!ATTLIST person bemerkung CDATA #IMPLIED ident ID #IMPLIED> Die Datentypen vorname & name <!ELEMENT vorname (#PCDATA)> <!ELEMENT name (#PCDATA)> Übung 2: XML / XQuery

Die Datentypen prof_dr, prof, dr, herr & frau Übungsblatt 2 Der Datentyp anrede <!ENTITY % anrede "(prof_dr|prof|dr|herr|frau)?"> Die Datentypen prof_dr, prof, dr, herr & frau <!ELEMENT prof_dr EMPTY> <!ELEMENT prof EMPTY> <!ELEMENT dr EMPTY> <!ELEMENT herr EMPTY> <!ELEMENT frau EMPTY> Übung 2: XML / XQuery

Titel, Protokolldatum, Zeit, Ort, Protokollführer Übungsblatt 2 Protokollkopf mit: Titel, Protokolldatum, Zeit, Ort, Protokollführer <xsd:element name="protokoll"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element ref="datum"/> <xsd:element ref="zeit"/> <xsd:element ref="ort"/> <xsd:element name="protokollfuehrer" type="protokollfuehrerType"/> ... </xsd:sequence> </xsd:complexType> </xsd:element> Übung 2: XML / XQuery

Übungsblatt 2 Der Datentypen titel, datum, zeit & ort <xsd:element name="titel" type="xsd:string"/> <xsd:element name="datum" type="xsd:date"/> <xsd:element name="zeit" type="xsd:time"/> <xsd:element name="ort" type="xsd:string"/> Der Datentyp protokollführerType <xsd:complexType name="protokollfuehrerType"> <xsd:sequence> <xsd:element name="person" type="personType"/> </xsd:sequence> </xsd:complexType> Übung 2: XML / XQuery

Der Datentyp personType Übungsblatt 2 Der Datentyp personType <xsd:complexType name="personType"> <xsd:sequence> <xsd:choice> <xsd:element ref="prof_dr"/> <xsd:element ref="prof"/> <xsd:element ref="dr"/> <xsd:element ref="herr"/> <xsd:element ref="frau"/> </xsd:choice> <xsd:element ref="vorname" minOccurs="0"/> <xsd:element ref="name"/> </xsd:sequence> <xsd:attribute name="bemerkung" type="xsd:string"/> <xsd:attribute name="ident" type="xsd:ID"/> </xsd:complexType> Übung 2: XML / XQuery

Übungsblatt 2 Der Datentypen vorname & name <xsd:element name="name" type="xsd:string"/> <xsd:element name="vorname" type="xsd:string"/> Die Datentypen prof_dr, prof, dr, herr & frau <xsd:element name="prof_dr"> <xsd:complexType/> </xsd:element> <xsd:element name="prof"> <xsd:complexType/> </xsd:element> <xsd:element name="dr"> <xsd:complexType/> </xsd:element> <xsd:element name="herr"> <xsd:complexType/> </xsd:element> <xsd:element name="frau"> <xsd:complexType/> </xsd:element> Übung 2: XML / XQuery

Übungsblatt 2 Die Teilnehmerliste soll alle An- und Abwesenden auflisten: Ordentliche Teilnehmer Gäste Entschuldigt Abwesende Unentschuldigt Abwesende  Je eine Teilliste mit diesen Personen Übung 2: XML / XQuery

Übungsblatt 2 Liste von Personen mit Anwesenden, Gästen, (un)entschuldigt Abwesenden <!ENTITY % teilnehmerliste "teilnehmer,gaeste?,entschuldigt?,unentschuldigt?"> Die Datentypen teilnehmer, gaeste, entschuldigt, unentschuldigt <!ELEMENT teilnehmer (person)+> <!ELEMENT gaeste (person)+> <!ELEMENT entschuldigt (person)+> <!ELEMENT unentschuldigt (person)+> Übung 2: XML / XQuery

Übungsblatt 2 Listen von Personen mit: Anwesenden, Gästen, (un)entschuldigt Abwesenden <xsd:element name="protokoll"> <xsd:complexType> <xsd:sequence> ... <xsd:element name="teilnehmer" type="teilnehmerType"/> <xsd:element name="gaeste" type="gaesteType" minOccurs="0"/> <xsd:element name="entschuldigt" type="entschuldigtType" minOccurs="0"/> <xsd:element name="unentschuldigt" type="unentschuldigtType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> Übung 2: XML / XQuery

Übungsblatt 2 Der Datentypen teilnehmerType, gaesteType, entschuldigtType, unentschuldigtType <xsd:complexType name="teilnehmerType"> <xsd:sequence> <xsd:element name="person" type="personType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="gaesteType"> ... <xsd:complexType name="entschuldigtType"> <xsd:complexType name="unentschuldigtType"> Übung 2: XML / XQuery

Übungsblatt 2 Zu Tagesordnungspunkten muß angegeben werden: Antragsteller / Berichter Beschlußziffer (nur Beschlüsse) Beschlußdatum (nur Beschlüsse) Abstimmungsresultat (nur Beschlüsse) Datentyp für Kenntnisnahmen Datentyp für Beschlüsse Übung 2: XML / XQuery

Übungsblatt 2 Tagesordnungspunkte sollen enthalten: Einen oder mehrere Abschnitte Spezielle Kennzeichnungen für Namen Zeiten Daten Datentyp für Abschnitt Datentypen für Daten & Zeiten Übung 2: XML / XQuery

Übungsblatt 2 Der Datentyp beschluss <!ELEMENT beschluss (titel,ziffer,inhalt,resultat)> <!ATTLIST beschluss antragsteller IDREFS #REQUIRED> Die Datentypen ziffer, inhalt & resultat <!ELEMENT ziffer (#PCDATA)> <!ELEMENT resultat (#PCDATA)> <!ELEMENT inhalt (p)*> Die Datentyp p <!ELEMENT p (#PCDATA|name|zeit|datum)*> Übung 2: XML / XQuery

Übungsblatt 2 Der Datentyp kenntnisnahme <!ELEMENT kenntnisnahme (titel,inhalt)> <!ATTLIST kenntnisnahme berichter IDREFS #REQUIRED> Die Datentypen ziffer, inhalt & resultat <!ELEMENT ziffer (#PCDATA)> <!ELEMENT resultat (#PCDATA)> <!ELEMENT inhalt (p)*> Die Datentyp p <!ELEMENT p (#PCDATA|name|zeit|datum)*> Übung 2: XML / XQuery

Übungsblatt 2 Der Datentyp beschlussType <xsd:complexType name="beschlussType"> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element ref="ziffer"/> <xsd:element name="inhalt" type="inhaltType"/> <xsd:element ref="resultat"/> </xsd:sequence> <xsd:attribute name="antragsteller" type="xsd:IDREFS" use="required"/> </xsd:complexType> Die Datentypen ziffer & resultat <xsd:element name="ziffer" type="xsd:string"/> <xsd:element name="resultat" type="xsd:string"/> Übung 2: XML / XQuery

Der Datentyp inhaltType Übungsblatt 2 Der Datentyp inhaltType <xsd:complexType name="inhaltType"> <xsd:sequence> <xsd:element name="p" type="pType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> Der Datentyp pType <xsd:complexType name="pType" mixed="true"> <xsd:choice minOccurs="0"> <xsd:element ref="ein_name"/> <xsd:element ref="ein_datum"/> <xsd:element ref="eine_zeit"/> </xsd:choice> </xsd:complexType> Übung 2: XML / XQuery

Übungsblatt 2 Die Datentypen ein_name, ein_datum & eine_zeit <xsd:element name="ein_name" type="xsd:string"/> <xsd:element name="ein_datum" type="xsd:string"/> <xsd:element name="eine_zeit" type="xsd:string"/> Der Datentyp kenntnisnahmeType <xsd:complexType name="kenntnisnahmeType"> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element name="inhalt" type="inhaltType"/> </xsd:sequence> <xsd:attribute name="berichter" type="xsd:IDREFS" use="required"/> </xsd:complexType> Übung 2: XML / XQuery

Der Datentyp protokoll Übungsblatt 2 Und wie wird das alles zusammengesetzt? Der Datentyp protokoll <!ELEMENT protokoll (%protokollkopf;,%teilnehmerliste;,(beschluss|kenntnisnahme)+)> Übung 2: XML / XQuery

Der Datentyp protokoll Übungsblatt 2 Und wie wird das alles zusammengesetzt? Der Datentyp protokoll <xsd:element name="protokoll"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titel"/> ... <xsd:element name="protokollfuehrer" type="protokollfuehrerType"/> <xsd:element name="teilnehmer" type="teilnehmerType"/> <xsd:element name="unentschuldigt" type="unentschuldigtType" minOccurs="0"/> <xsd:choice maxOccurs="unbounded"> <xsd:element name="beschluss" type="beschlussType"/> <xsd:element name="kenntnisnahme" type="kenntnisnahmeType"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> Übung 2: XML / XQuery

Übungsblatt 3 Stellen Sie die Gesamtzahl sowie die Anzahl der männlichen und der weiblichen Sitzungsteilnehmer fest. <numberOfPersons> { let $t := count(doc("protokoll.xml")/protokoll/teilnehmer/person) let $g := count(doc("protokoll.xml")/protokoll/gaeste/person) return $t + $g } </numberOfPersons> Übung 2: XML / XQuery

Übungsblatt 3 Stellen Sie die Gesamtzahl sowie die Anzahl der männlichen und der weiblichen Sitzungsteilnehmer fest. <numberOfMen> { let $t := count(doc("protokoll.xml")/protokoll/teilnehmer/person) let $g := count(doc("protokoll.xml")/protokoll/gaeste/person) let $f1 := count(doc("protokoll.xml")/protokoll/teilnehmer/person/frau) let $f2 := count(doc("protokoll.xml")/protokoll/gaeste/person/frau) return $t + $g - $f1 - $f2 } </numberOfMen> Übung 2: XML / XQuery

Übungsblatt 3 Stellen Sie die Gesamtzahl sowie die Anzahl der männlichen und der weiblichen Sitzungsteilnehmer fest. <numberOfWomen> { let $f1 := count(doc("protokoll.xml")/protokoll/teilnehmer/person/frau) let $f2 := count(doc("protokoll.xml")/protokoll/gaeste/person/frau) return $f1 + $f2 } </numberOfWomen> Übung 2: XML / XQuery

Übungsblatt 3 Extrahieren Sie die Personen, denen keine ID zugeordnet ist (kein „ident“-Attribut im <person>-Tag), generieren Sie dieses Attribut aus dem Nachname und erstellen Sie ein neues <person>-Tag. Der Rest des Protokolls soll dabei kopiert werden, so daß am Ende das komplette Protokoll wieder zur Verfügung steht, mit „ident“-Attribut für jede Person. Übung 2: XML / XQuery

Übungsblatt 3 Teilen Sie das Protokoll zwecks besserer Strukturierung in bedeutungsmäßige Blöcke ein (zB Kopf, Personen und Verlauf), und erstellen Sie ein XQuery, das den Inhalt des ursprünglichen Protokolls in diese Blöcke kopiert. Übung 2: XML / XQuery

Übungsblatt 3 declare function local:bemCheck( $p ) {if (compare($p/@bemerkung, '') = 1) then <person ident="{lower-case($p/name)}" bemerkung="{$p/@bemerkung}"> {$p/*} </person> else <person ident="{lower-case($p/name)}">{$p/*}</person> }; declare function local:identCheck( $p ) {if (compare($p/@ident, '') = 1) then $p else local:bemCheck($p) Übung 2: XML / XQuery

Übungsblatt 3 <protokoll> <protokollkopf> {for $n in doc("protokoll.xml")/protokoll/titel return $n} ... {for $n in doc("protokoll.xml")/protokoll/protokollfuehrer return $n} </protokollkopf> <teilnehmerliste> <teilnehmer> {for $n in doc("protokoll.xml")/protokoll/teilnehmer/person return local:identCheck($n)} </teilnehmer> <gaeste> <entschuldigt> <unentschuldigt> </teilnehmerliste> <verlauf> {for $n in doc("protokoll.xml")/protokoll/* where (compare(name($n), "beschluss") = 0 or compare(name($n), "kenntnisnahme") = 0) return $n} </verlauf> </protokoll> Übung 2: XML / XQuery

Übungsblatt 3 Extrahieren Sie Abstimmungen, die nicht einstimmig getroffen wurden, sowie den zugehörigen Antragsteller. Übung 2: XML / XQuery

Übungsblatt 3 <kritischeBeschluesse> { for $n in doc("protokoll.xml")/protokoll/beschluss where (compare($n/resultat, "einstimmig") > 0 or compare($n/resultat, "einstimmig") < 0) return <kritischerBeschluss> {$n} for $a in doc("protokoll.xml")/protokoll/*/person where (compare($n/@antragsteller, $a/@ident) = 0) return <antragsteller>{$a}</antragsteller> } </kritischerBeschluss> </ kritischeBeschluesse > Übung 2: XML / XQuery

Übungsblatt 3 Erstellen Sie ein XQuery, um zu prüfen, ob in Traktat-Texten (Beschlüsse und Kenntnisnahmen) genannten Personen anwesend sind, oder ob über dritte gesprochen wird. Übung 2: XML / XQuery

Übungsblatt 3 <personen> <anwesende> { for $n in doc("protokoll.xml")/protokoll/*/inhalt/p/name return <person> for $p in doc("protokoll.xml")/protokoll/teilnehmer/person/name union doc("protokoll.xml")/protokoll/gaeste/person/name where (ends-with($n, $p)) return $p } </person> </anwesende> <abwesende> </personen> Übung 2: XML / XQuery

Übungsblatt 3 Extrahieren Sie die Kenntnisnahmen von Beschlüssen, die vor mehr als drei Sitzungen gefaßt wurden (Tip: Die Ziffer enthält die SitzungsNummer) Sorry, ging gar nicht, da Kenntnisnahmen die Ziffer nicht enthalten ... Übung 2: XML / XQuery