Title: Kapitel 10: XML
1Kapitel 10XML
2XML
- 1969 GML Generalized Markup Language (Goldfarb/M
osher/Lorie) - 1986 SGML Standardized Markup Language
- 1989 WWW World Wide Web
- 1992 HTML Hypertext Markup Language
- 1998 XML eXtensible Markup Language
3XML
- ltTitelgtSelber Atmenlt/TitelgtltAutorgtWilli
Wackerlt/Autorgt
4XML Strukturierte Daten
ltBüchergt lt/Büchergt
- ltTitelgtSelber Atmenlt/TitelgtltAutorgtWilli
Wackerlt/Autorgt
ltTitelgtRichtig Streikenlt/TitelgtltAutorgtErika
Mustermannlt/Autorgt
ltTitelgtSchneller Betenlt/TitelgtltAutorgtDaniel
Düsentrieblt/Autorgt
5XML Strukturierte Texte
Selber AtmenWilli Wacker 1. Einleitung In einer
Reihe von aufsehenerregenden Experimenten wurden
kürzlich am Max-Planck-Institut die Vorteile des
selbständigen Denkens herausgearbeitet. Unsere
Forschungen lassen erwarten, daß analoge Aussagen
auch für den Atmungsvorgang gelten könnten.
ltartikelgt ltKopfgt lt/Kopfgt ltRumpfgt
ltKapitelgt ltTitelgtEinleitunglt/Titelgt
ltAbsatzgt In einer Reihe von
aufsehenerregenden Experimenten wurden
kürzlich am ltbetontgtMax-Planck-Institutlt/betontgt
die Vorteile des selbständigen Denkens
herausgearbeitet. lt/Absatzgt ltAbsatzgt
Unsere Forschungen lassen erwarten, daß
analoge Aussagen auch für den
Atmungsvorgang gelten könnten. lt/Absatzgt
lt/Kapitelgt lt/Rumpfgt lt/artikelgt
- ltTitelgtSelber Atmenlt/TitelgtltAutorgtWilli
Wackerlt/Autorgt
6Dateien
- artikel.dtd Document Type Definition mit
Strukturbeschreibung - artikel.xml XML-Datei mit den durch
Tags markierten Daten. - artikel.xsl Stylesheet mit Angaben zum
Rendern des Layout
7artikel.dtd
- lt?xml version"1.0" encoding"ISO-8859-1" ?gt
- lt!ELEMENT artikel (Kopf,Rumpf)gt
- lt!ELEMENT Kopf (Titel,Autor)gt
- lt!ELEMENT Rumpf (Kapitel)gt
- lt!ELEMENT Kapitel (Titel, Absatz)gt
- lt!ELEMENT Titel (PCDATA)gt
- lt!ELEMENT Autor (PCDATA)gt
- lt!ELEMENT Absatz (PCDATAbetont)gt
- lt!ELEMENT betont (PCDATA)gt
8artikel.xml
- lt?xml version'1.0' encoding"ISO-8859-1" ?gt
- lt!DOCTYPE artikel SYSTEM "artikel.dtd" gt
- ltartikelgt
- ltKopfgt
- ltTitelgtSelber Atmenlt/Titelgt
- ltAutorgtWilli Wackerlt/Autorgt
- lt/Kopfgt
- ltRumpfgt
- ltKapitelgt
- ltTitelgtEinleitunglt/Titelgt
- ltAbsatzgt
- In einer Reihe von aufsehenerregenden
Experimenten wurden kürzlich am
ltbetontgtMax-Planck-Institutlt/betontgt die Vorteile
des selbständigen Denkens
herausgearbeitet. - lt/Absatzgt
- ltAbsatzgt
- Unsere Forschungen lassen erwarten, daß
analoge Aussagen auch für den Atmungsvorgang
gelten könnten. - lt/Absatzgt
- lt/Kapitelgt
- ltKapitelgt
- ltTitelgtAusblicklt/Titelgt
Demo artikel.xml
9artikel.xsl (Teil 1)
- lt?xml version"1.0" encoding"ISO-8859-1"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"artikel"gt
- lthtmlgt
- ltheadgtlttitlegtltxslvalue-of
select"Titel"/gtlt/titlegtlt/headgt - ltbodygtltxslapply-templates/gtlt/bodygt
- lt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"artikel/Kopf/Titel"gt
- ltcentergtlth1gtltxslapply-templates/gtlt/h1gtlt/cente
rgt - lt/xsltemplategt
- ltxsltemplate match"artikel/Kopf/Autor"gt
- ltcentergtlth4gtltxslapply-templates/gtlt/h4gtlt/cente
rgt - lt/xsltemplategt
10artikel.xsl (Teil 2)
- ltxsltemplate match"artikel/Rumpf/Kapitel/Titel
"gt - lth3gtltxslapply-templates/gtlt/h3gt
- lt/xsltemplategt
- ltxsltemplate match"Absatz"gt
- ltpgtltxslapply-templates/gtlt/pgt
- lt/xsltemplategt
- ltxsltemplate match"betont"gt
- ltIgtltxslapply-templates/gtlt/Igt
- lt/xsltemplategt
- lt/xslstylesheetgt
11personen.dtd
- lt?xml version'1.0' encoding"ISO-8859-1" ?gt
- lt!ELEMENT personen (person)gt
- lt!ELEMENT person (vorname,nachname,p
hoto)gt - lt!ATTLIST person persnr ID REQUIREDgt
- lt!ATTLIST person chef IDREF IMPLIEDgt
- lt!ATTLIST person geschlecht (männlichweiblich)
REQUIREDgt - lt!ELEMENT vorname (PCDATA)gt
- lt!ELEMENT nachname (PCDATA)gt
- lt!ELEMENT photo EMPTYgt
- lt!ATTLIST photo src CDATA REQUIREDgt
12personen.xml
- lt?xml version'1.0' encoding'ISO-8859-1'?gt
- lt!DOCTYPE personen SYSTEM "personen.dtd"gt
- ltpersonengt
- ltperson persnr"P4711" chef"P4712"
geschlecht"weiblich" gt - ltvornamegtErikalt/vornamegt
- ltnachnamegtMustermannlt/nachnamegt
- ltphoto src"erika.gif"/gt
- lt/persongt
- ltperson persnr"P4712" geschlecht"männlich"gt
- ltvornamegtWillilt/vornamegt
- ltnachnamegtWackerlt/nachnamegt
- ltphoto src"willi.gif"/gt
- lt/persongt
- lt/personengt
13dozenten.dtd
- lt?xml version'1.0' encoding"ISO-8859-1" ?gt
- lt!ELEMENT dozenten (dozent)gt
- lt!ELEMENT dozent (PersNr,Name,Rang,Raum,Amt)
gt - lt!ELEMENT PersNr (PCDATA)gt
- lt!ELEMENT Name (PCDATA)gt
- lt!ELEMENT Rang (PCDATA)gt
- lt!ELEMENT Raum (PCDATA)gt
- lt!ELEMENT Amt (Bezeichnung,Termin?)gt
- lt!ELEMENT Bezeichnung (PCDATA)gt
- lt!ELEMENT Termin (PCDATA)gt
14dozenten.xml (Teil 1)
- lt?xml version'1.0' encoding"ISO-8859-1" ?gt
- lt!DOCTYPE dozenten SYSTEM "dozenten.dtd" gt
- ltdozentengt
- ltdozentgt
- ltPersNrgt2125lt/PersNrgt
- ltNamegtSokrateslt/Namegt
- ltRanggtC4lt/Ranggt
- ltRaumgt226lt/Raumgt
- ltAmtgt
- ltBezeichnunggtDekanlt/Bezeichnunggt
- ltTermingtvormittagslt/Termingt
- lt/Amtgt
- lt/dozentgt
- ltdozentgt
- ltPersNrgt2126lt/PersNrgt
- ltNamegtRussellt/Namegt
- ltRanggtC4lt/Ranggt
- ltRaumgt232lt/Raumgt
- lt/dozentgt
15dozenten.xml (Teil2)
- ltdozentgt
- ltPersNrgt2127lt/PersNrgt
- ltNamegtKopernikuslt/Namegt
- ltRanggtC3lt/Ranggt
- ltRaumgt310lt/Raumgt
- ltAmtgt
- ltBezeichnunggtWeltraumbeauftragerlt/Bezeichnun
ggt - lt/Amtgt
- ltAmtgt
- ltBezeichnunggtStudienberaterlt/Bezeichnunggt
- ltTermingtdonnerstags 10-12 Uhrlt/Termingt
- lt/Amtgt
- lt/dozentgt
- ...
- lt/dozentengt
16XML-Baum
17XQuery
- FLWR-Ausdruck (FOR,LET,WHERE,RETURN)
- Pfadausdruck in XPath
- Element-Konstruktoren
18XQuery (FLWR)
- Liste alle Dozenten, die mindestens eine
Vorlesung halten - ltaktive-Dozentengt
- FOR d IN document("dozenten.xml")//dozent
- LET v document("vorlesungen.xml")
- //vorlesunggelesenVon
d/PersNr - WHERE count(v) gt 0
- RETURN ltDozentgtd/Namelt/Dozentgt
- lt/aktive-Dozentengt
19Xquery (Join)
- Liste alle Dozenten mit ihren Lehrveranstaltungen
- ltVorlesungsverzeichnisgt
- FOR d IN document("dozenten.xml")//dozent,
- v IN document("vorlesungen.xml")//vorlesung
- WHERE d/PersNr v/gelesenVon
- RETURN ltVeranstaltunggtd/Name,
v/Titellt/Veranstaltunggt - lt/Vorlesungsverzeichnisgt
20XQuery
- Liste zu jedem Dozenten seine Lehrveranstaltungen
- ltVorlesungsverzeichnisgt
- FOR d IN document("dozenten.xml")//dozent
- RETURN
- ltDozentgtd/Namelt/Dozentgt
- FOR v IN document("vorlesungen.xml")//vorlesu
ng - WHERE d/PersNr v/gelesenVon
- RETURN ltVorlesunggtv/Titellt/Vorlesunggt
- lt/Vorlesungsverzeichnisgt
21XQuery (Aggregate Function)
- Liste zu jedem Dozenten die Summe der
Semesterwochenstunden seiner Lehrveranstaltungen - ltDozentengt
- FOR d IN document("dozenten.xml")//dozent
- LET s sum(document("vorlesungen.xml")
- //vorlesunggelesenVond/P
ersNr/SWS) - WHERE s gt 0
- RETURN ltDozentgt
- ltNamegtd/Namelt/Namegt
- ltLehrbelastunggtslt/Lehrbelastunggt
- lt/Dozentgt
- lt/Dozentengt
22XQuery (Self Join)
- Liste alle Dozenten mit demselben Rang wie
Sokrates - ltRang-wie-Sokratesgt
- FOR d1 IN document("dozenten.xml")//dozentName
"Sokrates", - d2 IN document("dozenten.xml")//dozentRang
d1/Rang - RETURN ltNamegtd2/Namelt/Namegt
- lt/Rang-wie-Sokratesgt
23Apache Xindice
- XML-Datenbank
- http//xml.apache.org/xindice/