Powerpoint-Präsentation

Werbung
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>
3
Teil 1
Schach dem König
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.
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.
6
Schach-Spielzustände
Will man den gespeicherten Spielzustand mit anderen Schachprogrammen
verwenden, so ergeben sich Schwierigkeiten.
7
Schach-Spielzustände
Ein Blick hinter die Kulissen soll klären, wodurch die Schwierigkeiten
zustande kommen.
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
9
schwarze Figuren:
Bauer: (p)awn
Turm: (r)ook
Springer: k(n)ight
Läufer: (b)ishop
Dame: (q)ueen
König: (k)ing
weiße Figuren:
Bauer: (P)awn
Turm: (R)ook
Springer: k(N)ight
Läufer: (B)ishop
Dame: (Q)ueen
König: (K)ing
Schach-Spielzustände
........
.p.kpQ..
..np....
.p..b.BP
..q..p..
........
.....PP.
.....RK.
W0000
10
Schach-Spielzustände
schwarze Figuren:
Bauer: (p)awn
Turm: (r)ook
Springer: k(n)ight
Läufer: (b)ishop
Dame: (q)ueen
König: (k)ing
weiße Figuren:
Bauer: (P)awn
Turm: (R)ook
Springer: k(N)ight
Läufer: (B)ishop
Dame: (Q)ueen
König: (K)ing
8/1p1kpQ2/2np4/1p2b1BP/2q2p2/8/5PP1/5RK1 w -- - 1 30
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
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:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
12
Schach-Spielzustände
"Weiß ist am Zug. ..."
Information
Zur Darstellung der Information (Brettstellungen im
Schach) wird eine formale Sprache (FEN) benutzt.
Repräsentieren
Darstellen
Die Wörter dieser Sprache müssen nach bestimmten
Regeln gebildet werden. Diese Regeln legen die
Syntax der Sprache fest.
Daten
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
13
Schach-Spielzustände
"Weiß ist am Zug. ..."
Information
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.
Interpretieren
Deuten
Daten
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
14
Schach-Spielzustände
http://de.wikipedia.org/wiki/Bild:Meister_der_
Weltenchronik_001.jpg
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
http://de.wikipedia.org/wiki/Bild:Bruegheltower-of-babel.jpg
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
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).
16
17
Teil 2
Datenformate Ein Blick hinter die Kulissen
18
Darstellung von Schachspielen
Unten finden Sie verschiedene Formate zur Darstellung von Schachspielen.
Welche Vor- und Nachteile haben diese Darstellungen?
[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"]
ChessGML
PGN
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7
6. Re1 b5 7. Bb3 d6 8. c3
O-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 Kxf7
27. 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 Kb5
40. Rd6 Kc5 41. Ra6 Nf2 42. g4 Bd3 43. Re6 1/2-1/2
Quelle: Wikipedia
19
Datenformate für Schachspiele
ChessGML: The Why and Wherefore
Andreas Saremba
Chapter 1. Brave new chess world
Computers 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)
20
Datenformate für Schachspiele
Subject: XMl for chess
Date:
2004-08-29 16:09:25
From:
KymFarnik
As 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, kym
Quelle: http://www.xml.com/cs/user/view/cs_msg/2194
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.
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:
23
Darstellung des Textes
... als OpenOffice-Datei (siehe "dom_koeln.odt"). Mit einem Text-Editor
geöffnet sieht diese Datei noch unverständlicher aus.
24
Darstellung des Textes
Wenn man die von OpenOffice erzeugte Datei "dom_koeln.odt" entpackt,
klärt sich einiges (siehe "content.xml").
25
Darstellung des Textes
... als DocBook-Datei (siehe "dom_koeln.xml"). Hier kann man deutlich die
Struktur des Textes ablesen.
26
Formate zur Informationsdarstellung
Repräsentieren
doc:
proprietäres
Format
Interpretieren
Repräsentieren
Interpretieren
ODF:
standardisiertes
Format
27
Standardisierte Formate
Macht über die Dokumente
http://www.cio.de/knowledgecenter/open_source/852833/index3.html
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üroSoftware-Pakete Openoffice, Staroffice, Neooffice und Koffice. Hinzu kommt die Online-Textund 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 Anerkennung
Fü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.
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
29
Standardisierung
http://www.wdr.de/tv/q21/1058.0.phtml
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.
30
Standardisierung
Users tend to think about software in terms of functionality and usability; they use to underestimate 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
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>
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
33
Datenformate für Struktogramme
StruktEdit-Datei
betrachtet mit einem
Hex-Editor
NSCEdit-Datei
betrachtet mit
einem Text-Editor
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.
35
Datenformate für Automaten
erstellt mit
JFlap40b14
erstellt mit
JFlap40b8
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.
37
Datenformat für geometrische Konstr.
...
<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>...
hinter den Kulissen
von GeoGebra
38
Aufgabe
Das folgende XML-Dokument soll den aktuellen Schach-Spielzustand
darstellen. Welche Vor- und Nachteile hat diese Darstellung?
8/1p1kpQ2/2np4/1p2b1BP/2q2p2/8/5PP1/5RK1 w -- - 1 30
<?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>
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
40
Gute Standards
Was ist ein guter Standard? Ein Essay über die Designprinzipien des W3C
Autor: Bert Bos
Deutsche Übersetzung: Michael Jendryschik
Binär- oder Textformat
Die 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/
41
Gute Standards
Was ist ein guter Standard? Ein Essay über die Designprinzipien des W3C
Autor: Bert Bos
Deutsche Übersetzung: Michael Jendryschik
Lesbarkeit
Eine 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/
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 Daten
2. XML sieht ein wenig wie HTML aus
3. XML ist Text, aber nicht zum Lesen
4. XML ist vom Design her ausführlich
5. XML ist eine Familie von Techniken
6. XML ist neu, aber nicht so neu
7. XML überführt HTML in XHTML
8. XML ist modular
9. XML ist die Basis für RDF und das Semantic Web
10. XML ist lizenzfrei, plattformunabhängig und gut unterstützt
siehe: http://www.w3c.de/Misc/XML-in-10-Punkten.html
43
Teil 3
Grundlagen von XML
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>
45
Hierarchische Baumstruktur
Die Strukturierung erfolgt in Form eines Baumes.
<?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>
Darstellung im
Editor
Anzeige mit
einem Browser
46
Der Baum der Elemente
 Grundbausteine eines XMLDokuments sind die XML-Elemente.
Wurzelelement
 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 XMLDokuments ist das Wurzelelement,
das alle anderen Elemente in sich
einschließt.
Element als
Container
Element mit
Zeicheninhalt
Ein XML-Dokument vermischt Inhalte mit Informationen über diese Inhalte
(Meta-Information).
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 TagNamen 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 TagSchreibweise benutzt.
Anfangstag
Endtag
leeres Element
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
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
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.
<?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>
 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.
51
Wohlgeformtheit
Ein XML-Dokument, das alle
syntaktischen Bedingungen
erfüllt, heißt wohlgeformt.
beachte:
Nur wohlgeformte XMLDokumente werden vom Browser
in Baumform angezeigt.
wohlgeformte XML-Dokumente
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
...
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>
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 > 0</span>
</text>
<sequence>
<statement>
<text>
<span>h := x mod y</span>
</text>
</statement>
...
</sequence>
</whileloop>
...
</nsc>
Testen Sie auch, wie die Anwendung
reagiert, wenn man zusätzliche
Elemente einführt.
weglassen
55
Aufgabe
Eine Bank möchte Überweisungen mit Hilfe von XML strukturiert darstellen.
Entwerfen Sie ein passendes XML-Dokument.
56
Aufgabe
Entwickeln Sie ein XML-Dokument, mit dem man Informationen über eine
Schulklasse / ein Lehrerkollegium erfassen kann.
Aufgabe
57
Graphen treten in sehr vielen Anwendungen auf. Entwickeln Sie ein XMLDokument, mit dem man die Information eines Graphen strukturiert
darstellen kann.
KO
54
128
RB
28
35
MZ
BI
98
33
35
TR
AZ
36
48
116
FT
KL
48
31
SP
58
59
Teil 4
Dokumenttypen und ihre Validierung
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.
Zielsetzung:
Im Folgenden sollen Verfahren
vorgestellt werden, mit denen der
Dokumenttyp präzise beschrieben
werden kann.
<?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 > 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>
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>
62
Dokumenttyp
Das Wurzelelement hat den Namen
"Schach-Spielzustand".
Ein Element vom Typ "SchachSpielzustand" 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"?>
<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>
63
Dokumenttypdefinition
Das Wurzelelement hat den Namen
"Schach-Spielzustand".
Ein Element vom Typ "SchachSpielzustand" 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
<!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>
<?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/> formale Beschreibung des
</weiss>
Dokumenttyps
</Schach-Spielzustand>
64
Dokumenttypdefinition
Eine Dokumenttypdefinition
(DTD) legt eine Klasse von
Dokumenten fest, die alle vom
gleichen Typ sind.
Dokumenttypdefinition
Eine Dokumenttypdefinition
beschreibt die Struktur eines
Dokuments mit Hilfe einer
Grammatik. Eine DTD legt
somit eine neue Sprache zur
Informationsbeschreibung
fest.
<!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>
<?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>
65
Einbindung einer DTD
 Eine Dokumenttypdefinition
kann direkt in das XML-Dokument
nach dem XML-Prolog
eingebunden werden (interne
DTD).
<?xml version="1.0" encoding="iso-8859-1"?>
 Eine Dokumenttypdefinition
kann auch über eine Referenz auf
eine Datei mit dem XMLDokument verbunden werden
(externe DTD).
<?xml version="1.0" encoding="iso-8859-1"?>
 Mit dem Schlüsselwort PUBLIC
wird auf eine veröffentlichte DTD
verwiesen.
 Als Name der DTD wird der
Name d. Wurzelelement benutzt.
<!DOCTYPE Schach-Spielzustand [
...]>
<Schach-Spielzustand>
...
</Schach-Spielzustand>
interne DTD
<!DOCTYPE Schach-Spielzustand SYSTEM
"schach1.dtd">
<Schach-Spielzustand>
...
</Schach-Spielzustand>
externe DTD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd">
<html>
...
externe DTD
</html>
<!DOCTYPE Name [...]>
66
Deklaration von Elementen
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
Elementtyp-Deklaration
<!ELEMENT Name Inhaltsmodell>
<!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>
Inhaltsmodelle
67
Inhaltsmodell
Beschreibung
Elementinhalt
Das Element enthält ausschließlich Unterelemente.
<!ELEMENT Schach-Spielzustand (schwarz, weiss)>
<Schach-Spielzustand><schwarz>...<weiss>...</Schach-Spielzustand>
#PCDATA
Das Element enthält nur Zeichendaten.
<!ELEMENT Bauer (#PCDATA)>
<Bauer>e4</Bauer>
gemischter Inhalt
Das Element kann Zeichendaten und Unterelemente enthalten
<!ELEMENT anrede (#PCDATA?, vormame, name)>
<anrede>Frau<vorname>Christiane</vorname><name>Meier</name></anrede>
EMPTY
Das Element hat keinen Inhalt.
<!ELEMENT anZug EMPTY>
<amZug/>
ANY
Das Element kann beliebige Inhalte haben.
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
>
69
Deklaration von Attributlisten
<!ATTLIST Elementname
Attributname Attributtyp Vorgabewert
Attributname Attributtyp Vorgabewert
Attributname Attributtyp Vorgabewert
...
>
<!ATTLIST Bauer
Spalte CDATA #REQUIRED
Zeile CDATA #REQUIRED
>
<!ATTLIST lehrer
geschlecht CDATA #REQUIRED
amtsbez CDATA #IMPLIED
>
Attributlisten-Deklaration
CDATA: nur einfache Zeichenketten erlaubt, keine Tags
...
#REQUIRED: Attributwert muss in jeder Elementinstanz vorkommen
#IMPLIED: Attributwert kann optional in einer Elementinstanz vorkommen
...
70
Gültigkeit
Ein 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.
<!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>
<?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>
71
Validierung
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.
http://www.validome.org/xml/validate/
72
Validierung
Viele XML-Editoren haben XML-Parser integriert.
Open XML Editor
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>
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>
75
Aufgabe
Entwickeln Sie eine DTD für Automatenbeschreibungen. Die von JFlap
erzeugten XML-Beschreibungen sollen dabei als gültig erkannt werden.
76
Aufgabe
Entwickeln Sie eine DTD für Struktogramme. Die von NSCEdit erzeugten
XML-Beschreibungen sollen dabei als gültig erkannt werden.
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>
78
79
Teil 5
XML-Vokabulare
80
XML-Vokabulare
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 BackusNaur-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)
Regeln zur Festlegung der
Lexik und Syntax von MyHTML
<!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 >
]>
81
XHTML
XHTML ist die XML-konforme Neufassung von HTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.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
82
Aufgaben
Aufgabe 1
Laden 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 2
Informieren Sie sich über den sog. DOCTYPE-switch. Sie können auch nach
dem Stichwort "Quirks-Modus" suchen.
SVG
83
"Scalable Vector Graphics (SVG, deutsch Skalierbare Vektorgrafiken) ist ein
Standard zur Beschreibung zweidimensionaler Vektorgrafiken in der XMLSyntax." (wikipedia)
<?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
84
Aufgaben
Aufgabe 1
Testen Sie zunächst, ob ihr Browser SVG-Dateien anzeigt. Benutzen Sie eine
der mitgelieferten svg-Dateien.
Aufgabe 2
Unter 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.
85
"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 XMLSprachen (z. B. XHTML)
werden in MathML die Inhalte
eines Dokumentes in einer
logischen Struktur unabhängig
von ihrer graphischen
Gestaltung abgelegt."
(wikipedia)
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>
86
Aufgaben
Aufgabe 1
Testen Sie zunächst, ob ihr Browser MATHML-Dateien anzeigt. Wenn Sie
Firefox benutzen, müssen Sie evtl. weitere Zeichensätze installieren.
Aufgabe 2
Versuchen Sie, einfache Formeln mit MATHML zu erstellen.
Aufgabe 3
Das Dokument in "test3.xml" zeigt, wie man MATHML in XHTML einbettet.
Wie wird es gemacht?
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
88
Aufgaben
Aufgabe 1
Installieren Sie den Handy-Emulator. Konfigurieren Sie ihn so, dass WMLDokumente von einem lokalen Server abgerufen werden können.
Informieren Sie sich in der mitgelieferten WML-Kurzeinführung, wie WMLDokumente aufgebaut werden. Erstellen Sie auch eine einfache WML-Datei.
89
Aufgaben
Aufgabe 2
Sie 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"
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.
91
Teil 6
Exkurs:
Namensräume, Formatierung,
Strukturbeschreibung
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?
...
93
Exkurs: Namensräume
Beispiel 1:
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
Namensraum: Ansammlung von
</head>
Namen für Elemente und Attribute
<body>
<h1>Überschrift</h1>
<p>Absatz</p>
</body>
</html>
<?xml version="1.0" encoding="ISO-8859-1"?>
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Überschrift</h1>
<p>Absatz</p>
</body>
</html>
94
Exkurs: Namensräume
Beispiel 2:
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
Namensraumdeklaration
</head>
<body>
<h1>Überschrift</h1>
<p>Absatz</p>
</body>
Präfix als Kurzorm
URI als weltweit eindeutiger Bezeichner
</html>
<?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>
95
Exkurs: Namensräume
Beispiel 3:
<?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">
mehrere Namensräume
<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>
96
Exkurs: Namensräume
"In Dokumenten, die unterschiedliches Markup-Vokabular enthalten,
können Probleme mit der Erkennung und Kollisionen auftreten. SoftwareModule 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
97
Beispiel 1:
Exkurs: Formatierung
keine Formatierungsangabe
<?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>
98
Exkurs: Formatierung
Beispiel 2:
Formatierung mit CSS
<?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>
ueberschrift{
color: blue;
font-weight: bold;
}
definition{
color: green;
}
style.css
99
Beispiel 3:
Exkurs: Formatierung
Formatierung mit XSLT
<?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>
style.xsl
</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>
100
Exkurs: Formatierung
XSLT steht für Extensible Stylesheet Language Transformations. XSLT ist
eine Sprache zur Transformation von XML-Dokumenten in andere XMLDokumente, z. B. XHTML-Dokumente.
<?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>
Für weitere Informationen und Beispiele siehe z. B.: http://de.selfhtml.org/xml/darstellung/index.htm
101
Exkurs: XML-Schema
Schach-Spielzustand - Version 1:
Strukturbeschreibung mit einer DTD
<?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>
<!ELEMENT Schach-Spielzustand (schwarz, weiss)>
<Bauer>g2</Bauer>
<!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)>
<Läufer>f5</Läufer>
<!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)>
<Turm>f1</Turm>
<!ELEMENT Bauer (#PCDATA)>
<Dame>f7</Dame>
<!ELEMENT Turm (#PCDATA)>
<König>g1</König>
<!ELEMENT Springer (#PCDATA)>
<amZug/> <!ELEMENT Läufer (#PCDATA)>
</weiss>
<!ELEMENT Dame (#PCDATA)>
</Schach-Spielzustand>
<!ELEMENT König (#PCDATA)>
<!ELEMENT amZug EMPTY>
102
Exkurs: XML-Schema
Nachteile von DTD: zu unflexibel
Strukturbeschreibung mit einer DTD
<?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>
nur bestimmte Feldbezeichner erlaubt
<Bauer>b5</Bauer>
<Bauer>f4</Bauer>
mögliche Anzahl der Bauern: 0..8
<Springer>c6</Springer>
<Läufer>e5</Läufer>
<Dame>c4</Dame>
<König>d7</König>
</schwarz>
<weiss>
<Bauer>h5</Bauer>
<Bauer>f2</Bauer>
<!ELEMENT Schach-Spielzustand (schwarz, weiss)>
<Bauer>g2</Bauer>
<!ELEMENT schwarz (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)>
<Läufer>f5</Läufer>
<!ELEMENT weiss (Bauer*, Turm*, Springer*, Läufer*, Dame*, König, amZug?)>
<Turm>f1</Turm>
<!ELEMENT Bauer (#PCDATA)>
<Dame>f7</Dame>
<!ELEMENT Turm (#PCDATA)>
<König>g1</König>
<!ELEMENT Springer (#PCDATA)>
<amZug/> <!ELEMENT Läufer (#PCDATA)>
</weiss>
<!ELEMENT Dame (#PCDATA)>
</Schach-Spielzustand>
<!ELEMENT König (#PCDATA)>
<!ELEMENT amZug EMPTY>
103
Exkurs: XML-Schema
Schach-Spielzustand - Version 2:
Strukturbeschreibung mit einem 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>
xsi: XML-schema-instance
104
Exkurs: XML-Schema
Schach-Spielzustand - Version 2:
Schema-Definition mit e. XML-basierten Sprache
<?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>
105
Validierung: z. B. mit
Exkurs: XML-Schema
http://www.xmlvalidation.com/
106
Exkurs: XML-Schema
"XML Schema ist eine Empfehlung des W3C zum Definieren von XMLDokumentstrukturen. 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 (XMLSchema-Definition) bezeichnet und hat üblicherweise die Dateiendung
".xsd"."
siehe: http://de.wikipedia.org/wiki/XML_Schema
107
Teil 7
Verarbeitung von XML-Dokumenten
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.
109
Beispiel: Browser
Parser
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
[
...
]
>
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Weiterbildung am IFB</h1>
...
</html>
SyntaxAnalyse
Grafische
Aufbereitung
(Festlegung
der Semantik)
Anwendung
OK!
110
Beispiel: Automatensimulator
Eingabewort: [email protected]
<?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>
Parser
SyntaxAnalyse
OK!
Simulation
Anwendung
Ergebnis: ok!
111
Realisierung: Verweissucher
Die Verarbeitung von XMLDokumenten 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.
<?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>
...
Verweissucher
http://burg-kl.de/neuigkeiten.html
http://burg-kl.de/neuigkeiten/archiv.html
http://burg-kl.de/neuigkeiten/elternbrief.html
...
Realisierung: Verweissucher
112
Der folgende Quelltext zeigt eine
Implementierung in Python.
<?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():
Verweissucher
verweisknoten = dokument.getElementsByTagName("a")
verweisliste = []
for knoten in verweisknoten:
verweisliste = verweisliste + [knoten.getAttribute("href")]
return verweisliste
# Test
for verweis in verweissuche():
print verweis
http://burg-kl.de/neuigkeiten.html
http://burg-kl.de/neuigkeiten/archiv.html
http://burg-kl.de/neuigkeiten/elternbrief.html
...
113
Realisierung: Automatensimulator
Um einen Einblick in die Verarbeitung von XML-Dokumenten zu gewinnen,
soll hier ein eigener Automatensimulator entwickelt werden, der XMLAutomatenbeschreibungen verarbeiten kann.
<?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>
[email protected]
Simulator
Ok!
Vorgehensweise
114
<?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>
...
#document
#comment:
structure
type
#text: fa
#comment:
state
Id: 0
x
#text: 60.0
y
#text: 59.0
initial
Schritt 1: Strukturbaum erzeugen
Schritt 2: Auf die Knoten des Strukturbaums zugreifen
115
Erzeugung des Strukturbaums
<?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>
...
#document
#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.
type
#text: fa
#comment:
state
>>> from xml.dom.minidom import *
>>> dokument = parse(".../EmailDA1.jff")
>>> dokument
<xml.dom.minidom.Document instance at 0x0118AE40>
DOM: Document Object Model (W3C-Standard)
Id: 0
x
#text: 60.0
y
#text: 59.0
initial
Python
Zugriff auf den Wurzelknoten
116
Dokumentknoten
#document
#comment:
Wurzelknoten
structure
type
#text: fa
#comment:
state
Id: 0
x
#text: 60.0
y
#text: 59.0
initial
>>> 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
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.nodeName
u'structure'
Testen Sie die Erzeugung des DOM-Objekts. Achten Sie darauf, den Pfad zur
XML-Datei richtig einzugeben.
Navigation im Strukturbaum
118
Dokumentknoten
#document
#comment:
Elementknoten
structure
Textknoten
type
ParentNode
Operationen:
#text: fa
Attributknoten
#comment:
state
Id: 0
x
FirstChild
PreviousSibling
#text: 60.0
y
LastChild
#text: 59.0
initial
state
NextSibling
Id: 1
Grafik aus: Introducing the Document Object Model using OpenXML (Part 1) by Craig Murphy
119
Navigation im DOM-Baum
>>> 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...">
Achtung:
Zeilenumbrüche und Leerzeichen
zwischen Tags werden mit zusätzlichen
Text-Knoten erfasst.
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.
121
Navigation im DOM-Baum
>>> 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 "
">
>>>
122
Aufgabe
>>> 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 "
">
>>>
Navigieren Sie sich durch den Baum bis
zum "initial"-Knoten.
123
Zugriff auf die Knotendaten
>>> 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.nodeValue
u'60.0'
>>> wurzel.childNodes[5].nodeName
u'state'
>>> wurzel.childNodes[5].nodeValue
>>>
Operationen:
nodeName: Name des Knotens
nodeValue: Wert des Knotens
124
Aufgabe
>>> 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.nodeValue
u'60.0'
>>> wurzel.childNodes[5].nodeName
u'state'
>>> wurzel.childNodes[5].nodeValue
>>>
Wie erhält man den neuen Zustand,
wenn im Zustand "2" die Eingabe "c"
erfolgt. Bestimmen Sie diesen neuen
Zustand mit geeigneten Navigationsund Zugriffsoperationen.
125
Zugriff auf die Attributwerte
>>> 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).nodeValue
u'0'
>>> wurzel.childNodes[5].attributes.item(0).nodeName
u'id'
Operationen:
attributes: Attributobjekte
item(...): Zugriff auf den ...-ten Knoten
126
Aufgabe
>>> 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).nodeValue
u'0'
>>> wurzel.childNodes[5].attributes.item(0).nodeName
u'id'
Wie erhält man den Attributwert des
zweiten Zustands?
127
Bestimmung des Anfangszustands
from xml.dom.minidom import *
dokument = parse("...")
Pfad / Dateiname
ergänzen!
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()
128
Aufgabe
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
Ergänzen Sie die Funktionsdefinitionen.
129
Lösungsvorschläge
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 "?"
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
130
Simulator
# automatensimulator2.py
from 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
# Test
print "[email protected]", verarbeiten("[email protected]")
print "acb@bca", verarbeiten("acb@bca")
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/Doc
ument_Object_Model
#document
#comment:
structure
type
ParentNode
#text: fa
#comment:
state
Id: 0
x
FirstChild
PreviousSibling
#text: 60.0
y
LastChild
#text: 59.0
initial
state
NextSibling
Id: 1
DOM-Knotenbaum
DOM-Schnittstelle
132
#document
#comment:
structure
type
ParentNode
#text: fa
#comment:
state
Attribute der Klasse "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
... (siehe: http://www.w3schools.com/dom/dom_node.asp)
PreviousSibling
#text: 60.0
Returns a NodeList of child nodes for a node
previousSibling Returns the node immediately before a node
x
FirstChild
childNodes
parentNode Returns the parent node of a node
Id: 0
y
LastChild
#text: 59.0
initial
state
NextSibling
Id: 1
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
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
135
Teil 8
XML im Informatikunterricht
Muss man das alles wissen?
136
ObjektOrientierteAnalyse
L/S
QueryByExample
QbE
OOA
RivestShamirAdleman
CyclicRedundancyCheck
FTP
RSA
FileTranferProtocol
CRC
RequestForComment
PBM
RFC
SQL
PortableBitMap
StructuredQueryLanguage
GeneralPublicLicense
GPL
POP
PostOfficeProtocol
XML
eXtensibleMarkupLanguage
137
Lehrplan für das Grundfach Informatik
fundamentale Idee
XML
unterrichtliche Umsetzung
138
Fundamentale Ideen
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)

fachliche Bedeutung
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)

Vgl.: Schubert / Schwill: Didaktik der Informatik, S. 86 ff
Nach: J. S. Bruner: The Process of Education. 1960.
Darstellung mit formalen Sprachen
Vermittelbarkeit
139
Fachgegenstand → Lerngegenstand
Klasse 1: Anwendung auch außerhalb der Informatik
(Bsp.: Problemlösestrategie)
Formale Sprachen
Klasse 2: Charakteristisch für alle Informatiksysteme
(Bsp.: Komplexität)
Validierer
Klasse 3: Relevant für eine Klasse von Informatiksystemen
(Bsp.: Datenstruktur)
XML
Klasse 4: Relevant für ein spezielles System
(Bsp.: Syntax einer Programmiersprache)
ODF
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
Inhaltliche Ausrichtung des Unterrichts an
fundamentalen Fachkonzepten der Informatik
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.
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)
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").
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.
Herunterladen