WEBVTT

00:01.140 --> 00:03.320
Eins, zwei, drei, vier, so.

00:04.160 --> 00:05.400
Jetzt können wir endlich anfangen.

00:06.260 --> 00:09.480
Ich begrüße Sie zur Vorlesung angewandt Informatik 2.

00:09.680 --> 00:13.280
Wir hatten wie schon wieder ein bisschen Pause gehabt durch Feiertage.

00:15.060 --> 00:18.180
Und jetzt sind wir also wieder am Montagabend hier in einer etwas

00:18.180 --> 00:19.040
kleinen Runde.

00:19.560 --> 00:22.480
Der Montagabend-Termin scheint nicht so attraktiv zu sein wie der

00:22.480 --> 00:24.620
Termin am Donnerstag.

00:24.620 --> 00:29.420
Was haben wir als letztes gemacht?

00:30.280 --> 00:34.840
Wir hatten uns beschäftigt mit XML-Dokumenten.

00:35.820 --> 00:42.180
Und ich habe Ihnen da etwas erzählt darüber, was XML überhaupt so ist.

00:43.560 --> 00:47.600
Also ich habe Ihnen da so ein paar Einzelheiten zu erzählt.

00:49.820 --> 00:52.520
Jetzt sollte eigentlich weitergehen.

00:55.240 --> 00:56.540
Da geht er weiter, genau.

00:56.660 --> 01:00.660
Ich habe Ihnen ein bisschen was erzählt zu Beziehungen zwischen HTML,

01:00.900 --> 01:02.180
XML und SGML.

01:02.820 --> 01:04.280
XML liegt ja so ein bisschen dazwischen.

01:04.560 --> 01:10.000
Ist eine Spezialisierung von SGML und erlaubt halt auch die

01:10.000 --> 01:13.740
Präsentationen und die Inhalte getrennt anzugeben.

01:13.820 --> 01:14.740
Das ist ein wichtiger Punkt.

01:15.900 --> 01:19.580
Wir haben halt Angaben über den Inhalt, die Struktur und die

01:19.580 --> 01:20.420
Darstellung.

01:20.420 --> 01:25.100
Und all das kann man getrennt mit XML formulieren.

01:25.840 --> 01:29.400
Besser als mit allein HTML, wo ja die Präsentation immer schon

01:29.400 --> 01:30.340
festgelegt ist.

01:31.000 --> 01:33.720
Und das andere, was wir davor angesehen hatten, war IDI.

01:34.220 --> 01:35.760
Das war ja viel zu starr gewesen.

01:36.660 --> 01:40.880
Ich hatte Ihnen dann auf dieser Folie kurz gezeigt, wie man XML

01:40.880 --> 01:42.080
einsetzen kann.

01:42.260 --> 01:46.480
Insbesondere ist eben wichtig, dass man aus einem XML-Dokument

01:46.480 --> 01:51.200
unterschiedliche Dokumente erzeugen kann, die man dann je nach Gerät

01:51.200 --> 01:55.840
oder je nach Medium, auf dem man präsentieren will, darstellen kann.

01:56.020 --> 01:59.080
Also auf dem Drucker oder auf dem Handy oder im Browser auf

01:59.080 --> 01:59.800
irgendeinem Rechner.

02:00.540 --> 02:02.880
Ich hatte Ihnen dann Beispiele genannt für XML-Dokumente.

02:03.020 --> 02:05.040
Wir hatten uns angeschaut, was da so alles drin ist.

02:05.580 --> 02:09.520
Wir hatten gesehen, dass man von Wohlgeformtheit reden kann, wenn die

02:09.520 --> 02:14.580
Basisregeln der DTD eingehalten sind oder überhaupt von SGML

02:14.580 --> 02:15.520
eingehalten sind.

02:16.420 --> 02:20.960
Und dann gab es die Gültigkeit, die immer dann vorliegt, wenn ein

02:20.960 --> 02:24.860
Dokument nicht nur wohlgeformt ist, sondern auch noch die Regeln einer

02:24.860 --> 02:27.340
Dokumenttyp -Definition einhält.

02:27.620 --> 02:30.440
Dann entspricht sie halt genau dieser Grammatik.

02:31.500 --> 02:36.340
Und ich hatte Ihnen dann gezeigt, wie man Elemente deklarieren kann,

02:38.020 --> 02:40.360
was für Attribute vorkommen können.

02:40.440 --> 02:43.040
Ich hatte Ihnen ein paar Einzelheiten genannt und das an einem

02:43.040 --> 02:44.400
Beispiel dann verdeutlicht.

02:44.400 --> 02:51.960
Bei diesem Beispiel sah man hier oben einmal ein XML-Dokument und

02:51.960 --> 02:56.000
unten eine dazugehörige Definition, die die einzelnen Elemente

02:56.000 --> 02:56.660
angegeben hat.

02:56.740 --> 02:58.880
Wir waren das im Einzelnen durchgegangen, hatten die verschiedenen

02:58.880 --> 03:00.540
Teile angeschaut.

03:01.080 --> 03:05.540
Ich will Ihnen nur noch einmal zur Erläuterung, ganz kurz als

03:05.540 --> 03:15.260
Alternative zu einer Darstellung auf der Folie, Ihnen mal zeigen, wie

03:15.260 --> 03:20.820
das aussieht, wenn man sich so etwas in einem XML-Editor anschaut.

03:20.920 --> 03:23.480
Das hier, was ich Ihnen jetzt zeige, ist ein XML-Editor, in dem man

03:23.480 --> 03:25.140
eine ganze Reihe verschiedener Fenster hat.

03:25.140 --> 03:31.140
Sie können es vielleicht doch sehen, in der Projektion ist es doch

03:31.140 --> 03:31.700
groß genug.

03:32.440 --> 03:34.260
Und ich kann das Dokument unterschiedlich anschauen.

03:34.380 --> 03:37.680
Wenn ich sehen will, wie das im Textformat aussieht, dann sieht es so

03:37.680 --> 03:38.100
aus.

03:39.040 --> 03:42.140
Ich nehme an, ich könnte hier auch die Schrift jetzt größer machen,

03:42.780 --> 03:45.040
aber darauf kommt es jetzt gar nicht an, das ist genau der Text, der

03:45.040 --> 03:45.880
auf der Folie steht.

03:58.480 --> 03:59.480
Ich lasse es jetzt.

03:59.620 --> 04:03.660
Sie sehen, ich habe mich damit jetzt gar nicht beschäftigt, wie ich

04:03.660 --> 04:05.940
das größer machen kann, weil man das Problem nicht hat, wenn man vor

04:05.940 --> 04:06.620
dem Bildschirm sitzt.

04:06.620 --> 04:12.740
Aber was man hier sieht, ist eigentlich nur, dass man die Struktur

04:12.740 --> 04:16.320
eines Dokuments etwas besser dargestellt bekommt.

04:16.600 --> 04:18.780
Es werden einige Sachen farbig hinterlegt.

04:19.460 --> 04:25.780
Und man bekommt auf der rechten Seite hier in einigen Fenstern die

04:25.780 --> 04:29.020
Bestandteile angezeigt, die Elemente, die man verwendet hat, die

04:29.020 --> 04:32.780
Attribute, in diesem Fall sind hier keine aufgelistet, und Entities,

04:32.840 --> 04:35.780
die vorgekommen sind, sind hier auch nochmal extra aufgeführt.

04:35.780 --> 04:43.620
Also, das erlaubt halt etwas besser, so eine Datei zu erzeugen.

04:44.420 --> 04:50.780
Und jetzt zeige ich nochmal die dazugehörige DTD.

04:51.520 --> 05:01.980
Dazu muss ich einmal hier da rein und auf die Definition gehen.

05:02.690 --> 05:08.540
Das ist also hier so eine Dokumententyp-Definition, genau die, die

05:08.540 --> 05:10.960
vorher auf der Folie stand.

05:11.600 --> 05:12.800
So wird das hier definiert.

05:14.120 --> 05:23.220
Und jetzt müsste ich eigentlich überprüfen können, ob das Ganze

05:23.220 --> 05:27.040
wohlgeformt ist und ob das gültig ist.

05:28.200 --> 05:31.440
Sie sehen, die DTD ist wohlgeformt.

05:32.200 --> 05:37.640
Gehen wir auf das XML-Dokument hier, auch da sagt er, ist wohlgeformt.

05:38.180 --> 05:41.500
Wenn ich da etwas verändert hätte, wäre es das wahrscheinlich nicht

05:41.500 --> 05:41.820
mehr.

05:42.980 --> 05:48.820
Und diese Datei ist auch gültig, weil die sich darauf beziehende, oder

05:48.820 --> 05:54.440
weil die DTD eben, oder das Dokument mit der DTD in Übereinstimmung

05:54.440 --> 05:54.760
ist.

05:54.760 --> 06:00.760
Also, es gibt viele Möglichkeiten, hier menu-gesteuert sich die

06:00.760 --> 06:05.620
Dateien anzuschauen, in unterschiedlichen Variationen, je nachdem, was

06:05.620 --> 06:06.660
einem besser gefällt.

06:07.660 --> 06:12.060
Das Schema kann man natürlich nicht zeigen, aber man kann das Text

06:12.060 --> 06:12.820
basiert zeigen.

06:13.700 --> 06:16.680
Und damit sei es erstmal genug.

06:17.570 --> 06:25.100
Ich wollte nur damit Sie darauf hinweisen, dass man sich natürlich ein

06:25.100 --> 06:30.980
XML -Dokument nicht im Texteditor erzeugt, sondern in einem sinnvollen

06:30.980 --> 06:40.100
Editor, der syntax-gesteuert ist und dadurch das Schreiben von solchen

06:40.100 --> 06:43.880
Dateien deutlich einfacher macht, als wenn man das einfach so

06:43.880 --> 06:44.620
runterschreiben muss.

06:45.220 --> 06:51.020
So, das war dieses Beispiel gewesen, das wir uns dann, wie gesagt, in

06:51.020 --> 06:52.560
verschiedenen Variationen angeschaut hatten.

06:52.720 --> 07:01.600
Hier war nochmal angegeben, die Möglichkeit, die DTD, wie wir das

07:01.600 --> 07:04.820
gerade eben auch gesehen hatten, in eine extra Datei anzugeben.

07:04.900 --> 07:06.440
Das war die Datei B.

07:06.580 --> 07:09.800
Das war genau diese Datei B, die wir hier gerade eben gesehen hatten

07:09.800 --> 07:10.860
in dem XML-Editor.

07:10.860 --> 07:16.020
Und man kann natürlich auch diese Dinge direkt in einem Dokument

07:16.020 --> 07:20.380
reinschreiben, aber das macht nur dann Sinn, wenn man so eine

07:20.380 --> 07:23.100
Grammatik oder eine DTD eben nicht öfter verwenden will.

07:23.820 --> 07:29.560
Ich hatte Ihnen dann auch kurz diese Beziehung normal zwischen XML und

07:29.560 --> 07:30.640
HTML dargestellt.

07:30.760 --> 07:37.020
Man hat halt in XML mehr Informationen über die Inhalte, die dort so

07:37.020 --> 07:40.060
strukturiert dargestellt sind, wesentlich mehr als bei HTML.

07:41.060 --> 07:46.780
Das war das letzte Mal, wo ich Ihnen kurz angedeutet habe, dass man in

07:46.780 --> 07:54.260
XML über eine Erweiterung, über MathML in der Lage ist, Formeln zu

07:54.260 --> 07:54.640
schreiben.

07:54.760 --> 07:56.840
Etwas, was Sie in HTML nicht können.

07:56.960 --> 08:02.860
Da können Sie Formeln eigentlich nur vernünftig in Seiten integrieren,

08:02.860 --> 08:07.200
wenn Sie daraus ein GIF machen, die aus einer anderen Quelle erzeugen,

08:07.260 --> 08:12.020
meinetwegen mit LaTeX erzeugen oder mit einem Formel-Editor von Word,

08:12.260 --> 08:15.900
und dann daraus ein Bild machen und das Bild dann einbetten in den

08:15.900 --> 08:19.040
Text, was natürlich sehr unschön ist.

08:19.780 --> 08:23.780
Hier geht das Erzeugen von Formeln also wesentlich einfacher.

08:24.780 --> 08:33.300
Wobei natürlich hier etwas vorweggenommen wird, hier wird ja das

08:33.300 --> 08:41.240
MathML einmal als Strukturierungselement angegeben und man kann das

08:41.240 --> 08:44.200
eben präsentieren als Formel, dazu gibt es entsprechend die

08:44.200 --> 08:46.380
Transformation mit XSL.

08:49.040 --> 08:53.540
Im XML-Dokument ist ja die Präsentation der Elemente erst mal noch gar

08:53.540 --> 08:54.200
nicht festgelegt.

08:55.140 --> 08:59.340
So, und jetzt kommen wir zu der ersten neuen Folie von heute.

09:01.100 --> 09:03.460
Das war jetzt falsch, da wollte ich hingehen.

09:07.420 --> 09:11.520
Ich will Ihnen ja XML im Electronic Commerce zeigen, da haben wir uns

09:11.520 --> 09:13.980
halt auch andere Sachen angeschaut, nämlich IDI.

09:13.980 --> 09:19.700
IDI war ja die Möglichkeit, Dokumente textbasiert darzustellen.

09:19.820 --> 09:26.400
Hier ist nochmal dieses Beispiel mit diesen vielen Headern und diesen

09:26.400 --> 09:29.980
verschiedenen Bestandteilen, diesen ganzen Tags, die man angeben muss,

09:30.140 --> 09:31.980
um so ein Dokument zu strukturieren.

09:32.380 --> 09:37.040
Ein Wirrwarr von Zahlen und das Ganze kann man halt in XML etwas

09:37.040 --> 09:42.060
besser aufschreiben, wobei natürlich auch hier sehr viel noch dabei

09:42.060 --> 09:45.380
stehen muss, aber trotzdem kann man solche Dokumente wesentlich besser

09:45.380 --> 09:46.780
lesen.

09:47.700 --> 09:53.460
Obwohl man sich nicht täuschen darf, lesen muss das Dokument nachher

09:53.460 --> 09:58.340
irgendein Programm, das es transformiert in eine darstellbare Form und

09:58.340 --> 10:04.640
ein Programm kann auch ein Dokument lesen, das so schrecklich aussieht

10:04.640 --> 10:08.080
für den menschlichen Betrachter wie dieses Dokument hier.

10:08.800 --> 10:11.340
Das kann man natürlich auch lesen, der Nachteil ist nur, dass ich hier

10:11.340 --> 10:15.560
in dem IDI- oder EDI-Fakt-Dokument halt nur textbasierte Informationen

10:15.560 --> 10:16.120
drin habe.

10:16.820 --> 10:21.040
In dem XML-Dokument kann ich wesentlich reichhaltigere Informationen

10:21.040 --> 10:24.300
angeben und ich bin auch freier in der Art der Strukturierung.

10:25.380 --> 10:28.680
Gut, also das ist hier diese Überführung von EDI-Fakt in XML.

10:28.920 --> 10:32.260
Man kann natürlich die Dokumente alle auch in XML darstellen, die man

10:32.260 --> 10:33.460
in EDI-Fakt beschrieben hat.

10:34.120 --> 10:42.800
Das ist also keine große Schwierigkeit und es gibt dazu auch

10:42.800 --> 10:49.400
entsprechende XML-Varianten, die die IDI-Namen oder die Struktur

10:49.400 --> 10:50.760
geeignet überführen.

10:51.840 --> 10:53.920
Ich will das aber nicht vertiefen an dieser Stelle.

10:54.740 --> 11:00.240
Wichtig ist nur, dass man halt mit XML EDI auch einbetten kann und man

11:00.240 --> 11:04.120
kann aber eben mit XML wesentlich mehr machen.

11:06.220 --> 11:11.480
Jetzt komme ich ganz kurz auf ein Thema noch zu sprechen, das man sich

11:11.480 --> 11:13.980
natürlich auch anschauen muss, wenn man in der Lage ist,

11:14.940 --> 11:17.420
Dokumentstrukturen beliebig zu definieren.

11:17.420 --> 11:21.000
Wir können Elemente von Dokumenten, die wir darauf verwenden wollen,

11:21.080 --> 11:25.020
beliebig definieren und dann ist es völlig klar, dass man sehr bald

11:25.020 --> 11:27.160
auf Probleme kommen kann.

11:27.760 --> 11:32.440
Probleme dadurch, dass die gleichen Marken, die gleichen Tags mehrfach

11:32.440 --> 11:33.140
vorkommen.

11:33.620 --> 11:35.180
Hier ist ein solches Beispiel angegeben.

11:35.940 --> 11:41.640
Wir haben hier ein Element Buch und dieses Element Buch, das geht also

11:41.640 --> 11:46.280
von da bis da, das enthält einen Tag, der heißt Titel.

11:47.320 --> 11:48.740
Ein Buch hat natürlich einen Titel.

11:49.380 --> 11:52.060
Und dann kommt hier unten drunter ein Tag für Autor.

11:53.020 --> 11:56.860
Und innerhalb dieses Autortags, da gibt es jetzt noch ein Name, ein

11:56.860 --> 11:58.720
Feld, das nennt sich jetzt Name Adresse.

11:59.260 --> 12:02.280
Und da unten sehen wir noch einmal einen Tag Titel.

12:04.020 --> 12:10.440
Und jetzt ist natürlich die Frage, macht das Sinn, das so anzugeben?

12:10.440 --> 12:16.840
Einmal bedeutet das ein Titel in einem Buch, das andere Mal Titel als

12:16.840 --> 12:18.040
einen Namenszusatz.

12:19.240 --> 12:24.020
Und das kann natürlich zu Problemen führen, wenn irgend so etwas

12:24.020 --> 12:25.000
geschachtelt auftritt.

12:25.840 --> 12:29.020
Man muss eigentlich diese Tags immer eindeutig zuordnen können.

12:29.100 --> 12:31.600
Und das ist hier in diesem Fall nicht mehr gegeben.

12:31.900 --> 12:33.420
Man möchte, dass die eindeutig sind.

12:34.840 --> 12:38.100
Deswegen definiert man in XML Namensräume.

12:39.000 --> 12:43.500
Beziehungsweise man kann in XML explizit Namensräume definieren.

12:44.700 --> 12:47.480
Normalerweise sind sowieso Namensräume immer gegeben.

12:47.660 --> 12:50.420
Denn ich habe für jeden Namen, den ich irgendwo verwende, in einem

12:50.420 --> 12:54.340
Programm oder in einem anderen Dokument, habe ich einen bestimmten

12:54.340 --> 12:56.420
Bereich, in dem dieser Name gültig ist.

12:56.540 --> 13:01.760
Also ich habe hier irgendwo so einen Bereich, da steht irgendein Name

13:01.760 --> 13:02.040
drin.

13:02.180 --> 13:04.480
Und das ist der Bereich, in dem dieser Name gilt.

13:05.580 --> 13:11.740
Und ich kann jetzt solche Namensräume explizit bezeichnen.

13:13.120 --> 13:15.160
Und das ist angegeben durch ein Beispiel.

13:15.280 --> 13:18.740
Ich gehe gleich nochmal etwas genauer darauf ein, was hier eigentlich

13:18.740 --> 13:19.480
genau geschieht.

13:19.980 --> 13:26.980
Also ich kann dieses Element Buch ergänzen durch zwei Erweiterungen.

13:27.380 --> 13:28.860
Hier stehen diese beiden Erweiterungen.

13:29.450 --> 13:36.620
Da steht ein XML NS, XML Namespace, Doppelpunkt, Buch, gleich.

13:37.200 --> 13:44.680
Und dann steht hier hinter eine URL oder URI, also Uniform Resource

13:44.680 --> 13:48.480
Locator oder Uniform Resource Identifier.

13:52.160 --> 13:59.460
Und jetzt habe ich also einen solchen Namensraum damit praktisch

13:59.460 --> 14:00.260
bezeichnet.

14:00.920 --> 14:07.080
Ich habe einen weiteren Namensraum, der ADDR, also für Address, steht.

14:07.700 --> 14:10.740
Und da steht auch eine URL oder eine URI.

14:12.000 --> 14:18.640
Und im weiteren sehen Sie jetzt, dass vor diesem Tag Titel Buch steht.

14:19.000 --> 14:21.440
Und da unten steht vor dem Titel Adresse.

14:21.660 --> 14:25.020
Das heißt, jetzt haben wir verschiedene Tags, die jeweils durch

14:25.020 --> 14:26.700
Präfixe voneinander getrennt sind.

14:27.840 --> 14:30.960
Und ich habe also jetzt bei allen Tags, die hier auftauchen,

14:31.460 --> 14:33.760
angegeben, zu welchem Namensraum sie gehören.

14:33.860 --> 14:36.620
Ich habe also einen Namensraum, der sich auf Tags in Büchern bezieht.

14:36.620 --> 14:40.700
Das wäre also hier dieser Titel von einem Buch und der Autor.

14:42.020 --> 14:45.620
Und auch Name, Adresse wäre auch in dem Buchnamensraum.

14:46.480 --> 14:53.160
Aber da drin treten jetzt solche Präfixe für Adresse auf.

14:53.460 --> 14:55.860
Das heißt, hier beziehe ich mich auf einen anderen Namensraum.

14:57.880 --> 15:01.200
Und das kann man also etwas systematischer sich anschauen.

15:01.960 --> 15:04.540
Wenn Sie sich die Folien runtergeladen haben, die sind da noch nicht

15:04.540 --> 15:05.100
drin gewesen.

15:05.100 --> 15:06.360
Die habe ich jetzt noch dazugefügt.

15:08.420 --> 15:13.440
So ein Name in XML besteht also insgesamt immer aus zwei Teilen.

15:16.320 --> 15:19.520
Eigentlich nennt man sowas auch einen vollqualifizierten Namen.

15:19.620 --> 15:23.060
Der besteht aus einem eindeutigen Präfix und dem Namen dahinter.

15:24.480 --> 15:29.140
Beispiel wäre, so wie es hier angegeben ist, kann ich angeben, http

15:29.140 --> 15:29.980
usw.

15:30.140 --> 15:33.800
Also so eine URL und dann Doppelpunkt und den Titel dahinter.

15:33.800 --> 15:39.000
Das wäre ein solcher vollständiger Name.

15:39.180 --> 15:40.080
Bisschen umständlich.

15:40.720 --> 15:41.980
Sowas schreibt man natürlich gar nicht hin.

15:43.760 --> 15:48.800
Das ist aber trotzdem durchaus theoretisch möglich, dass man einen

15:48.800 --> 15:50.800
Präfix so kennzeichnet.

15:51.520 --> 15:54.260
Warum verwendet man dafür überhaupt diese URIs oder URLs?

15:54.980 --> 15:57.860
Das sind eindeutig festgelegte Namen.

15:59.320 --> 16:06.480
Das heißt, wenn ich eine URL angebe, dann habe ich innerhalb eines

16:06.480 --> 16:13.220
Dokumentes die verschiedenen Marken, die ich mit solchen URLs versehe,

16:13.320 --> 16:15.820
eindeutig voneinander unterschieden.

16:16.140 --> 16:17.380
Das ist der wesentliche Punkt.

16:18.480 --> 16:22.060
Der Präfix bezeichnet einen eindeutig gegebenen Namensraum.

16:22.740 --> 16:26.580
Und diese URI ist grundsätzlich frei wählbar.

16:26.680 --> 16:27.860
Sie können da alles mögliche hinschreiben.

16:27.980 --> 16:29.600
Ich habe hier geschrieben mydomain.net.

16:30.160 --> 16:31.840
Da könnte irgendwas da stehen.

16:32.880 --> 16:34.380
Und dahinter steht halt jetzt BUX.

16:35.700 --> 16:38.840
So, das wäre jetzt ein solcher Namensraum.

16:41.580 --> 16:47.060
Jetzt haben wir vorher in den Dokumenten solche vollqualifizierten

16:47.060 --> 16:51.100
Tags gar nicht gesehen, sondern da standen keine Präfixe drin.

16:52.080 --> 16:56.900
Normalerweise bezieht sich alles, was in einem XML-Dokument drinsteht,

16:57.800 --> 16:58.680
auf eine DTD.

16:59.200 --> 17:02.660
Und da sind alle Attribute angegeben, oder nicht alle Attribute, die

17:02.660 --> 17:04.060
ganzen Elemente angegeben.

17:04.420 --> 17:07.800
Und ich verwende genau die Elemente, die in dieser DTD vorkommen.

17:08.800 --> 17:13.880
Im Prinzip habe ich dann implizit durch die DTD, die ich als Basis

17:13.880 --> 17:18.820
genommen habe, auf die ich mich explizit beziehe, einen Namensraum

17:18.820 --> 17:19.240
gegeben.

17:19.240 --> 17:24.400
Das heißt, alle Elemente in meinem Dokument beziehen sich auf diesen

17:24.400 --> 17:26.380
durch die DTD gegebenen Namensraum.

17:27.740 --> 17:29.880
Und dann brauche ich die nicht nochmal explizit anzugeben.

17:30.000 --> 17:35.160
Es steht ja in der ersten Zeile so eines XML-Dokuments, auf welche DTD

17:35.160 --> 17:35.960
man sich bezieht.

17:36.360 --> 17:39.560
Damit ist im Prinzip der Namensraum auch angegeben.

17:43.380 --> 17:47.160
Jetzt kann man aber Namensräume eben auch explizit definieren, wie wir

17:47.160 --> 17:48.440
das in dem Beispiel gesehen haben.

17:48.440 --> 17:50.480
Da war dieses Beispiel mit den Büchern.

17:50.600 --> 17:52.540
Man muss nicht unbedingt eine Kurzform verwenden.

17:52.660 --> 17:56.660
Man kann auch sagen, ich nehme den Namensraum, jetzt hier nochmal

17:56.660 --> 18:06.180
hingeschrieben, http://www.mydomain.net/.books Und das ist die eine

18:06.180 --> 18:06.600
Möglichkeit.

18:06.960 --> 18:08.880
Die andere Möglichkeit ist, den jetzt abzukürzen.

18:09.620 --> 18:15.060
Dadurch, dass ich hier diese Abkürzung book dahin schreibe.

18:16.140 --> 18:22.600
Und dann kann ich über diese Abkürzung book dann diesen Namensraum

18:22.600 --> 18:26.420
explizit im XML-Dokument verwenden.

18:27.480 --> 18:28.160
So.

18:29.720 --> 18:30.640
Wir hatten das gesehen.

18:32.820 --> 18:35.580
In dem Beispiel taucht das nicht genau so auf wie hier.

18:35.640 --> 18:37.340
Jetzt habe ich die Kurzform nochmal weggelassen.

18:37.340 --> 18:41.820
Wenn wir in so einem Element reinschreiben, diese Definition eines

18:41.820 --> 18:47.660
Namensraumes, dann heißt das, alles was unten drunter steht, bezieht

18:47.660 --> 18:49.100
sich auf diesen Namensraum.

18:50.000 --> 18:53.340
Ich muss dann den gar nicht explizit angeben.

18:55.080 --> 18:59.300
Weil alles, was hier... also hier unser Dokument.

19:00.280 --> 19:01.400
Das ist unser Dokument.

19:02.060 --> 19:07.180
Und irgendwo in einem Elementbuch steht jetzt dieser so definierte

19:07.180 --> 19:07.840
Namensraum.

19:08.140 --> 19:11.480
Alles, was da unten drunter ist, in der...

19:11.940 --> 19:15.340
Also so ein XML-Dokument ist ja eine Baumstruktur.

19:16.620 --> 19:19.780
Und alles, was sich in dem Teilbaum unten drunter befindet, bezieht

19:19.780 --> 19:21.680
sich dann auf diesen Namensraum.

19:21.680 --> 19:25.740
Also auf dieses Element und alle eingeschlossenen Elemente.

19:26.240 --> 19:27.840
Dadurch habe ich diese hierarchische Schachtel.

19:27.900 --> 19:31.280
Und ich kann nämlich hier innen drin natürlich weitere Namensräume

19:31.280 --> 19:31.780
definieren.

19:31.900 --> 19:35.580
Ich könnte also hier einen weiteren Namensraum irgendwo angeben bei

19:35.580 --> 19:36.140
einem Element.

19:36.360 --> 19:41.400
Und dann beziehen sich alle Angaben innerhalb dieses da drinnen

19:41.400 --> 19:46.700
haltenden Elements nur auf den Namensraum, der jetzt hier neu da

19:46.700 --> 19:48.200
reingekommen ist, schraffiert wurde.

19:49.020 --> 19:54.640
Das heißt, wenn ich kein Präfix angegeben habe, dann gilt der

19:54.640 --> 20:04.260
Namensraum, der am ersten gefunden wird, wenn man praktisch den Baum,

20:04.520 --> 20:08.480
also den Baum des XML-Dokumentes nach oben läuft.

20:09.760 --> 20:12.040
Jetzt habe ich diese Kurzform nicht verwendet.

20:12.620 --> 20:15.920
Brauche ich hier auch nicht, weil ich genau weiß, ich bin innerhalb

20:15.920 --> 20:18.680
eines Namensraumes und der wird einmal in so einem Element halt

20:18.680 --> 20:19.160
angegeben.

20:20.480 --> 20:23.600
Jetzt hatten wir in dem Beispiel vorhin gesehen, da waren zwei

20:23.600 --> 20:26.040
verschiedene Namensräume nebeneinander verwendet worden.

20:26.900 --> 20:30.520
Also, dann kann man diese Kurzform verwenden und dann braucht man sie

20:30.520 --> 20:30.860
auch.

20:31.580 --> 20:35.580
Dann schreibe ich also hier hin, dieses Book gleich, da fehlt ein

20:35.580 --> 20:36.360
Anführungszeichen.

20:37.280 --> 20:38.260
Die hätte ich da hinschreiben müssen.

20:39.800 --> 20:45.340
Also einmal XML-Namensraum Book und XML-Namensraum Adresse.

20:46.280 --> 20:52.360
Da ist mir das Doppelt reingerutscht, das muss ich wegstreichen.

20:55.420 --> 20:59.340
Jetzt habe ich zwei Namensräume bezeichnet und die kann ich jetzt

20:59.340 --> 21:01.100
beide verwenden, nebeneinander.

21:02.220 --> 21:06.300
Das heißt, jetzt gebe ich für jede Marke genau an, auf welchen

21:06.300 --> 21:07.500
Namensraum sie sich bezieht.

21:09.820 --> 21:13.080
Also, ich kann mich entweder auf die hierarchische Struktur verlassen,

21:13.780 --> 21:20.700
und es gilt immer der Namensraum, der am engsten geschachtelte, in dem

21:20.700 --> 21:21.540
ich mich gerade befinde.

21:21.700 --> 21:23.200
Der innerste gilt dann.

21:23.760 --> 21:28.680
Oder, wenn ich explizit angebe, dann ist sehr klar, welcher Namensraum

21:28.680 --> 21:29.300
gemeint ist.

21:29.960 --> 21:36.900
So kann man also Namensräume einsetzen, um Namenskonflikte zu

21:36.900 --> 21:37.600
vermeiden.

21:39.420 --> 21:41.540
So, das also zu Namensräumen.

21:44.260 --> 21:48.440
Es gibt in XML eine Vielfalt von Standards.

21:50.220 --> 21:56.880
Also, XML ist das, was ich Ihnen präsentiere, mit allen möglichen

21:56.880 --> 21:57.420
Varianten.

21:57.420 --> 21:58.420
Es kommen noch ein paar.

21:59.020 --> 22:00.940
Ich werde Ihnen es bei weitem nicht alle vorstellen.

22:03.020 --> 22:05.720
Und es gibt dann eine ganze Reihe von Erweiterungen.

22:06.840 --> 22:14.420
Also, es gibt hier XML-Schema, es gibt DOM, SAX, XHTML, XSL, FO, es

22:14.420 --> 22:17.880
gibt XLink, XPointer, XPath, XSLT.

22:17.880 --> 22:25.220
Das braucht man alles, um die Möglichkeiten von XML voll ausschöpfen

22:25.220 --> 22:28.800
zu können, um insbesondere nachher aus einem XML-Dokument

22:28.800 --> 22:31.240
unterschiedliche Präsentationen zu erzeugen.

22:32.620 --> 22:35.100
Da gehe ich auf ein paar von denen später noch ein.

22:39.080 --> 22:43.300
Standard heißt bei W3C, also zum Standard erhoben.

22:44.300 --> 22:58.360
W3C ist... also, gehen wir doch mal kurz auf die entsprechende Seite.

23:06.820 --> 23:15.000
Also, hier haben wir bei... jetzt kann er das nicht finden, weil

23:15.000 --> 23:23.780
leider mein drahtloses Netzwerk sagt, es hat keine Konnektivität.

23:25.040 --> 23:25.820
Das ist schlecht.

23:29.840 --> 23:31.400
Das muss ich hier erstmal trennen.

23:49.270 --> 23:51.450
Das sollte ja normalerweise schnell gehen, genau.

23:57.390 --> 23:58.230
Mein Gott.

23:59.550 --> 24:01.650
Ich hatte hier, glaube ich, beim letzten Mal auch Probleme.

24:03.050 --> 24:03.210
Ja.

24:04.710 --> 24:06.870
Das muss irgendwie mit diesem Raum zusammenhängen.

24:14.490 --> 24:16.110
Das ist wirklich sehr seltsam.

24:28.130 --> 24:28.950
Er mag mich nicht.

24:30.790 --> 24:34.030
Der Witz ist, nach der Vorlesung brauche ich nur einmal raufzuklicken

24:34.030 --> 24:34.930
und ich bin sofort drin.

24:35.310 --> 24:42.630
Das habe ich mehrfach schon erlebt, aber ich weiß halt nicht, woran

24:42.630 --> 24:43.570
das im Augenblick liegt.

24:45.450 --> 24:46.590
Nochmal versuchen.

24:52.790 --> 24:56.810
Eigentlich soll es problemlos funktionieren.

24:58.150 --> 25:01.370
Er sagt sogar volle Verbindungsleistung da.

25:18.340 --> 25:19.340
Also, ich lasse es.

25:19.420 --> 25:20.340
Er mag mich nicht.

25:20.960 --> 25:26.090
Heute ärgerlich.

25:26.860 --> 25:33.550
Ich wollte Ihnen zeigen, dass man bei W3C, World Wide Web Consortium,

25:35.090 --> 25:39.750
alle möglichen Standards nachlesen kann, die für das World Wide Web

25:39.750 --> 25:42.830
vereinbart wurden.

25:42.830 --> 25:57.910
Das W3C ist zuständig für alle Protokolle für Sprachen, für die

25:57.910 --> 26:03.410
Werkzeuge im World Wide Web und soll die standardisieren, damit sie

26:03.410 --> 26:05.750
von allen einheitlich verwendet werden können.

26:05.750 --> 26:09.150
Das World Wide Web kann nur dann Erfolg haben, wenn es auch ein

26:09.150 --> 26:10.250
einheitlicher Standard ist.

26:10.450 --> 26:13.810
Wenn jeder, der XML verwendet, sich auch auf die gleiche Definition

26:13.810 --> 26:14.850
von XML bezieht.

26:16.910 --> 26:21.070
Oder auch von HTML oder was immer wir noch im World Wide Web alles

26:21.070 --> 26:21.410
brauchen.

26:23.950 --> 26:27.190
Und deswegen wird so etwas standardisiert.

26:27.330 --> 26:30.910
Dazu gibt es Arbeitsgruppen, die international besetzt sind und in

26:30.910 --> 26:33.470
diesen Arbeitsgruppen werden die verschiedenen Dinge diskutiert.

26:33.470 --> 26:38.870
Es ist lange darüber diskutiert worden, wie man zum Beispiel das XSLT

26:38.870 --> 26:41.570
macht oder wie man X-Link definiert.

26:42.070 --> 26:45.010
Oder wie man XML-Schema angeben muss.

26:45.070 --> 26:52.310
Variante zur Dokumenttyp-Definition hat man halt XML-Schema definiert.

26:52.430 --> 26:54.930
Und das war ein längerer Prozess, bis man sich geeinigt hat, wie

26:54.930 --> 26:56.770
solche Schemata definiert sein sollen.

26:57.510 --> 27:01.770
Man hat halt da die Erfahrungen mit der DTD eingebracht und

27:01.770 --> 27:03.510
festgestellt, da gibt es gewisse Probleme.

27:04.050 --> 27:06.290
Und hat dann halt eine Schema-Definition gemacht.

27:07.810 --> 27:13.710
Und wie gesagt, das sind die Standards, die von dem W3C, von einigen

27:13.710 --> 27:15.850
Gremien dort, verabschiedet werden.

27:16.190 --> 27:20.770
Es gibt lange Diskussionsprozesse und irgendwann am Ende kommt dann

27:20.770 --> 27:21.570
ein Standard raus.

27:21.570 --> 27:25.390
XML 1.0 oder 1.1 oder was auch immer.

27:25.570 --> 27:26.790
Oder HTML 4.0.

27:28.850 --> 27:30.850
So, das waren die technischen Erweiterungen.

27:31.830 --> 27:33.890
Was sind horizontale Anwendungen?

27:34.030 --> 27:39.730
Das sind Anwendungen, die sind stärker anwendungsbezogen, gehen aber

27:39.730 --> 27:43.470
über eine ganze Bandbreite von verschiedenen Bereichen hinweg.

27:43.650 --> 27:48.370
Also MathML können Sie zum Beispiel verwenden in beliebigen

27:48.370 --> 27:50.930
Anwendungsgebieten, wo immer Sie Formeln verwenden wollen.

27:51.570 --> 27:53.130
Also nicht fachspezifisch.

27:54.150 --> 27:58.610
Fachspezifisch wäre zum Beispiel eine Markup-Language speziell für die

27:58.610 --> 27:59.450
Chemie.

27:59.770 --> 28:06.270
Oder es gibt, das habe ich hier gar nicht aufgeführt, es gibt LM hoch

28:06.270 --> 28:15.410
3 für ML hoch 3.

28:18.120 --> 28:23.600
Das ist eine Markup-Language für E-Learning-Module.

28:24.520 --> 28:28.100
Also für das E-Learning ist eine spezielle Markup-Language entwickelt

28:28.100 --> 28:28.400
worden.

28:28.520 --> 28:37.280
Oder Puppynet oder OFX, spezielle fachliche Spezialisierungen von XML

28:37.280 --> 28:40.840
-Dialekte, die man in einem bestimmten Bereich besonders gut einsetzen

28:40.840 --> 28:41.120
kann.

28:42.100 --> 28:45.200
Sie erinnern sich, das hatten wir bei EDI auch gehabt, bei EDFAC, die

28:45.200 --> 28:45.880
verschiedenen Spezialisierungen.

28:47.680 --> 28:49.700
Und sowas gibt es hier natürlich auch.

28:49.840 --> 28:55.780
Ich kann aber die Definition hier wesentlich flexibler handhaben.

28:57.200 --> 29:02.640
Dadurch, dass ich halt über die DTDs hier einiges definieren kann.

29:02.740 --> 29:04.900
Und ich kann über die Schemata, das werden wir gleich noch sehen, noch

29:04.900 --> 29:05.800
wesentlich mehr machen.

29:08.700 --> 29:09.100
Entschuldigung.

29:10.520 --> 29:15.560
Und dann kann natürlich jeder Anwender seine individuellen

29:15.560 --> 29:17.260
Formatspezifikationen machen.

29:18.220 --> 29:23.420
So, etwas was wir auf jeden Fall brauchen, oder was Sie brauchen

29:23.420 --> 29:29.240
werden, wenn Sie XML-Dokumente schreiben, das sind XML-Schemata, die

29:29.240 --> 29:32.020
halt wesentlich mehr Möglichkeiten bieten als die DTDs.

29:32.120 --> 29:33.160
Was bieten die DTDs?

29:33.180 --> 29:34.160
Das ist hier nochmal aufgeführt.

29:34.900 --> 29:41.620
Die haben einige einfache Datentypen drin, also wie Zeichenfolgen oder

29:41.620 --> 29:44.960
explizite Aufzählungen, aber nicht viel mehr.

29:45.640 --> 29:49.140
Es gibt keine Vererbungsmechanismen, also keine irgendwie

29:49.140 --> 29:50.320
objektorientierten Dinge.

29:51.760 --> 29:56.020
Man kann etwas einschränken auf einen gewissen Bereich, aber mehr kann

29:56.020 --> 29:57.140
man da auch nicht machen.

29:58.040 --> 30:03.140
Es gibt keine komplizierten oder komplexeren Datenstrukturen oder

30:03.140 --> 30:05.640
Dokumentstrukturen, die man deklarieren kann.

30:06.820 --> 30:10.980
Und es gibt auch keine Unterstützung von Namensräumen.

30:11.060 --> 30:14.740
Wenn man nur DTDs verwendet, braucht man keinen Namensraum, weil der

30:14.740 --> 30:16.900
Namensraum durch die DTD gegeben ist.

30:17.960 --> 30:21.060
Das reicht aber für viele Anwendungen nicht aus.

30:21.060 --> 30:23.240
Die XML-Schemata bieten mehr.

30:24.580 --> 30:29.320
Erstmal sind sie in der gleichen Syntax wie XML-Dokumente geschrieben.

30:29.800 --> 30:38.500
Sie werden sich erinnern, dass bei DTDs... Entschuldigung, ich bin

30:38.500 --> 30:39.300
etwas erkältet.

30:40.200 --> 30:46.240
Also wir haben bei DTDs eine etwas andere Syntax gehabt als in XML.

30:46.760 --> 30:49.140
Bei XML-Schema ist es die gleiche Syntax.

30:49.640 --> 30:53.360
Wir haben wesentlich mehr Datentypen zur Verfügung, auch wesentlich

30:53.360 --> 30:54.600
komplexere Datentypen.

30:55.280 --> 30:56.960
Wir haben hier auch Vererbungsmechanismen.

30:57.120 --> 30:58.900
Wir können weitere Datentypen definieren.

30:59.200 --> 31:01.760
Und wir haben vor allen Dingen die Unterstützung von Namensräumen, auf

31:01.760 --> 31:02.900
die ich gerade eingegangen war.

31:04.560 --> 31:05.760
Schauen wir uns das ein bisschen genauer an.

31:06.420 --> 31:07.800
Das hier ist ein Beispiel für ein Schema.

31:08.820 --> 31:12.160
Und ich werde gleich die verschiedenen Teile so eines Schemas Ihnen

31:12.160 --> 31:13.080
erläutern.

31:13.080 --> 31:14.500
Also hier sehen Sie alles auf einmal.

31:17.060 --> 31:21.600
Und oben drüber steht auch wieder etwas von welcher XML-Version das

31:21.600 --> 31:21.860
ist.

31:22.280 --> 31:28.160
Und dann sehen Sie hier eine Marke mit dem xsd-Präfix vorne vor.

31:29.400 --> 31:31.340
Hier geht es also um Schema-Definition.

31:32.400 --> 31:37.300
Und es ist hier auch noch angegeben, ein spezieller Namensraum, XML

31:37.300 --> 31:38.280
-Namensraum.

31:39.800 --> 31:44.020
Und der ist ganz explizit anzugeben, wenn man ein Schema aufschreibt.

31:45.580 --> 31:52.620
Das ist nämlich der Namensraum, in dem alle Elemente vorkommen oder

31:52.620 --> 31:55.000
definiert sind, die man mit dem Schema dran braucht.

31:57.980 --> 32:01.920
So, wir gehen jetzt auf die nächste Folie und schauen uns mal an die

32:01.920 --> 32:06.880
einzelnen Teile dieser Schema-Definition.

32:06.880 --> 32:09.000
Das sind hier die ersten Zeilen.

32:09.640 --> 32:14.040
Da steht es nochmal, es geht um den Namensraum für die XML-Schema

32:14.040 --> 32:15.020
-Spezifikation.

32:15.980 --> 32:16.900
Hier oben angegeben.

32:19.420 --> 32:22.160
Und hier sehen Sie, da steht 2001.

32:22.440 --> 32:30.780
Das heißt, das ist der Standard, der im Jahr 2001 festgelegt wurde.

32:30.780 --> 32:37.500
Schauen Sie sich bei w3.org mal um, was dort für inzwischen weitere

32:37.500 --> 32:39.800
Standards zur Verfügung stehen.

32:40.380 --> 32:42.960
Dann gibt es hier noch einen Target-Namespace.

32:44.360 --> 32:47.500
Der kann vorkommen, muss aber nicht vorkommen.

32:47.620 --> 32:52.740
Man kann also noch einen weiteren Namensraum für so ein Schema

32:52.740 --> 32:53.120
angeben.

32:54.000 --> 32:59.220
Also man kann die normalen Schema-Bestandteile noch erweitern.

33:01.260 --> 33:07.580
Das ist also jetzt erstmal diese Definition, welche Bestandteile mein

33:07.580 --> 33:09.180
Schema überhaupt haben soll.

33:10.020 --> 33:12.700
Damit ist das angegeben.

33:12.780 --> 33:16.120
Dann kann ich in einem Schema einiges annotieren.

33:17.640 --> 33:19.020
Ich muss es nicht, ich kann es machen.

33:19.180 --> 33:22.340
Das ist also so eine Marke Annotation.

33:22.340 --> 33:27.460
Hier wird gesagt, was in dem Dokument drin ist.

33:28.000 --> 33:31.440
Also da steht etwas mit, Sprache ist hier in dem Fall Englisch.

33:32.060 --> 33:37.680
Und da soll also etwas drinstehen, irgend so ein Lieferauftrag.

33:38.980 --> 33:40.520
Soll hier genauer beschrieben werden.

33:40.580 --> 33:49.840
Das ist praktisch nur eine Dokumentation, welche Inhalte diese

33:49.840 --> 33:53.300
Dokumente haben sollen, die diesem Schema entsprechen.

33:55.840 --> 34:01.720
Die einzelnen Elemente in so einem Schema sehen so aus.

34:02.340 --> 34:08.340
Wir haben in der DTD, erinnern Sie sich, hatten wir die Möglichkeit

34:08.340 --> 34:13.520
Elemente zu definieren, die wir dann als Marken in dem XML-Dokument

34:13.520 --> 34:15.000
verwenden konnten.

34:15.720 --> 34:18.380
Das gleiche können wir im Prinzip in einem Schema auch machen.

34:18.380 --> 34:19.800
Wir können Elemente definieren.

34:20.520 --> 34:22.140
Sieht hier ein bisschen umständlicher aus.

34:22.480 --> 34:27.620
Also hier wäre ein Element Comment definiert.

34:29.220 --> 34:34.400
Und dieser Kommentar wäre also vom Typ String.

34:35.260 --> 34:42.060
Also hier Möglichkeit solche Elemente zu definieren.

34:42.880 --> 34:49.580
Ich mache das so, dass ich Ihnen die Möglichkeiten eines Schemas

34:49.580 --> 34:51.820
zunächst mal an diesem Beispiel erläutere.

34:51.960 --> 34:53.740
Ich werde auf ein paar Dinge noch genauer eingehen.

34:54.460 --> 34:57.880
Aber wie auch an anderen Stellen in dieser Vorlesung, werde ich Ihnen

34:57.880 --> 35:00.270
natürlich nicht den Standard vollständig hier präsentieren.

35:00.820 --> 35:01.700
Das macht auch gar keinen Sinn.

35:02.300 --> 35:04.540
Das würde viel zu lange dauern, wären viel zu viele Einzelheiten.

35:05.220 --> 35:08.280
Und würde uns keinen wirklichen Gewinn bringen.

35:08.280 --> 35:14.480
Ich versuche halt einige wesentliche Eigenschaften dieser Standards

35:14.480 --> 35:15.500
Ihnen zu präsentieren.

35:16.340 --> 35:20.600
Und wenn Sie dann konkret selber ein Schema verwenden, müssen Sie sich

35:20.600 --> 35:24.840
sowieso den Standard anschauen und entsprechend Ihr Schema

35:24.840 --> 35:25.400
aufschreiben.

35:25.600 --> 35:27.640
Also ich kann Ihnen das nicht alles in der Vorlesung präsentieren.

35:27.720 --> 35:28.460
Das macht keinen Sinn.

35:29.120 --> 35:34.840
Das ist kein wirklicher Gewinn, weder für Sie noch für mich, wenn man

35:34.840 --> 35:37.680
so etwas in allen Einzelheiten herunterbieten muss.

35:37.680 --> 35:42.820
Und ich versuche, wie gesagt, Ihnen einige Eigenschaften darzustellen.

35:43.540 --> 35:46.880
Ich hatte gesagt, es ist möglich, Datentypen zu definieren.

35:47.240 --> 35:48.760
Hier ist so etwas gemacht worden.

35:49.500 --> 35:51.360
Hier haben wir also einen einfachen Typ.

35:52.120 --> 35:56.160
Also ein Simple Type wird definiert, der den Namen haben soll.

35:56.940 --> 35:59.440
Das ist String 30.

36:00.440 --> 36:14.320
Das heißt, dieser String soll entstehen dadurch, dass ich den Datentyp

36:14.320 --> 36:20.540
String, der in Schema.ta zur Verfügung steht, einschränke.

36:21.980 --> 36:22.780
Hier steht Restriction.

36:23.420 --> 36:25.880
Ich kann also einen allgemeineren Datentyp einschränken.

36:25.880 --> 36:28.240
Und hier steht, wie er eingeschränkt ist.

36:28.360 --> 36:33.280
Dadurch, dass die maximale Länge der Zeichenkette auf den Wert 30

36:33.280 --> 36:34.000
gesetzt wird.

36:34.860 --> 36:38.860
So würde ich also jetzt einen neuen Datentyp String 30 definieren, der

36:38.860 --> 36:40.820
aus 30 Zeichen maximal besteht.

36:42.780 --> 36:49.360
Also, ich kann Datentypen einschränken auf Teilbereiche.

36:49.360 --> 36:55.200
Das wäre so ein einfacher Typ, den kann ich mir definieren und habe

36:55.200 --> 36:57.100
ihn dann in dem Dokument zur Verfügung.

36:59.960 --> 37:09.900
Ja, man kann auch solche Basistypen erweitern mit Extension.

37:10.320 --> 37:12.560
Da kommen wir später nochmal drauf zurück.

37:13.740 --> 37:15.280
Das waren die einfachen Typen.

37:15.280 --> 37:17.260
Es gibt auch komplexere Typen.

37:18.200 --> 37:23.940
Und diese komplexeren Typen erlauben Strukturierungen, die wie folgt

37:23.940 --> 37:24.400
aussehen.

37:24.540 --> 37:29.580
In dem Beispiel, das vorhin zu sehen war, taucht ein komplexer Typ

37:29.580 --> 37:30.000
auf.

37:31.140 --> 37:33.640
Der komplexe Typ nennt sich hier Adresstyp.

37:34.440 --> 37:40.120
Und da drin gibt es eine Folge, also eine Sequenz.

37:41.280 --> 37:47.700
XSD Marke Sequenz oder Element Sequenz wird hier vom Typ Sequenz

37:47.700 --> 37:48.380
definiert.

37:49.500 --> 37:55.100
Und diese Folge soll bestehen, das ist hier eigentlich sehr einfach zu

37:55.100 --> 37:55.340
sehen.

37:55.460 --> 37:59.660
Zunächst mal steht hier ein Ort, also wird ein Element Ort definiert

37:59.660 --> 38:01.640
und ein Element Postleitzahl.

38:05.360 --> 38:12.720
Und dieses Element soll, hier steht MIN OCCURS, da steht 0x.

38:12.860 --> 38:17.600
MIN OCCURS 0x heißt, es kann auftauchen, es muss aber nicht

38:17.600 --> 38:17.950
auftauchen.

38:19.800 --> 38:24.440
Das heißt, ich habe hier eine Folge aus einem Ort und einer

38:24.440 --> 38:24.960
Postleitzahl.

38:25.080 --> 38:26.300
Zwei Elemente nacheinander.

38:26.300 --> 38:32.740
Und das erste Element, darauf beziehe ich mich später mit der Referenz

38:32.740 --> 38:33.160
Ort.

38:34.160 --> 38:37.570
Und hier habe ich eine Referenz angegeben mit Postleitzahl.

38:38.120 --> 38:43.500
Dieses zweite Element, darauf kann ich mich beziehen mit Postleitzahl,

38:43.740 --> 38:44.660
also mit PLZ.

38:45.520 --> 38:50.120
Das ist ein einfacher, komplexer, relativ einfacher komplexer Typ, der

38:50.120 --> 38:53.410
eine Folge von anderen Typen darstellt.

38:56.990 --> 39:02.090
Dieser komplexe Typ darf also im Gegensatz zum einfachen Typ weitere

39:02.090 --> 39:05.230
Elemente oder auch Attribute enthalten.

39:05.470 --> 39:08.910
Der einfache Typ hatte keine weiteren Elemente drin, sondern bezog

39:08.910 --> 39:11.550
sich nur auf einen Basistyp, der eingeschränkt oder erweitert werden

39:11.550 --> 39:12.210
konnte.

39:12.990 --> 39:15.290
Das ist also mehr als ein Simple Type.

39:16.870 --> 39:22.630
Und dieser Adresstyp basiert also auf einer Folge von Elementen,

39:22.970 --> 39:26.030
definiert durch das erste Element Sequence, das wir hier drin haben.

39:26.830 --> 39:32.330
Und wie gesagt, dass wir hier Referenzen reinschreiben, das ist

39:32.330 --> 39:40.210
einfach eine Hilfe, wenn man später auf ein anderes Element in dem

39:40.210 --> 39:41.310
Dokument verweisen will.

39:42.210 --> 39:44.130
Oder diese Referenz machen.

39:44.350 --> 39:46.950
Das sehen wir auch an anderen Beispielen später noch.

39:48.930 --> 39:53.590
Das war nicht die einzige Möglichkeit, komplexe Typen zu definieren.

39:53.750 --> 39:55.190
Ich kann auch andere definieren.

39:56.310 --> 39:59.110
Hier sind sie aufgeführt, Group All, Choice und Sequence.

40:00.730 --> 40:04.070
Und in dem Beispiel sehen Sie speziell Choice.

40:05.570 --> 40:09.330
Gucken wir mal hier unten, Choice, da steht nur eines der

40:09.330 --> 40:11.390
nachfolgenden Elemente darf gewählt werden.

40:12.210 --> 40:18.550
Also, hier bei Choice steht ein Element Sequence, das ist das eine

40:18.550 --> 40:18.990
Element.

40:20.010 --> 40:26.590
Und das andere Element wäre ein Postfach, also ein einfaches Element

40:26.590 --> 40:28.270
mit Ref Postfach.

40:29.150 --> 40:34.290
Also können wir hier entweder eine Adresse angeben, Straße und

40:34.290 --> 40:36.710
Hausnummer, oder ein Postfach.

40:37.230 --> 40:38.810
Das ist also über Choice angegeben.

40:38.810 --> 40:41.530
Dann gibt es andere Möglichkeiten.

40:42.590 --> 40:47.670
Wenn nicht Choice steht, sondern Group, dann können alle Elemente, die

40:47.670 --> 40:52.270
darunter aufgeführt sind, in beliebiger Reihenfolge in Dokumenten

40:52.270 --> 40:52.870
auftauchen.

40:57.690 --> 41:03.290
Entschuldigung, da habe ich Ihnen etwas falsch erzählt.

41:03.390 --> 41:12.010
Group bezieht sich darauf, dass alle Elemente, die danach vorkommen,

41:12.870 --> 41:18.070
also wenn ich hier Group hinschreiben würde, dann werden alle Elemente

41:18.070 --> 41:19.370
zu einer Gruppe zusammengefasst.

41:19.910 --> 41:25.170
Und ich könnte durch eine Referenz auf den Gruppennamen auf diese

41:25.170 --> 41:28.390
Elemente zugreifen, also könnte auf die verweisen.

41:29.150 --> 41:31.730
Das, was ich Ihnen gerade eben erzählt hatte, was angeblich die

41:31.730 --> 41:33.890
Bedeutung von Group wäre, ist die Bedeutung von All.

41:35.930 --> 41:40.290
Also All und Sequence sind Alternativen.

41:41.050 --> 41:43.010
Sequence hat eine feste Reihenfolge.

41:43.610 --> 41:46.270
All hat eine beliebige Reihenfolge.

41:46.350 --> 41:49.150
Da kommt es nicht darauf an, in welcher Reihenfolge die auftauchen.

41:51.210 --> 41:53.290
Und dann kann ich noch weitere Attribute angeben.

41:53.450 --> 41:55.310
Das, was hier auftaucht, ist das Min-Or-Curse.

41:55.410 --> 41:59.190
Genauso kann ich Max-Or-Curse angeben und kann dadurch sagen, wie oft

41:59.190 --> 42:01.310
ein solches Element auftauchen darf.

42:01.730 --> 42:06.730
Also es ist manchmal ganz sinnvoll, so etwas aufschreiben zu können in

42:06.730 --> 42:07.410
einem Dokument.

42:09.070 --> 42:13.410
Ich komme später nochmal auf diese Definition zurück.

42:14.190 --> 42:17.130
Dann haben wir hier Attributdefinitionen.

42:17.150 --> 42:19.410
Ich kann also auch Attribute angeben.

42:20.390 --> 42:28.630
Hier habe ich einen Attributnamen mit dem Wert Idee definiert.

42:28.630 --> 42:30.690
Ich habe ein Typ angegeben.

42:32.790 --> 42:36.970
Typ ist also hier Großidee und dann die Benutzung required.

42:37.730 --> 42:41.590
Das heißt, in dem Fall muss dieses Attribut vorkommen.

42:42.890 --> 42:47.550
Ansonsten, Sie erinnern sich, bei den anderen Varianten von XML hatten

42:47.550 --> 42:51.090
wir auch schon, und auch bei HTML und bei SGML gab es ja überall die

42:51.090 --> 42:55.290
Möglichkeiten, dass man Attributen optional oder required hinschreibt.

42:55.290 --> 42:59.370
Also wenn der Optional steht, muss ich es nicht unbedingt verwenden.

43:00.910 --> 43:02.950
Ich kann auch Attribute definieren.

43:03.150 --> 43:05.190
Jetzt haben wir hier nochmal das ganze Beispiel.

43:09.210 --> 43:15.430
Hier ist nochmal dieses Beispiel für das Schema angegeben, wo jetzt

43:15.430 --> 43:17.150
die verschiedenen Dinge zu sehen sind.

43:17.150 --> 43:24.290
Hier war, wie gesagt, das Schema gewesen.

43:24.970 --> 43:28.010
Oben die Definition des Namensraumes.

43:28.770 --> 43:36.170
Dann ist hier ein Element Name angegeben, als String.

43:36.590 --> 43:41.070
Ein Element E-Mail, auch ein String.

43:46.270 --> 43:51.390
Jetzt haben wir hier ein Attribut, Titel, auch ein String.

43:51.990 --> 43:53.170
Jetzt kommt hier unten ein Element.

43:55.430 --> 44:00.150
Man sollte so etwas in Zusammenhang erläutern.

44:00.790 --> 44:02.010
Dann sieht man, was da eigentlich steht.

44:03.850 --> 44:08.930
Hier haben wir ein Element, das ist ein Kunde.

44:10.450 --> 44:17.390
Und dieser Kunde, der soll ein Element sein von einem komplexen Typ.

44:17.650 --> 44:18.910
Da steht nämlich eine Folge.

44:20.350 --> 44:21.790
Ja, wovon?

44:22.850 --> 44:29.250
Eine Folge von, kann also beliebig viele stehen, ein Name.

44:30.050 --> 44:32.810
Jetzt steht hier ein Element, Bezug ist Name.

44:34.090 --> 44:38.070
Die Referenz Name bezieht sich jetzt auf das, was hier oben angegeben

44:38.070 --> 44:38.390
war.

44:43.280 --> 44:46.720
Jetzt wissen wir, was das für ein Element war.

44:47.300 --> 44:50.280
Dann haben wir hier ein zweites Element, das wird die E-Mail.

44:50.980 --> 45:00.640
Das heißt, ich kann jetzt beliebige Folgen von Namen und E-Mail

45:00.640 --> 45:01.880
-Adressen drin stehen haben.

45:02.040 --> 45:05.760
Zu jedem Namen können mehrere E-Mail-Adressen stehen.

45:07.940 --> 45:13.640
Ich muss aber erst den Namen hinschreiben und dann eine oder mehrere E

45:13.640 --> 45:14.120
-Mail -Adressen.

45:15.220 --> 45:17.460
Es kann auch sein, dass ich keine E-Mail-Adresse hinschreibe.

45:19.380 --> 45:22.380
Und dann gibt es hier noch ein Attribut, das steht noch hier in

45:22.380 --> 45:24.760
Referenz auf Titel.

45:24.860 --> 45:26.240
Und Titel war da oben angegeben.

45:32.640 --> 45:39.080
Bei der Definition des komplexen Typs werden Elemente verwendet, die

45:39.080 --> 45:40.920
vorher schon mal definiert wurden.

45:41.420 --> 45:43.340
Und es wird über diese Referenz darauf zugegriffen.

45:46.790 --> 45:55.830
Das war dieser komplexe Typ mit Namen Kunde, der hier definiert worden

45:55.830 --> 45:56.130
ist.

45:56.950 --> 46:03.130
Dann kommt ein weiteres, das ist das Ende von dem Element Namen Kunde.

46:03.430 --> 46:06.410
Da ist das Ende dieses Elements Kunde angegeben.

46:06.970 --> 46:11.030
Und dann kommt hier noch eine Liste, Element Name Liste.

46:13.090 --> 46:18.390
Und hier kommt jetzt wieder ein komplexer Typ vor.

46:19.730 --> 46:26.230
Da steht zunächst mal eine Folge, die beliebig lang sein kann.

46:27.030 --> 46:29.070
Und es dürfen hier beliebig viele Kunden stehen.

46:29.570 --> 46:32.010
Also XSD Element Referenz ist Kunde.

46:32.750 --> 46:38.910
Hier kann beliebig oft ein Element mit Namen Kunde stehen, das ja oben

46:38.910 --> 46:40.190
gerade definiert worden ist.

46:43.830 --> 46:54.730
Und dann steht hier noch dieser Attribut Name Titel.

46:55.990 --> 47:00.090
Und das ist das Ende von diesem komplexen Typ.

47:00.250 --> 47:08.270
Das heißt, wir haben hier diesen komplexen Typ Liste definiert.

47:10.010 --> 47:15.150
Und damit sind wir am Ende von diesem Element Namen Liste und am Ende

47:15.150 --> 47:15.830
von diesem Schema.

47:15.990 --> 47:18.430
Das heißt, was wir definiert haben, sind zwei komplexe Typen.

47:18.950 --> 47:21.990
Einen komplexen Typ Kunde und einen komplexen Typ Liste.

47:23.110 --> 47:25.450
Das wird auf den nächsten Folien nochmal erläutert.

47:25.810 --> 47:31.870
Also hier taucht jetzt ein Dokument auf.

47:33.030 --> 47:37.550
Das ist jetzt tatsächlich eine Liste, die sich bezieht auf das Schema,

47:37.590 --> 47:38.950
das wir gerade eben angegeben haben.

47:40.270 --> 47:45.310
Hier steht jetzt bei der Liste im Attribut Titel Kundenliste.

47:46.170 --> 47:47.990
Da wird also jetzt dieses Attribut verwendet.

47:49.550 --> 47:51.870
Und dann steht hier ein Text, enthält Kundenliste.

47:52.790 --> 48:00.810
Und jetzt taucht hier ein Kunde auf mit einem Namen Tag und einem E

48:00.810 --> 48:01.590
-Mail Tag.

48:01.870 --> 48:06.890
Das heißt, jetzt habe ich genau die Dinge, die vorher definiert waren,

48:06.990 --> 48:09.930
in diesem einfachen XML-Dokument verwendet.

48:13.920 --> 48:21.160
Hier ist noch ein weiteres Beispiel für ein Schema angegeben.

48:24.820 --> 48:26.700
Lassen Sie mich einmal kurz hier durchgucken.

48:28.580 --> 48:35.180
Sie werden festgestellt haben, dass ich nicht hundertprozentig mich

48:35.180 --> 48:36.720
vorbereiten konnte.

48:36.820 --> 48:39.380
Ich bin nämlich heute Mittag erst aus den USA eingeflogen.

48:40.640 --> 48:45.820
Und das hat es etwas erschwert, mich noch schnell vorzubereiten für

48:45.820 --> 48:46.300
diese Vorlesungsstunde.

48:47.340 --> 48:50.720
Jetzt muss ich auch mal sehen, was auf dieser Folie eigentlich

48:50.720 --> 48:59.580
angegeben ist, was die andere unterscheidet.

48:59.660 --> 49:04.120
Ich sehe im Augenblick nicht den Unterschied zu dem vorigen Schema.

49:11.320 --> 49:21.480
Das ist eigentlich noch einmal das gleiche

49:25.440 --> 49:27.820
Schema wie vorher.

49:29.560 --> 49:37.180
Und hier ist nochmal darauf hingewiesen, dass wir den Namensraum drin

49:37.180 --> 49:37.400
haben.

49:37.400 --> 49:43.840
Auf dieser Folie soll einfach nochmal die Struktur dieses Schemas

49:43.840 --> 49:44.780
angegeben werden.

49:44.900 --> 49:46.220
Oben steht also der Namensraum.

49:47.100 --> 49:48.760
Jetzt haben wir hier ein paar Referenzen.

49:49.820 --> 49:52.540
Das hatte ich vorhin an dem Beispiel schon erläutert.

49:53.700 --> 49:56.980
Das, was ich gerade eben explizit mit dem Stift gemacht habe, wird

49:56.980 --> 49:59.400
hier nochmal voranimiert dargestellt.

49:59.400 --> 50:02.400
Hier sind nochmal die Referenzen angegeben.

50:04.180 --> 50:08.720
Referenz, Name und E-Mail beziehen sich da oben auf die beiden

50:08.720 --> 50:10.260
Elemente, die da definiert wurden.

50:10.920 --> 50:16.900
Dann haben wir hier die geordnete Gruppe von Elementen, nämlich eine

50:16.900 --> 50:18.180
Sequenz.

50:18.600 --> 50:21.000
Also diese beiden, hatte ich ja vorhin auch schon gesagt.

50:21.000 --> 50:25.240
Da sind die Anzahlangaben nochmal angegeben.

50:25.300 --> 50:26.760
Die Häufigkeit wird dargestellt.

50:27.800 --> 50:31.720
Und damit ist das Wesentliche getan.

50:31.860 --> 50:35.000
Ich kann natürlich hier unten das Schema noch ergänzen durch weitere

50:35.000 --> 50:36.160
Bestandteile.

50:37.720 --> 50:42.620
So, nochmal zurück zu den verschiedenen Möglichkeiten, komplexe Typen

50:42.620 --> 50:43.000
anzugeben.

50:43.000 --> 50:51.160
Ich kann also solche Gruppen definieren, indem ich einer Menge von

50:51.160 --> 50:54.300
Elementen eine Referenz zuordne.

50:54.420 --> 51:00.060
Ich möchte eventuell auf alle Elemente einer Gruppe zugreifen oder die

51:00.060 --> 51:01.100
referenzieren können.

51:01.340 --> 51:02.560
Dann macht man das halt über Group.

51:03.020 --> 51:05.020
Das kann ich für Elemente machen und für Attribute.

51:06.140 --> 51:08.540
Dann habe ich hier diese Verknüpfungen.

51:12.180 --> 51:16.520
Und diese Verknüpfungen sind halt, das hatte ich ja vorhin auch schon

51:16.520 --> 51:20.400
gesagt, entweder eine Folge, eine geordnete Folge von Elementen, oder

51:20.400 --> 51:23.420
über All, die ungeordneten, oder über Choice, die Auswahl.

51:24.700 --> 51:29.120
Und hier steht noch die Ableitung eines Typs aus einem anderen Typ,

51:29.240 --> 51:31.600
dadurch dass ich den Typ einschränke in seinem Bereich.

51:31.720 --> 51:34.540
Da hatten wir das Beispiel gesehen, dass wir ein String einschränken

51:34.540 --> 51:38.360
auf ein String der Länge 30 Zeichen.

51:38.360 --> 51:43.080
Wir können ihn erweitern, wir können Datentypen vereinigen und wir

51:43.080 --> 51:45.020
können Listen machen.

51:45.680 --> 51:51.140
Ich zähle das hier auf, weil ich einfach darstellen möchte, dass die

51:51.140 --> 51:54.760
komplexen Datentypen wirklich deutlich mehr

51:54.760 --> 51:59.920
Strukturierungsmöglichkeiten bieten, als das in der DTD möglich war.

51:59.920 --> 52:07.160
Wenn Sie dort eine längere Liste darstellen wollten von zum Beispiel

52:07.160 --> 52:09.460
irgendwelchen Kunden, dann mussten Sie das explizit hinschreiben.

52:09.600 --> 52:15.640
Da konnten Sie nicht über solche Verknüpfungen wie hier Sequence All

52:15.640 --> 52:21.780
oder Choice oder auch diese Anzahlangaben eine allgemeinere Definition

52:21.780 --> 52:22.140
machen.

52:22.140 --> 52:28.040
Hier wird über die Schemata und über die komplexen Datentypen das

52:28.040 --> 52:30.900
Definieren von solchen komplexeren Strukturen einfach erleichtert.

52:32.120 --> 52:36.420
Zusätzlich gibt es noch eine Reihe eingebauter Datentypen, die man

52:36.420 --> 52:37.460
auch verwenden kann.

52:38.900 --> 52:45.700
Das sind also einmal solche einfachen Typen wie Identitäten oder

52:45.700 --> 52:48.800
Entities, hatten wir schon gesagt, was das ist.

52:48.940 --> 52:52.880
Wir haben eine ganze Reihe verschiedener Datentypen.

52:53.060 --> 52:56.790
Wir haben Namen, qualifizierte Namen, Namespace-Namen.

52:58.380 --> 53:02.660
Ein NC-Name ist ein qualifizierter Name ohne den Präfix und den

53:02.660 --> 53:05.560
Doppelpunkt, also ein einfach hingeschriebener Name.

53:07.000 --> 53:09.220
Qualifiziert ist er halt, wenn er mit Präfix versehen ist.

53:12.480 --> 53:13.760
Dann gibt es aber noch mehr.

53:14.340 --> 53:17.040
Wir können auch Zahlentypen angeben.

53:17.040 --> 53:19.940
Wir haben also den Bereich Integer zur Verfügung.

53:20.240 --> 53:25.640
Wir haben nicht-positive oder auch positive Integer zur Verfügung.

53:26.400 --> 53:28.980
Es gibt hier, wie Sie sehen, eine ganze Reihe verschiedener

53:28.980 --> 53:29.240
Datentypen.

53:29.740 --> 53:31.280
Ich brauche die nicht im Einzelnen anzugeben.

53:32.840 --> 53:35.080
Das kennen Sie aus Programmiersprachen genauso.

53:35.840 --> 53:39.180
Und hier hat man halt entsprechend der Anzahl der Bits, die zur

53:39.180 --> 53:39.840
Verfügung stehen.

53:39.840 --> 53:46.760
Integer für 32-Bit-Word, Long für 64-Bit-Word oder Short wäre halt 16

53:46.760 --> 53:48.340
-Bit und Byte entsprechend 8-Bit.

53:49.000 --> 53:56.280
Sie haben sogar Float, Double, Dezimal, Zahlen und Decimal hier auch

53:56.280 --> 53:57.040
nochmal angegeben.

53:57.820 --> 54:01.040
Das wäre praktisch einfache Festpunktdarstellungen.

54:01.440 --> 54:04.100
Also hier zum Beispiel irgendwo ist angegeben, da stand ein Punkt an

54:04.100 --> 54:04.440
der Stelle.

54:04.440 --> 54:09.280
3.1315 wäre eine Dezimalzahl in dem Sinne.

54:09.820 --> 54:11.760
Oder Sie haben auch bool'sche Angaben.

54:11.980 --> 54:17.740
Können Sie auch machen mit True und False oder 1 und 0 für wahr und

54:17.740 --> 54:18.060
falsch.

54:18.540 --> 54:20.880
Also eine ganze Reihe verschiedener Datentypen.

54:21.060 --> 54:21.700
Geht noch weiter.

54:23.040 --> 54:28.060
Für Zeitangaben, da finden Sie dann auch sehr komplizierte Angaben.

54:28.060 --> 54:30.540
Zum Beispiel TimeDuration.

54:34.010 --> 54:37.570
Das soll also eine Zeitdauer angeben.

54:38.090 --> 54:42.910
Und Sie finden hier eine ziemlich komplizierte Folge von Zeichen, die

54:42.910 --> 54:44.370
ich hier unten drunter erläutert habe.

54:44.830 --> 54:48.750
Habe ich aus der Definition herauskopiert hier angegeben.

54:49.690 --> 54:54.730
Ich will das gar nicht jetzt im Einzelnen vorlesen und erläutern, was

54:54.730 --> 54:55.750
da genau drin steht.

54:55.750 --> 54:59.290
Das allgemeine Format ist hier angegeben.

55:00.430 --> 55:05.330
Also mit Jahr, Monat, Tage, Stunde, Minute und Sekunden.

55:06.510 --> 55:09.390
Und mit entsprechenden Angaben, welche Werte dort stehen dürfen.

55:10.150 --> 55:14.330
Was man hier auf jeden Fall sieht, ist, dass man eben in diesem

55:14.330 --> 55:18.450
Schemata sehr viele verschiedene Datentypen zur Verfügung hat.

55:19.750 --> 55:21.990
Und das sei für den Schemata auch schon genug.

55:23.710 --> 55:26.510
Man kann, könnte noch viel mehr darüber erzählen.

55:26.910 --> 55:27.910
Fehlt mir aber auch die Zeit.

55:28.370 --> 55:30.310
Und ich wollte Ihnen eigentlich nur den Eindruck geben, dass man

55:30.310 --> 55:38.150
einfach mehr Strukturierungsmöglichkeiten hat, als das in DTDs möglich

55:38.150 --> 55:38.570
ist.

55:38.710 --> 55:42.170
Und ich habe vor allen Dingen auch die Möglichkeit, die Namespaces

55:42.170 --> 55:42.890
dort zu verwenden.

55:44.670 --> 55:49.920
Jetzt kommen ein paar weitere Standards, die mit XML zusammenhängen.

55:51.190 --> 55:55.270
Die zunächst mal so nebeneinander stehen und Ihnen vielleicht noch

55:55.270 --> 55:58.650
nicht so viel sagen, was man damit eigentlich machen kann.

55:59.270 --> 56:05.330
Aber man braucht sie, um aus einem XML-Dokument später

56:05.330 --> 56:09.050
unterschiedliche Präsentationen zu machen, also unterschiedliche

56:09.050 --> 56:11.910
Darstellungen zu erzeugen.

56:13.530 --> 56:19.230
Und ich habe ja zunächst mal nur diese Baumstruktur meines XML

56:19.230 --> 56:24.370
-Dokumentes und muss daraus jetzt irgendein anderes Dokument erzeugen.

56:25.290 --> 56:28.670
Und dazu gibt es noch ein paar weitere Möglichkeiten, die wir zum Teil

56:28.670 --> 56:31.490
auch schon aus HTML kennen, überwiegend aber nicht.

56:32.410 --> 56:37.270
Also, was wir jetzt aus HTML kennen, ist etwas, was mit Links zu tun

56:37.270 --> 56:37.510
hat.

56:37.510 --> 56:46.510
In HTML ist ja der Link ein wesentlicher Bestandteil, Hypertext, also

56:46.510 --> 56:48.730
durch Links verbundene Dokumente.

56:50.630 --> 56:55.750
Und das heißt, ich habe hier irgendwelche zwei Dokumente und von einer

56:55.750 --> 57:00.410
Stelle an einem Dokument geht ein Link auf ein anderes Dokument.

57:01.090 --> 57:06.730
Oder auch an eine besondere Stelle im Dokument geht auch, kann man

57:06.730 --> 57:07.150
auch machen.

57:08.150 --> 57:15.450
Also, ich habe dann in meinem Dokument eine Angabe, die einen Link

57:15.450 --> 57:19.110
darstellt und ich kann auf diesen Link raufklicken, das kennen Sie

57:19.110 --> 57:19.370
alle.

57:19.930 --> 57:24.030
Ich kann ihn aktivieren und ersetze dann das, was auf diesem Link im

57:24.030 --> 57:31.990
Dokument steht, durch das Ergebnis, was am Ziel dieses Links angegeben

57:31.990 --> 57:32.230
ist.

57:32.850 --> 57:35.970
Also, durch einen Link kann ich eine andere Seite aufrufen oder auch

57:35.970 --> 57:37.490
ein Bild einbetten oder was immer.

57:38.050 --> 57:40.210
Ich kann das in einem neuen Fenster machen, kann das im Dokument

57:40.210 --> 57:42.150
selber machen, es gibt verschiedene Möglichkeiten.

57:43.010 --> 57:46.870
Und diese Möglichkeiten der Hyperlinks sind in diesem xLink-Standard

57:46.870 --> 57:50.630
verwendet worden, erweitert worden, man hat auch hier noch andere

57:50.630 --> 57:51.890
Standards mit dazugenommen.

57:51.890 --> 58:02.590
Und hier geht es also darum, dass man Beziehungen zwischen Objekten

58:02.590 --> 58:03.890
bzw.

58:04.450 --> 58:08.670
Ressourcen in XML-Dokumenten beschreiben möchte.

58:10.210 --> 58:16.190
Also, mein XML-Dokument ist ja irgend so ein Baum und da sind alle

58:16.190 --> 58:19.370
möglichen Objekte oder Ressourcen dran und jetzt gibt es da

58:19.370 --> 58:22.670
irgendwelche Beziehungen zwischen solchen Dokumenten.

58:23.730 --> 58:29.130
Es kann auch sein, dass ich hier irgendwo in unterschiedlichen

58:29.130 --> 58:33.090
Dokumenten bin, dass ich vielleicht auch von einem Dokument aufs

58:33.090 --> 58:34.650
andere einen Link mache.

58:34.650 --> 58:38.710
Und wir werden gleich sehen, dass es noch weitere Möglichkeiten gibt,

58:38.790 --> 58:40.650
aus solchen einfachen Pfeilen dahin zu zeichnen.

58:41.770 --> 58:45.690
Also, ich habe sowohl die einfachen gerichteten Hyperlinks von HTML,

58:46.490 --> 58:50.510
das habe ich gerade eben hier angedeutet, ich habe aber auch

58:50.510 --> 58:55.010
Möglichkeiten, kompliziertere Links oder kompliziertere Beziehungen

58:55.010 --> 58:55.730
anzugeben.

58:56.410 --> 59:00.450
Also, ich könnte sagen, ich habe hier meinetwegen mehrere Dokumente

59:00.450 --> 59:06.870
und ich kann eine Beziehung beschreiben, die besteht zwischen...

59:06.870 --> 59:10.630
Also die Beziehung sei, nenne ich mal jetzt R, das sei unsere

59:10.630 --> 59:13.810
Beziehung, die wir definieren wollen und die bezieht sich auf das

59:13.810 --> 59:17.730
Dokument, auf das Dokument, auf das Dokument und auf das Dokument.

59:18.270 --> 59:23.110
Das heißt, ich gebe eine Beziehung an zwischen vier solchen Dokumenten

59:23.110 --> 59:26.230
oder auch zwischen vier Bestandteilen der Dokumente.

59:27.090 --> 59:28.190
Kann ich auch machen.

59:28.370 --> 59:29.990
Oder auch fünf oder sechs oder beliebig viele.

59:30.850 --> 59:33.970
Das heißt, ich habe nicht mehr nur die Möglichkeit, eine einfache

59:33.970 --> 59:39.590
Verbindung anzugeben, ein Verweis von einer Stelle im Dokument auf ein

59:39.590 --> 59:43.250
anderes Dokument, sondern ich kann beliebige Beziehungen zwischen

59:43.250 --> 59:45.490
Objekten durch solche Links beschreiben.

59:45.490 --> 59:51.230
Und das kann man natürlich dann auch genauer angeben.

59:52.310 --> 59:54.670
Einmal kann man Simple Links definieren.

59:56.590 --> 59:58.750
In HTML kennen Sie das alle.

59:59.450 --> 01:00:01.630
Da gibt es dieses Address Tag.

01:00:04.970 --> 01:00:09.890
Einfach Klammer auf A und dann haben wir hier eine Hypertext Referenz

01:00:09.890 --> 01:00:19.850
mit einer URL, die das Dokument bezeichnet, auf das man zugreifen will

01:00:19.850 --> 01:00:21.750
oder die Ressource, auf die man zugreifen möchte.

01:00:22.750 --> 01:00:26.550
Und dann ist ja diese Referenz zu Ende.

01:00:27.030 --> 01:00:28.390
Dann ist auch dieses Tag zu Ende.

01:00:28.590 --> 01:00:29.830
Dann kommt dazwischen Text.

01:00:30.750 --> 01:00:34.430
Dieser Text, Forschungsgruppe Effiziente Algorithmen, bezeichnet

01:00:34.430 --> 01:00:35.910
diesen Link.

01:00:37.210 --> 01:00:38.410
Das ist ja der Name des Links.

01:00:38.630 --> 01:00:42.670
Damit erscheint im Dokument dieser Link.

01:00:42.970 --> 01:00:45.010
Wird ja auch farbig hervorgehoben.

01:00:45.170 --> 01:00:47.010
Damit habe ich also diesen Link gekennzeichnet.

01:00:47.010 --> 01:00:49.390
Und das ist das Ende dieser Link-Definition.

01:00:49.990 --> 01:00:52.730
In XML wird das nachgebildet.

01:00:53.690 --> 01:00:55.950
Da kann ich also zum Beispiel hinschreiben Adresse.

01:00:57.270 --> 01:00:59.950
In diesem Fall steht hier, also es ist nicht so, dass das immer

01:00:59.950 --> 01:01:01.350
Adresse sein muss.

01:01:01.470 --> 01:01:04.770
Ich kann also auch in einem anderen Tag verwenden.

01:01:04.770 --> 01:01:11.330
Ich verwende jetzt in diesem Element, das ich Adresse nenne, verwende

01:01:11.330 --> 01:01:16.450
ich Elemente aus dem Namespace xLink.

01:01:17.310 --> 01:01:24.090
Also, wenn man xLink verwendet, muss man aus dem entsprechenden

01:01:24.090 --> 01:01:30.150
Namespace bei W3Org sich darauf beziehen.

01:01:30.150 --> 01:01:35.730
Dann kann man alle die Bestandteile, die dort für xLink definiert

01:01:35.730 --> 01:01:38.130
sind, alle Elemente, die da vorkommen können, alle Attribute, die da

01:01:38.130 --> 01:01:39.470
vorkommen können, kann man verwenden.

01:01:40.010 --> 01:01:44.950
Und die werden entsprechend dann von XML-Parsern richtig verwendet.

01:01:45.890 --> 01:01:49.250
So, hier steht, es ist ein einfacher Link.

01:01:49.950 --> 01:01:51.390
xLink-Type gleich simple.

01:01:52.290 --> 01:01:54.950
Hier habe ich eine Referenz.

01:01:55.190 --> 01:01:58.770
Das, was da oben auch angegeben war, steht hier also jetzt explizit

01:01:58.770 --> 01:02:00.090
unter href.

01:02:01.010 --> 01:02:05.950
Dann habe ich wieder xLink-Title, FG, Effiziente Algorithmen.

01:02:06.090 --> 01:02:12.190
Das, was oben stand, hier unterstrichen, als Inhaltsangabe in der

01:02:12.190 --> 01:02:18.270
Marke A, steht hier als Titel des Links, Bezeichnung dieses Links.

01:02:20.170 --> 01:02:25.930
Dann habe ich hier eine Show-Angabe, das steht jetzt New, wird also

01:02:25.930 --> 01:02:27.270
neu angegeben.

01:02:28.770 --> 01:02:33.350
Und Actuate heißt, wann wird der aktiviert, in diesem Fall Onload.

01:02:34.070 --> 01:02:41.650
Also, da wird beim Laden des Dokuments dieser Link aktualisiert, wird

01:02:41.650 --> 01:02:42.440
also hier schon eingesetzt.

01:02:43.220 --> 01:02:53.520
Also schon ersetzt praktisch durch das, was dort auf der anderen Seite

01:02:53.520 --> 01:02:53.820
steht.

01:02:54.040 --> 01:02:59.160
Also, das sind so verschiedene Möglichkeiten, hier Links zu

01:02:59.160 --> 01:02:59.640
definieren.

01:03:01.200 --> 01:03:05.520
Und kommen gleich noch die etwas, hier noch ein bisschen mehr zu

01:03:05.520 --> 01:03:06.140
Simple Links.

01:03:07.060 --> 01:03:10.340
Der Typ hier in dem Fall war Simple.

01:03:10.860 --> 01:03:16.960
Wir haben bei dem Show, gerade eben bei dem Attribut, das Stand New,

01:03:17.140 --> 01:03:18.780
man kann auch Replace hinschreiben.

01:03:21.280 --> 01:03:28.880
Normalerweise wird der Link ersetzt durch das, wenn man also darauf

01:03:28.880 --> 01:03:31.960
klickt, wird der Link, oder das ist das, was wir uns normalerweise uns

01:03:31.960 --> 01:03:38.680
vorstellen, wird das, was an dem Ort steht, ersetzt durch das Ziel

01:03:38.680 --> 01:03:39.480
dieses Links.

01:03:41.600 --> 01:03:44.180
Und ich kann das aber eben auch mit New machen, dann wird es nicht

01:03:44.180 --> 01:03:48.920
ersetzt, sondern wird ein neues Element dazu geschrieben.

01:03:51.860 --> 01:03:55.120
Dann haben wir hier bei Actuate, wie gesagt, das definiert, wann ein

01:03:55.120 --> 01:03:56.380
Link aktiv werden soll.

01:03:56.380 --> 01:04:00.300
Bei OnRequest, da muss der Benutzer den Link anklicken, bei OnLoad

01:04:00.300 --> 01:04:02.140
wird der Link automatisch geladen.

01:04:03.220 --> 01:04:08.580
Das heißt, da wird ein Fenster, ich will ja manchmal über ein Link ein

01:04:08.580 --> 01:04:11.180
Dokument aufmachen, das in einem weiteren Fenster aufgehen soll.

01:04:12.040 --> 01:04:15.680
Und ich kann, wenn dort OnLoad steht, dann wird in dem Augenblick, wo

01:04:15.680 --> 01:04:21.620
ich das Dokument lade, in dem dieser Link steht, wird auch das

01:04:21.620 --> 01:04:26.900
Zielobjekt, die Zielressource von diesem Link, mitgeladen und es geht

01:04:26.900 --> 01:04:32.240
das Fenster mit den Zielen dieser Links auf, bei denen diese OnLoad

01:04:32.240 --> 01:04:32.540
steht.

01:04:34.000 --> 01:04:37.440
Dieser Titel gibt eine Beschreibung des Links, die muss nicht

01:04:37.440 --> 01:04:40.080
unbedingt da sein, kann man aber durchaus verwenden.

01:04:42.020 --> 01:04:43.720
Was sind die Extended Links?

01:04:44.660 --> 01:04:49.560
Das sind die Möglichkeiten, mehrere Ressourcen zu kombinieren.

01:04:50.580 --> 01:04:55.660
Also, ich gebe an, bei einem Extended Link, da habe ich hier Locator,

01:04:55.920 --> 01:04:58.920
die Positionen, die an einem erweiterten Link beteiligt sind.

01:04:58.920 --> 01:05:02.120
Ich mache gleich ein Beispiel, ich gehe gleich mal auf die Seite hier.

01:05:02.540 --> 01:05:08.780
Da sehen Sie ein Extended Link, X-Link Extended.

01:05:10.920 --> 01:05:21.800
Und hier sehen Sie zwei, in diesem Fall nur zwei Orte, die jeweils

01:05:21.800 --> 01:05:23.200
durch Locator angegeben sind.

01:05:23.200 --> 01:05:26.480
Ich kann also auch mehrere angeben, dann hätte ich hier eine Reihe von

01:05:26.480 --> 01:05:34.340
solchen Locators, die den Link ausmachen, die durch einen Link

01:05:34.340 --> 01:05:35.100
verbunden sind.

01:05:35.880 --> 01:05:36.840
Gehen wir zurück.

01:05:37.600 --> 01:05:44.900
Das ist also die Möglichkeit, mehrere Ressourcen durch einen solchen

01:05:44.900 --> 01:05:48.500
Link zu verbinden.

01:05:50.160 --> 01:05:59.540
Jetzt kann man auch mit einem Extended Link eine Verbindung zwischen

01:05:59.540 --> 01:06:01.100
zwei Positionen definieren.

01:06:01.100 --> 01:06:02.740
Hatten wir vorher auch schon.

01:06:02.840 --> 01:06:09.020
Der Simple Link war aber immer so, dass wir beim Simple Link von einem

01:06:09.020 --> 01:06:16.300
lokalen Ort in einem Dokument einen Link machen auf eine andere

01:06:16.300 --> 01:06:16.840
Ressource.

01:06:17.740 --> 01:06:25.880
Bei dem Extended Link sind wir freier, was die Ressourcen angeht, die

01:06:25.880 --> 01:06:27.300
durch diesen Link verbunden werden.

01:06:27.300 --> 01:06:32.680
Ich kann also zum Beispiel durch einen solchen Arc auch zwei

01:06:32.680 --> 01:06:36.680
Ressourcen miteinander verbinden, die gar nicht in meinem Dokument

01:06:36.680 --> 01:06:37.120
drin stehen.

01:06:37.500 --> 01:06:40.080
Ich schreibe nur den Link in mein Dokument rein.

01:06:40.780 --> 01:06:46.880
Also, ich könnte einen expliziten Link definieren, der nur diese

01:06:46.880 --> 01:06:52.820
beiden Ressourcen verbindet, die gar nicht in meinem Dokument drin

01:06:52.820 --> 01:06:53.320
stehen müssen.

01:06:54.800 --> 01:06:59.500
Und so etwas nennt man dann ein Arc, also ein Pfeil.

01:07:01.940 --> 01:07:08.020
Und wenn man ein Pfeil hat, möchte man auch sagen, von wo nach wo, in

01:07:08.020 --> 01:07:10.300
welche Richtung der Pfeil angegeben ist.

01:07:10.920 --> 01:07:15.640
Das kann man über x-Link Elemente from und to machen.

01:07:15.640 --> 01:07:21.680
Mit from gebe ich also eine Ressource an, die am Anfang meines Pfeils

01:07:21.680 --> 01:07:26.040
ist und mit to gebe ich die Ziel-Ressource an.

01:07:27.080 --> 01:07:33.940
Also so kann ich angeben, welche Objekte von wo nach wo angeschaut

01:07:33.940 --> 01:07:34.560
werden sollen.

01:07:35.410 --> 01:07:41.260
So etwas kann man sich vorstellen, oder kann man einsetzen, wenn man

01:07:41.260 --> 01:07:46.060
aus einem XML-Dokument eine Präsentation machen will.

01:07:46.160 --> 01:07:49.580
Dann möchte man durch eine bestimmte Folge oder vielleicht eine Reihe

01:07:49.580 --> 01:07:56.160
von XML-Dokumenten und möchte in einer bestimmten Reihenfolge solche

01:07:56.160 --> 01:07:59.920
Objekte oder Ressourcen in XML-Dokumenten abarbeiten.

01:07:59.920 --> 01:08:05.740
Und daraus, die man wegen in einem HTML-Dokument alle drei nach

01:08:05.740 --> 01:08:06.240
auflisten.

01:08:06.400 --> 01:08:09.540
Oder irgendwelche Eigenschaften und irgendwelche Inhalte aus diesen

01:08:09.540 --> 01:08:15.480
verschiedenen Ressourcen verwenden und die in einem HTML-Dokument

01:08:15.480 --> 01:08:16.000
auflisten.

01:08:16.520 --> 01:08:19.760
Dann kann man über diese Links halt die Reihenfolgen angeben, indem

01:08:19.760 --> 01:08:24.780
man diese durch so einen Extended Link verbundenen Ressourcen, wie man

01:08:24.780 --> 01:08:26.180
die abarbeiten soll.

01:08:26.180 --> 01:08:30.700
Also das ist eine Anwendung solcher Links.

01:08:31.340 --> 01:08:35.060
Ich habe also Traversierungsregeln für einen Extended Link vom Typ Arc

01:08:35.060 --> 01:08:40.660
und den kann ich auch in Kombination mit solchen noch allgemeineren

01:08:40.660 --> 01:08:41.240
Links verwenden.

01:08:42.680 --> 01:08:47.960
Und dann kann ich bei einem erweiterten Link auch noch eine Rolle

01:08:47.960 --> 01:08:52.040
angeben, dann wird die Funktion des angesprochenen Inhalts noch etwas

01:08:52.040 --> 01:08:55.220
genauer definiert oder beschrieben.

01:08:55.220 --> 01:08:56.880
Hier ist nochmal das Beispiel.

01:08:58.300 --> 01:09:02.620
Wir haben hier einen Extended Link.

01:09:03.880 --> 01:09:10.680
Auch hier wird ein Namespace verwendet, wobei hier steht das Jahr 2000

01:09:10.680 --> 01:09:10.980
drin.

01:09:12.060 --> 01:09:18.820
Wenn Sie diesen Namespace verwenden, sollten Sie nicht den vom Jahr

01:09:18.820 --> 01:09:20.920
2000 nehmen, sondern etwas neuere.

01:09:24.260 --> 01:09:28.480
In diesem Fall soll also der Link, der hier definiert wird, eine

01:09:28.480 --> 01:09:29.720
Familie bezeichnen.

01:09:30.920 --> 01:09:35.200
Die Rolle ist also eine Familie zu bezeichnen und der Name oder der

01:09:35.200 --> 01:09:37.600
Titel dieses Links soll sein, eine Familie.

01:09:39.320 --> 01:09:41.400
Und woraus besteht dieser Link?

01:09:41.880 --> 01:09:48.360
Besteht daraus, dass ich einmal einen Otto Mustermann.xml habe.

01:09:48.460 --> 01:09:50.780
Das heißt, ich habe hier ein XML-Dokument.

01:09:51.800 --> 01:09:54.040
Das ist der Otto Mustermann.

01:09:57.360 --> 01:10:04.460
Und ich habe ein weiteres Objekt, das ist hier die Katja Mustermann.

01:10:04.460 --> 01:10:07.280
Auch so ein XML-Dokument.

01:10:09.680 --> 01:10:16.780
Und die Rolle dieser Ressource, Otto Mustermann ist Elternteil, die

01:10:16.780 --> 01:10:22.380
Rolle der Ressource Katja Mustermann ist Kind.

01:10:24.220 --> 01:10:27.420
Und Sie können später, wenn Sie jetzt durch so ein XML-Dokument

01:10:27.420 --> 01:10:30.380
hindurchlaufen, wenn Sie das abarbeiten, um daraus irgendwelche

01:10:30.380 --> 01:10:35.480
anderen Dinge zu erzeugen, können Sie zum Beispiel sagen, Sie möchten

01:10:35.480 --> 01:10:40.540
alle Knoten, bei denen die Rolle Kind ist oder die Rolle Elternteil,

01:10:40.740 --> 01:10:45.160
die möchten Sie speziell raussuchen aus solchen Knoten, die über

01:10:45.160 --> 01:10:46.620
irgendwelche Links verbunden sind.

01:10:47.740 --> 01:10:55.440
Also diese Attribute sind ganz wichtig, um die Dokumente in

01:10:55.440 --> 01:10:57.960
systematischer Art und Weise bearbeiten zu können.

01:10:57.960 --> 01:11:01.140
Und dann habe ich hier einen Arg angegeben.

01:11:02.280 --> 01:11:07.360
Also das sind bisher nur die beiden Ressourcen, die durch diesen Link

01:11:07.360 --> 01:11:10.960
mit dem Namen Familie verbunden werden.

01:11:11.920 --> 01:11:20.940
Und jetzt definiere ich ein Pfeil von Elternteil explizit auf Kind.

01:11:22.540 --> 01:11:28.440
Das heißt, ich habe ein Pfeil von diesem Elternteil, das war die Rolle

01:11:28.440 --> 01:11:32.160
Elternteil, Rolle Kind, von Elternteil nach Kind.

01:11:32.160 --> 01:11:40.100
Und hier steht show gleich replace, actuate on request.

01:11:40.460 --> 01:11:48.100
Das heißt, hier kann ich von dem Elternteil durch anklicken, also

01:11:48.100 --> 01:11:51.900
durch aktivieren, das Elternteil durch das Kind ersetzen.

01:11:52.540 --> 01:11:55.180
Das ist da die Bedeutung, die dahinter steckt.

01:11:55.180 --> 01:12:02.140
Und das ist die Definition dieses erweiterten Links, bei dem der Sinn

01:12:02.140 --> 01:12:05.060
dieses Beispiels war, Ihnen so ein bisschen zu zeigen, dass die

01:12:05.060 --> 01:12:09.480
Möglichkeiten solcher Links deutlich über das hinausgehen, was wir bei

01:12:09.480 --> 01:12:11.740
HTML kennengelernt haben.

01:12:12.820 --> 01:12:19.800
Und ja, man kann also hier Strukturen in XML-Dokumenten oder auch

01:12:19.800 --> 01:12:21.840
zwischen XML-Dokumenten definieren.

01:12:21.840 --> 01:12:22.640
Sollte

01:12:31.110 --> 01:12:33.450
ich noch etwas genauer machen.

01:12:34.970 --> 01:12:37.450
Ich lasse es mal so stehen mit diesem xlink.

01:12:39.370 --> 01:12:44.210
Und gehe jetzt auf einen weiteren Standard, xpath.

01:12:44.770 --> 01:12:45.830
Wozu brauche ich xpath?

01:12:47.990 --> 01:12:55.110
Ich habe gerade eben bei xlink genau das Problem gehabt, worauf

01:12:55.110 --> 01:12:57.810
bezieht sich eigentlich ein Link?

01:12:57.810 --> 01:13:00.890
An welche Stelle in einem Dokument möchte ich eigentlich springen?

01:13:01.030 --> 01:13:07.150
Wie bezeichne ich eigentlich ein bestimmtes Objekt innerhalb eines XML

01:13:07.150 --> 01:13:07.910
-Dokumentes?

01:13:09.150 --> 01:13:13.910
Und jedes solche XML-Dokument besteht ja aus irgendeiner Baumstruktur.

01:13:15.590 --> 01:13:19.190
Man kann also irgendwie angegeben, je nachdem wie die Elemente

01:13:19.190 --> 01:13:21.590
geschachtelt sind, habe ich solch eine Baumstruktur.

01:13:21.590 --> 01:13:26.070
Eigentlich möchte ich an irgendeiner Stelle in diesem Baum springen

01:13:26.070 --> 01:13:26.430
können.

01:13:27.350 --> 01:13:31.250
Und um an einer Stelle in so einem Baum springen zu können, muss ich

01:13:31.250 --> 01:13:33.810
den Pfad dorthin kennen.

01:13:34.950 --> 01:13:38.470
Ich muss also den Pfad irgendwie angeben können, der mir sagt, das ist

01:13:38.470 --> 01:13:42.630
der Punkt, das ist genau dieser Knoten, dieser Teilbaum oder nur

01:13:42.630 --> 01:13:46.130
dieser Knoten, der mich jetzt interessiert, den ich ansprechen möchte.

01:13:46.130 --> 01:13:49.210
Und das ist das, was mit XPath gemacht wird.

01:13:49.870 --> 01:13:58.830
XPath erlaubt die Spezifizierung von Orten oder von Teilen eines XML

01:13:58.830 --> 01:13:59.330
-Dokuments.

01:13:59.450 --> 01:14:03.410
Ich kann also einen Teil eines XML-Dokuments adressieren.

01:14:04.350 --> 01:14:06.390
Ich male das hier nochmal hin.

01:14:06.810 --> 01:14:08.330
Ich habe also hier meinen Baum.

01:14:09.010 --> 01:14:14.850
Und irgendwo taucht jetzt hier ein solches Teilbaum auf, den ich

01:14:14.850 --> 01:14:15.670
adressieren möchte.

01:14:16.130 --> 01:14:20.650
Da kann ich über eine solche Pfadangabe drauf zugreifen.

01:14:25.730 --> 01:14:30.910
Und diese Möglichkeiten, darauf aus solchen Objekten innerhalb eines

01:14:30.910 --> 01:14:35.870
Dokuments zuzugreifen, die brauche ich natürlich, wenn ich Links

01:14:35.870 --> 01:14:36.730
definieren will.

01:14:37.410 --> 01:14:38.530
Hier steht noch etwas anderes.

01:14:38.590 --> 01:14:42.110
Hier steht noch XPointer, noch eine Verallgemeinerung von Links, auf

01:14:42.110 --> 01:14:43.530
die wir auch noch kurz zu sprechen kommen.

01:14:43.530 --> 01:14:55.870
Und bei XSLT, das ist der Extended Style Sheet Transformer, da möchte

01:14:55.870 --> 01:15:03.110
ich explizit XML-Dokumente transformieren und daraus andere Dokumente

01:15:03.110 --> 01:15:06.130
erstellen, HTML-Dokumente oder PDF-Dokumente oder Ähnliches.

01:15:06.490 --> 01:15:11.070
Und muss dann explizit solche Teile von XML-Dokumenten ansprechen

01:15:11.070 --> 01:15:11.350
können.

01:15:11.350 --> 01:15:18.290
Und diese Möglichkeiten, darauf zuzugreifen, das sind genau die Dinge,

01:15:18.410 --> 01:15:20.230
die mit XPath spezifiziert werden.

01:15:21.930 --> 01:15:24.610
Also, das mache ich jetzt etwas genauer.

01:15:26.170 --> 01:15:34.430
Ich habe also eine Sprache oder eine Syntax für solche Adressierungen

01:15:34.430 --> 01:15:36.930
von Objekten in einem XML-Dokument.

01:15:41.150 --> 01:15:44.010
Diese Adressierungen bestehen aus drei Komponenten.

01:15:45.970 --> 01:15:49.110
Einer Achse, einem Knotentest und einem Prädikat.

01:15:49.690 --> 01:15:51.870
Das ist hier nochmal angegeben, den Satz unten drunter.

01:15:52.370 --> 01:15:53.890
Drei verschiedene Bestandteile.

01:15:54.930 --> 01:15:59.310
Ich muss mir die jetzt genauer anschauen.

01:16:00.110 --> 01:16:04.990
Also, die Achse gibt an, wo ich im Dokument bin.

01:16:06.590 --> 01:16:09.250
Da kommen wir eigentlich gleich drauf.

01:16:10.170 --> 01:16:13.710
Auf der nächsten Folie wird das genauer erläutert.

01:16:14.450 --> 01:16:18.870
Da kann ich an einem schönen gemalten Baum Ihnen genau diese Sachen

01:16:18.870 --> 01:16:19.410
erläutern.

01:16:20.150 --> 01:16:25.410
Das, was hier angegeben ist, mögliche Achsen sind Child, Parent oder

01:16:25.410 --> 01:16:26.330
irgendein Attribut.

01:16:26.670 --> 01:16:29.490
Das sehen wir auf der nächsten Folie gleich etwas genauer.

01:16:30.490 --> 01:16:39.390
Die Knotentests erlauben aus einer Menge von Knoten, die man über

01:16:39.390 --> 01:16:43.450
diese Achse definiert hat, einige Elemente anzusprechen.

01:16:44.290 --> 01:16:50.650
Und ein Prädikat ist ein Boucher-Ausdruck, der dann für jeden Knoten

01:16:50.650 --> 01:16:54.170
aus dem Knotentest ausgewertet wird.

01:16:54.170 --> 01:17:05.030
Also, über die Achse definiere ich erstmal eine Menge von Knoten in

01:17:05.030 --> 01:17:06.590
meinem XML-Dokument.

01:17:07.210 --> 01:17:10.450
Der Knotentest schränkt das auf eine Teilmenge ein.

01:17:11.690 --> 01:17:16.530
Und das Prädikat überprüft dann alle Elemente dieser Teilmenge darauf,

01:17:16.650 --> 01:17:19.470
ob dieses Prädikat dort zutrifft oder nicht.

01:17:19.470 --> 01:17:22.710
Und auf diese Art und Weise kann ich dann speziell das, was dann übrig

01:17:22.710 --> 01:17:27.150
bleibt, da wo dieser Test oder wo dieses Prädikat dann wahr ist, habe

01:17:27.150 --> 01:17:34.210
ich dann noch wieder Elemente oder Knoten herausgegriffen, die damit

01:17:34.210 --> 01:17:35.910
angesprochen werden sollen.

01:17:39.330 --> 01:17:42.730
Achsen werden also verwendet, um den zu durchsuchenden Bereich zu

01:17:42.730 --> 01:17:43.570
spezifizieren.

01:17:43.570 --> 01:17:46.010
Hier haben wir den zu durchsuchenden Bereich.

01:17:46.870 --> 01:17:57.430
Wir sind, meinetwegen, zunächst einmal an diesem Ort, Self, heißt es.

01:17:57.950 --> 01:18:02.530
Also, wir sind in unserer Bearbeitung des Dokuments an einer

01:18:02.530 --> 01:18:03.790
bestimmten Stelle gelandet.

01:18:04.690 --> 01:18:11.470
Hier beschrieben, da steht Self unter Knoten D.

01:18:13.250 --> 01:18:16.950
Wir haben das Dokument schon einen gewissen Teil bearbeitet.

01:18:17.070 --> 01:18:20.950
Jetzt sind wir also mit Self, das ist jetzt eine Achse, ist nur ein

01:18:20.950 --> 01:18:23.720
einzelner Knoten gemeint, nämlich der Knoten D selbst.

01:18:24.890 --> 01:18:29.890
Dann kann ich von diesem Ort aus, wo ich gerade bin, den Elternknoten

01:18:29.890 --> 01:18:30.350
anschauen.

01:18:30.530 --> 01:18:32.870
Parent wäre B, oben drüber.

01:18:33.070 --> 01:18:34.250
Ich habe ja nur einen Elternknoten.

01:18:36.510 --> 01:18:40.210
Dann kann ich die Kinderknoten anschauen, Child.

01:18:41.550 --> 01:18:49.970
Es gibt zwei, in diesem Fall unter D, gibt es zwei Knoten, die durch

01:18:49.970 --> 01:18:51.850
Child angesprochen werden.

01:18:52.330 --> 01:18:54.770
Nämlich gerade die darunter liegenden beiden E und G.

01:18:55.570 --> 01:19:01.290
Wenn wir bei B gesessen hätten, hätten Child gesagt, wären C, D, H und

01:19:01.290 --> 01:19:02.450
I angesprochen worden.

01:19:04.130 --> 01:19:10.830
Ja, hier ist aber nur, weil wir im Augenblick hier bei D sind, sind

01:19:10.830 --> 01:19:12.090
nur E und G angesprochen.

01:19:12.890 --> 01:19:16.230
Dann kann ich alle Nachfolger ansprechen, Descendant.

01:19:16.870 --> 01:19:21.610
Descendant wäre E, F und G, alle Knoten unterhalb von D.

01:19:24.110 --> 01:19:30.050
Dann kann ich sagen, Descendant of Self, also der Knoten oder seine

01:19:30.050 --> 01:19:31.250
Nachfolger, der ganze Teilbau.

01:19:32.690 --> 01:19:36.970
Dann kann ich Ancestor angeben, also alle Vorfahren.

01:19:38.910 --> 01:19:41.750
Vorfahren sind also alle Knoten auf dem Weg bis zur Wurzel.

01:19:42.510 --> 01:19:44.510
Das wären also B und A in dem Fall.

01:19:45.610 --> 01:19:47.850
Genauso kann man jetzt Ancestor of Self angeben.

01:19:48.070 --> 01:19:50.510
Da haben wir drei Knoten, D also auch noch mit dabei.

01:19:51.730 --> 01:19:58.630
Jetzt ist es natürlich so, dass dieser Knoten D ein Nachfolger oder

01:19:58.630 --> 01:20:00.610
ein Kind von Knoten B ist.

01:20:01.330 --> 01:20:06.790
Und es gibt noch weitere Kinder von B, nämlich C, H und I.

01:20:07.770 --> 01:20:11.830
Und die werden hier in geordneter Form angenommen, stehen ja auch im

01:20:11.830 --> 01:20:13.110
Dokument geordnet drin.

01:20:14.730 --> 01:20:22.770
Und Preceding in dem Fall wären also die vorangehenden Knoten, die den

01:20:22.770 --> 01:20:24.430
gleichen Parent haben.

01:20:25.030 --> 01:20:26.270
Also wäre das nur C.

01:20:29.030 --> 01:20:29.750
Following

01:20:33.810 --> 01:20:38.150
sind also alle, die auf der gleichen Ebene sind.

01:20:39.590 --> 01:20:41.470
Schauen wir uns das mal hier bei Following an.

01:20:42.130 --> 01:20:50.330
Bei Following haben wir alle, die danach kommen.

01:20:53.690 --> 01:20:55.950
Also H, I, J, K, L, M.

01:20:56.510 --> 01:21:04.930
Das heißt, Following, hier haben wir zwei Unterschiede, Following und

01:21:04.930 --> 01:21:05.690
Following Sibling.

01:21:05.870 --> 01:21:07.090
Sibling heißt Geschwister.

01:21:08.250 --> 01:21:13.770
Geschwister sind also nur die, die den gleichen Parent haben.

01:21:14.210 --> 01:21:15.290
Das wären H und I.

01:21:15.450 --> 01:21:17.530
Following Sibling wäre H und I.

01:21:19.530 --> 01:21:29.930
Wenn ich den Baum so durchlaufe und hier auf D Folgenden mir anschaue,

01:21:30.510 --> 01:21:34.090
dann habe ich alle, die auf der gleichen Ebene sind im Baum.

01:21:34.790 --> 01:21:41.070
Das sind H und I und alle folgenden, die unten drunter liegen, also

01:21:41.070 --> 01:21:41.910
auch J und K.

01:21:42.750 --> 01:21:53.090
Also hier liegen alle Knoten, die im Teilbaum liegen mit D als Wurzel.

01:21:53.750 --> 01:21:56.910
Die waren bereits unter Descendant abgehakt.

01:21:58.410 --> 01:22:01.060
Dann kann ich mir alle vorhergehenden anschauen.

01:22:02.130 --> 01:22:07.830
Das sind die, die in diesem Beispiel von C unter drunter liegen

01:22:07.830 --> 01:22:08.210
würden.

01:22:08.630 --> 01:22:10.730
Oder auch noch links davon, da ist aber nichts mehr.

01:22:11.230 --> 01:22:22.610
Und rechts davon stehen H, I und außerdem L und M.

01:22:23.010 --> 01:22:26.510
Um zu D zu kommen, muss ich ja hier über A und B bereits

01:22:26.510 --> 01:22:27.330
runtergelaufen sein.

01:22:27.430 --> 01:22:31.110
Ich habe C abgearbeitet, D abgearbeitet und dann läuft man hier rüber,

01:22:31.370 --> 01:22:33.690
muss die alle noch abarbeiten und kommt zu L und M.

01:22:35.330 --> 01:22:39.870
Die folgenden wären also alle restlichen.

01:22:40.730 --> 01:22:46.330
Das hätte ich einmal durch diese Aufteilung meines Baumes.

01:22:47.370 --> 01:22:50.910
Ich hätte Descendant, also Self ist der Knoten selber.

01:22:51.850 --> 01:22:53.710
Descendant sind alle Knoten unten drunter.

01:22:55.650 --> 01:22:59.350
Ancestor, das sind die, die auf dem Pfad zur Wurzel sind.

01:23:00.850 --> 01:23:06.850
Preceding wären alle, die links davon liegen, also die davor liegen.

01:23:06.850 --> 01:23:10.710
Und Following sind alle, die rechts davon liegen.

01:23:11.110 --> 01:23:15.030
Das ist eine vollständige Aufteilung meiner Knoten im Baum.

01:23:16.850 --> 01:23:21.270
Und wenn ich mich beschränken möchte auf die Geschwister, die also

01:23:21.270 --> 01:23:26.690
alle den gleichen Vaterknoten haben, dann schreibe ich hier ein

01:23:26.690 --> 01:23:28.890
Following Sibling oder Preceding Sibling.

01:23:31.560 --> 01:23:37.140
Jetzt habe ich also über diese Achsendefinitionen solche Mengen von

01:23:37.140 --> 01:23:38.360
Knoten definiert.

01:23:39.620 --> 01:23:45.120
Wie gesagt, ich kann im Prinzip alle Knoten meines Dokumentes auf

01:23:45.120 --> 01:23:50.280
diese Art und Weise ansprechen, ausgehend von einem aktuellen Ort in

01:23:50.280 --> 01:23:50.920
dem Dokument.

01:23:54.920 --> 01:24:02.660
So, hier haben wir jetzt nochmal die Knotentyp mal angegeben.

01:24:02.820 --> 01:24:04.660
Ich schaue auf die Uhr und sehe, es ist 19 Uhr.

01:24:06.580 --> 01:24:09.700
Und damit haben Sie die heutige Vorlesung überstanden.

01:24:09.800 --> 01:24:11.480
Tut mir leid, ich war nicht ganz konzentriert.

01:24:11.940 --> 01:24:18.580
Aber wenn man nach so etwa 18 Stunden unterwegs gewesen ist, dann ist

01:24:18.580 --> 01:24:20.880
man vielleicht manchmal nicht so ganz konzentriert.

01:24:20.880 --> 01:24:22.460
Ich mache es beim nächsten Mal besser.

01:24:23.240 --> 01:24:25.540
Also, vielen Dank für heute, für die Aufmerksamkeit.

01:24:25.880 --> 01:24:27.240
Und wir sehen uns wann wieder?

01:24:27.640 --> 01:24:31.020
In der nächsten Woche am Donnerstag.

01:24:32.280 --> 01:24:34.060
Nächste Woche Donnerstag am 2.

01:24:34.200 --> 01:24:34.560
Juni.

01:24:35.120 --> 01:24:37.940
Jetzt Donnerstag ist Fronleichnam, das fällt wieder aus.

01:24:38.580 --> 01:24:42.160
Dann ist am Donnerstag eine Vorlesung, danach wieder am 9.

01:24:42.280 --> 01:24:42.300
Juni.

01:24:42.340 --> 01:24:46.680
Und hier in diesem Raum das nächste Mal erst wieder am 20.

01:24:47.100 --> 01:24:47.700
Juni.

01:24:48.820 --> 01:24:50.060
Gut, das war es für heute.

01:24:50.240 --> 01:24:50.540
Vielen Dank.

