Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Bertha Schlagel Geändert vor über 11 Jahren
1
Übung 2: XML / XQuery Übung 2: XML / XQuery
2
Übungsblatt 2 In jedem Protokoll müssen enthalten sein: Titel Datum
Zeit Ort Protokollführer Protokollkopf mit diesen Daten Übung 2: XML / XQuery
3
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
4
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
5
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
6
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
7
Ü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
8
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
9
Ü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
10
Ü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
11
Ü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
12
Ü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
13
Ü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
14
Ü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
15
Ü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
16
Ü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
17
Ü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
18
Ü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
19
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
20
Ü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
21
Der Datentyp protokoll
Übungsblatt 2 Und wie wird das alles zusammengesetzt? Der Datentyp protokoll <!ELEMENT protokoll (%protokollkopf;,%teilnehmerliste;,(beschluss|kenntnisnahme)+)> Übung 2: XML / XQuery
22
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
23
Ü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
24
Ü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
25
Ü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
26
Ü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
27
Ü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
28
Übungsblatt 3 declare function local:bemCheck( $p )
{if '') = 1) then <person ident="{lower-case($p/name)}" {$p/*} </person> else <person ident="{lower-case($p/name)}">{$p/*}</person> }; declare function local:identCheck( $p ) {if '') = 1) then $p else local:bemCheck($p) Übung 2: XML / XQuery
29
Ü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
30
Übungsblatt 3 Extrahieren Sie Abstimmungen, die nicht einstimmig getroffen wurden, sowie den zugehörigen Antragsteller. Übung 2: XML / XQuery
31
Ü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 = 0) return <antragsteller>{$a}</antragsteller> } </kritischerBeschluss> </ kritischeBeschluesse > Übung 2: XML / XQuery
32
Ü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
33
Ü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
34
Ü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
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.