Okay. Guten Tag. Ich begrüße Sie zur Vorlesung Grundlag-Richtig-Grundlag.
Oh, Quatsch. Angefangen in Informatik 2.
Äh, ich weise nicht aus, dass hier wieder ein Angefangen in Informatik 2 ist und nicht die Grundlage in Informatik 2.
Ich möchte Sie heute zunächst mal hinweisen auf ein für Sie wichtigen, äh, wichtige Angelegenheit.
Sie müssen sich ja irgendwann anmelden für die Prüfungen.
Und, äh, diese Anmeldung, äh, ist jetzt offen.
Sie können sich also anmelden für die Prüfungen zur Vorlesung Angefangen in Informatik 2.
Jetzt werden Sie gleich sehen, dass das ein komplizierter Prozess geworden ist, weil wir das jetzt automatisieren,
beziehungsweise online Anmeldung einführen.
Hier stehen Sie erstmal die Informationen für die allgemeine Anmeldung.
Anmeldezeitraum ist, äh, also der, ähm, 21.05. bis 29.06.
Das heißt, wir haben, äh, seit Montag bereits die Anmeldung, äh, ermöglicht,
beziehungsweise Herr Gießler und der Prüfungsbeauftragte.
Und jetzt gibt es zwei verschiedene Möglichkeiten.
Eine Möglichkeit ist, dass Sie das so machen, wie es hier steht.
Am Institut AEB, hier oben im Gebäude, im Dachgeschoss.
Und, äh, vielleicht kann ich etwas leiser das Mikrofon machen.
Äh, so ist es, glaube ich, etwas besser.
Jetzt, äh, kann man also sich hier oben anmelden, im Dachgeschoss.
Äh, das Terminal kennen Sie wahrscheinlich.
Da müssen Sie sich halt ansetzen und sehen, äh, Sie suchen Ihre Vorlesung aus und melden Sie an.
Wenn Sie das hier oben machen, brauchen Sie auch entsprechend den blauen, rosa oder gelben Schein.
Je nachdem, aus welchem Studiengang Sie kommen.
Blauer Schein für Wirtschaftsingenieure zum Beispiel.
Äh, rosa Schein für jemanden, der, äh, die Prüfung zum zweiten Mal macht.
Und ein gelber Schein, wenn man aus der Mathematik kommt.
Also aus der Wirtschaftsmathematik.
Und dieser Schein muss dann eingeworfen werden im, äh, neben dem Raum, in dem der Prüfungsbeauftragte sitzt.
Äh, hier oben im Raum 228.
Wenn es da Probleme gibt, melden Sie sich bei Herrn Gießler oder Herrn Decker.
Herr Gießler sitzt also da oben im Raum 228.
Die genauen Prüfungstermine allgemein werden am 12.07. bekannt gegeben.
Der Prüfungstermin für diese Vorlesung ist aber der 25.07.
Also das ist unser Prüfungstermin, äh, der A2 hat den 25.07. als Prüfungstermin,
der Mittwoch der ersten vorlesungsfreien Woche nach Ende der Prüfungszeit.
Jetzt gibt es aber, das steht hier unten, äh, ein neues Anmeldeverfahren,
das sukzessive auf immer mehr Vorlesungen, äh, übertragen wird.
Und das ist insbesondere auch für angewandte Informatik 1.2 möglich.
Jetzt schauen wir uns mal an.
Sie können also alles, alle Informationen abrufen, wenn Sie auf diese, äh, üblichen Sachen.
So, wir können weitermachen.
Unser Ton ist wieder da.
Und, äh, wir waren also hier bei den Informationen zur Prüfungsanmeldung, Studium und Prüfung.
Bei uns können Sie auf die Webseite gehen und die Informationen alle bekommen.
Ich habe hier einfach mal ganz kurz den Auszug der Liste aller Lehrveranstaltungen,
für die Sie bei uns am Ende dieses Semesters eine Prüfung machen können, aufgelegt.
Das ist sehr klein.
Jetzt hoffe ich, wir können trotzdem etwas sehen.
Für uns ist wichtig die angewandte Informatik 2.
Und die finden wir hier.
Angewandte Informatik 2.
Und da sehen Sie jetzt eine Einteilung in die verschiedenen Möglichkeiten.
Sie können sich online anmelden, wenn Sie Wirtschaftsingenieur sind, in der Prüfungsordnung,
also in der neueren Prüfungsordnung ab 2004.
Wenn Sie also im Herbst 2004 spätestens angefangen haben, äh, dann, äh, sind Sie,
und wenn Sie seit 2004 angefangen haben, dann können Sie sich online anmelden.
Genauso für TVWL ist das möglich und, äh, für die Informationswörter.
Das sind also die drei Gruppierungen, die sich online anmelden können für diese Vorlesung.
Dann gibt es halt die Wirtschaftsingenieure nach der alten Prüfungsordnung,
die können sich nicht online anmelden, die müssen das nach der neuen machen,
also nach der, Quatsch, die müssen das nach dem, äh, nach dem alten Verfahren im IFB machen,
das gerade drauf war auf der, ähm, die ersten Folie.
Und genauso die Wirtschaftsmathematiker und Technik-, Technomathematiker
sind noch nicht in dem, äh, Online-Prüfungssystem erfasst,
deswegen können Sie sich nicht online anmelden, umsonst hier halt auch.
Ansonsten finden Sie hier noch die ganzen anderen Vorlesungen,
die angeboten werden mit den entsprechenden Möglichkeiten,
also bei vielen immer noch am IFB und bei einigen halt die Anmeldung online,
hier zur Bevollständigung aller anderen,
und jetzt noch kurze Informationen zu der Art der Anmeldung,
können Sie es online machen, also bis zum 29.06.,
gehen Sie einfach in den Selbstbedienungsbereich der Studierenden
und, äh, dort müssen Sie dann auf Prüfungsanmeldung durchklicken
und die entsprechende Veranstaltung auswählen.
Wenn Ihnen irgendetwas fehlt, gehen Sie halt auf diese URL, die hier angegeben ist
und schauen sich an, was für alles für Informationen bereitsteht.
Wenn Sie Probleme haben, dann, wenn Sie sich mit den Problemen mit der Online-Anmeldung,
dann müssen Sie sich an das Studienbüro wenden, nicht an Herrn Wiesner.
In dem Fall sind Sie an das Studienbüro und, äh, dann, äh,
wird Ihnen überhaupt nicht weitergeholfen.
Wenn Ihnen nicht weitergeholfen wird, müssen Sie halt dann doch irgendwann zu Herrn Wiesner,
aber, äh, das sollte eigentlich problemlos funktionieren.
Wir haben es im Wintersemester das erste Mal ausprobiert bei uns bei einigen Veranstaltungen
und das war eigentlich problemlos.
Also, das hier gilt für einige Veranstaltungen, insbesondere für angewandte Formen 2,
bei den neueren Prüfungsorten der Wirtschaftsingenieurung, bei den Technischen Volkswirten
und bei den, äh, Informationswirten.
Okay, ich glaube, das ist dafür genug.
Also, denken Sie dran, melden Sie sich rechtzeitig an.
Aus irgendwelchen Gründen gibt es immer wieder Studierende,
denen am Tag oder zwei Tage oder drei Tage nach Ende der Prüfungsanmeldezeit uns einfällt,
ich wollte mich ja eigentlich anmelden.
Ich habe das gar nicht gesehen, dass man sich anmelden sollte.
Solche Nachzügler sind extrem, äh, unerwünscht
und, äh, diese Fristen, die werden wirklich genau eingehalten.
Äh, es muss ja einiges organisiert werden und, äh, wenn man eine Frist hat,
bei der man sechs Wochen vorher, äh, die Möglichkeit hat, schon mit der Anmeldung zu beginnen,
sollte das eigentlich jeder machen können.
Wenn er es nicht selber machen kann, muss halt jemand beauftragen, das durchzuführen.
Also, ob das sozusagen ein Online-Verfahren ist, kann man das sogar von zu Hause aus machen.
Mehr Service kann man kaum bieten als das.
Okay, das ist also für Anmeldung die Information.
Und, ähm, jetzt gehen wir schnell zur Vorlesung.
Also, Vorlesung, noch nicht diese Folie, die kommt erst irgendwann später.
Hier müssen wir mal ein bisschen zurück, wo wir eigentlich waren.
Wir waren in dem Bereich XML.
Da habe ich Ihnen einiges von erzählt.
Also, ich habe Ihnen erzählt, was XML überhaupt ist.
Ich habe Ihnen dazu eine ganze Reihe Beispiele gegeben.
Äh, habe gezeigt, wie man Elemente deklarieren kann.
Also mit, äh, an der DTD, Document Type Definition, konnte man Elemente deklarieren.
Man konnte Attribute angeben.
Und, ähm, dann entsprechend, haben wir uns hier Beispiele angesehen.
Eine DTD, ein entsprechendes Dokument.
Wie das alles zusammenhängt, will ich nicht nochmal im Einzelnen darauf eingehen.
Wir hatten hier so ein Beispiel gesehen, dass man eine DTD entweder im Dokument drin haben kann,
oder halt extra als getrennte Partei, sodass man diese DTD für verschiedene Dokumente einsetzen kann.
Und ich habe dann, äh, noch kurz, äh, den Unterschied zu HTML nochmal beleuchtet.
Hat, äh, gezeigt, dass es da so eingeblendete Sachen gibt, wie MarkenML.
Wir hatten dann angefangen, uns mit Namensräumen zu beschäftigen.
Wichtiges Thema.
Und festgestellt, dass man Namensräume in DTDs eigentlich gar nicht verwenden kann.
Und deswegen hatte ich letztes Mal begonnen, Ihnen etwas über Schemata zu erzählen.
Die Alternative zu DTDs mit deutlich mehr Möglichkeiten.
Hätte Ihnen hier dieses Beispiel für eine Adressenliste gezeigt.
Und, äh, dann kamen wir, ja, auch, so, auch hier habe ich Ihnen einige Einzelheiten nochmal genauer erläutert.
Äh, Annotationen, kurz gedreht, Elemente, die man definieren kann.
Einfache Typen und komplexe Typen.
Was eine wesentliche Eigenschaft ist, dass man hier bei den, äh, beim Schema komplexe Typen haben kann.
Ähm, die zum Beispiel definiert sind über diese Dinge wie MoveAll, Choice, Sequence.
Ich habe dann hier nochmal ein Beispiel gehabt für eine Kundenliste.
Weiteres Schema.
Und, äh, nochmal ein Beispiel.
Ne, das haben wir noch nicht.
Das war eigentlich, äh, das hier habe ich nicht gezeigt.
Selbstverständlich, das haben wir schon.
Dann ging es los mit den Daten.
Wie ich jetzt bei den Datentypen weitermache, möchte ich ganz kurz auf, nicht auf die Anmeldung gehen,
sondern auf, ähm, ein paar Beispiele.
Ich möchte Ihnen nämlich zeigen, wie wir eigentlich damit jetzt umgehen können.
Also wir haben zum Beispiel hier unser, das ist nicht ein Schema herausgekommen.
Das müsste eigentlich dieses Schema sein.
Wir sehen hier, hier unser XML 2.
Die Möglichkeit ein, genau, ein Schema zu definieren.
Und Sie sehen, weil ich es nicht lesen konnte, wie groß das ist.
Nicht sehr groß, aber vielleicht sehen Sie doch in etwa die Struktur.
Ich kaufe nochmal das auf, was ich auf der Folie drauf hatte.
Und dieses war ja das Schema, bei dem wir im Prinzip hier unten eine Liste definiert haben.
Da unten ist die Liste angegeben.
Ich mache es nochmal etwas größer.
Das waren die verschiedenen Teile, die hier drin.
Also oben stand, äh, dass man hier mal eine Schema-Definition verwendet.
Dann waren eben eine Reihe Elemente angegeben.
Name, Name, E-Mail, Title.
Es steht hier unten geschrieben, was für ein Name.
Ah, das C1 ist ich. Ich bin im falschen Bezeichnis.
Ich ziehe das mal rein.
Und, äh, jetzt sehe ich hier den Schema.
Das ist jetzt das richtige Schema.
Das andere machen wir zu.
Das, was ich Ihnen zeigen wollte, das sind die deutschen Versionen.
Das war eine auf Englisch.
Und, äh, hier machen wir es auch wieder größer.
Jetzt sehen wir also hier den Grundeinkunfts-Nachgang.
Das ist erstaunlich.
Ich kann Ihnen jetzt nur hier zeigen, die verschiedenen Teile.
Wir haben also hier einmal einen Namen, E-Mail, Titel und Grunde.
Einfach nur in einem Adjektiv definiert.
Und verwendet wird es dann bei dem Element mit Namen Kunde.
Da haben wir einen komplexen Typ.
Also Kunde ist ein komplexer Typ.
Sie sehen, da drin kann eine Sequenz auftauchen,
die maximal zweimal auftauchen darf.
Und, äh, man kann hier auch eine gewisse Anzahl einschreiben.
Man könnte auch Anbaunisten schreiben.
Einfach mal hingeschrieben, zwei.
Äh, das war, äh, man kann halt da die Obergrenzen angeben.
Und dann wird, wenn man mehr als zwei Wiederholungen hat,
wird eine entsprechende Fehlermeldung ausgegeben.
Ich habe hier zum Beispiel das Attribut Titel
als ein Attribut zu dem Element Kunde da oben.
Weil das Attribut sich bezieht.
Das steht hier innerhalb des Element Definition Kunde.
Und dann haben wir unten drunter noch einen, äh,
weiteren komplexen Typ, nämlich die Liste.
Und, äh, da kann unterschiedliche Sachen drin vorkommen.
Da können also Texte drin vorkommen als Inhalt.
Oder auch eben hier dann diese halbgelegte eine Folge.
Die besteht aus, die Folge besteht nur aus solchen Punkten,
die beliebig oft dort auftauchen können.
Und, ähm, das heißt, das, was hier oben stand,
mit nur maximal zweimal,
bezog sich darauf, dass wir hier innerhalb dieses Elements Namen Kunde
ein, äh, eine Folge haben, die zweimal auftauchen können.
Man kann maximal eine Folge von Name und E-Mail nutzen.
So, jetzt gucken wir einfach mal auf unser,
wie heißt das richtige Bezeichnis, auf eine Kundenliste,
die genau danach gebaut ist.
Das ist hier unsere Kundenliste.
Und Sie sehen, hier haben wir,
das ist ein bisschen zu größer,
haben wir also jetzt eine, ein XML-File.
Wir können gucken, ist das, äh, richtig, dass es wohl geformt ist,
also in Ordnung.
Wenn ich jetzt auf Relic gehe, dann sagt er natürlich,
er kann das gar nicht überprüfen, weil keine DPD angegeben oder kein,
kein Schema oder DPD angegeben ist.
Ohne irgendwelche Informationen zu einer, zum Dokumententyp,
sind ja alle diese Namen nicht bekannt.
Diese Tag-Namen, da muss man erst mal eine Verbindung herstellen
zu einem Schema oder zu einer DPD.
Das machen wir gerade.
Nur noch mal kurz zu dem, was hier drinsteht.
Sie erinnern sich, wir haben einen Kunden,
bei dem wir einen Attributtitel definieren konnten.
Da habe ich hier einfach hingeschrieben Firma 1.
Und, ähm, dann steht hier also Company XY,
und dann steht hier noch ein, das nennt Name.
Sobald es ein Kunden konnte, eine Folge von Name und E-Mails
aufzutauschen, wobei zu einem Namen beliebig viele E-Mail-Adressen
angegeben werden durften.
Aber es durften maximal zwei solche Folgen vorkommen.
Dann haben wir hier zwei Namen.
Einmal ein Name, das steht Company XY,
dann haben wir das nächste Element, Name, das steht Direktor,
E-Mail, einmal Chef mit Company DE, und dann noch mal
Arbeit mit Company D.
Das ist jetzt ein Kunden-Element.
Jetzt haben wir noch einen weiteren Kunden, das werden wir
Titel verraten, schauen wir ja raus, App-Lieferant.de,
Info-App-Lieferant.de, also so ein Gummi-Beispiel,
dass wir sehen, das ist jetzt irgendein XML-Dokument,
jetzt wollen wir sehen, ist das eigentlich richtig formuliert,
und richtig formuliert kann es ja nun sein, wenn wir uns
beziehen auf ein Schema.
Ich habe auf den Folien nicht explizit drauf gehabt,
wie man eigentlich die Verbindung erstellt zwischen einem
XML-Dokument und einem Schema.
Und wie kann ich das jetzt machen?
Das geht mit so einem XML-Dokument ganz einfach.
Ich gehe hier oben auf DPD-Schema und sage,
hier drin, Design Schema.
Und jetzt beantworte ich,
dass er den Text ein bisschen modifizieren wird,
und jetzt...
Ich schaue es mir an,
was ich hier für Schemata zur Verfügung habe,
und ich gehe auf dieses Schema,
das wähle ich aus,
und sage hier OK.
Jetzt haben wir hier einen veränderten Eintrag.
Bei dem ersten Eintrag, Liste hier oben,
steht jetzt, also Titel, Kundenliste,
das war der Bereich, wo wir auch gestehen hatten.
Jetzt haben wir hier einen XML-Namespace drin.
Der ist also jetzt neu dazugekommen.
Wir haben einen auf den Schema-Bezug genommen.
Und wie viel ist das XSP?
XSP ist ein XML-Schema-Instance.
Also wir können auf eine Instanz
eines Schemas zugreifen.
Nur ist die Frage, wo ist denn diese Instanz?
Für so eine Instanz gibt es unterschiedliche Möglichkeiten.
Ich kann mir dafür einen Namensraum definieren.
Für einen Target-Namespace innerhalb des Schemas.
Das ist die Standardarbeit.
Da war kein Target-Namespace angegeben.
Da stand einfach nur diese Datei.
Jetzt steht also hier als nächstes
ein weiteres Attribut, XSP,
also XML-Schema-Instance.
Und hier steht Schema-Location.
Wieso steht denn das hier?
Da steht es nämlich doch.
Ich wollte doch das Schema nehmen.
Hier haben wir anscheinend ein Schema gefunden,
das ich eben genommen hatte,
bei dem wir eine...
Ich muss das Ganze zurückmachen.
Ich habe hier ein Schema gefunden,
bei dem ein Namespace angegeben war.
Ich möchte das Schema einfach genau das andere zeigen.
Wir machen das Ganze nochmal,
und suchen uns das richtige Schema raus.
Hier, in dem steht...
Ich bitte um den Target-Namespace.
Also, lasst mich nochmal reinschauen
in mein Verzeichnis.
Okay.
Ich lösch das einfach raus,
Hier haben wir keinen Bezug auf ein Schema.
Jetzt suchen wir nochmal unser Schema.
Und wir haben hier das richtige Schema XSD ausgewählt.
Ob es jetzt vernünftig ist.
Und jetzt sehen wir genau, dass wir es hinzeigen können.
Also bei dem Schema stand kein Target Namespace drin.
Jetzt haben wir also hier den Beweis auf ein Schema, das ohne Namespace definiert worden war.
Und die Schema Location, also der Ort dieses Schemas, ist hier genau als dieses Verzeichnis angegeben auf meinen Restlokal.
So kann man also die Verbindung herstellen.
Das können Sie explizit einschreiben.
Können Sie aber auch, wenn Sie Pfeile editieren, ein einstöckiges Schema definieren.
Und wenn Sie dann darauf, also wenn Sie hier optionell Pfeile schreiben, können Sie einfach Bezug darauf nehmen, in dem Sie diese Funktion nutzen.
Die andere haben Sie jetzt, andere Möglichkeiten haben Sie jetzt auch schon gesehen.
Will ich nochmal wiederholen.
Man kann eben auch ein Target Namespace angeben.
Und dann wird der Ort angegeben über diesen Target Namespace.
Und den Ort an diesem Target Namespace ist der Pfeil genau drin sein.
Und jetzt kann ich, sobald ich jetzt den Bezug hergestellt habe, natürlich nach wie vor überprüfen auf Vodafone-Type.
Aber ich kann jetzt auch überprüfen darauf, ob das Ganze gültig ist, ein Bezug auf dieses Schema.
Wir bekommen also hier einen grünen Akel.
Das Ganze ist jetzt ein gültiges XML-Pfeil.
Und wenn ich also jetzt zum Beispiel an dieser Stelle, wenn wir jetzt Folgendes machen, schreibe ich hier einfach das nochmal rein.
Ich gehe hier rein und schreibe noch einen dritten Namen da rein.
Und wir prüfen nochmal.
Auf Vodafone wissen wir, jetzt meckert er.
Weil an dieser Stelle sagt er, Name nicht erlaubt ist.
Er sagt allerdings nicht, warum das der Fall ist.
Weil er natürlich wüsste, von dem Namen, da kann ich nicht reingucken, könnte wir gucken.
Da sehen Sie ihn rum.
Hier ist das definiert.
Und da oben stand eben, dass er maximal zwei Mal wieder oben war.
Das heißt, so sieht man dann eine Fehlermeldung, wenn man es falsch nimmt.
Wenn man enttäuscht gegen die Regeln, die im Schema angekündigt waren, kriegt man halt nicht wirklich einen Fehler.
Wer von Ihnen hat eigentlich schon mal jetzt diese Home Edition des XML-Spy ausprobiert?
Noch niemand.
Ich empfehle Ihnen aber sehr, sich mit XML ein bisschen genauer zu beschäftigen.
XML ist etwas, was Sie garantiert häufig wieder brauchen werden.
Vielleicht bei einer Klausur, aber sicherlich an vielen anderen Stellen in Ihrem weiteren beruflichen Leben.
Weil XML einfach die Dokumentenbeschreibungsstrafe geworden ist inzwischen.
Und man muss es lernen, mit XML umzugehen.
Sie werden das auch im Studio genauer noch kennenlernen.
Und es ist einfach wichtig, dass man es lernt, solche Schemata zu schreiben, entsprechende Dokumente zu schreiben.
Es ist in ganz vielen Fragen ein ganz wesentliches Thema zu beschreiben, Dokumenten.
Deswegen sollte man sich damit auch mal beschäftigen.
Jetzt gehe ich aber zurück zur Vorlesung.
Wir hatten letztes Mal als letztes uns die eingebauten Datentüten angeschaut.
Und ich hatte Ihnen gezeigt, dass es dort einerseits diese einfachen gibt, wie bei den DTDs.
Und dann gibt es eben noch weitere, zum Beispiel numerische Datentüten, wie Integer, Non-Positive Integer usw.
Also Integer als beliebige ganze Zahl.
Positiv, Negativ, ohne irgendwelche Wertgrenzen.
Dann die nicht Positiven, die Negativen.
Und dann eben bezogen auf Datentüten, die wir aus Programmiersprachen kennen.
Die Dinge, die wir aus den Datenschipturen der Programmiersprachen kennen.
Für 64-Bit-Zahlen halten lange Integer dabei.
In diesem Fall Positiv und Negativ.
Deswegen nur von minus 2 auf 64 bis plus 2 auf 64 minus 1.
Also insgesamt 2 auf 64 Werte.
Entsprechend 64-Bit.
Integer entsprechend einfach 32-Bit.
Das ist eben die normale Ein-Wort-Länge.
Long ist halt Doppelwort.
32-Bit-Rechner.
Short 16-Bit zur Verfügung, um Zahlen darzustellen.
Dann können wir das Ganze auch noch mit Positiven Zeichen machen.
Also nicht Negativ, sondern Positiv.
Anzahlend langen wir dann eben ohne Vorzeichen.
Das heißt, dann haben wir den Bereich von 0 bis 2 auf 64.
Anzahlend Int, Anzahlend Short usw.
Und schließlich noch die Angaben für reelle Zahlen.
Warum braucht man das?
Man möchte einfach die Inhalte eines XML-Dokuments auch auf Typ-Übereinstimmung überprüfen können.
Damit man die Inhalte eines XML-Dokuments direkt verwenden kann.
Und daraus dann Gegendaten in ein Programm zu übernehmen.
Und wenn Sie im Programm eine Double-Variable haben,
müssen Sie eben auch entsprechend einen Wert dort einschreiben,
der ein Double-Wert ist.
Und dürfen nichts anderes nehmen.
Genauso bei den Integern usw.
Und dann auch hier diese anderen Möglichkeiten,
dass Sie nun also beliebig, beliebige Dezimalzahlen anzunehmen,
und beliebig vielen Ziffern.
Kann manchmal auch sehr sinnvoll sein.
Müsste aber, wenn Sie das dann halt in ein Programm übernehmen,
müssen Sie dafür entsprechend die lokalen Daten dafür schaffen,
um so eine lange Folge von Ziffern mit einem Punkt in der Mitte,
oder irgendwo mit einem Punkt tatsächlich in eine sinnvolle Struktur zu überführen.
Also da müssten Sie im Programm etwas tun,
wenn Sie da solche Daten im Programm weiter benutzen.
Aber es kann also sehr sinnvoll sein,
solche Werte drin zu haben im Dokument,
und Sie können eben auf diese Art und Weise die Inhalte tatsächlich
auf richtige Werte, also auf Möglichkeiten, überprüfen.
So, dann haben Sie dann hier ein bisschen mehr Demantik in dem,
in so einem Redepunkt.
Dann kommen noch weitere Datentypen dazu.
Das heißt, diese eingebauten Datentypen,
Spring hatten Sie schon gesehen.
Da hatte ich Ihnen gezeigt, dass man Spring einschränken kann.
Wir hatten das eingeschränkt auf Zeichenfolge Linie 30.
Dann gibt es eine ganze Reihe Möglichkeiten,
etwas über Datumsangaben reinzuschreiben,
oder Zeitangaben.
Sie können ein Datum reinschreiben,
Sie können Zeit angeben.
Sie können ein Time Instant angeben,
also, genau, ein Zeitpunkt.
Sie können eine Zeitperiode angeben.
Da sagen Sie, das sind jetzt sieben Monate.
Periode sind sieben Monate.
Oder Sie können direkt ein Monat angeben,
oder Sie können ein Jahr angeben,
oder ein Jahrhundert.
Hier steht es 19, na gut, hier steht es wahrscheinlich 20 reinschreiben.
Sie können sich wiederholende Daten angeben,
Sie können sich wiederholende Tage angeben,
also, wenn Sie irgendeine Serie angeben wollen,
können Sie hier entsprechend die Dinge hinschreiben.
Und hier steht, wie man das dann als Wert dort einschreibt,
in so einem XML-Feld,
zwischen den entsprechenden Tags,
die jetzt diesen Typ, Recurring Day, haben, zum Beispiel.
Oder Sie können Time Duration machen,
da steht jetzt also ein Jahr,
da steht ein Monat, ein Tag,
also ein Tag,
dann steht hier eine Stunde, 30 Minuten,
also da haben Sie nochmal eine Dauer,
eine Zeitdauer,
die hier angesprochen werden soll.
Also alles einfach mitschreiben,
unterschiedliche Dinge zu formulieren.
Dann Recurring Duration können Sie auch angeben,
wiederholende Zeitbäume,
wobei Sie dafür einfach reingucken müssen,
in die genauen Definitionen der Typen,
da habe ich Ihnen jetzt hier kein Beispiel angegeben,
das ist ein bisschen umständlicher,
eine Recurring Duration zu definieren.
Sie können auch eine Uniform Resource Indicator nehmen,
also ein Referenz,
auch ein Dokument in der Internetdomain zum Beispiel,
oder Sie können Sprache angeben,
also die Vielfalt von Datentypen,
und das Wichtige ist,
dass Sie die Inhalte eines Tags
dann auf diesen Typen überprüfen können.
Das ist das Leben.
Unten steht nochmal ein bisschen Erläuterung dazu,
was zum Beispiel dieses Format hier,
das hier oben angegeben war,
wie das genau definiert ist,
dann ist das schon eine ganz einfache Zünderscheinung,
die man hier einmal angucken muss.
Damit haben wir jetzt alles,
was zum Schema gehörte,
was ich in der Zählung wollte, abgehakt,
und wir kommen zum nächsten Team.
Immer noch XML,
aber anderer Bereich von XML.
Wenn wir das vergleichen mit dem,
was wir bei HTML kennengelernt haben,
da steht ja das HT für Hypertext,
und Hypertext steht ja dafür,
dass wir Dokumente verlinken können,
so etwas haben wir bei XML noch gar nicht gesehen,
wie man dort irgendetwas verlinken könnte.
Und das heißt,
wir müssen uns anschauen,
wie wir Links definieren können in XML.
Das wollen wir hier auch machen können.
Das ist eine sehr wichtige Möglichkeit,
Strukturen oder Dokumentzusammlungen zu kultivieren.
Und genau wie wir das von HTML kennen,
müssen wir die Möglichkeiten haben,
Beziehungen zwischen Objekten herzustellen.
Das Ganze wird hier in XML-Syntax aufgeschrieben,
und wir können in diesem Fall
sowohl die einfachen, gerichteten Hyperlinks
von HTML verwenden,
als auch kompliziertere Links
mit mehreren Inputs.
Darauf gehen wir gleich etwas genauer ein.
Die Einfachen sind also die Simple Links.
Bei den Simple Links,
da kennen wir das aus HTML,
das Beispiel, ich hoffe,
Sie können das lesen,
dieser Schrift.
Also, ihr erinnert sich,
da hatten wir einen Tag,
der Name ist A,
dafür, dass wir eine Adresse dort reinschreiben,
eine Link-Adresse.
Es stand dann eine Hyper-Reference,
da war das Beispiel angegeben worden,
diese Reference auf eine URL
bei uns am Institut.
Und hier steht dann
hinter dieser schließenden Klammer
ein Text.
Dort ist publizieren da ein Rhythmen.
Das ist halt der Text,
der dann in HTML
auf der Webseite erscheint
und als Link gekennzeichnet ist.
Und dann wird
dieses Adressfeld beendet.
Das war HTML.
Und Sie wissen, dass man dann
auf so einen Link draufklicken kann
und dann wird das, was dort als Link steht,
wird ersetzt und erscheint irgendwo
in einem neuen Browser-Fenster
oder im gleichen Browser-Fenster.
Und in XML
kann man im Prinzip
das Gleiche machen.
Dazu brauchen wir aber
erstmal den XLink-Namespace.
In diesem Fall
haben wir eine Adresse,
die wir angeben wollen.
Das ist also ein Tag,
das nicht irgendwo in einem Schema
oder DVD definiert worden sei.
Dann brauchen wir eben
ein XLink-Typ
simple.
Also ein simple und
expanded,
nicht ganz
simple Link.
Jetzt wird hier die Hyper-Reference
angegeben.
Das ist also unsere URL, genauso wie oben.
Wir geben einen Titel an
für diesen Link.
Der Titel ist das, was oben
stand, Fortgeschrittene Effiziente Algorithmen,
habe ich abgekürzt, einfach nur
Effiziente Algorithmen.
Und jetzt sehen Sie hier etwas
Show like new.
Und
dann
kann ich
gleich sagen,
da geht es darum, wo wird
das, was hier
anabgerufen wird, gezeigt.
Erscheint das im gleichen Fenster
oder erscheint das in einem
anderen Fenster und hier soll es
in einem neuen Browser-Fenster
erscheinen.
Dann steht hier Actuate,
dann wird
dieser Link tatsächlich
aktiviert.
Und da steht Onload.
Also beim Laden der Seite soll das
schon aktiviert werden.
Das kann man also bei beliebigen
Tags so einbauen,
kann man irgendwelche
beliebigen Tags so als
ein
Link definieren.
Jetzt habe ich hier also verschiedene
Möglichkeiten gehabt, wir hatten den
der Simple gehabt,
das sind halt Simple Links,
dann gibt es hier die Möglichkeiten
New oder Release hinzuschreiben
bei Show.
Das heißt, ich möchte entweder den aktuellen
Seiteninhalt ersetzen
oder auf eine neue Seite gehen.
Dann gibt es
Möglichkeiten festzulegen,
wann ein Link
aktiv werden soll.
Es gibt also die Möglichkeit
On Request
zu sagen, dann muss man den
Link erst anklicken, das ist das,
was wir bei
ATML möglicherweise kennen.
Onload heißt, der Link
wird automatisch geladen.
Er wird also sofort beim Laden der Seite
dieser Link auch aktiviert und entsprechend
in einem anderen Bereich
dargestellt.
Und schließlich haben wir hier eben noch diesen Titel,
der uns eine Beschreibung
des Links angibt.
Wobei,
das, was ich Ihnen hier sage,
repetieren wir immer so,
dass wir irgendein Dokument haben
und dann steht hier vor
sich irgendein Objekt stehen
und dass wir jetzt einen Link darstellen
auf irgendein anderes Objekt.
Wir wissen aber,
wie wir ein HTML-Dokument darstellen,
ist ja was völlig anderes,
darüber haben wir noch gar nicht geredet.
Ich habe Ihnen das erklärt
und da berücksichtigt auch das,
was wir bei HTML kennen.
Das heißt, wir werden in der Lage sein,
genau diesen Mechanismus
aus HTML auch in XML-Dokumenten
zu verwenden
und dann auch daraus entsprechend,
wenn wir so ein XML-Dokument
übersetzen in ein HTML-Dokument,
daraus auch einen einfachen
Link machen können.
Aber,
diese ganzen Sachen wie onRequest
und view oder replace
haben zunächst mal für ein XML-Dokument
gar keine große Bedeutung.
Es hat nur Bedeutung später,
wenn ich das Ganze repräsentiere
und es darstelle
in irgendwelchen Anwendungen.
Also, wie jetzt
das Adjektiv title
oder so etwas in einer linkfähigen Anwendung
benutzt werden muss,
das wird gar nicht genau vorgeschrieben.
Man kann es so verwenden,
dass man den Titel nimmt,
um also
den Link zu kennzeichnen
auf einer Webseite.
Aber das ist nur eine Art,
das einzusetzen, wie viele andere Möglichkeiten
es gibt.
Was man aus einem XML-Dokument macht,
ist ja noch sehr
offen und darauf kommen wir
jetzt bestimmt.
Jetzt nochmal zu dieser
Show-Attribut.
Das Ganze, wie ich schon sagte, bleibt
natürlich der Anwendung überlassen.
Dieses Show-Attribut soll jedoch
das intendierte Verhalten halt angeben.
Wenn ich das stehen habe
Show="new", dann soll die Ziel-Ressource
in einem neuen Bereich dargestellt werden.
Neuem Fenster oder Frame
oder neuem Tab oder was auch immer.
Je nachdem, welche Möglichkeiten
der Browser hat.
Hier habe ich bei
HTML im Prinzip
vergleichbar, dass ich
hinschreibe
eine Referenz,
das ist hier HTTP und
Beispiel und
hier steht target-blank.
Wenn ich hier target-blank hinschreibe,
was ich in HTML gar nicht
aufgewissert habe als Möglichkeit,
explizit, dann können Sie damit ausdrücken,
es soll ein neues Fenster
aufgemacht werden und dort
das Ergebnis
des Zugriffs auf diesem Link
entstehen.
Wenn hier replace steht,
dann entspricht das Thema
target-self
und dann
wird die gleiche Seite
überschrieben
durch diese Sache
oder wird zumindest im gleichen Bereich
dargestellt.
Jetzt
gibt es
weitere Möglichkeiten,
ich muss mal kurz zurückgehen,
ich glaube, ich habe hier alles
erklärt, was da zu erklären war.
Expanded Links gibt es eben auch.
Ich kann
einen Link in einer erweiterten Form
darstellen und
wenn ich einen erweiterten
Link habe, dann habe ich also hier mehrere
Dokumente
oder auch in einem Dokument
mehrere Stellen und ich sage,
ich möchte einen Link beschreiben
und dieser Link,
der hat mein
Gegenüber irgendeinen Ankerpunkt,
vielleicht hat er gar noch einen Ankerpunkt,
vielleicht da und da.
Ich könnte also einen Link definieren,
der im Prinzip
hier solche
Bereiche verknüpft.
Eine Verknüpfung zwischen
verschiedenen Dokumenten,
verschiedenen Objekten innerhalb eines Dokuments.
Das wäre ein
Locator, da kann man die Position
beschreiben, die in einem erweiterten Link
beteiligt ist.
Wie Sie schon sehen, gibt das dazu
um Beziehungen zwischen verschiedenen
XML-Dokumenten oder um Beziehungen
zwischen verschiedenen Elementen in
einem XML-Dokument
herzustellen.
Und dann kann man über einen Arc,
die Bezeichnung Arc
angeben, dass
diese
Orte
verbunden werden sollen über
einen Link.
Jetzt kann ich
dazuschreiben eine
Traversierungsregel,
wie ich über einen solchen
Extended Link von einem Arc
laufe. Ich kann
sagen, ich kann über
From und To angeben,
dass ich von einem Ort,
meinetwegen von hier,
meinetwegen nach da laufe, von da
vielleicht nach da und von dort nach da.
Ich kann also Reihenfolgen
angeben, indem ich
die verschiedenen Positionen,
die verschiedenen Orte, die zu einem
solchen Link gehören, abgearbeitet
lasse.
Und ich kann auch noch eine
Rolle angeben,
eine Funktion des
angesprochenen Inhalts auch noch definieren.
Jetzt gebe ich Ihnen dazu ein Beispiel
für einen Extended Link. Ich werde das nicht
zu weiter vertiefen.
Ich werde Ihnen ein Beispiel angeben.
Hier wird also ein Extended Link
definiert und
die Rolle in diesem
Fall soll sein, eine
Familie zu beschreiben.
Und der Titel des Links wird
eine Familie.
Also,
wir haben also irgendeinen Link,
eine Familie
und
ich trage das einfach mal
abgekürzt hin,
df wäre also jetzt ein solcher Link.
Ich trage jetzt einfach dazu,
um das zu visualisieren,
diesen Link
einfach in so einen Titel eingegraben,
um zu sagen, das ist der Titel für so einen Link.
Jetzt habe ich
einen Ort, Locator,
otto-mustermann.xml
Das heißt, ich habe
hier irgendein Dokument,
das nennt sich, ich schreibe
nochmal om hin, für Otto Mustermann,
das ist ein
Locator,
da haben wir einen Role,
Elternteil,
und also hat dieser
Knoten hier, dieses Element,
bekommt eine Rolle zugewiesen.
Elternteil und
der Titel ist Otto Mustermann.
Dann
haben wir einen Locator
für
Katja Mustermann.
Und
auch hier haben wir einen
Ort, dieses Dokument,
eine Rolle ist in diesem Fall Kind,
und der Titel ist
Katja Mustermann.
Und
dann gibt es hier noch einen weiteren,
der heißt Herbert
Mustermann.
So, dann
haben wir also hier noch ein weiteres Dokument,
auch mit Kind.
Jetzt gibt es einen Link
vom Elternteil,
von dieser Rolle,
von dieser Rolle gehen wir
jetzt auf Kind.
Also gibt es einen Link,
der nach dort
und nach dort kommt.
Das heißt,
jetzt könnten wir
von einem
Elternteil, also von
allen Links, die die Rolle Elternteil
haben, könnten wir
dann durch Anklicken gehen auf
die Orte
Kind,
oder auch die
Orte, die die Rolle Kind haben.
Und wir haben also
hier so einen Link mit
zwei Zielen.
Und hier steht dann auf Show like new
and actuate on request.
Also,
das Ganze hätte einen Titel,
eine Familie.
Die Rolle des Ganzen wäre,
die Rolle dieses Links wäre eine
Familiensache.
So, wozu
brauche ich sowas?
Ich habe häufig
ein großes,
ich habe große Dokumentensachen.
Ich mache eine Dokumentation
eines Fahrzeugs. Ich baue
einen Pkw, und ein Pkw besteht
aus ganz vielen Teilen.
Da hat man irgendwelche Räder zu beschreiben.
Da bleibt hier Räder drin.
Da hat man irgendein Chassis drin.
Darüber ist irgendwie irgendwas anderes
noch.
Irgendetwas, was
ein Fahrzeug aussehen kann.
Das sind alle möglichen Teile, die beschrieben sind
durch Dokumente.
Wenn Sie jetzt eine Dokumentenbeschreibung
machen,
dann müssen Sie natürlich irgendwie
diese Beziehungen zwischen den verschiedenen Dokumenten
sinnvoll aufgeschrieben haben.
Also, was sind die
Beschreibungen
der Achse,
die zu diesem Pkw gehören?
Wie gehören Radbeschreibung
und Achsenbeschreibung zusammen?
Sowas können Sie über Linksstrukturen
machen, und Sie können dann,
wenn wir aus so einer Sammlung von Dokumenten,
das wird also jetzt eine große Dokumentensammlung,
wo alle möglichen
Einzelteile so eines Fahrzeugs
beschrieben sind, müssen Sie daraus
eine tatsächliche Beschreibung
des Fahrzeugs machen, vielleicht eine Online-
Beschreibung, sodass Sie durchklicken können,
oder eine Dokumentation,
die ausgedruckt wird.
Und entsprechend müssen Sie auf
die richtigen Elemente dazugreifen,
und das wird durch eine Linksstruktur gemacht.
Das kann über eine Linksstruktur gemacht werden,
sodass Sie
die richtigen Dokumenten miteinander
verbinden.
Dafür also solche Extended Links.
Sie wollen einfach eine Reihe von
Dokumenten oder Elemente
innerhalb eines Dokuments
miteinander verknüpfen, Beziehungen
explizit machen, um
aus dieser Menge von Dokumenten
oder aus dieser Menge von Informationen
in strukturierter Form
eine Präsentation
des Inhaltes umzunehmen.
Und
dafür diese Extended Links,
wenn Sie die konkret einsetzen,
müssen Sie sich ein Portfolio über XLink
anschauen, und sehen, wie Sie das
ganz konkret für eine
größere, komplexere
Menge von Dokumenten machen.
Das war ja ein ganz einfaches Beispiel.
Jetzt kommen wir zum
nächsten Teil. Also das war jetzt
sehr kurz präsentiert.
Ich empfehle Ihnen, schauen Sie sich das
auf die Portfolio-Seiten an.
Wir werden gleich
in diesem nächsten Teil, in XK,
werden wir uns auch den Portfolio anschauen.
Hier möchte ich also jetzt
einen Teil Ihnen beschreiben,
der folgend ist. Ich sagte, wir
wollen in ein Dokument
auf irgendein...
Ja,
ein Dokument ist ja immer irgendwie
aus vielen verschiedenen
Teilen. Wir möchten jetzt auf
irgendein Element dazu bleiben.
Wie macht man
das eigentlich? So ein Dokument
ist beschrieben,
Sie wissen das, über
eine Baumstruktur.
Ja,
jedes XML-Dokument
hat eine Baumstruktur.
Entsprechend dieser Struktur
der Fäden, die da vorkommen.
Schön geschafft, ganz sauber geschafft
und wohl geformt.
Und das möchte ich also, wenn ich sage,
ich möchte auf Elemente dazu greifen,
dann möchte ich vielleicht sagen, ich möchte auf dieses Element
dazu greifen. Oder ich möchte
auf den Teilbaum zugreifen.
Oder ich möchte auf alle Elemente,
die auf einer Ebene sind, zugreifen.
Die möchte ich jetzt
in einer
HTML-Seite auslagern,
wo ich tatsächlich die Inhalte präsentiere.
Da muss ich dann Möglichkeiten haben,
zu spezifizieren,
was für ein Teilbaum
sind, oder welche Gruppen so ein Teilbaum sind.
Oder welche
auf der gleichen Ebene liegen,
wie hier anwesend.
Und dafür brauche ich
Möglichkeiten, um
einen Zugriffspfad
definieren zu können.
Der Zugriffspfad geht also irgendwie
von hier darunter, wenn ich diesen Teilbaum
definieren will.
Dann muss ich wissen, wie kann ich
durch diesen Baum mich durchhangeln,
um auf diesen einen Punkt zu kommen.
Und dann will ich
da drunter alle nachholen.
Das heißt, ich muss
einen Pfad definieren,
von der Kurze des Dokuments
auf einer steckenden Ort,
an dem die Elemente
stehen, die mich interessieren.
So etwas brauche ich,
um aus einem XML-Dokument
dann in sinnvoller Art und Weise
irgendwann eine Präsentation machen zu können,
also ein HTML-Dokument oder
ähnliche Dinge zu erzeugen.
Und
ähm,
ich gebe nochmal, es ist wichtig für
XSLT,
ich muss also in der Lage sein,
solche Noten auszufilmen,
und dann brauche ich irgendwann auch
die Möglichkeit, darauf zu zeigen.
Und das geschieht dann
über XPointer, das ist noch ein weiterer
viel elektronischer Mill,
auch auf den werde ich ganz kurz
ansprechen, aber
das XPart ist eigentlich etwas, was man
nicht genauer angucken muss,
deswegen gehe ich da
noch ein bisschen genauer da rein.
Wir haben hier ein simples Tutorial
zur Verfügung, gerade diesen
B3C-Schools-Tutorial.
Ich gehe gleich da rein,
um Ihnen zu zeigen, wie man das nutzen kann.
So,
das ist also jetzt unser,
ähm,
der Begleiter des Produktionsparts,
jetzt schaut er an, was da eigentlich passiert.
XMPart
ist also eine Sprache, mit der ich
Farbe beschreiben kann
in einem Baum,
beziehungsweise Orte in einem Baum.
Und das Ganze besteht aus drei
Komponenten, aus einer sogenannten Achse.
Achse,
das ist eine Starkumgebung
für den Knotentest,
zwischen einem Knotentest
und einem Prädikat.
Also ich möchte
in meiner Baumstruktur,
zunächst mal,
wie ich es gerade angegeben hatte,
irgendeinen Bereich spezifizieren,
vielleicht diese Knoten und vielleicht die Knoten
auch noch.
Und in diesem Bereich
meines XML-Dokumentes
möchte ich bestimmte Elemente auswählen.
Vielleicht alle
Knoten, die
äh, eine,
einen Preis haben, können
ein Preisattribut haben,
wenn ich eine Bücherkartenbank habe,
oder ich habe irgendeine Produktkartenbank.
Und ich bin interessiert an allen Knoten,
bei denen ein
äh, Preisattribut
einen bestimmten Wert hat.
Die möchte ich jetzt alle darstellen.
Alle Bücher in meinem
großen XML-Dokument, die jetzt
einen Preis haben zwischen 10 Euro
und 20 Euro.
Die Knoten möchte ich alle auswählen.
Dann definiere ich mir erst mal den Bereich
im Baum, in dem ich suche.
Vielleicht wähle ich alle aus, vielleicht auch
den Detailbereich. Und in dem Bereich
suche ich jetzt alle Elemente,
bei denen das Preisattribut
einen Wert hat zwischen 10 und 20 Euro.
Das wäre
der Knotentest
und ein entsprechendes Prädikat
erlaubt dann noch,
das wäre dieser Vergleich, kleiner 10,
größer
10, kleiner 20
Euro zum Beispiel.
Ich will also genauer spezifizieren
können, auf was
für Informationen ich zukaufen möchte.
Also, wir haben
hier verschiedene Achsen, ich zeichne
die gleich genauer.
Child, Parent,
das kommt dann auf der nächsten Folie.
Für den Knotentest wähle ich also spezielle
Elemente innerhalb einer solchen Achse
aus. Achse ist eine Teilmenge von
Knoten, die ich gewählt habe.
Und ein Prädikat ist dann
ein logischer Ausdruck,
der von jedem Knoten ausgewählt wird.
Und dann kann ich solche
Xpark-Ausdrücke kombinieren.
Ich kann also hier einen
Xpark-Ausdruck haben, dann ist dahinter noch
ein weiterer. Und dann habe ich
also erst mal eine Menge von Knoten ausgewählt
und mache in diesem Bereich weiter.
Mit einem weiteren Ausdruck kann ich
dann noch spezialisieren, wieder Dinge
machen und so weiter. Habe ich also
die Möglichkeit, Klinik zu schreiben und dann bin ich
gleich damit fertig und sage, jetzt
habe ich noch eine andere Auswahl, die ich machen
möchte und kombiniere
die Ergebnisse dieser beiden Auswahlen
aus meinem Wort.
Das ist also die Experiment-Rechenstrich,
eine kombinierte Auswahl
aus zwei verschiedenen solchen
Spezifikationen von
Knoten eines
Funktionell-Dokuments.
Sieht kompliziert aus,
ist auch ein bisschen kompliziert, aber das ist
die Schwächste.
Jetzt schauen wir uns an unsere
Achsendefinition.
Ich habe also hier
ein XML-Dokument
und jetzt sind alle Informationen da.
Ich habe also hier mein XML-Dokument.
Das ist, wie es hier angegeben ist,
ja normalerweise einfach ein Text
und wir wissen, dass
wir den Text übersetzen können in
ein Wort.
Also,
hier ist ein sehr
vereinfachtes
Dokument angegeben, einfach nur irgendwie
geschachtelt mit irgendwelchen Tags
und diese Tag-Struktur
ist ja ganz einfach
in so einen Raum
zu übersetzen und jetzt
gehen wir davon aus, wir sind
an einem bestimmten Knoten gelandet.
Wir haben also aus der Menge
der Knoten
dieses Dokuments uns aus irgendeinem
Grund schon einmal diesen Knoten
hier ausgegeben.
Ja,
das war ein vorhergehender
Auswahlprozess.
Wir sind an diesem Knoten. Jetzt können wir
ausgehen von einem bestimmten
Knoten. Zu Anfang
sind wir immer an der Wurzel.
Das kann sein, dass wir schon aus irgendeinem Grund
weiter unten gelandet sind.
Können wir eine weitere Achse
definieren.
Und diese Achse hat jetzt verschiedene Möglichkeiten.
Ich kann von diesem Knoten aus
im Prinzip
wieder auf den ganzen Raum
zugreifen, aber in sehr
strukturierter Form.
Das Erste wäre zu sagen,
ich möchte genau diesen Knoten jetzt
weiter daran arbeiten. Das wäre Self.
Das wäre die Achse Self.
Ich möchte nur mit dem, auf dem Knoten
jetzt
weiter etwas tun.
Das Nächste wäre, ich möchte auf
mein Parent zugreifen.
Was wäre denn der Parent von B?
Das wäre
der Vorgänger, also wäre das
dieser Knoten B hier.
Eindeutig
festgelegt, also dann ist es nur B.
Dann könnte ich auf
die Nachfolgeknoten
zugreifen. Das wäre Child.
Child
von B, das wären nur
diese beiden Knoten B und B hier.
Weil das sind die beiden Nachfolger.
Die beiden Kinder dieses Knotens.
Jetzt könnte es sogar sein,
ich möchte auf den Heilbaum
zugreifen können.
Das wären die
Nachfolger insgesamt.
Nicht nur die direkten Kinder,
sondern alle weiteren, die aus diesem Knoten
hervorgehoben, unterhalb dieses Knotens sind.
Und dann würde dieser Knoten F
daraus auch noch mit dazugehören. F wäre
ein Child von E,
ist aber auch ein Descendant von
D. Und wenn ich
den Ausgangsknoten mit dabei haben will,
dann schreibe ich hier hin
Descendant of Self.
Das war jetzt nach unten
geguckt in der Hierarchie.
Jetzt schaue ich nach oben
und sage, ich gucke mir auch
an meine Vorgänger.
Nicht nur Parent, sondern die Ancestors.
Dann habe ich also
B und A da drin.
Dann kann ich auch noch Ancestor of Self machen.
Dann ist der D wieder
gemeint.
Jetzt habe ich die ganzen Dinge
aufgeführt, die man durchs Schauen
nach unten, was folgt
aus diesem Knoten, und auch das
nach oben. Wo komme ich in der Hierarchie her?
Das kann ich alles ansprechen.
Wenn ich mir aber jetzt
das hier genauer ansehe,
neben dem D
gibt es auch noch
links und rechts weitere
Knoten. Wobei im Raum ist eigentlich links und rechts
völlig egal, wie ich ihn aufmale.
Ganz egal ist es nicht.
Im Dokument sehe ich,
dass
das C
hier oben auftaucht, vor dem
D, und hinter dem D
kommt ein A und dahinter ein I.
Also die Reihenfolge
des Auftauchens im Dokument
gibt an,
ob ich jetzt, wenn ich also sage,
möchte auf die Vorgängerknoten
zugreifen,
dann wäre das der Vorgängerknoten
auf der gleichen Ebene.
Das ist nur der Knoten C.
Nur dieser hier.
Und die
folgenden,
für welche Sie das denken,
das sind alle
die,
hier sind dann noch Folgen im Text,
also das sind
ähm,
auch noch
A, I,
dann folgen aber auch noch
J, K und L und M. Das heißt hier
gehe ich praktisch im Dokument
ganz nach unten
weiter und schaue mir an, welche Folgen
alle noch auf dieses D.
Dann kann ich hier auch mal
sagen, ich beginne an
Following Sibling.
Also in diesem Fall wäre
Preceding war nur C.
Ähm, davor
ist nichts weiter.
Ich könnte also auch bei Preceding
Sibling sagen, das sind die
Vorgängerbeschwister.
Bei den Folgenden
kann ich eben auch einschränken auf Following
Sibling,
während die folgenden Geschwister,
die folgenden Geschwister sind nur die Knoten A und I,
weil die auf der gleichen Ebene sind,
wie das D.
Aber eben nachfolgend.
Jetzt sehen Sie, es gibt also eine Vielfalt
von Möglichkeiten, wie ich
Teilbereiche meines Dokuments
ansprechen kann, über solche
Achsendefinitionen.
Das ist also solche Achsendefinitionen
und jetzt gibt es eine ganze
Reihe von Möglichkeiten,
Knotentests zu machen.
Damit ich Knotentests machen kann, muss ich
wissen, welche Knotentypen es gibt.
Und die Typen
sind jetzt entweder
Wurzelknoten, Elementknoten,
Algebutknoten, Textknoten,
dann, erinnern Sie sich, es gab sowas
in der Processing Instruction,
spezielle Arten zu
spezifizieren, es gab eine Kommentarmöglichkeit,
oder wir konnten einen Namespace
finden. Das sind die Knotentypen, die
vorkommen, die von den Presses auftreten.
Und hier ist also
ein Beispieldokument.
Da
sehen wir jetzt
hier, meinetwegen, eine Bücherliste.
Da habe ich einfach
ein paar angegeben.
Wenn wir also hier drin suchen wollten,
könnten wir
nach Bookstore suchen,
oder nach Book, oder nach
ein Kreis, oder nach einer Sprache, das wäre
ein Algebut.
Oder nach einem Titel suchen,
und so weiter.
Und
ich werde Ihnen auch noch gleich eine XML
zeigen, wie man das konkret macht.
Also,
wenn wir jetzt einen Knotentest machen,
dann,
ich werde mich einmal kurz umschalten,
ich hoffe, ich habe es jetzt
genau so hin, wie ich mir das überlegt habe.
Ich möchte
jetzt zugreifen auf
SXR.
Und
wir gehen also
einmal hier ins Part Tutorial.
Ich kann natürlich nicht,
das ist nicht ganz klar, dass ich damit was zugreifen kann,
weil ich ja erstmal,
ähm,
muss ja erstmal zugreifen
unterstands im Internet.
Das geht aber ganz schnell, hoffe ich.
Das habe ich gerade vergessen.
Anmeldekanster,
dann dazu
hier.
Und jetzt
sagen wir, ja, und hier.
Hier ist unser XPath Tutorial.
Ich empfehle Ihnen sehr,
sich das anzuschauen. Ich kann hier
in der Vorlesung Sie nicht mit allen Einzelheiten
konfrontieren, die man bei XPath
nicht angucken kann.
Man lernt nur, wie man mit XPath umgeht,
wenn man einfach
sich ein Dokument hernimmt,
und das ausprobiert.
Und hier ist es leider
in einem sehr kleinen Schritt. Die kann ich leider nicht
vergrößern. Die ändern sich.
Barrierefreier Zugang zum Internet.
Die sind alle etwas behindert jetzt,
weil sie so weit weg sitzen von der
Folie. Und ich sollte eigentlich
durch STRG plus zum Beispiel
den Größe verändern können. Ich habe das probiert.
Zu Hause geht es nicht.
Auch hier geht es jetzt nicht.
Ich kann leider
die Größe nicht verändern, aber
Sie sehen vielleicht doch, dass
hier alles drin ist. Sie können also hier
das Tutorial anschauen.
Jetzt sehen Sie hier zum Beispiel
XPath Nodes.
Dann finden Sie hier drin
die Terminologie, wie diese
verschiedenen
Noten definiert sind
und so weiter.
Jetzt würde ich aber gleich zu den
Beispielen gehen. Ich bin leider nicht so gezeitfertig.
bin ich bei den richtigen gelandet.
Nein, ich wollte gleich zu den Beispielen.
Bei den Beispielen
haben wir also jetzt hier ein etwas größeres Beispiel.
Das, was ich Ihnen gerade eben gezeigt hatte.
Das Beispieldokument
ist so ein Bookstore-Dokument
mit verschiedenen Büchern drin.
Da finden Sie also eine ganze Reihe Buchinformationen.
Und jetzt
schaue ich mir das einfach mal an
im Browser.
Dann sehe ich hier also dieses Beispieldokument.
Darin sollen jetzt irgendwelche Elemente gesucht werden.
Gehe ich wieder
zurück.
Zu den
Beispielen.
Und
jetzt habe ich die Möglichkeit
hier drin Dinge
tatsächlich auszuprobieren.
Und
jetzt steht hier folgendes.
If you have
Internet Explorer 5 or higher
you can try it yourself.
Wenn Sie das hier anschauen mit dem Firefox
können Sie leider
diese Sachen nicht anschauen.
Wenn Sie das mit Internet Explorer machen
dann können Sie zugreifen
auf
da ist er, genau.
Ein Beispiel
in so einer kleinen Umgebung
in der man in dem Dokument,
das ich Ihnen gerade eben angegeben habe,
Dinge einfach mit
einem Expat-Ausdruck
auswählen kann.
Und wir sehen also hier links
eine kleine HTML-Seite.
In dieser HTML-Seite
finden Sie einen Script.
Also einen aktiven Bereich.
In diesem aktiven Bereich
kann ich Dinge
jetzt modifizieren.
Und hier steht etwas setNodes
gleich xml.com selectNodes
und da drin
steht jetzt bookstore
schrägstrich book.
Ich bin also in das Dokument, jetzt habe ich also diesen
Expat-Ausdruck
gesagt, ich möchte
im Prinzip habe ich gar keine Achse definiert.
Ich bin also an der Wurzel
meines Dokuments
und
suche
bei bookstore
alle Noten
und
dann da drin alle, die
den Namen book haben. Also alle
book-Elemente, die sind hier angegeben.
Jetzt sage ich, ich möchte
nicht jedes Buch
haben, sondern
ich kann also jetzt einfach reinschreiben
und ich sage zum Beispiel
ich möchte
hier drin nur haben
das Buch an der Position
zwei.
Und
ich habe den Text verändert.
Dann kann ich hier oben draufklicken.
Jetzt sehen Sie, wo das zweite
Buch angeht.
Jetzt könnte ich hier noch weitere Dinge angeben.
Ich könnte also einfach jetzt noch hier
drin weiteres, ich könnte also hier ein Schrägstrich
dahinter schreiben.
Können wir ja mal versuchen.
Einen
Schrägstrich und
jetzt
sage ich da drin, ich möchte
ein
abgeboot
und eben
abgeboot
aber ich sehe da kein
abgeboot hier drin.
Doch, abgeboot.
Nein.
Ja.
Sehen Sie, was er da drauf macht?
Er bringt da gar nichts.
Jetzt mache ich hier
das anders.
Ähm.
Ich schreibe das hier jetzt anders drauf.
Ja.
Ich schreibe hier hinter direkt den abgebooten
Klammern.
Nein.
Ähm.
Jetzt schreibe ich hier hin gleich
ein N.
Dann sagt er auch noch nichts.
Ich möchte jetzt ein
Beobachtungszeichen machen.
Macht er auch nichts.
Jetzt habe ich mich also hier verfahren
zu sehen, man kann hier
einige Dinge schreiben.
Ich habe das hier
jetzt
erkannt, was so online zu machen ist.
Jetzt kann
er was anderes zeigen. Ich schreibe jetzt
hier mal ein
Position.
Das müsste eigentlich funktionieren.
Position.
Kleiner.
Zwei.
Dann
sollte er eigentlich
das richtige
angehen.
Ich kann es nicht
nachvollziehen.
Gestern Abend war das funktioniert.
Der Punkt muss hier vorliegen, warum das jetzt nicht funktioniert.
Ich wollte Ihnen nur dieses Beispiel
zeigen, um Ihnen einfach
zu sagen, versuchen Sie
hiermit umzugehen.
Dann gehen wir
das nochmal raus.
Dann schreiben wir wieder die
drei rein.
Auch da macht er
wieder was.
Offensichtlich
kann man
damit das einiges ausprobieren.
Man kann
übrigens auch
in
dem XML
Spy solche
Dinge machen.
Ich mache es
mal zu.
Eine Änderung.
Speichern.
Jetzt
habe ich hier ein
weiteres Dokument auf.
Ich gehe auf
Bookstore.
Ich habe hier
einfach nur ein Bookstore.
Und jetzt sage ich
nach
hier. Irgendwo konnte ich das hier
auf Xpart
zugreifen.
Hier habe ich jetzt mein Xpart
...
Sie sehen,
manchmal macht man
so was.
Ich habe gestern
noch eine Probe gespielt.
Und hier
ich finde jetzt
nicht den Hinweis
auf Xpart.dm.
Es ist nicht da.
Ich weiß nicht, wo das getrieben ist.
Das werde ich
noch mal schauen,
wo ich das gehabt habe.
Ich habe da alles mögliche ausprobiert.
Das oben
funktioniert jetzt nicht.
Hier ist es
natürlich nirgends.
Gut, also
hier sehe ich mich bei der Zeit
vertun. Eigentlich sollte es möglich sein,
über Xpart.
Ich hatte es mal rumgespielt,
dass da mal was ist.
Ich wollte eigentlich nur zeigen,
dass ich hier direkt in XML-Spy
auch in der Lage bin, über Xpart.dm
zuzugreifen auf einige Teile.
Und sowas brauche ich natürlich, wenn ich ein
XSL-Dokument schreiben will.
Eigentlich muss es irgendwo hierhinter stecken.
Ich finde es auch nicht.
Ich weiß nicht, woran das liegt.
Also,
ich möchte weitermachen und Ihnen einfach
ein Beispiel zeigen in der Präsentation.
Da habe ich einige Dinge vorbereitet.
Ich möchte also, wie ich gerade eben gezeigt habe,
zugreifen zum Beispiel auf
einen Knoten mit dem Namen
Book.
Dann suche ich nach allen Book-Tags in meinem
Bereich, den ich ausgewählt habe, innerhalb
dieser Achse. Das will ich manchmal
Dinge etwas vereinfachen.
Da kann ich also auf einen Stern hinschreiben.
Dann kann ich auf alle Elemente
einer Achse zugreifen.
Dann kann es sein, dass ich nur auf
die Knoten zugreifen möchte, nicht auf
irgendwelche Art und Gute, sondern
nur auf Knoten. Dann wähle ich also alle Knoten
innerhalb der Achse aus und kann
da weitermachen. Dann kann es sein,
dass ich speziell auf Text
Knoten, auf Text-Elemente
zugreifen möchte oder
auf Kommentar-Knoten oder auf alle
Anweisungen, die dort drinstehen.
Sollte möglich sein, das
zu machen. Und
wenn ich also
zum Beispiel suche nach allen
Attributen,
hier spezifiziere ich also
alle Attribut-
Knoten in einem,
und das ist jetzt hier eine weitere Achse,
die ich vorwärts genannt hatte. So kann ich also
auf alle Attribute zugreifen im XML-Dokument.
Und hier werden also alle Knoten
spezifiziert,
in denen Attribute
definiert werden.
Genauso hier habe ich jetzt einen
voraktionellen Punkt
auf alle Kinder zu begriffen, das ist
Child. Und da möchte ich
jetzt alle Text-Knoten
als weiteres
auswählen,
innerhalb dieser Kinder-Knoten.
Oder ich sage alle Kind-Knoten
unabhängig davon.
Das Nächste waren die Prädikate.
Und bei den Prädikaten kann ich so Sachen
machen, wie ich gerade eben versucht hatte,
ihnen darzustellen. Das hätte aber nicht funktionieren müssen.
Wenn ich sage Prädiktion,
weiß ich warum, da hätte ich in Klammer auf,
Klammer zu noch dazuschreiben müssen,
da hätte es funktioniert.
Kleiner 3,
also damit
hätte ich dann alle,
kann ich also Dinge
angeben einfach, ich kann genauere
Filterungen machen,
der Elemente.
Und ich gebe Ihnen dazu gleich noch Beispiele.
Dann kann ich Dinge
abkürzen,
wenn ich auf die Kinder zugreifen will,
brauche ich gar nicht hinzuschreiben,
ich greife immer auch an die Kinder zu,
wenn ich die Achse nicht hingeschrieben habe.
Dann kann es sein, dass ich nur
auf die Attribute
zugreifen möchte,
das kann man abkürzen, indem man
einfach nur diesen Klammeratten hinschreibt,
oder wenn ich sage, ich möchte
nur auf den aktuellen
Knoten zugreifen und dort
irgendwelche Attribute vielleicht auswählen,
oder sonst würden etwas auswählen
in diesem Knoten.
Nur in diesem aktuellen Knoten,
und diese Location kennen Sie,
wenn Sie in Verzeichnissen navigieren,
das ist auch eine hierarchische Struktur,
dann können Sie mit dem Punkt, meinen Sie immer
den aktuellen Ort.
Wenn Sie Punkt, Punkt hinschreiben,
dann meinen Sie, die darüber liegende Ebene.
Das ist also Parent in dem Fall.
Und dann gibt es auch,
so wie Sie es kennen aus Verzeichnungsstrukturen,
wenn Sie so einen
doppelten
Schnittstrich hinschreiben,
dann heißt das, Sie gehen irgendwo
unterhalb der aktuellen Position.
Irgendwo hin,
dann meinen Sie also alles unten drunter.
Das heißt, we send it ourself,
alle Knoten
unterhalb
oder der Knoten selber.
Das ist also dann dieser Bereich mit
zwei Schrittstrichen.
Und schließlich noch,
das hatte ich gerade eben versucht zu schreiben,
da hatte ich genau diese beiden Klammern vergessen,
bei denen ich das hingeschrieben hatte,
Position,
das ist eine Funktion,
die ausgeführt wird auf dem
aktuellen Auswahl,
also auf jedem Knoten ausgeführt,
und ich schaue mir an, was die Position
eines Knoten
in der Menge der Knoten,
die gerade ausgewählt worden waren.
Da kann ich also jetzt hier
eine spezielle Nummer hinschreiben,
das kann man auch abkürzen,
und das habe ich in dem Beispiel auch gemacht,
indem ich nur die Zahl hingeschrieben habe.
Da hatte ich hingeschrieben, einfach nur eckige Klammer auf,
die Zahl 2 oder 3 oder 1,
oder
eine weitere Klammerzahl,
und dann die eckige Klammerzahl.
Und ich kann eben auch hier hinschreiben,
Position, entgegen
nicht gleich, sondern kleiner oder größer,
oder kleiner gleich, oder entgegen nichts.
Hier ist jetzt ein Beispiel dafür,
ich möchte alle
Spektakele abkürzen können,
da kann man verzichten,
bei Child, Doppelpunkt, Doppelpunkt
ist der Standard,
Position,
kleiner gleich 3, würde ich mir also
alle Bücher liefern, unter den Kindern,
die an den ersten 3 Positionen,
an die ersten 3 Kinder,
liegen.
Oder wenn ich sage, ich möchte
Spektakel rufen,
Adress, dann rede ich alle
Elementnoten aus, unter den
Kindern, der aktuellen Position,
mit dem Tagname
Adress.
Wenn ich Adress, und darunter Schritt-Strich-Name
hinschreibe,
dann werden alle Elementnoten
Name,
direkt unterhalb von
Adress ausgewählt, also eine Ebene
drunter.
Weil ich dann ja,
wenn ich hier Adress ausgewählt habe,
bin ich bei Noten,
Adress-Noten,
die Kinder sind von der aktuellen Position,
das war diese abkürzende Schreibweise,
ich brauche Kinder, Child, Doppelpunkt,
hinzuschreiben.
Und dann kommt der nächste Ausdruck,
Name, wählt dann
von der aktuellen Position aus,
wieder ohne Achsenangabe, also bei den
Kindern, alle Noten aus,
die Bezeichnung Name haben.
Deswegen Name-Elementnoten
direkt unterhalb von
Adress-Elementnoten.
Dann kann ich das noch genauer spezifizieren.
Es kann sein,
dass so ein Noten, also ein Noten
erst ja immer im Prinzip
ist ja dann hier
so ein Noten-Name,
und hier steht ja dann
irgendwo Endname,
und da drin steht
irgendein Text.
Und dieser Text in dem Fall,
wird hier geguckt,
alle Noten, die den Namen John Doe haben.
Nur die
Element-Noten werden ausgewählt.
Und dann
könnte man auch Sachen machen, wie
ich schaue mir
die Kind-Noten
der aktuellen Position an.
Daraus suche ich alle Bücher.
Und irgendwo
unterhalb solcher Bücher-Knoten
suche ich
einen Namens-Knoten.
Die können also irgendwo da unten drunter
auftauchen. Oder
ich suche also
die Namens-Knoten,
oder solche
Language-Attribute.
Dann habe ich also
diese Bereiche ausgewählt.
Das hier, das Ruderzeichen.
Und schließlich, wenn ich
speziell
das hier hinschreibe, da habe ich also jetzt unterhalb
von Book irgendwo Namens-Knoten
ausgewählt, und darunter
jetzt ein Title-Attribut.
Direkt unterhalb
eines Namens-Knoten
ein Title-Attribut.
Also,
Vielfalt von Möglichkeiten,
und ich empfehle Ihnen
natürlich wirklich sehr,
entweder an dem Tutorial rumzuspielen,
oder schauen Sie sich
XML 2 an.
Die Möglichkeiten dort, ein paar Ausdrücke
aufzuschreiben, und zu sehen,
was dabei jeweils ausgewählt wird.
Die Möglichkeit existiert bei XML 2.
Die Sehenswert ist gerade eben
von mir versteckt,
aber ich werde es schon wiederfinden.
Und dann haben wir
hier noch ein paar
Beispiele. Also ich kann,
wenn ich nur einfach das hier hinschreibe,
über den Schrägstrich,
dann meine ich genau
diesen Knoten.
Das wäre also
Blockchain und Boot.
Und, äh,
also hier wird,
ja,
wenn ich hier nichts weiter spezifiziere,
es gemeint alle Knoten unterhalb
dieses, äh,
unterhalb dieses
äh, aktuellen Knotens.
Wenn ich alle Adresses,
AdressName, das würde eben bedeuten,
dass ich ein, suche
einen Namensknoten,
direkt unterhalb einem Adressknoten,
direkt unterhalb eines
Adressesknoten.
Und das ist dann auch noch der
Vorzugsknoten meines.
Und wenn ich hier
Doppel-Schrägstrich-Name habe,
dann ist mein Knoten-Namen
irgendwo.
Schließlich mit Attributen noch mal.
Ich kann also einen Attributknoten auswählen,
ähm, mit Namen
Type,
das steht hier, Attribut Type,
unterhalb eines Adressknoten,
oder ich kann auch bei dem Type dann
speziell den Wert auswählen
und hab dann
nur die Attributknoten
mit dem Wert,
mit dem Typ E-Mail und so weiter.
Also,
das
zu den verschiedenen
Möglichkeiten war jetzt klar.
Noch mehr andere Beispiele.
Hier suche ich also
äh, einen
Adressknoten
und
das ist also mein Adressknoten und direkt
darunter soll
ein Namensknoten sein.
Das ist noch eine andere Art und Weise,
diese Spezifikation auszudrücken.
Ich möchte gern, dass ich etwas,
also die Spezifikation ist jetzt so,
ich bin gelandet
bei einem Knoten,
ich schalte aber jetzt A rein,
für Adressknoten
und darunter sind irgendwelche anderen Knoten
und wenn da ein
Main-Knoten dabei ist,
dann möchte ich diesen Knoten auswählen.
Also ein Knoten
mit Namen, oder ein
Adress-Element-Knoten,
eine bestimmte Eigenschaft hat,
diese Eigenschaft wird in diesem
Prädikat dargestellt, nämlich
unten drunter soll ein
Name-Knoten sein.
Und hier haben wir
also noch wieder eine Spezifikation,
nur solche, bei denen John Doe
jeweils darunter steht,
oder hier haben wir dann
ein Attribut, dabei dann
Typ E-Mail.
Also da möchten wir den Adress-Element-Knoten
haben, das heißt wir möchten
ja nicht das Attribut
E-Mail haben,
den Attribut-Knoten, sondern den Element-Knoten,
bei dem ein
Attribut-Knoten
von Typ E-Mail unten drunter ist.
Das sind also die
Unterschiede, die man hier sieht.
Eine sehr
mächtige Sprache,
und so etwas braucht man,
um dann aus einem
E-Mail-Dokument tatsächlich
eine Präsentation machen zu können,
die Inhalte in einer
strukturierten Form irgendwo
angeht.
Gut,
das war
XPAR.
Ich empfehle Ihnen sehr, schauen Sie sich
die Tutorials an, damit können Sie
rumspielen und haben dann die Möglichkeit,
damit Erfahrung zu sammeln.
Hier in der Vorlesung kann ich Ihnen ein paar Beispiele zeigen,
das was erklären, aber Sie lernen
primär, wenn Sie das selbst machen, anhand dieser
Tutorials.
Jetzt braucht man
auch noch XPointer.
Ich möchte nicht nur einen Bereich adressieren können,
ich möchte auch darauf zeigen können,
etwas anderes als
XLink,
und möchte also jetzt
eine
interne Struktur von XML-Dokumenten
adressieren können.
Und dazu brauche ich XPAR,
aber
ich brauche
zuerst noch XPAR, das steht hier,
basiert auf XPAR,
und ergänzt es im Prinzip,
um solche
Uniform Resource
Indicators.
Also ich habe
Angaben,
wo etwas zu finden ist,
ich kann ein Dokument angeben, kann auf einer Brücke
genau schreiben, und dann kommt das
Dokument mit geschrieben,
und dann in dem Dokument kann ich mit
XPAR die genaue Position, das genaue
Objekt.
Und dann kann man
hierbei Dinge angeben, wie
eine beliebige Position, oder eine
Range, oder
kann also Startpunkt und Endpunkt
angeben, es gibt also verschiedene Möglichkeiten
hier Bereiche
zu definieren in einem
XML-Dokument.
Das geschieht halt
über XPAR.
Wir können auch
Mustererkennung machen damit, also
verschiedenste Sachen sind hier
möglich. Und hier ist ein
kleines Beispiel,
ein XML-Dokument
und ein anderes, zwei
XML-Dokumente.
Und hier definiere ich jetzt
einen
Link.
In diesem Dokument hier
will ich einen Link definieren, eine Adresse.
Um diese Adresse
definieren zu können, sie erinnert sich an
unser Mustermann-Beispiel,
und da brauche ich
jetzt eine Referenz,
und
diese Referenz,
also hier eine Simplify,
href
bis Adresse.xml,
das ist innerhalb dieses Dokuments,
dieses
Dokument wird dadurch angesprochen,
das möchte ich
innerhalb dieses Dokuments
auf eine
ID zugreifen,
Mustermann.
Das ist genau das, was
hier steht.
Und
das ist die
ID
Mustermann.
da sind also dann dieses
Element ausgewählt.
Und jetzt schreibe ich einfach
als Name für diesen,
oder als Text, gibt bei diesem Link
ein Beta-Muster. Das ist also
ein Objekt hier drin, und da habe ich
einen Link auf
dieses Dokument hier drin
im Prinzip definiert, auf dieses Objekt definiert.
Genauso kann ich auf eine ID
Meier zugreifen, dann kommt
von hier im Prinzip ein Link
auf genau den Beta-Muster.
So kann ich also
explizit Orte innerhalb
eines Dokuments als
Punkte angeben,
auf die ein Link verlassen wird.
Hier muss ich meine Locators angeben,
für Links, und bei den
Extended Links kann das
etwas praktizierter sein, da kann ich mehrere solche Locators
angeben, und die genauen Orte
kann man über Orte definieren,
die einem genau diese
Bereiche halt
anzeigen.
Das war
auch nur ein Hinweis, dass es solche
Strukturen gibt, und
dieses wird noch kürzer. Ich sage Ihnen, dass
es eine XML-Query-Language gibt.
Diese XML-Query-Language,
die Query-Sprache
für XML, erlaubt
einen Zugriff auf
im Prinzip zur delikaten Datenbank-
Abfragesprache.
Ich kann also etwas
ausführlicher, wie man das
von Datenbanken kennt,
formulieren, dass ich
auf eine Konkretion zugreifen möchte.
Jetzt habe ich hier nicht nur Daten, ich habe hier in diesem Fall
keine Query-Language für eine Datenbank,
sondern hier eine Query-Language für
XML-Dokumente. Das Beispiel
sagt Ihnen hier,
ich möchte
zugreifen auf Informationen,
bei denen
innerhalb einer Anschrift,
also
ich möchte
zugreifen auf Anschrift-Elemente,
Name
Dollar-N,
Ortsname
Berlin, also ich habe hier
eine Variante,
ich möchte zugreifen auf dieses Dollar-N,
ich möchte also den
Inhalt zugreifen in dem Name-Tag
bei einer Anschrift,
Und bei der Ortsname Berlin sein.
Was ist die Versteckerin? Ich möchte auch alle Namen zugreifen von Personen,
die in irgendeinem Dokument, und das Dokument ist ja angegeben,
ein Dokument, Liste.xml, an einer bestimmten, an einem bestimmten Ort,
also die Bewegung oder Formliste.xml, in diesem Dokument suche ich alle Anschrift-Tags durch,
bei denen der Ortsname Berlin ist, und aus dem Namens-Tag in diesen Anschriften
hole ich mir den Inhalt raus und konstruiere jetzt ein neues Dokument,
oder einen neuen Tag, da steht jetzt einfach ein Tag mit Namen Berliner,
und da wird genau der Wert, den ich dort rausgeholt habe, reingeschrieben.
Auf die Art und Weise schreibe ich also eine, oder hole ich mir aus einem Dokument Informationen raus,
aus einer bestimmten Umgebung, in diesem Fall aus der Ortsname Berlin,
bezeuge jetzt ein anderes Dokument.
Sie sehen, so kann man also Informationen aus irgendwelchen Dokumenten sich zusammensuchen,
und dann wieder neue, oder das Dokument wieder weiterverwenden.
Das ist also die xml-Current-Language, auf die ich nicht weiter eingehen möchte,
ich wollte nur sagen, dass sie die gibt, die kann hilfreich sein, um halt Informationssuche zu machen.
Und die Zeit für heute ist fast um, das war nicht ganz krass,
nächstes Mal werde ich Ihnen dann das nächste Kapitel,
vielleicht nicht das nächste Kapitel, sondern den nächsten Teil aus diesem Kapitel vorstellen,
und das ist, wie kann ich aus einem xml-Dokument tatsächlich etwas machen,
was aussieht wie Inhalt einer Webseite, oder vielleicht auch PDF-Dokument,
oder Inhalt für so ein Handy.
Sie erinnern sich an diese Folie, wir wollen,
ups, da stehen noch ein paar Pfeile hier drin, ich weiß nicht, warum die nicht da drauf waren,
ich möchte aus einem Dokument, xml-Dokument,
einen Inhalt oder einen Code etwas präsentieren,
und dann muss ich erstmal sehen, was ist das für ein Dokument,
dazu trage ich entweder auf ein Schema zu, oder auf eine DDB,
wie man das macht, hatte ich Ihnen gezeigt,
DDB-Definition war ja auch, man konnte einbetten in ein Dokument,
oder auch extra schon schreiben, und das Schema konnte man genauso extern,
was wir hinschreiben, einbetten über die Namensraums-Definition in ein xml-Dokument,
Und dann können wir halt mit einem Parser die Wirklichkeit des Dokuments überprüfen und können über ein XSL-Dokument und Style von XSL daraus entsprechend verschiedene Teile erzeugen.
Also wir wollen diese verschiedenen Dinge jetzt anschauen, wie wir daraus Dokumente erzeugen können. Für heute ist das zu spät.
Das machen wir nächstes Mal. Da ziehe ich etwas über XSL und XSLT, den Transformator, mit dem man tatsächlich X- und Y-Dokumente in etwas anderes verführen kann.
Ähm, ich freue mich weiterzumachen. Das war's. Vielen Dank. Wir sehen uns nicht. Wo sehen wir uns eigentlich hin?
Also ganz kurz mal schauen. Ich habe die Zeiten so ein bisschen verändert.
Ähm, wir sehen uns wieder.
Ups, sehr weit. Hoffentlich nicht ganz so weit.
Nächste Woche bin ich leider nicht in der Lage, die Vorlesung zu halten, weil ich da nicht in der Ausführung bin.
Aber wir sehen uns wieder. Hier ist heute der 24. Juni am 4. Juni.
Also 4. Juni am Montag nach Pfingsten sehen wir uns wieder in dieser Vorlesung.
Und danach dann wieder am 14. Juni, 21. Juni usw., wie das hier auf dieser Termin-Tabelle angegeben ist.
Hier haben wir leider jetzt zwei Lücken. Einmal bin ich halt nicht da am Donnerstag nächste Woche.
Woche drauf ist dann gerade vom Leichnam. Deswegen fällt der Donnerstag aus.
Und da habe ich dann halt hier den 4. Juni ausgewählt.
Das war's für heute. Vielen Dank.