143
Informationsdarstellung mit XML Klaus Becker 2008

Informationsdarstellung mit XML Klaus Becker 2008

Embed Size (px)

Citation preview

Page 1: Informationsdarstellung mit XML Klaus Becker 2008

Informationsdarstellung mit XML

Klaus Becker

2008

Page 2: Informationsdarstellung mit XML Klaus Becker 2008

2 Ziele und Inhalte

<?xml version="1.0" encoding="ISO-8859-1"?><Fortbildung> <Titel>Informationsdarstellung mit XML</Titel> <Ziele> <Ziel>XML - ein Thema für den Informatikunterricht</Ziel> <Ziel>Einblick in XML</Ziel> </Ziele> <Inhalte> <Inhalt>Schach dem König</Inhalt> <Inhalt>Datenformate - Ein Blick hinter die Kulissen</Inhalt> <Inhalt>Grundlagen von XML</Inhalt> <Inhalt>Dokumenttypen und ihre Validierung</Inhalt> <Inhalt>XML-Vokabulare</Inhalt> <Inhalt>Exkurs: Namensräume, Formatierung, ...</Inhalt> <Inhalt>Verarbeitung von XML-Dokumenten</Inhalt> <Inhalt>XML im Informatikunterricht</Inhalt> </Inhalte></Fortbildung>

Page 3: Informationsdarstellung mit XML Klaus Becker 2008

3 Teil 1

Schach dem König

Page 4: Informationsdarstellung mit XML Klaus Becker 2008

4 Schach-Spielzustände

Oktober 1999: "Garri Kasparow setzt die Welt matt."

"Die Welt ist doch noch matt gegangen. Nach 62 Zügen hat sich der beste Schachspieler des Planeten, Garri Kasparow, im Internet gegen mehr als 3,5 Millionen Gegner durchgesetzt. ... "siehe: http://www.rochadekuppenheim.de/meko/diewelt.html

Nach 29 Zügen ist auf dem Schachbrett folgender Spielzustand entstanden.

Kasparow (weiß) ist jetzt am Zug.

Page 5: Informationsdarstellung mit XML Klaus Becker 2008

5 Schach-Spielzustände

Möglichkeiten zur Fortsetzung der Partie sollen mit verschiedenen Schachprogrammen durchgespielt werden. Der gewünschte Spielzustand wird hierzu rekonstruiert und abgespeichert.

Page 6: Informationsdarstellung mit XML Klaus Becker 2008

6 Schach-Spielzustände

Will man den gespeicherten Spielzustand mit anderen Schachprogrammen verwenden, so ergeben sich Schwierigkeiten.

Page 7: Informationsdarstellung mit XML Klaus Becker 2008

7 Schach-Spielzustände

Ein Blick hinter die Kulissen soll klären, wodurch die Schwierigkeiten zustande kommen.

Page 8: Informationsdarstellung mit XML Klaus Becker 2008

8 Schach-Spielzustände

Die Programme benutzen unterschiedliche Speicherformate.

........

.p.kpQ..

..np....

.p..b.BP

..q..p..

........

.....PP.

.....RK.W0000

8/1p1kpQ2/2np4/1p2b1BP/2q2p2/8/5PP1/5RK1 w -- - 1 30

Page 9: Informationsdarstellung mit XML Klaus Becker 2008

9 Schach-Spielzustände

........

.p.kpQ..

..np....

.p..b.BP

..q..p..

........

.....PP.

.....RK.W0000

schwarze Figuren:Bauer: (p)awnTurm: (r)ookSpringer: k(n)ightLäufer: (b)ishopDame: (q)ueenKönig: (k)ing

weiße Figuren:Bauer: (P)awnTurm: (R)ookSpringer: k(N)ightLäufer: (B)ishopDame: (Q)ueenKönig: (K)ing

Page 10: Informationsdarstellung mit XML Klaus Becker 2008

10 Schach-Spielzustände

schwarze Figuren:Bauer: (p)awnTurm: (r)ookSpringer: k(n)ightLäufer: (b)ishopDame: (q)ueenKönig: (k)ing

weiße Figuren:Bauer: (P)awnTurm: (R)ookSpringer: k(N)ightLäufer: (B)ishopDame: (Q)ueenKönig: (K)ing 8/1p1kpQ2/2np4/1p2b1BP/2q2p2/8/5PP1/5RK1 w -- - 1 30

Page 11: Informationsdarstellung mit XML Klaus Becker 2008

11 Schach-Spielzustände

Die Forsyth-Edwards-Notation (FEN) oder in der erweiterten Form (X-FEN) ist eine Kurznotation, mit der jede beliebige Brettstellung im Schach niedergeschrieben werden kann.siehe: http://de.wikipedia.org/wiki/Forsyth-Edwards-Notation

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

Die FEN ist in 6 Gruppen aufgeteilt, die durch Leerzeichen getrennt sind (in EBNF):

FEN := Position " " Spieler " " Rochade " " en-passant " " Halbzüge " " Zugnummer

Beispiel: Die Grundstellung des Schachbrettes in FEN:

Page 12: Informationsdarstellung mit XML Klaus Becker 2008

12 Schach-Spielzustände

"Weiß ist am Zug. ..."

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

Information

Daten

Repräsentieren Darstellen

Zur Darstellung der Information (Brettstellungen im Schach) wird eine formale Sprache (FEN) benutzt.

Die Wörter dieser Sprache müssen nach bestimmten Regeln gebildet werden. Diese Regeln legen die Syntax der Sprache fest.

Page 13: Informationsdarstellung mit XML Klaus Becker 2008

13 Schach-Spielzustände

"Weiß ist am Zug. ..."

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

Information

Daten

Interpretieren Deuten

Zur Darstellung der Information (Brettstellungen im Schach) wird eine formale Sprache (FEN) benutzt.

Schachexperten (und manche Schachprogramme) verstehen diese Sprache. Sie können zu den Wörtern der Sprache die entsprechenden Brettstellungen erzeugen und somit die Bedeutung / Semantik der Wörter erschließen.

Page 14: Informationsdarstellung mit XML Klaus Becker 2008

14 Schach-Spielzustände

Neben der FEN gibt es andere Sprachen zur Beschreibung von Brettstellungen im Schach.

Wünschenswert ist eine Standardisierung der Sprachen, um eine babylonische Sprachverwirrung zu vermeiden..........p.kpQ....np.....p..b.BP..q..p...............PP......RK.W0000

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

http://de.wikipedia.org/wiki/Bild:Meister_der_Weltenchronik_001.jpg

http://de.wikipedia.org/wiki/Bild:Brueghel-tower-of-babel.jpg

Page 15: Informationsdarstellung mit XML Klaus Becker 2008

15 Aufgabe

Neben speziellen Spielzuständen ermöglichen Schachprogramme es auch, den Spielverlauf zu speichern. Schauen Sie auch hier hinter die Kulissen und erkunden Sie die Sprache PGN (Portable Game Notation).

Page 16: Informationsdarstellung mit XML Klaus Becker 2008

16

Page 17: Informationsdarstellung mit XML Klaus Becker 2008

17 Teil 2

Datenformate - Ein Blick hinter die Kulissen

Page 18: Informationsdarstellung mit XML Klaus Becker 2008

18 Darstellung von Schachspielen

[Event "F/S Return Match"] [Site "Belgrade, Serbia JUG"] [Date "1992.11.04"] [Round "29"] [White "Fischer, Robert J."][Black "Spassky, Boris V."] [Result "1/2-1/2"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15.Nb1 h6 16. Bh4 c5 17. dxe5 Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21.Nc4 Nxc4 22. Bxc4 Nb6 23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf727. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33.f3 Bc8 34. Kf2 Bf5 35. Ra7 g6 36. Ra6+ Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb540. Rd6 Kc5 41. Ra6 Nf2 42. g4 Bd3 43. Re6 1/2-1/2Quelle: Wikipedia

Unten finden Sie verschiedene Formate zur Darstellung von Schachspielen. Welche Vor- und Nachteile haben diese Darstellungen?

PGN

ChessGML

Page 19: Informationsdarstellung mit XML Klaus Becker 2008

19 Datenformate für SchachspieleChessGML: The Why and Wherefore

Andreas Saremba

Chapter 1. Brave new chess worldComputers and the Internet have revolutionized the way how chess games are communicated to the public. ...Besides the two reasons everyone knows and acknowledges, the triumph of the Internet and the enormous development of chess database programs, there was one factor that was equally important for this development: A common language for the encoding of chess games. It is Stephen J. Edward's merit that such a language exists; he not only perceived the need for a lingua franca of the chess world but defined and implemented it in a strict and concise way. In short time PGN (Portable Game Notation) has become indispensable, and no chess software can afford not to be able to read and write this format.So why would anybody be foolish enough to propose something different?

Chapter 2. On closer inspection, however ...The joy about the undeniable progress the chess world has made has blurred the view for some aspects of the situation that are a bit less obvious. Let us look at a few examples:- While you can get an ocean of uncommented games on the Internet, there is a remarkable lack of commented ones. I this due to mystery mongery, is it indolence or are there other reasons?- ...- There is a remarkable lack of quality and consistency in the published PGN files. For example, more often than not you will find several spellings of a player's name in one file, making it impossible to perform simple automatic processing like building a tournament table or gathering of statistical data.It is my conviction that the primary reason for these and other insufficiencies is the lack of an interchange format for chess that is not only open but also powerful. ...

(Quelle: http://www.saremba.de/chessgml/why.htm)

Page 20: Informationsdarstellung mit XML Klaus Becker 2008

20 Datenformate für Schachspiele

Subject: XMl for chessDate: 2004-08-29 16:09:25From: KymFarnikAs a Chess player of many years and an IT Professional the idea of a new (XML) text game format is not a good idea.Why you ask?PGN is both human and machine readable. It is *very* easy for a human to read and that is the reason it is so successful and no one has 'updated' the spec since '96.PGN uses SAN. SAN is the official way players record their moves in a tourney. PGN adds some headers and a terminator (*, 1-0, 0-1 1/2-1/2). PGN allows the insertion of comments {} and nested variations ().As a Chess player what more do you need?The problem with any XML format is the tagging and the fact that Chess players need a readable text format.The fact that the de-facto PGN standards has lived without change for so long is a huge indication of stability and usefulness.I have a database of 3.4million games (using the Scid product) and have loaded all collected games from PGN!PGN is good for Email Chess as it is easily paresed by tools and readable by the players at the same time.*If aint broken - dont 'fix' it*Regards, kymQuelle: http://www.xml.com/cs/user/view/cs_msg/2194

Page 21: Informationsdarstellung mit XML Klaus Becker 2008

21 Textverarbeitung

Mit OpenOffice wurde ein Text über den Kölner Dom erstellt und anschließend in verschiedenen Ausgabeformaten abgespeichert ...

Der digitale Dom

Der Kölner Dom ist so etwas wie ein Star. Ein Meisterwerk, sagen Architekten. Eine Perle, sagen Historiker. Ein Glücksfall, sagen Archäologen. Das berühmteste Bauwerk seiner Epoche, der Gotik, und das Markenzeichen seiner Stadt. Kaum eine andere Kirche ist im Lauf der Zeit fotografisch so ausführlich dokumentiert worden wie der Kölner Dom. All diese Bilddokumente sollen demnächst per Mausklick abrufbar sein für eine virtuelle Entdeckungsreise. Mehrere tausend Fotos lagern dann in der eigens eingerichteten Bilddatenbank. Gescannt, im Computer digitalisiert- also in Nullen und Einsen verwandelt und als größere oder kleinere Datenpakete abgelegt. Auch der berühmte mittelalterliche Bauplan kommt dann per Klick auf den Bildschirm: Die Ansicht der Westfassade, der so genannte "Riss F".

Der Originalbauplan ist eine Kostbarkeit und lagert lichtgeschützt im Inneren des Doms. 750 Jahre hat es überdauert: Tinte auf Pergament, die Vision des Baumeister im 13. Jahrhundert. Lesbar ist es auch heute noch. Denn der originale Bauplan wurde nicht codiert oder in Nullen und Einsen zerlegt. Nur deshalb konnte der Kölner Dom so erbaut werden, wie wir ihn heute kennen.

Page 22: Informationsdarstellung mit XML Klaus Becker 2008

22 Darstellung des Textes

... als MS-Word-Datei im doc-Format (siehe "dom_koeln.doc"). Mit einem Text-Editor geöffnet sieht diese Datei so aus:

Page 23: Informationsdarstellung mit XML Klaus Becker 2008

23 Darstellung des Textes

... als OpenOffice-Datei (siehe "dom_koeln.odt"). Mit einem Text-Editor geöffnet sieht diese Datei noch unverständlicher aus.

Page 24: Informationsdarstellung mit XML Klaus Becker 2008

24 Darstellung des Textes

Wenn man die von OpenOffice erzeugte Datei "dom_koeln.odt" entpackt, klärt sich einiges (siehe "content.xml").

Page 25: Informationsdarstellung mit XML Klaus Becker 2008

25 Darstellung des Textes

... als DocBook-Datei (siehe "dom_koeln.xml"). Hier kann man deutlich die Struktur des Textes ablesen.

Page 26: Informationsdarstellung mit XML Klaus Becker 2008

26

Formate zur Informationsdarstellung

Repräsentieren Interpretieren Repräsentieren Interpretieren

doc:proprietäres

Format

ODF:standardisiertes

Format

Page 27: Informationsdarstellung mit XML Klaus Becker 2008

27

Macht über die Dokumente

ODF ist ein lizenzfreier Standard und seit 2006 als internationale Norm ISO/IEC 26300 veröffentlicht. Zu diesen De-Facto-Standards zählt beispielsweise das Doc- oder Xls-Format von Microsoft. Software-Programme dürfen diese Formate nur laden, wenn der Hersteller für die Programme auch eine Lizenz von Microsoft kauft. Das Doc-Format konkurriert mit dem Open Document Format for Office Applications (ODF), einem Dokumentformat für den Austausch von Daten zwischen Büroanwendungen. ODF ist, im Gegensatz zu den Microsoft-Formaten, ein lizenzfreier Standard, der vielfältig interoperabel ist. Produkte, die den Standard verwenden sind unter anderem die Büro-Software-Pakete Openoffice, Staroffice, Neooffice und Koffice. Hinzu kommt die Online-Text- und Tabellenverarbeitung von Google. Über externe Plug-Ins wird auch der ODF-Import und -Export in Microsoft-Office-Anwendungen wie Word oder Excel unterstützt.

Streit um AnerkennungFür Unternehmen und Behörden liegt damit der wirtschaftliche Nutzen von ODF auf der Hand. Anders als bei Microsoft fallen nämlich keine Lizenzgebühren an. In den letzten Jahren stiegen viele Organisationen aus Kostengründen sowie aus Gründen der Interoperabilität auf quelloffene Software-Produkte sowie auf den ODF-Standard für Daten- und Dateiaustausch um. Das wiederum konnte Microsoft nicht gefallen. Im Zuge der Einführung von Office 2007 beschloss der Computer-Konzern aus Redmond, das bisherige Doc- und Xls-Format durch das OOXML-Dateiformat (Open Office Extended Markup Language) abzulösen. Gleichzeitig wollte der Software-Konzern das neue Format als ISO-Standard anerkennen lassen, ohne jedoch etwaige Patentrechte daran aufzugeben.

Standardisierte Formatehttp://www.cio.de/knowledgecenter/open_source/852833/

index3.html

Page 28: Informationsdarstellung mit XML Klaus Becker 2008

28 Standardisierung

Es war wie ein verrücktes Fussballspiel. Die eine Mannschaft gehört einem reichen Konzern, die andere bestand aus brillanten, unabhängigen, aber mittellosen Spielern. Als die reiche Mannschaft zu verlieren drohte, schickte der Konzern mehr Spieler aufs Feld - und es gab keine Regel, die ihn daran hindern konnte. Am Ende standen einem freien Spieler fast vier Konzernspieler gegenüber. Der Kampf schien am Dienstag gelaufen. Hans Rudolf Thomann sagte gegenüber der WOZ: «Wir haben entschieden: Die Schweiz empfiehlt, Open XML von Microsoft als internationalen Standard anzuerkennen.» Thomann sagte noch, das dürfe nicht vor Donnerstag kommuniziert werden, es sei eine heisse Sache.

Thomann ist ein wichtiger Mann: Er leitet das offizielle Schweizer ExpertInnenkomitee, das über die Microsoft-Frage zu befinden hat. ...

Es geht um die Frage, wie ein Computerdokument verpackt sein soll, damit es später auch mit Programmen geöffnet werden kann, mit denen es nicht erstellt wurde. Firmen, aber auch Behörden, die ihre Dokumente elektronisch ablegen wollen, verursacht dieses Problem Kopfzerbrechen. Ein elektronisches Archiv ist nur brauchbar, wenn sich die archivierten Texte auch nach Jahren noch öffnen lassen, sonst sind sie für immer verloren.

Um das zu vermeiden, braucht es einen Standard, der festlegt, wie die Datenstruktur eines Textes oder einer Tabelle aussehen muss. Der Standard muss einfach und für alle offen zugänglich sein, sonst kann er ja nicht in jede neue Software eingebaut werden. Ein solcher Computerstandard existiert bereits, er heisst Open Document Format (ODF), wurde von unabhängigen Softwareleuten entwickelt und im Mai 2006 von der internationalen Zertifizierungsbehörde ISO anerkannt.

http://www.woz.ch/artikel/2007/nr35/schweiz/15329.html

Page 29: Informationsdarstellung mit XML Klaus Becker 2008

29 Standardisierung

Die Geschichte des Kölner Doms beginnt im Jahre 1248 mit der Grundsteinlegung für den Chor, der gigantisch war für mittelalterliche Maßstäbe. Es folgten der Abriss des alten Langhauses, die Arbeit an den Westtürmen - auch deren Ausmaße sprengten die damals üblichen Dimensionen. Allein diese Bauarbeiten dauern drei ganze Jahrhunderte, während derer man sich konsequent an die alten Baupläne hielt. Digital verschlüsselte Daten auf nicht beständigen Datenträgern wären zu dem Zeitpunkt längst unlesbar gewesen.

Doch im 16. Jahrhundert kommen die Bauarbeiten am Großprojekt Dom zum Erliegen. Die genaue Ursache ist bis heute unbekannt. Der Dom bleibt unvollendet, eine Bauruine, und zwar ganze 300 Jahre lang. Erst zu Beginn des 19. Jahrhunderts kommt plötzlich wieder Bewegung in das Projekt "Dom". Und noch immer existiert der mittelalterliche Bauplan. 600 Jahre ist er mittlerweile alt. Das Pergament brüchig, die Tinte vergilbt und - uncodiert. Und damit ohne jegliche Software oder Hardware lesbar. Wäre er digital gespeichert gewesen, wohl niemand hätte nach sechs Jahrhunderten geschafft, ihn zu lesen.

Doch mit einem Plan aus Tinte und Pergament war es kein Problem, den Dom bis zum Ende des 19. Jahrhunderts genau so zu vollenden, wie es sich sein visionärer mittelalterlicher Baumeister einst ausgedacht hat.

http://www.wdr.de/tv/q21/1058.0.phtml

Page 30: Informationsdarstellung mit XML Klaus Becker 2008

30 Standardisierung

Users tend to think about software in terms of functionality and usability; they use to under-estimate the importance of data formats. How should they know better – it is the very purpose of good software to provide a wealth of functions while hiding the (necessary) complexity of the underlying data from the innocent user. After all, nobody cares for the bits and bytes that are scribbled on the disk.

In fact, everybody should care. Not for the details of the bits and bytes, of course, but for their data. They are, after all, for what all the effort is made. You may not have noticed so far that data in a proprietary (i.e. vendor-specific) format is less valuable than data in an open and standardized format. But you will notice this once you try to switch to a different software, only to learn that you have to say Goodbye to most of your data because they cannot be read by the new program. A comparable, although less dramatic situation will occur when you try to send your data to somebody else who does not happen to use the same software as you do.

The usual justification offered by software vendors says they have to use their own format because it's highly optimized for the particular needs of their program and that it saves both processing time and (main memory as well as disk) space. This would be more convincing if they wouldn't, at the same time, try to keep their formats secret by not documenting them or by even encrypting the data.

http://www.saremba.de/chessgml/why.htm

Page 31: Informationsdarstellung mit XML Klaus Becker 2008

31 Informationsdarstellung mit XML

Information kann auf ganz unterschiedliche Weise dargestellt und auch strukturiert werden. XML (eXtensible Markup Language) bietet eine Art Standard zur strukturierten Darstellung von Information, den inzwischen sehr viele Werkzeuge nutzen.

GGT

Eingabe: x, y

SOLANGE y > 0

h := x mod y

x := y

y := h

Ausgabe: x

Repräsentieren Interpretieren Repräsentieren Interpretieren

<?xml version="1.0" encoding="UTF-8"?><nsc version="0.2"><sequence>...</sequence></nsc>

Page 32: Informationsdarstellung mit XML Klaus Becker 2008

32 Aufgabe

Mit Hilfe von verschiedenen Struktogramm-Editoren wurde der Algorithmus zur Berechnung des ggT in Struktogrammform dargestellt. Vergleichen Sie die benutzten Datenformate. Öffnen Sie hierzu die Dateien mit einem Editor.

StruktEdit

NSCEdit

Page 33: Informationsdarstellung mit XML Klaus Becker 2008

33 Datenformate für Struktogramme

StruktEdit-Datei betrachtet mit

einem Hex-Editor

NSCEdit-Datei betrachtet mit einem Text-

Editor

Page 34: Informationsdarstellung mit XML Klaus Becker 2008

34 Aufgabe

Das Simulationsprogramm JFlap wurde in den letzten Jahren mehrfach überarbeitet und weiterentwickelt. Insbesondere wurde auch das Speicherformat verändert. Vergleichen Sie das von JFlap40b8 und JFlap40b14 benutzte Format.

Page 35: Informationsdarstellung mit XML Klaus Becker 2008

35 Datenformate für Automaten

erstellt mit JFlap40b14

erstellt mit JFlap40b8

Page 36: Informationsdarstellung mit XML Klaus Becker 2008

36 Aufgabe

Erstellen Sie mit GeoGebra eine Zeichnung und speichern Sie diese unter einem geeigneten Dateinamen (z. B. "ableitung.ggb") ab. Entpacken Sie anschließend diese Datei und schauen Sie sich die entpackte Datei mit einem Editor an.

Page 37: Informationsdarstellung mit XML Klaus Becker 2008

37

Datenformat für geometrische Konstr.

hinter den Kulissen von GeoGebra

...<construction title="" author="" date=""><expression label ="f" exp="f(x) = x^(2) - x + 2"/><element type="function" label="f"> <show object="true" label="true"/> <objColor r="0" g="0" b="0" alpha="0.0"/> <labelMode val="0"/> <animation step="0.1"/> <fixed val="false"/> <breakpoint val="false"/> <lineStyle thickness="2" type="0"/></element>...<element type="point" label="A"> <show object="true" label="true"/> <objColor r="125" g="125" b="255" alpha="0.0"/> <labelMode val="0"/> <animation step="0.1"/> <fixed val="false"/> <breakpoint val="false"/> <coords x="1.4" y="2.5599999999999996" z="1.0"/>...</element>...

Page 38: Informationsdarstellung mit XML Klaus Becker 2008

38 Aufgabe

Das folgende XML-Dokument soll den aktuellen Schach-Spielzustand darstellen. Welche Vor- und Nachteile hat diese Darstellung?

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

8/1p1kpQ2/2np4/1p2b1BP/2q2p2/8/5PP1/5RK1 w -- - 1 30

Page 39: Informationsdarstellung mit XML Klaus Becker 2008

39 Aufgabe

Ist XML ein guter Standard? Lesen Sie die folgenden Textauszüge.

Als "beste Erfindung seit der Kreide" feierte ein Kommentator einmal XML, und dieser Vergleich trifft nicht schlecht: Beide Schreibwerkzeuge sind technisch unkompliziert, praktisch umsonst nutzbar, und beide helfen gerade dort, wo mehrere Parteien Information teilen wollen. Besonders dort, wo große Datenmengen aus verschiedenen Quellen zusammenfließen, etwa in Schnittbereichen mehrerer wissenschaftlicher Disziplinen oder in der Logistik zwischen Unternehmen und ihren Zulieferern, hat XML sich als mächtiges Werkzeug erwiesen. Inzwischen speichern auch viele Text- und Datenbankprogramme für Heimcomputer ihre Dateien in XML.

Trotz des "Language" im Namen ist XML keine Sprache, sondern ein Sprachgerüst, Ähnlich der Grammatik natürlicher Sprachen: Die Regeln von XML legen fest, welche Struktur ein sinnvoller Ausdruck haben muss. Der Wortschatz dagegen bleibt bewusst offen. Er kann für jede Anwendung angepasst werden. Inzwischen sind XML-Dialekte für alle erdenklichen Gebiete entwickelt, vom Versicherungswesen über die biologische Bildgebung bis hin zu Schach.

http://www.heise.de/tr/Beste-Erfindung-seit-der-Kreide--/artikel/56485

Page 40: Informationsdarstellung mit XML Klaus Becker 2008

40 Gute Standards

Was ist ein guter Standard? Ein Essay über die Designprinzipien des W3CAutor: Bert BosDeutsche Übersetzung: Michael Jendryschik

Binär- oder TextformatDie meisten W3C-Spezifikationen definieren eine formale Sprache zur Beschreibung einer Art von Ressource: HTML beschreibt einfache Text-Dokumente, SVG beschreibt Vektorgrafiken, PNG beschreibt Rastergrafiken, HTTP beschreibt den Dialog zwischen einem Client und einem Server und URLs beschreiben den Pfad zu einer bestimmten Ressource. Es gibt Ausnahmen wie die verschiedenen WAI-Richtlinien, die Meta-Regeln beschreiben, wie Programme und Spezifikationen entworfen werden sollten (ein wenig wie dieser Essay, allerdings präziser...). Aber die meisten Menschen, die an W3C-Spezifikationen arbeiten, stehen am Anfang vor der Frage: Sollen wir ein Binär- oder ein Textformat entwerfen?

In den meisten Fällen wird die Antwort »Textformat« lauten, denn Textformate sind einfacher zu laden, und Fehler lassen sich leichter finden und beseitigen: man kann Dateien mit einem Texteditor erzeugen, sodass der Entwurf eines geeigneten Editors oder Konverters auf einen späteren Zeitpunkt verschoben werden kann; man kann eine Datei überprüfen, um zu sehen, was passiert ist, wenn ein Programm nicht das macht, was man erwartet hat; und nicht zuletzt: wenn die Spezifikation in etwa 50 Jahren versehentlich verloren gegangen ist, gibt es eine Chance, allein durch das Analysieren einiger Dateien ausreichend viel von der Spezifikation zu rekonstruieren, um die essentiellen Informationen zurückzugewinnen. (Das wird manchmal, wohl eher optimistisch, »selbstbeschreibend« genannt. Das Format würde nur dann wirklich selbstbeschreibend sein, wenn jede Datei den Text der Spezifikation mit einbände...)http://jendryschik.de/wsdev/trans/

designguide/

Page 41: Informationsdarstellung mit XML Klaus Becker 2008

41 Gute Standards

Was ist ein guter Standard? Ein Essay über die Designprinzipien des W3CAutor: Bert BosDeutsche Übersetzung: Michael Jendryschik

LesbarkeitEine Notation kann zu kurz sein. Wenn der Name einer selten verwendeten Funktion nur aus einem Buchstaben besteht (»t«), dann muss man sie womöglich die wenigen Male, die man sie sieht, nachschlagen, wenn man alle Buchstaben nicht auswendig komplett überblickt. Ein komplettes Wort (»translate«) ist da die bessere Lösung.Eine Notation kann auch zu lang sein. Wenn ein Schlüsselwort, das man sehr oft verwendet, 20 Zeichen lang ist (»shapeoutlinedata«), dann sollte es womöglich besser abgekürzt werden (»d«). Diese Beispiele habe ich aus SVG (das die richtigen Bezeichnungen gewählt hat) entnommen, aber man kann ähnliche Fälle in den meisten Sprachen finden.Bedauerlicherweise stellen sich die besten Vermutungen als falsch heraus. Die Designer von XML dachten, es wäre hilfreich, ein Element mit dem vollen Elementnamen zu öffnen und zu schließen (<heading>...</heading>), und für die Verwendung, die sie voraussahen, war das in der Tat vollkommen angemessen: in langen Texten mit wenig Markup ist die geringe Menge an Redundanz, die hinzukommt, gegenüber der Möglichkeit, zu sehen, welches Element geschlossen wird, zu vernachlässigen [XMLgoals]. Sie dachten, eine kürzere Form (etwa </> oder <>) zu erlauben, würde die Komplexität der Sprache erhöhen. Heute wird XML allerdings häufiger für Daten benutzt, deren Markup den eingeschlossene Inhalt übersteigt, und die vielen Start-Tags, die direkt End-Tags des gleichen Elementtyps folgen, verstecken die wesentliche Information durch ihre Redundanz. XML ist dadurch nicht kaputt, aber im Nachhinein betrachtet, hätte es so gestaltet werden können, dass dessen Verwendung nicht mit solchen Problemen verbunden ist.http://jendryschik.de/wsdev/trans/

designguide/

Page 42: Informationsdarstellung mit XML Klaus Becker 2008

42 Aufgabe

Verschaffen Sie sich einen ersten Überblick über XML. Lesen Sie sich hierzu die Seite "XML in 10 Punkten" durch.

1. XML steht für strukturierte Daten2. XML sieht ein wenig wie HTML aus3. XML ist Text, aber nicht zum Lesen4. XML ist vom Design her ausführlich5. XML ist eine Familie von Techniken6. XML ist neu, aber nicht so neu7. XML überführt HTML in XHTML8. XML ist modular9. XML ist die Basis für RDF und das Semantic Web10. XML ist lizenzfrei, plattformunabhängig und gut unterstützt

siehe: http://www.w3c.de/Misc/XML-in-10-Punkten.html

Page 43: Informationsdarstellung mit XML Klaus Becker 2008

43 Teil 3

Grundlagen von XML

Page 44: Informationsdarstellung mit XML Klaus Becker 2008

44

Strukturierte Darstellung v. Information

XML-Dokumente werden benutzt, um Information strukturiert darzustellen.<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand><!--Spieler mit schwarzen Figuren--> <schwarz amZug="nein"> <Bauer Spalte="b" Zeile="7"/> <Bauer Spalte="e" Zeile="7"/> <Bauer Spalte="d" Zeile="6"/> <Bauer Spalte="b" Zeile="5"/> <Bauer Spalte="f" Zeile="4"/> <Springer Spalte="c" Zeile="6"/> <Läufer Spalte="e" Zeile="5"/> <Dame Spalte="c" Zeile="4"/> <König Spalte="d" Zeile="7"/> </schwarz><!--Spieler mit weißen Figuren--> <weiss amZug="ja"> <Bauer Spalte="h" Zeile="5"/> <Bauer Spalte="f" Zeile="2"/> <Bauer Spalte="g" Zeile="2"/> <Läufer Spalte="f" Zeile="5"/> <Turm Spalte="f" Zeile="1"/> <Dame Spalte="f" Zeile="7"/> <König Spalte="g" Zeile="1"/> </weiss></Schach-Spielzustand>

Page 45: Informationsdarstellung mit XML Klaus Becker 2008

45

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand><schwarz><Bauer>b7</Bauer><Bauer>e7</Bauer><Bauer>d6</Bauer><Bauer>b5</Bauer><Bauer>f4</Bauer><Springer>c6</Springer><Läufer>e5</Läufer><Dame>c4</Dame><König>d7</König></schwarz><weiss><Bauer>h5</Bauer><Bauer>f2</Bauer><Bauer>g2</Bauer><Läufer>f5</Läufer><Turm>f1</Turm><Dame>f7</Dame><König>g1</König><amZug/></weiss></Schach-Spielzustand>

Hierarchische Baumstruktur

Die Strukturierung erfolgt in Form eines Baumes.

Anzeige mit einem Browser

Darstellung im Editor

Page 46: Informationsdarstellung mit XML Klaus Becker 2008

46 Der Baum der Elemente

Grundbausteine eines XML-Dokuments sind die XML-Elemente.

Ein (XML-) Element wird mit Hilfe von Tags (Anfangs- und Endtag) markiert.

Ein Element kann selbst wieder Elemente enthalten (Container) oder nur noch Zeichen (eigentliche Daten) oder beides.

Das erste Element eines XML-Dokuments ist das Wurzelelement, das alle anderen Elemente in sich einschließt.Ein XML-Dokument vermischt Inhalte mit Informationen über diese Inhalte (Meta-Information).

Wurzelelement

Element mit Zeicheninhalt

Element als Container

Page 47: Informationsdarstellung mit XML Klaus Becker 2008

47 Tags

Mit Hilfe von Tags werden die verschiedenen Elemente begrenzt. Verschiedene Tags markieren dabei unterschiedliche Elementtypen.

Tags werden (wie bei HTML) mit spitzen Klammern gebildet. Die Tag-Namen sind (fast) frei wählbar.

Anfangs- und Endtag müssen immer exakt zueinander passen. Dabei wird auf Groß- und Kleinschreibung geachtet.

Tags müssen korrekte geschachtelt werden.

Bei einem leeren Element wird i. d. Regel eine verkürzte Tag-Schreibweise benutzt.

Anfangstag

Endtag

leeres Element

Page 48: Informationsdarstellung mit XML Klaus Becker 2008

48 Attribute

Elemente können mit Hilfe von Attributen näher beschrieben werden. Attribute können dabei zusätzliche Informationen über den Inhalt eines Elements liefern, ohne selbst Teil des Inhalts zu sein. Jedem Attribut muss ein bestimmter Wert zugewiesen werden, der in Anführungszeichen geschrieben wird.

Attribut

Attributwert

Page 49: Informationsdarstellung mit XML Klaus Becker 2008

49 Kommentare

Kommentare erleichtern das Verständnis und werden vom Browser mit angezeigt.<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand><!--Spieler mit schwarzen Figuren--> <schwarz amZug="nein"> <Bauer Spalte="b" Zeile="7"/> <Bauer Spalte="e" Zeile="7"/> <Bauer Spalte="d" Zeile="6"/> <Bauer Spalte="b" Zeile="5"/> <Bauer Spalte="f" Zeile="4"/> <Springer Spalte="c" Zeile="6"/> <Läufer Spalte="e" Zeile="5"/> <Dame Spalte="c" Zeile="4"/> <König Spalte="d" Zeile="7"/> </schwarz><!--Spieler mit weißen Figuren--> <weiss amZug="ja"> <Bauer Spalte="h" Zeile="5"/> <Bauer Spalte="f" Zeile="2"/> <Bauer Spalte="g" Zeile="2"/> <Läufer Spalte="f" Zeile="5"/> <Turm Spalte="f" Zeile="1"/> <Dame Spalte="f" Zeile="7"/> <König Spalte="g" Zeile="1"/> </weiss></Schach-Spielzustand>

Kommentar

Page 50: Informationsdarstellung mit XML Klaus Becker 2008

50 Prolog

Ein XML-Dokument beginnt in der Regel mit dem Prolog <?xml ... ?>. Der Prolog sollte hier stehen, um das Dokument als XML-Dokument zu kennzeichnen.

Im Prolog kann der Zeichensatz festgelegt werden, der zur Kodierung benutzt wird. Fehlt die Angabe des Zeichensatzes, so wird UTF-8 als Vorgabe benutzt. Wenn deutsche Umlaute korrekt dargestellt werden sollen, sollte man den Zeichensatz ISO-8859-1 verwenden.

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand><!--Spieler mit schwarzen Figuren--> <schwarz amZug="nein"> <Bauer Spalte="b" Zeile="7"/> <Bauer Spalte="e" Zeile="7"/> <Bauer Spalte="d" Zeile="6"/> <Bauer Spalte="b" Zeile="5"/> <Bauer Spalte="f" Zeile="4"/> <Springer Spalte="c" Zeile="6"/> <Läufer Spalte="e" Zeile="5"/> <Dame Spalte="c" Zeile="4"/> <König Spalte="d" Zeile="7"/> </schwarz><!--Spieler mit weißen Figuren--> <weiss amZug="ja"> <Bauer Spalte="h" Zeile="5"/> <Bauer Spalte="f" Zeile="2"/> <Bauer Spalte="g" Zeile="2"/> <Läufer Spalte="f" Zeile="5"/> <Turm Spalte="f" Zeile="1"/> <Dame Spalte="f" Zeile="7"/> <König Spalte="g" Zeile="1"/> </weiss></Schach-Spielzustand>

Page 51: Informationsdarstellung mit XML Klaus Becker 2008

51 Wohlgeformtheit

Ein XML-Dokument, das alle syntaktischen Bedingungen erfüllt, heißt wohlgeformt.

wohlgeformte XML-Dokumente

beachte:Nur wohlgeformte XML-Dokumente werden vom Browser in Baumform angezeigt.

Page 52: Informationsdarstellung mit XML Klaus Becker 2008

52 Aufgabe

Versuchen Sie, nicht-wohlgeformte XML-Dokumente mit dem Browser anzuzeigen. Testen Sie verschiedene Fälle:

- die Tag-Namen stimmen nicht exakt überein

- die Klammerung ist nicht korrekt

- der Attributwert fehlt / ist nicht in Anführungszeichen geschrieben

...

Page 53: Informationsdarstellung mit XML Klaus Becker 2008

53 Aufgabe

In beiden XML-Dokumenten stimmt etwas nicht. Was? Worin unterscheiden sich die Fehler?

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6<Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bäuerin>f2</Bäuerin> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

Page 54: Informationsdarstellung mit XML Klaus Becker 2008

54 Aufgabe

Was geschieht, wenn man die Elementstruktur verändert. Lassen Sie gezielt Tags weg bzw. verändern Sie gezielt die Baumstruktur, ohne gegen die Syntaxregeln von XML zu verstoßen.

<?xml version="1.0" encoding="UTF-8"?><nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <text> <span>SOLANGE y &gt; 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> ...

</nsc>

weglassen

Testen Sie auch, wie die Anwendung reagiert, wenn man zusätzliche Elemente einführt.

Page 55: Informationsdarstellung mit XML Klaus Becker 2008

55 Aufgabe

Eine Bank möchte Überweisungen mit Hilfe von XML strukturiert darstellen. Entwerfen Sie ein passendes XML-Dokument.

Page 56: Informationsdarstellung mit XML Klaus Becker 2008

56 Aufgabe

Entwickeln Sie ein XML-Dokument, mit dem man Informationen über eine Schulklasse / ein Lehrerkollegium erfassen kann.

Page 57: Informationsdarstellung mit XML Klaus Becker 2008

57 Aufgabe

Graphen treten in sehr vielen Anwendungen auf. Entwickeln Sie ein XML-Dokument, mit dem man die Information eines Graphen strukturiert darstellen kann.

TR

KO

RB

BI

KL

AZ

MZ

FT

SP

128

98

54

28 35

3533

3648

48 31

116

Page 58: Informationsdarstellung mit XML Klaus Becker 2008

58

Page 59: Informationsdarstellung mit XML Klaus Becker 2008

59 Teil 4

Dokumenttypen und ihre Validierung

Page 60: Informationsdarstellung mit XML Klaus Becker 2008

60 Ungültige Dokumentenstruktur

Wenn man das Element zur Darstellung der Struktogramm-überschrift weglässt, so wird das Dokument weiterhin vom Browser angezeigt. Das Dokument wird aber nicht mehr vom Struktogrammeditor akzeptiert, da es nicht mehr den geforderten Dokumenttyp hat.

<?xml version="1.0" encoding="UTF-8"?><nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <text> <span>SOLANGE y &gt; 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> <statement> <text> <span>Ausgabe: x</span> </text> </statement> </sequence> <text> <span>GGT</span> </text></nsc>

Zielsetzung:

Im Folgenden sollen Verfahren vorgestellt werden, mit denen der Dokumenttyp präzise beschrieben werden kann.

Page 61: Informationsdarstellung mit XML Klaus Becker 2008

61 Dokumenttyp

Wir betrachten XML-Dokumente zur (vereinfachten) Beschreibung eines Schach-Spielzustands. Ein Schach-Spielzustand wird durch die schwarzen und weißen Figuren festgelegt und die Angabe, ob schwarz oder weiß am Zug ist.

Folgende schwarze Figuren können auf dem Brett stehen: mehrere Bauern, mehrere Springer, ... , mehrere Damen und genau ein König.

Folgende weiße Figuren können auf dem Brett stehen: mehrere Bauern, mehrere Springer, ... , mehrere Damen und genau ein König.

Beschreibung des Kontextes

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

Page 62: Informationsdarstellung mit XML Klaus Becker 2008

62 Dokumenttyp

informelle Beschreibung des Dokumenttyps

<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

Das Wurzelelement hat den Namen "Schach-Spielzustand".

Ein Element vom Typ "Schach-Spielzustand" besteht aus einem Element vom Typ "schwarz" und einem Element vom Typ "weiss".

Ein Element vom Typ "schwarz" (analog "weiss") besteht aus - beliebig vielen Elementen vom Typ "Bauer",- beliebig vielen Elementen vom Typ "Turm",- ...,- genau einem Element v. Typ "König",- optional einem Element v. Typ "amZug".

Ein Element vom Typ "Bauer" besteht aus Zeichen. ...

Page 63: Informationsdarstellung mit XML Klaus Becker 2008

63 Dokumenttypdefinition

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT Bauer (#PCDATA)><!ELEMENT Turm (#PCDATA)><!ELEMENT Springer (#PCDATA)><!ELEMENT Läufer (#PCDATA)><!ELEMENT Dame (#PCDATA)><!ELEMENT König (#PCDATA)><!ELEMENT amZug EMPTY>

Das Wurzelelement hat den Namen "Schach-Spielzustand".

Ein Element vom Typ "Schach-Spielzustand" besteht aus einem Element vom Typ "schwarz" und einem Element vom Typ "weiss".

Ein Element vom Typ "schwarz" (analog "weiss") besteht aus - beliebig vielen Elementen vom Typ "Bauer",- beliebig vielen Elementen vom Typ "Turm",- ...,- genau einem Element v. Typ "König",- optional einem Element v. Typ "amZug".

Ein Element vom Typ "Bauer" besteht aus Zeichen. ...

informelle Beschreibung des Dokumenttyps

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE Schach-Spielzustand SYSTEM "schach1.dtd"><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> ...</schwarz> <weiss> <Bauer>h5</Bauer> ... <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

formale Beschreibung des Dokumenttyps

Page 64: Informationsdarstellung mit XML Klaus Becker 2008

64 Dokumenttypdefinition

Dokumenttypdefinition

Eine Dokumenttypdefinition (DTD) legt eine Klasse von Dokumenten fest, die alle vom gleichen Typ sind.

Eine Dokumenttypdefinition beschreibt die Struktur eines Dokuments mit Hilfe einer Grammatik. Eine DTD legt somit eine neue Sprache zur Informationsbeschreibung fest.

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE Schach-Spielzustand SYSTEM "schach1.dtd"><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> ...</schwarz> <weiss> <Bauer>h5</Bauer> ... <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT Bauer (#PCDATA)><!ELEMENT Turm (#PCDATA)><!ELEMENT Springer (#PCDATA)><!ELEMENT Läufer (#PCDATA)><!ELEMENT Dame (#PCDATA)><!ELEMENT König (#PCDATA)><!ELEMENT amZug EMPTY>

Page 65: Informationsdarstellung mit XML Klaus Becker 2008

65 Einbindung einer DTD

interne DTD

Eine Dokumenttypdefinition kann direkt in das XML-Dokument nach dem XML-Prolog eingebunden werden (interne DTD).

Eine Dokumenttypdefinition kann auch über eine Referenz auf eine Datei mit dem XML-Dokument verbunden werden (externe DTD).

Mit dem Schlüsselwort PUBLIC wird auf eine veröffentlichte DTD verwiesen.

Als Name der DTD wird der Name d. Wurzelelement benutzt.

<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE Schach-Spielzustand [...]>

<Schach-Spielzustand> ...</Schach-Spielzustand>

<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE Schach-Spielzustand SYSTEM "schach1.dtd">

<Schach-Spielzustand> ...</Schach-Spielzustand>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>...</html>

externe DTD

externe DTD

<!DOCTYPE Name [...]>

Page 66: Informationsdarstellung mit XML Klaus Becker 2008

66 Deklaration von Elementen

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT Bauer (#PCDATA)><!ELEMENT Turm (#PCDATA)><!ELEMENT Springer (#PCDATA)><!ELEMENT Läufer (#PCDATA)><!ELEMENT Dame (#PCDATA)><!ELEMENT König (#PCDATA)><!ELEMENT amZug EMPTY>

Elementtyp-Deklaration

Operator Bedeutung

() Bildung von Elementgruppen

, Trennzeichen innerhalb einer Sequenz von Elementen

| Trennzeichen zwischen sich ausschließenden Alternativen

* Element(gruppe) kann beliebig oft (auch gar nicht) vorkommen

+ Element(gruppe) muss mindestens einmal, kann mehrfach vorkommen

? Element(gruppe) kann einmal oder kein mal vorkommen

<!ELEMENT Name Inhaltsmodell>

Page 67: Informationsdarstellung mit XML Klaus Becker 2008

67 Inhaltsmodelle

<!ELEMENT Schach-Spielzustand (schwarz, weiss)>

Inhaltsmodell

Beschreibung

Elementinhalt Das Element enthält ausschließlich Unterelemente.

<!ELEMENT Bauer (#PCDATA)>

#PCDATA Das Element enthält nur Zeichendaten.

<!ELEMENT anrede (#PCDATA?, vormame, name)>

gemischter Inhalt

Das Element kann Zeichendaten und Unterelemente enthalten

<!ELEMENT anZug EMPTY>

EMPTY Das Element hat keinen Inhalt.

<anrede>Frau<vorname>Christiane</vorname><name>Meier</name></anrede>

<Schach-Spielzustand><schwarz>...<weiss>...</Schach-Spielzustand>

<Bauer>e4</Bauer>

<amZug/>

ANY Das Element kann beliebige Inhalte haben.

Page 68: Informationsdarstellung mit XML Klaus Becker 2008

68 Deklaration von Attributlisten<?xml version="1.0" encoding="iso-8859-1"?><Schach-Spielzustand><!--Spieler mit schwarzen Figuren--> <schwarz amZug="nein"> <Bauer Spalte="b" Zeile="7"/> <Bauer Spalte="e" Zeile="7"/> <Bauer Spalte="d" Zeile="6"/> <Bauer Spalte="b" Zeile="5"/> <Bauer Spalte="f" Zeile="4"/> <Springer Spalte="c" Zeile="6"/> <Läufer Spalte="e" Zeile="5"/> <Dame Spalte="c" Zeile="4"/> <König Spalte="d" Zeile="7"/> </schwarz><!--Spieler mit weißen Figuren--> <weiss amZug="ja"> <Bauer Spalte="h" Zeile="5"/> <Bauer Spalte="f" Zeile="2"/> <Bauer Spalte="g" Zeile="2"/> <Läufer Spalte="f" Zeile="5"/> <Turm Spalte="f" Zeile="1"/> <Dame Spalte="f" Zeile="7"/> <König Spalte="g" Zeile="1"/> </weiss></Schach-Spielzustand>

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ATTLIST schwarz amZug CDATA #REQUIRED><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ATTLIST weiss amZug CDATA #REQUIRED><!ELEMENT Bauer EMPTY><!ATTLIST Bauer Spalte CDATA #REQUIRED Zeile CDATA #REQUIRED><!ELEMENT Turm EMPTY><!ATTLIST Turm Spalte CDATA #REQUIRED Zeile CDATA #REQUIRED><!ELEMENT Springer EMPTY><!ATTLIST Springer Spalte CDATA #REQUIRED Zeile CDATA #REQUIRED>...<!ELEMENT König EMPTY><!ATTLIST König Spalte CDATA #REQUIRED Zeile CDATA #REQUIRED>

Page 69: Informationsdarstellung mit XML Klaus Becker 2008

69 Deklaration von Attributlisten<!ATTLIST Bauer Spalte CDATA #REQUIRED Zeile CDATA #REQUIRED>

Attributlisten-Deklaration

CDATA: nur einfache Zeichenketten erlaubt, keine Tags

...

#REQUIRED: Attributwert muss in jeder Elementinstanz vorkommen

#IMPLIED: Attributwert kann optional in einer Elementinstanz vorkommen

...

<!ATTLIST Elementname Attributname Attributtyp Vorgabewert Attributname Attributtyp Vorgabewert Attributname Attributtyp Vorgabewert ... >

<!ATTLIST lehrer geschlecht CDATA #REQUIRED amtsbez CDATA #IMPLIED>

Page 70: Informationsdarstellung mit XML Klaus Becker 2008

70 GültigkeitEin XML-Dokument, das alle Bedingungen einer DTD erfüllt, heißt gültig bzw. valide bzgl dieser DTD.

Ein gültiges XML-Dokument muss auch wohlgeformt sein.

Gültigkeit bezieht sich immer auf eine spezielle Strukturbeschreibung (hier in Form einer DTD).

Ein gültiges XML-Dokument ist somit ein Wort aus der mit der DTD neu festgelegten Sprache.

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE Schach-Spielzustand SYSTEM "schach1.dtd"><Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> ...</schwarz> <weiss> <Bauer>h5</Bauer> ... <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT Bauer (#PCDATA)><!ELEMENT Turm (#PCDATA)><!ELEMENT Springer (#PCDATA)><!ELEMENT Läufer (#PCDATA)><!ELEMENT Dame (#PCDATA)><!ELEMENT König (#PCDATA)><!ELEMENT amZug EMPTY>

Page 71: Informationsdarstellung mit XML Klaus Becker 2008

71 Validierung

http://www.validome.org/xml/validate/

Die Gültigkeit eines XML-Dokuments kann mit einem sog. XML-Parser überprüft werden. Ein XML-Parser ist ein Programm, das überprüft, ob das XML-Dokument die von der angegebenen DTD geforderte Struktur hat bzw. ein Wort zu der durch die DTD festgelegten Sprache ist.

Page 72: Informationsdarstellung mit XML Klaus Becker 2008

72 Validierung

Viele XML-Editoren haben XML-Parser integriert.

Open XML Editor

Page 73: Informationsdarstellung mit XML Klaus Becker 2008

73 Aufgabe

Entwickeln Sie eine DTD zur Beschreibung von Lehrerkollegien. Validieren Sie das gezeigte XML-Dokument. Testen Sie insbesondere interne und auch externe DTD.

<?xml version="1.0" encoding="ISO-8859-1"?><kollegium> <lehrer geschlecht="w"> <name>Meier</name> <vorname>Christiane</vorname> <kuerzel>mei</kuerzel> <fach>Deutsch</fach> <fach>Erdkunde</fach> <email>[email protected]</email> <email>[email protected]</email> </lehrer> <lehrer geschlecht="m"> <name>Schmitt</name> <vorname>Thomas</vorname> <kuerzel>sch</kuerzel> <fach>Latein</fach> <fach>Musik</fach> <fach>Philosophie</fach> </lehrer> <lehrer geschlecht="w"> <name>Müller</name> <vorname>Katharina</vorname> <kuerzel>mue</kuerzel> <fach>Mathematik</fach> <fach>Informatik</fach> <email>[email protected]</email> </lehrer></kollegium>

Page 74: Informationsdarstellung mit XML Klaus Becker 2008

74 Aufgabe

Wir betrachten XML-Dokumente zur Beschreibung von Graphen. Entwickeln Sie jeweils passende DTD.

<?xml version="1.0" encoding="ISO-8859-1"?><graph> <knotenmenge> <knoten> <name>TR</name> </knoten> <knoten> <name>KL</name> </knoten> ... </knotenmenge> <kantenmenge> <kante> <von>TR</von> <nach>KL</nach> <gewicht>116</gewicht> </kante> <kante> <von>KL</von> <nach>TR</nach> <gewicht>116</gewicht> </kante> ... </kantenmenge></graph>

<?xml version="1.0" encoding="ISO-8859-1"?><graph id="RLP"> <node id="TR"/> <node id="KL"/> <node id="KO"/> <edge source="TR" target="KL"> <data>116</data> </edge> <edge source="TR" target="KO"> <data>128</data> </edge></graph>

Page 75: Informationsdarstellung mit XML Klaus Becker 2008

75 Aufgabe

Entwickeln Sie eine DTD für Automatenbeschreibungen. Die von JFlap erzeugten XML-Beschreibungen sollen dabei als gültig erkannt werden.

Page 76: Informationsdarstellung mit XML Klaus Becker 2008

76 Aufgabe

Entwickeln Sie eine DTD für Struktogramme. Die von NSCEdit erzeugten XML-Beschreibungen sollen dabei als gültig erkannt werden.

Page 77: Informationsdarstellung mit XML Klaus Becker 2008

77 Miniprojekt: MyXHTML

Entwickeln Sie eine DTD für vereinfachte HTML-Dokumente. Dabei sollen HTML-Dokumente wie das folgende als gültig erkannt werden. Gehen Sie schrittweise vor. Beginnen Sie mit sehr einfachen Dokumenten wie in "MyXHML0.xml".

<html><head><title>IFB</title></head><body><h1>Weiterbildung am IFB</h1><p>Die Arbeit findet normalerweise in einem der Rechnerräume des IFB statt.</p><p><img src="Rechnerraum.jpg" alt="Rechnerraum"></img></p><p>Untergebracht wird man in dem schönen neuen S-Bau. </p><p><img src="SGebaeude.jpg" alt="S-Gebäude"></img></p><p><a href="Weiterbildungskurse.xml">Zurück</a></p></body></html>

Page 78: Informationsdarstellung mit XML Klaus Becker 2008

78

Page 79: Informationsdarstellung mit XML Klaus Becker 2008

79 Teil 5

XML-Vokabulare

Page 80: Informationsdarstellung mit XML Klaus Becker 2008

80 XML-Vokabulare

<!DOCTYPE html [<!ELEMENT html (head, body)><!ELEMENT head (title)><!ELEMENT title (#PCDATA)><!ELEMENT body (h1 | p)+><!ELEMENT h1 (#PCDATA)><!ELEMENT p (#PCDATA | img | a)*><!ELEMENT img EMPTY><!ATTLIST img src CDATA #REQUIRED alt CDATA #REQUIRED><!ELEMENT a (#PCDATA)><!ATTLIST a href CDATA #REQUIRED >] >

Regeln zur Festlegung der Lexik und Syntax von

MyHTML

XML ermöglicht es, mit Hilfe von DTD neue Sprachen formal festzulegen. Solche Sprachen werden auch XML-Vokabulare genannt. Die DTD ist die Grammatik des zugehörigen XML-Vokabulars, dargestellt in SGML unter Verwendung der erweiterten Backus-Naur-Form.

"Die Erweiterte Backus-Naur-Form, kurz EBNF, ist eine Erweiterung der Backus-Naur-Form (BNF), die ursprünglich von Niklaus Wirth zur Darstellung der Syntax der Programmiersprache Pascal eingeführt wurde. Sie ist eine formale Metasyntax (Metasprache), die benutzt wird, um kontextfreie Grammatiken darzustellen." (wikipedia)

Page 81: Informationsdarstellung mit XML Klaus Becker 2008

81 XHTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head><title>Weiterbildungskurse am IFB</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /></head><body><h1>Weiterbildung am IFB</h1><p>Die Arbeit findet normalerweise in einem der Rechnerräume des IFB statt.</p>...<p><a href="Weiterbildungskurse.html">Zurück</a></p></body></html>

DTD zur Festlegung der Lexik und Syntax von

XHTML

Browser als Interpreter:Semantik von XHTML

XHTML ist die XML-konforme Neufassung von HTML.

Page 82: Informationsdarstellung mit XML Klaus Becker 2008

82 Aufgaben

Aufgabe 1Laden Sie sich die DTD von XHTML herunter und werfen Sie einen Blick in die sehr umfangreiche DTD. Alles klar? Sie finden die DTD unter der angegebenen URL.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Aufgabe 2Informieren Sie sich über den sog. DOCTYPE-switch. Sie können auch nach dem Stichwort "Quirks-Modus" suchen.

Page 83: Informationsdarstellung mit XML Klaus Becker 2008

83 SVG

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" ><svg xmlns="http://www.w3.org/2000/svg" width="500" height="300">

<circle cx="100" cy="100" r="50"></circle><rect x="100" y="100" width="50" height="50" fill="green"></rect>

</svg>

SVG-Dokument

Darstellung im Browser

"Scalable Vector Graphics (SVG, deutsch Skalierbare Vektorgrafiken) ist ein Standard zur Beschreibung zweidimensionaler Vektorgrafiken in der XML-Syntax." (wikipedia)

Page 84: Informationsdarstellung mit XML Klaus Becker 2008

84 Aufgaben

Aufgabe 1Testen Sie zunächst, ob ihr Browser SVG-Dateien anzeigt. Benutzen Sie eine der mitgelieferten svg-Dateien.

Aufgabe 2Unter der URL "http://de.wikipedia.org/wiki/Scalable_Vector_Graphics" finden Sie einige Hinweise zur Erstellung von SVG-Dokumenten. Testen Sie einige der dort angegebenen Elemente und erstellen Sie eine Grafik nach eigenen Vorstellungen.

Page 85: Informationsdarstellung mit XML Klaus Becker 2008

85 MathML<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd"><math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mi>c</mi> <mo>=</mo> <msqrt> <mrow> <msup> <mi>a</mi> <mn>2</mn> </msup> <mo>+</mo> <msup> <mi>b</mi> <mn>2</mn> </msup> </mrow> </msqrt> </mrow></math>

"Die Mathematical Markup Language (MathML) ist im Computer-Datenverkehr ein Dokumentenformat zur Darstellung mathematischer Formeln und komplexer Ausdrücke. Der Standard MathML 2.0 wird durch eine Spezifikation des World Wide Web Consortium von 2001 festgelegt. Wie in allen XML-Sprachen (z. B. XHTML) werden in MathML die Inhalte eines Dokumentes in einer logischen Struktur unabhängig von ihrer graphischen Gestaltung abgelegt." (wikipedia)

Page 86: Informationsdarstellung mit XML Klaus Becker 2008

86 Aufgaben

Aufgabe 1Testen Sie zunächst, ob ihr Browser MATHML-Dateien anzeigt. Wenn Sie Firefox benutzen, müssen Sie evtl. weitere Zeichensätze installieren.

Aufgabe 2Versuchen Sie, einfache Formeln mit MATHML zu erstellen.

Aufgabe 3Das Dokument in "test3.xml" zeigt, wie man MATHML in XHTML einbettet. Wie wird es gemacht?

Page 87: Informationsdarstellung mit XML Klaus Becker 2008

87 WML

"Wireless Markup Language (WML) ist eine XML-basierte Seitenbeschreibungssprache, die eine stark reduzierte Fassung von XHTML darstellt. Sie ist Teil des Wireless Application Protocol (WAP) und zur Darstellung veränderlicher Inhalte auf Mobiltelefonen entwickelt worden." (wikipedia)

<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml><card id="start" title="Startseite"><p>Hausaufgaben in<br/><a href="#mathematik">Mathematik</a><br/><a href="#deutsch">Deutsch</a><br/><a href="#englisch">Englisch</a><br/></p></card><card id="mathematik" title="Mathematik">...</card>...</wml>

http://www.winwap.com/products_2_3.php

Page 88: Informationsdarstellung mit XML Klaus Becker 2008

88 Aufgaben

Aufgabe 1Installieren Sie den Handy-Emulator. Konfigurieren Sie ihn so, dass WML-Dokumente von einem lokalen Server abgerufen werden können.

Informieren Sie sich in der mitgelieferten WML-Kurzeinführung, wie WML-Dokumente aufgebaut werden. Erstellen Sie auch eine einfache WML-Datei.

Page 89: Informationsdarstellung mit XML Klaus Becker 2008

89 Aufgaben

Aufgabe 2Sie können Firefox dazu bringen, WML-Dateien anzuzeigen. Hierzu müssen Sie nur ein zusätzliches Add-on installieren. Sie finden es hier:

"https://addons.mozilla.org/en-US/firefox/addon/62"

Zusätzlich müssen Sie folgende Einstellung vornehmen: "Lokale Dateien mit Endung ".wml" als WML laden"

Page 90: Informationsdarstellung mit XML Klaus Becker 2008

90 Aufgaben

Auf der Seite

http://web.mit.edu/mecheng/pml/standards.htm

finden Sie eine Übersicht über standardisierte XML-Vokabulare. Werfen Sie einen Blick auf diese Seite, um zu erahnen, wo weitere Anwendungsgebiete von XML liegen.

Page 91: Informationsdarstellung mit XML Klaus Becker 2008

91 Teil 6

Exkurs: Namensräume, Formatierung, Strukturbeschreibung

Page 92: Informationsdarstellung mit XML Klaus Becker 2008

92 Probleme

Wie kann man mehrere XML-Dokumente zusammenführen, ohne Namenskonflikte zu erhalten?

Wie kann man XML-Dokumente formatieren?

Wie kann man die Struktur von XML-Dokumenten noch adäquater beschreiben?

...

Page 93: Informationsdarstellung mit XML Klaus Becker 2008

93 Exkurs: Namensräume

Beispiel 1:

<?xml version="1.0" encoding="ISO-8859-1"?><html><head><title>Test</title></head><body><h1>Überschrift</h1><p>Absatz</p></body></html>

<?xml version="1.0" encoding="ISO-8859-1"?><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Test</title></head><body><h1>Überschrift</h1><p>Absatz</p></body></html>

Namensraum: Ansammlung von Namen für Elemente und

Attribute

Page 94: Informationsdarstellung mit XML Klaus Becker 2008

94 Exkurs: Namensräume

Beispiel 2:

<?xml version="1.0" encoding="ISO-8859-1"?><seite xmlns:xhtml="http://www.w3.org/1999/xhtml"><xhtml:h1>Überschrift</xhtml:h1><xhtml:p>Absatz</xhtml:p></seite>

<?xml version="1.0" encoding="ISO-8859-1"?><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Test</title></head><body><h1>Überschrift</h1><p>Absatz</p></body></html>

Namensraumdeklaration

URI als weltweit eindeutiger Bezeichner

Präfix als Kurzorm

Page 95: Informationsdarstellung mit XML Klaus Becker 2008

95 Exkurs: Namensräume<?xml version="1.0" encoding="ISO-8859-1"?><seite xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:svg="http://www.w3.org/2000/svg"><xhtml:body><xhtml:h1>Satz des Pythagoras</xhtml:h1> <xhtml:p>In einem rechtwinkligen Dreieck mit den Katheten a und b sowie der Hypothenuse c gilt:</xhtml:p><xhtml:p><math:math> <math:mrow> <math:row> <math:msup> <math:mi>a</math:mi> <math:mn>2</math:mn> </math:msup> ...</math:mrow></math:math></xhtml:p><xhtml:p>Die folgende Zeichnung verdeutlicht diesen Zusammenhang.</xhtml:p><svg:svg width="160" height="160"><svg:rect x="40" y="80" width="40" height="40" fill="red"></svg:rect><svg:rect x="80" y="50" width="30" height="30" fill="red"></svg:rect><svg:polygon points="40 80 80 50 50 10 10 40 " fill="red"></svg:polygon></svg:svg></xhtml:body></seite>

mehrere Namensräume

Beispiel 3:

Page 96: Informationsdarstellung mit XML Klaus Becker 2008

96 Exkurs: Namensräume

"In Dokumenten, die unterschiedliches Markup-Vokabular enthalten, können Probleme mit der Erkennung und Kollisionen auftreten. Software-Module müssen die Tags und Attribute erkennen, für deren Verarbeitung sie geschaffen wurden, auch im Fall einer Kollision, wenn Markup, das für eine andere Software geschrieben wurde, die gleichen Elementtypen und Attributnamen verwendet.

Diese Überlegungen erfordern, dass Dokumentkonstrukte, deren Geltungsbereich über den des beinhaltenden Dokuments hinausgeht, einzigartige Namen haben sollten. Diese Spezifikation beschreibt einen Mechanismus, XML-Namensräume, der diese Anforderungen erfüllt.

Ein XML-Namensraum ist eine Zusammenstellung von Namen, identifiziert durch einen URI-Verweis, die in XML-Dokumenten als Elementtypen und Attributnamen verwendet werden."aus: Namensräume in XML. http://www.schumacher-netz.de/TR/1999/REC-xml-names-19990114-de.html

Page 97: Informationsdarstellung mit XML Klaus Becker 2008

97 Exkurs: Formatierung

Beispiel 1:

<?xml version="1.0" encoding="ISO-8859-1"?><dokument><ueberschrift>XML</ueberschrift><definition>XML steht für Extensible Markup Language und wird benutzt, um Daten strukturiert darzustellen.</definition></dokument>

keine Formatierungsangabe

Page 98: Informationsdarstellung mit XML Klaus Becker 2008

98 Exkurs: Formatierung

Beispiel 2:

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet href="style.css" type="text/css"?><dokument><ueberschrift>XML</ueberschrift><definition>XML steht für Extensible Markup Language und wird benutzt, um Daten strukturiert darzustellen.</definition></dokument>

Formatierung mit CSS

ueberschrift{ color: blue; font-weight: bold;}

definition{ color: green;}

style.css

Page 99: Informationsdarstellung mit XML Klaus Becker 2008

99 Exkurs: Formatierung

Beispiel 3:

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="style.xsl"?><dokument><ueberschrift>XML</ueberschrift><definition>XML steht für Extensible Markup Language und wird benutzt, um Daten strukturiert darzustellen.</definition></dokument>

<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="/"> <html> <head><title>XML</title></head> <body> <h1><xsl:value-of select="dokument/ueberschrift"/></h1> <p><xsl:value-of select="dokument/definition"/></p> </body> </html></xsl:template></xsl:stylesheet>

Formatierung mit XSLT

style.xsl

Page 100: Informationsdarstellung mit XML Klaus Becker 2008

100 Exkurs: Formatierung

<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="/"> <html> <head><title>XML</title></head> <body> <h1><xsl:value-of select="dokument/ueberschrift"/></h1> <p><xsl:value-of select="dokument/definition"/></p> </body> </html></xsl:template></xsl:stylesheet>

XSLT steht für Extensible Stylesheet Language Transformations. XSLT ist eine Sprache zur Transformation von XML-Dokumenten in andere XML-Dokumente, z. B. XHTML-Dokumente.

Für weitere Informationen und Beispiele siehe z. B.: http://de.selfhtml.org/xml/darstellung/index.htm

Page 101: Informationsdarstellung mit XML Klaus Becker 2008

101 Exkurs: XML-Schema

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE Schach-Spielzustand SYSTEM "schach1.dtd">

<Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

Schach-Spielzustand - Version 1:

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT Bauer (#PCDATA)><!ELEMENT Turm (#PCDATA)><!ELEMENT Springer (#PCDATA)><!ELEMENT Läufer (#PCDATA)><!ELEMENT Dame (#PCDATA)><!ELEMENT König (#PCDATA)><!ELEMENT amZug EMPTY>

Strukturbeschreibung mit einer DTD

Page 102: Informationsdarstellung mit XML Klaus Becker 2008

102

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE Schach-Spielzustand SYSTEM "schach1.dtd">

<Schach-Spielzustand> <schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Läufer>f5</Läufer> <Turm>f1</Turm> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

<!ELEMENT Schach-Spielzustand (schwarz, weiss)><!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)><!ELEMENT Bauer (#PCDATA)><!ELEMENT Turm (#PCDATA)><!ELEMENT Springer (#PCDATA)><!ELEMENT Läufer (#PCDATA)><!ELEMENT Dame (#PCDATA)><!ELEMENT König (#PCDATA)><!ELEMENT amZug EMPTY>

Exkurs: XML-Schema

Nachteile von DTD: zu unflexibel Strukturbeschreibung mit einer DTD

nur bestimmte Feldbezeichner erlaubt

mögliche Anzahl der Bauern: 0..8

Page 103: Informationsdarstellung mit XML Klaus Becker 2008

103 Exkurs: XML-Schema

<?xml version="1.0" encoding="iso-8859-1"?>

<Schach-Spielzustand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schach.xsd">

<schwarz> <Bauer>b7</Bauer> <Bauer>e7</Bauer> <Bauer>d6</Bauer> <Bauer>b5</Bauer> <Bauer>f4</Bauer> <Springer>c6</Springer> <Läufer>e5</Läufer> <Dame>c4</Dame> <König>d7</König> </schwarz> <weiss> <Bauer>h5</Bauer> <Bauer>f2</Bauer> <Bauer>g2</Bauer> <Turm>f1</Turm> <Läufer>f5</Läufer> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss></Schach-Spielzustand>

Schach-Spielzustand - Version 2: Strukturbeschreibung mit einem XML-Schema

xsi: XML-schema-instance

Page 104: Informationsdarstellung mit XML Klaus Becker 2008

104 Exkurs: XML-Schema

<?xml version="1.0" encoding="iso-8859-1"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="Schach-Spielzustand"> <xs:annotation> <xs:documentation>Spielbrett während eines Schachspiels</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="schwarz" minOccurs="1" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Bauer" minOccurs="0" maxOccurs="8"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-h][1-8]"></xs:pattern> </xs:restriction> </xs:simpleType> </xs:element> ... </xs:sequence> </xs:complexType> </xs:element> <xs:element name="weiss" minOccurs="1" maxOccurs="1">...</xs:element> </xs:sequence> </xs:complexType> </xs:element></xs:schema>

Schach-Spielzustand - Version 2:Schema-Definition mit e. XML-basierten Sprache

Page 105: Informationsdarstellung mit XML Klaus Becker 2008

105 Exkurs: XML-Schema

Validierung: z. B. mithttp://www.xmlvalidation.com/

Page 106: Informationsdarstellung mit XML Klaus Becker 2008

106 Exkurs: XML-Schema

"XML Schema ist eine Empfehlung des W3C zum Definieren von XML-Dokumentstrukturen. Anders als bei den klassischen XML-DTDs wird die Struktur in Form eines XML-Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen unterstützt.

XML Schema ist eine komplexe Schemasprache zur Beschreibung eines XML-Typsystems. Dieses XML-Typsystem umfasst die Spezifikation neuer XML-Elemente, deren Attribute, sowie deren Kindelemente. Im Gegensatz zu DTDs kann bei Verwendung von XML Schema zwischen dem Namen des XML-Typs und dem in der Instanz verwendeten XML-Tagnamen unterschieden werden.

Vermutlich werden DTDs irgendwann vollständig von XML-Schemata abgelöst. Allerdings sind XML-Schemata durch ihre erweiterten Möglichkeiten wesentlich komplexer und nicht so einfach ohne Hilfsmittel auszuwerten. ... Ein konkretes XML-Schema wird auch als eine XSD (XML-Schema-Definition) bezeichnet und hat üblicherweise die Dateiendung ".xsd"."siehe: http://de.wikipedia.org/wiki/XML_Schema

Page 107: Informationsdarstellung mit XML Klaus Becker 2008

107 Teil 7

Verarbeitung von XML-Dokumenten

Page 108: Informationsdarstellung mit XML Klaus Becker 2008

108

Verarbeitung von XML-Dokumenten

Die Verarbeitung von XML-Daten erfolgt in zwei Stufen, mit einem so genannten Parser und einer Anwendung.

Die Aufgabe des Parsers ist es, das vorhandene Dokument auf Wohlgeformtheit und Gültigkeit zu überprüfen und die Daten geeignet aufzubereiten (d. h. in einer bestimmten Weise intern darzustellen).

Eine Anwendung kann dann über eine geeignete Schnittstelle auf diese interne Darstellung zugreifen und das Dokument in einer bestimmten Weise verarbeiten (z. B.: erzeugt ein Browser eine grafische Seitendarstellung). Die Verarbeitung legt demnach erst die Bedeutung (Semantik) des Dokuments fest.

Page 109: Informationsdarstellung mit XML Klaus Becker 2008

109 Beispiel: Browser

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE html [ ... ]>

<html><head><title>Test</title> </head><body><h1>Weiterbildung am IFB</h1>...</html>

Grafische Aufbereitung (Festlegung

der Semantik)

Syntax- Analyse

OK!Parser

Anwendung

Page 110: Informationsdarstellung mit XML Klaus Becker 2008

110 Beispiel: Automatensimulator

<?xml version="1.0"?><!-- Created with JFLAP 4.0b13. --><structure>

<type>fa</type><!--The list of states.--><state id="0">

<x>60.0</x><y>59.0</y><initial />

</state>...<!--The list of transitions.--><transition>

<from>2</from><to>3</to><read>c</read>

</transition>...

</structure>

Simulation

Syntax- Analyse

OK!Parser

Anwendung

Eingabewort: [email protected]

Ergebnis: ok!

Page 111: Informationsdarstellung mit XML Klaus Becker 2008

111 Realisierung: Verweissucher

Die Verarbeitung von XML-Dokumenten soll hier zunächst mit einer einfachen Anwendung verdeutlicht werden.

Ein Verweissucher soll in einer XHTML-Seite sämtliche Verweise suchen und in Form einer Liste als Ergebnis zurückgeben.

Verweissucher

http://burg-kl.de/neuigkeiten.html

http://burg-kl.de/neuigkeiten/archiv.html

http://burg-kl.de/neuigkeiten/elternbrief.html

...

<?xml version="1.0" encoding="iso-8859-1" ?><!DOCTYPE html ...><html xmlns="...l" xml:lang="de"><head><title>BurgGymnasium | Home</title> ... </head><body><div id="headerlinks"> <h1>BurgGymnasium<br />Kaiserslautern</h1></div>...

Page 112: Informationsdarstellung mit XML Klaus Becker 2008

112 Realisierung: Verweissucher

Verweissucher

http://burg-kl.de/neuigkeiten.html

http://burg-kl.de/neuigkeiten/archiv.html

http://burg-kl.de/neuigkeiten/elternbrief.html

...

<?xml version="1.0" encoding="iso-8859-1" ?><!DOCTYPE html ...><html xmlns="...l" xml:lang="de"><head><title>BurgGymnasium | Home</title> ... </head><body><div id="headerlinks"> <h1>BurgGymnasium<br />Kaiserslautern</h1></div>...# verweissucher1.py

from xml.dom.minidom import *

dokument = parse("BurgGymnasiumHome.htm")

def verweissuche():

verweisknoten = dokument.getElementsByTagName("a")

verweisliste = []

for knoten in verweisknoten:

verweisliste = verweisliste + [knoten.getAttribute("href")]

return verweisliste

# Test

for verweis in verweissuche():

print verweis

Der folgende Quelltext zeigt eine Implementierung in Python.

Page 113: Informationsdarstellung mit XML Klaus Becker 2008

113 Realisierung: Automatensimulator

Um einen Einblick in die Verarbeitung von XML-Dokumenten zu gewinnen, soll hier ein eigener Automatensimulator entwickelt werden, der XML-Automatenbeschreibungen verarbeiten kann.

[email protected]

Simulator

Ok!

<?xml version="1.0"?><!-- Created with JFLAP 4.0b13. --><structure>

<type>fa</type><!--The list of states.--><state id="0">

<x>60.0</x><y>59.0</y><initial />

</state><state id="1">

<x>147.0</x><y>59.0</y>

</state>...<!--The list of transitions.--><transition>

<from>2</from><to>3</to><read>c</read>

</transition>...

</structure>

Page 114: Informationsdarstellung mit XML Klaus Becker 2008

114 Vorgehensweise

Schritt 1: Strukturbaum erzeugen

Schritt 2: Auf die Knoten des Strukturbaums zugreifen

<?xml version="1.0"?><!-- Created with JFLAP 4.0b13. --><structure> <type>fa</type> <!--The list of states.--> <state id="0"> <x>60.0</x> <y>59.0</y> <initial /> </state> ...

state

x

#text: 60.0

type

#text: fa

#comment:

#document

Id: 0

y

#text: 59.0

initial

#comment:

structure

Page 115: Informationsdarstellung mit XML Klaus Becker 2008

115

<?xml version="1.0"?><!-- Created with JFLAP 4.0b13. --><structure> <type>fa</type> <!--The list of states.--> <state id="0"> <x>60.0</x> <y>59.0</y> <initial /> </state> ...

Erzeugung des Strukturbaums

state

x

#text: 60.0

type

#text: fa

#comment:

#document

Id: 0

y

#text: 59.0

initial

#comment:

structure

Zunächst wird der XML-Quelltext mit Hilfe eines Parsers verarbeitet. Dabei wird ein sog. DOM-Objekt erzeugt, das den gesamten Strukturbaum verwaltet. >>> from xml.dom.minidom import *>>> dokument = parse(".../EmailDA1.jff")>>> dokument<xml.dom.minidom.Document instance at 0x0118AE40>

Python

DOM: Document Object Model (W3C-Standard)

Page 116: Informationsdarstellung mit XML Klaus Becker 2008

116 Zugriff auf den WurzelknotenDokument-knoten

>>> from xml.dom.minidom import *>>> dokument = parse(".../EmailDA1.jff")>>> dokument<xml.dom.minidom.Document instance at 0x0118AE40>>>> wurzel = dokument.documentElement>>> wurzel<DOM Element: structure at 0x1190c88>

Wurzelknoten

state

x

#text: 60.0

type

#text: fa

#comment:

#document

Id: 0

y

#text: 59.0

initial

#comment:

structureWurzel-

knoten

Page 117: Informationsdarstellung mit XML Klaus Becker 2008

117 Aufgabe

>>> from xml.dom.minidom import *>>> dokument = parse(".../EmailDA1.jff")>>> dokument<xml.dom.minidom.Document instance at 0x0118AE40>>>> wurzel = dokument.documentElement>>> wurzel<DOM Element: structure at 0x1190c88>>>> wurzel.nodeNameu'structure'

Testen Sie die Erzeugung des DOM-Objekts. Achten Sie darauf, den Pfad zur XML-Datei richtig einzugeben.

Page 118: Informationsdarstellung mit XML Klaus Becker 2008

118

Attribut-knoten

Navigation im Strukturbaum

state

x

#text: 60.0

type

#text: fa

#comment:

#document

y

#text: 59.0

initial

#comment:

structure

state

PreviousSibling

LastChild

ParentNode

NextSibling

Operationen:

Grafik aus: Introducing the Document Object Model using OpenXML (Part 1) by Craig Murphy

Text-knoten

Dokument-knoten

Element-knoten

Id: 0

Id: 1

FirstChild

Page 119: Informationsdarstellung mit XML Klaus Becker 2008

119 Navigation im DOM-Baum

Achtung:Zeilenumbrüche und Leerzeichen zwischen Tags werden mit zusätzlichen Text-Knoten erfasst.

>>> wurzel.firstChild<DOM Text node "

">>>> wurzel.firstChild.nextSibling<DOM Element: type at 0x1190d28>>>> wurzel.firstChild.nextSibling.nextSibling<DOM Text node "

">>>> wurzel.firstChild.nextSibling.nextSibling.nextSibling<DOM Comment node "The list o...">

Page 120: Informationsdarstellung mit XML Klaus Becker 2008

120 Aufgabe

>>> wurzel.firstChild<DOM Text node "

">>>> wurzel.firstChild.nextSibling<DOM Element: type at 0x1190d28>>>> wurzel.firstChild.nextSibling.nextSibling<DOM Text node "

">>>> wurzel.firstChild.nextSibling.nextSibling.nextSibling<DOM Comment node "The list o...">

Navigieren Sie sich durch den Baum bis zum ersten "state"-Knoten.

Page 121: Informationsdarstellung mit XML Klaus Becker 2008

121

>>> wurzel.childNodes[<DOM Text node "

">, <DOM Element: type at 0x1190d28>, <DOM Text node "">, <DOM Comment node "The list o...">, <DOM Text node "

...">]>>> wurzel.childNodes[2]<DOM Text node "

">>>> wurzel.childNodes[3]<DOM Comment node "The list o...">>>> wurzel.childNodes[5]<DOM Element: state at 0x1190e40>>>> wurzel.childNodes[5].firstChild<DOM Text node "

">>>>

Navigation im DOM-Baum

Page 122: Informationsdarstellung mit XML Klaus Becker 2008

122

>>> wurzel.childNodes[<DOM Text node "

">, <DOM Element: type at 0x1190d28>, <DOM Text node "">, <DOM Comment node "The list o...">, <DOM Text node "

...">]>>> wurzel.childNodes[2]<DOM Text node "

">>>> wurzel.childNodes[3]<DOM Comment node "The list o...">>>> wurzel.childNodes[5]<DOM Element: state at 0x1190e40>>>> wurzel.childNodes[5].firstChild<DOM Text node "

">>>>

Aufgabe

Navigieren Sie sich durch den Baum bis zum "initial"-Knoten.

Page 123: Informationsdarstellung mit XML Klaus Becker 2008

123

>>> wurzel.childNodes[5]<DOM Element: state at 0x1190e40>>>> wurzel.childNodes[5].childNodes[1]<DOM Element: x at 0x1190f30>>>> wurzel.childNodes[5].childNodes[1].firstChild<DOM Text node "60.0">>>> wurzel.childNodes[5].childNodes[1].firstChild.nodeValueu'60.0'>>> wurzel.childNodes[5].nodeNameu'state'>>> wurzel.childNodes[5].nodeValue>>>

Zugriff auf die Knotendaten

Operationen:

nodeName: Name des Knotens

nodeValue: Wert des Knotens

Page 124: Informationsdarstellung mit XML Klaus Becker 2008

124

>>> wurzel.childNodes[5]<DOM Element: state at 0x1190e40>>>> wurzel.childNodes[5].childNodes[1]<DOM Element: x at 0x1190f30>>>> wurzel.childNodes[5].childNodes[1].firstChild<DOM Text node "60.0">>>> wurzel.childNodes[5].childNodes[1].firstChild.nodeValueu'60.0'>>> wurzel.childNodes[5].nodeNameu'state'>>> wurzel.childNodes[5].nodeValue>>>

Aufgabe

Wie erhält man den neuen Zustand, wenn im Zustand "2" die Eingabe "c" erfolgt. Bestimmen Sie diesen neuen Zustand mit geeigneten Navigations- und Zugriffsoperationen.

Page 125: Informationsdarstellung mit XML Klaus Becker 2008

125

>>> wurzel.childNodes[5]<DOM Element: state at 0x1190e40>>>> wurzel.childNodes[5].attributes<xml.dom.minidom.NamedNodeMap object at 0x011B7F08>>>> wurzel.childNodes[5].attributes.item(0)<xml.dom.minidom.Attr instance at 0x01190E90>>>> wurzel.childNodes[5].attributes.item(0).nodeValueu'0'>>> wurzel.childNodes[5].attributes.item(0).nodeNameu'id'

Zugriff auf die Attributwerte

Operationen:

attributes: Attributobjekte

item(...): Zugriff auf den ...-ten Knoten

Page 126: Informationsdarstellung mit XML Klaus Becker 2008

126

>>> wurzel.childNodes[5]<DOM Element: state at 0x1190e40>>>> wurzel.childNodes[5].attributes<xml.dom.minidom.NamedNodeMap object at 0x011B7F08>>>> wurzel.childNodes[5].attributes.item(0)<xml.dom.minidom.Attr instance at 0x01190E90>>>> wurzel.childNodes[5].attributes.item(0).nodeValueu'0'>>> wurzel.childNodes[5].attributes.item(0).nodeNameu'id'

Aufgabe

Wie erhält man den Attributwert des zweiten Zustands?

Page 127: Informationsdarstellung mit XML Klaus Becker 2008

127

from xml.dom.minidom import *

dokument = parse("...")

def anfangszustand(): wurzel = dokument.documentElement for knoten1 in wurzel.childNodes: if knoten1.nodeName == "state": for knoten2 in knoten1.childNodes: if knoten2.nodeName == "initial": return knoten1.attributes.item(0).nodeValue

print anfangszustand()

Bestimmung des Anfangszustands

Pfad / Dateiname ergänzen!

Page 128: Informationsdarstellung mit XML Klaus Becker 2008

128

def naechsterZustand(zustand, eingabe): ...

# liefert den Folgezustand, wenn bei dem gegebenem Zustand die # Eingabe verarbeitet wird.

def endzustand(zustand): ...

# liefert den Wert True / False, wenn der eingegebene Zustand # ein / kein Endzustand ist

Aufgabe

Ergänzen Sie die Funktionsdefinitionen.

Page 129: Informationsdarstellung mit XML Klaus Becker 2008

129

def naechsterZustand(zustand, eingabe): wurzel = dokument.documentElement for knoten1 in wurzel.childNodes: if knoten1.nodeName == "transition": for knoten2 in knoten1.childNodes: if knoten2.nodeName == "from": hfrom = knoten2.firstChild.nodeValue if knoten2.nodeName == "to": hto = knoten2.firstChild.nodeValue if knoten2.nodeName == "read": hread = knoten2.firstChild.nodeValue if (hfrom == zustand) and (hread == eingabe): return hto return "?"

Lösungsvorschläge

def endzustand(zustand): wurzel = dokument.documentElement for knoten1 in wurzel.childNodes: if knoten1.nodeName == "state": if knoten1.attributes.item(0).nodeValue == zustand: for knoten2 in knoten1.childNodes: if knoten2.nodeName == "final": return True return False

Page 130: Informationsdarstellung mit XML Klaus Becker 2008

130

# automatensimulator2.pyfrom xml.dom.minidom import *dokument = parse("D:/Python/XML/EmailDA1.jff")

def anfangszustand(): ...def naechsterZustand(zustand, eingabe): ...def endzustand(zustand): ...

def verarbeiten(zeichenkette): zustand = anfangszustand() for zeichen in zeichenkette: zustand = naechsterZustand(zustand, zeichen) if endzustand(zustand): return True else: return False

# Testprint "[email protected]", verarbeiten("[email protected]")print "acb@bca", verarbeiten("acb@bca")

Simulator

Page 131: Informationsdarstellung mit XML Klaus Becker 2008

131 DOM-Schnittstelle

"Das Document Object Model (DOM) ist eine Programmierschnittstelle (API) für den Zugriff auf HTML- oder XML-Dokumente. Sie wird vom World Wide Web Consortium definiert.

Im Sinne der objektorientierten Programmierung besteht das DOM aus einem Satz von Klassen zusammen mit deren Methoden und Attributen. Es erlaubt Computerprogrammen, dynamisch den Inhalt, die Struktur und das Layout eines Dokuments zu verändern."

Siehe: http://de.wikipedia.org/wiki/Document_Object_Model

DOM-Knotenbaum

state

x

#text: 60.0

type

#text: fa

#comment:

#document

y

#text: 59.0

initial

#comment:

structure

state

PreviousSibling

LastChild

ParentNode

NextSibling

Id: 0

Id: 1

FirstChild

Page 132: Informationsdarstellung mit XML Klaus Becker 2008

132 DOM-Schnittstelle

Attribute der Klasse "Node":

childNodes Returns a NodeList of child nodes for a node

firstChild Returns the first child of a node

lastChild Returns the last child of a node

nextSibling Returns the node immediately following a node

nodeName Returns the name of a node, depending on its type

nodeType Returns the type of a node

nodeValue Sets or returns the value of a node, depending on its type

parentNode Returns the parent node of a node

previousSibling Returns the node immediately before a node

... (siehe: http://www.w3schools.com/dom/dom_node.asp)

state

x

#text: 60.0

type

#text: fa

#comment:

#document

y

#text: 59.0

initial

#comment:

structure

state

PreviousSibling

LastChild

ParentNode

NextSibling

Id: 0

Id: 1

FirstChild

Page 133: Informationsdarstellung mit XML Klaus Becker 2008

133 Delphi-Implementierung

„Open XML is a collection of XML and Unicode tools and components for the Delphi/Kylix™ programming language. All packages are freely available including source code.“

Siehe: http://www.philo.de/xml/index.shtml

Page 134: Informationsdarstellung mit XML Klaus Becker 2008

134 Delphi-Anwendung

Eine Delphi-basierte Implementierung eines Automatensimulators unter Verwendung von OpenXML finden Sie in den Materialien zum Weiterbildungslehrgang X:

http://informatik.bildung-rp.de/weiterbildungsmaterial/lehrgang-x-2005-2008/kurs-4.html

Weitere Hinweise zur Benutzung von OpenXML finden Sie hier:

http://www.hsg-kl.de/faecher/inf/theorie/formal/xml/openxml/index.php

Mit anderen gängigen Programmiersprachen kann man natürlich auch auf den DOM-Baum zugreifen. Wie das mit JavaScript geht wird hier gezeigt:

http://www.w3schools.com/dom/dom_parser.asp

Page 135: Informationsdarstellung mit XML Klaus Becker 2008

135 Teil 8

XML im Informatikunterricht

Page 136: Informationsdarstellung mit XML Klaus Becker 2008

136 Muss man das alles wissen?

POP

SQL

OOA

RSA

FTP

GPL

PBMRFC

QbE

CRC

XMLPostOfficeProtocol

StructuredQueryLanguage

ObjektOrientierteAnalyse

RivestShamirAdleman

FileTranferProtocol

GeneralPublicLicense

PortableBitMap

RequestForComment

QueryByExample

CyclicRedundancyCheck

eXtensibleMarkupLanguage

L/S

Page 137: Informationsdarstellung mit XML Klaus Becker 2008

137

Lehrplan für das Grundfach Informatik

fundamentale Idee

XML

unterrichtliche Umsetzung

Page 138: Informationsdarstellung mit XML Klaus Becker 2008

138 Fundamentale Ideen

fachliche Bedeutung

Darstellung mit formalen Sprachen

Vermittelbarkeit

Eine fundamentale Idee bzgl. einer Gegenstandsbereichs ist ein Denk-, Handlungs-, Beschreibungs- oder Erklärungsschema, das

in verschiedenen Gebieten des Bereichs vielfältig anwendbar oder erkennbar ist. (Horizontalkriterium)

auf jedem intellektuellen Niveau aufgezeigt und vermittelt werden kann. (Vertikalkriterium)

in der Entwicklung des Bereichs deutlich wahrnehmbar ist und längerfristig relevant bleibt. (Zeitkriterium)

einen Bezug zu Sprache und Denken des Alltags und der Lebenswelt besitzt. (Sinnkriterium)

Vermittelbarkeit

fachliche Bedeutung

Vgl.: Schubert / Schwill: Didaktik der Informatik, S. 86 ff

Nach: J. S. Bruner: The Process of Education. 1960.

Page 139: Informationsdarstellung mit XML Klaus Becker 2008

139

Fachgegenstand → Lerngegenstand

Formale Sprachen

Klasse 1: Anwendung auch außerhalb der Informatik (Bsp.: Problemlösestrategie)

Klasse 2: Charakteristisch für alle Informatiksysteme (Bsp.: Komplexität)

Klasse 3: Relevant für eine Klasse von Informatiksystemen (Bsp.: Datenstruktur)

Klasse 4: Relevant für ein spezielles System (Bsp.: Syntax einer Programmiersprache)

Je weiter oben / unten ein Fachgegenstand in der Klassifikation eingeordnet werden kann, desto eher / weniger eignet er sich als Lerngegenstand.

Nach P. Hubwieser: Didaktik der Informatik, S. 83 ff

Validierer

XML

ODF

Inhaltliche Ausrichtung des Unterrichts an fundamentalen Fachkonzepten der Informatik

Page 140: Informationsdarstellung mit XML Klaus Becker 2008

140 Problemorientierter Unterricht

Gestaltung problemorientierter Lernumgebungen

Situiert und anhand authentischer Probleme lernen: Lernen an aktuelle Probleme, authentische Fälle oder persönliche Erfahrungen anknüpfen.

In multiplen Kontexten lernen:Gelerntes in unterschiedlichen Anwendungssituationen erproben.

Unter multiplen Perspektiven lernen:Gelerntes unter verschiedenen Sichtweisen betrachten.

In einem sozialen Kontext lernen:Probleme gemeinsam mit einem Partner oder in einer Gruppe bearbeiten.

...

Siehe: Hense, Mandl, Gräsel: Problemorientiertes Lernen. In. CuU 44/2001, S. 6ff.

Orientierung an konkreten Problemstellungen bei der Gestaltung des Unterrichts.

Page 141: Informationsdarstellung mit XML Klaus Becker 2008

141 Kompetenzorientierter Unterricht

Kompetenz: erlernbare, kognitive Fähigkeit, bestimmte Probleme zu lösen bzw. die Bereitschaft, diese Fähigkeit in variablen Situationen verantwortungsvoll und erfolgreich zu nutzen

Ein Schüler besitzt also dann Kompetenz, wenn er seine Fähigkeiten nutzen kann, auf vorhandenes Wissen zurückgreifen und sich auch neues Wissen beschaffen kann, zentrale Zusammenhänge des jeweiligen Faches versteht, angemessene Handlungsentscheidungen treffen kann, bei der Durchführung der Handlung auf verfügbare Fähigkeiten zurückgreift, diese Gelegenheiten zum Sammeln von Erfahrungen nutzt und aufgrund handlungsbegleitender Kognitionen genügend Motivation zu angemessenem Handeln hat.

Siehe: Hense, Mandl, Gräsel: Problemorientiertes Lernen. In. CuU 44/2001, S. 6ff.

Kompetenzentwicklung erfordert handlungsorientierte Auseinandersetzung mit Fachkonzepten in geeigneten (speziellen) Kontexten

Information zur Weiterverarbeitung in Informatiksystemen aufbereiten ... (Grundfach-LP)

Page 142: Informationsdarstellung mit XML Klaus Becker 2008

142 Thesen

XML ist heute schon Standard bei der strukturierten Darstellung von Information und sollte daher im IU thematisiert werden.

XML ist die Basis von XHTML (DOCTYPE ...). Eine kurze Behandlung trägt zum vertieften Verständnis von XHTML bei.

XML ist ein guter Ausgangspunkt zur Behandlung des Themas "formale Sprachen" (Grammatik, Parser, ...).

XML kann (im LK) als Ausgangspunkt zur Behandlung des Themas "Bäume" genutzt werden.

Mit XML können fundamentale Ideen der Informatik mit sehr aktuellen Unterrichtsbeispielen (WML, ...) behandelt werden ("IU am Puls der Zeit").

Page 143: Informationsdarstellung mit XML Klaus Becker 2008

143 Literaturhinweise

Folgende Materialien wurden hier benutzt:

J.-C. Hanke: XML leicht & verständlich. KnowWare.

H. Vonhoegen: Einstieg in XML. Galileo Computing 2005.

G. Born: XML. Markt+Technik 2005.

M. Näf: Einführung in XML. http://www.swisseduc.ch/informatik/programmiersprachen/xml_einfuehrung/index.html

M. Jeckle: Vorlesung XML.http://www.jeckle.de/vorlesung/xml/script.html

XML in 10 Punkten:http://www.w3c.de/Misc/XML-in-10-Punkten.html

SELFHTML:http://de.selfhtml.org/xml/index.htm

Weitere benutzte Materialien sind auf den jeweiligen Folien zitiert.