Informationsdarstellung mit XML

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Objektorientierte Programmierung
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
On the Criteria to Be Used in Decomposing Systems into Modules
Anmerkungen zu XML Im September 2000 Entwicklung/Anspruch von XML
Hands On – Einführung in XML
IMS Universität Stuttgart 1 Einführung in XML Hannah Kermes HS: Elektronische Wörterbücher Do,
HTML - Einführung Richard Göbel.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
DOM (Document Object Model)
Internetstruktur Das Internet besteht aus vielen Computern, die weltweit untereinander vernetzt sind.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
HTML - Eine erste Annäherung
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
© 2002 Prof. Dr. G. Hellberg 1 XML-Seminar XML-Technologie: XML in Theorie und Praxis Prof. Dr. G. Hellberg XML-Technologie: XML in Theorie und Praxis.
XHTML 1.1 C. Nimz Abstrakte Module XHTML 1.1 C. Nimz Was ist ein abstraktes Modul? Definition eines XHTML-Moduls in spezieller leichter.
Modularization of XHTML™
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Überblick XML: Extensible Markup Language Entwickelt, um Informationen bereitzustellen, zu speichern und zu übertragen Im Gegensatz zu HTML keine vordefinierten.
Einführung XML XML Einführung Andreas Leicht.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Prof. Dr. Bernhard Wasmayr
DVG Klassen und Objekte
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
Darstellung von Information
DBD::PO Mit SQL GNU gettext PO-Files bearbeiten. Über was ich heute spreche. Vom Quelltext bis zur mehrsprachigen Anwendung. Formate Irrwege Lösungen.
AWA 2007 Natur und Umwelt Natürlich Leben
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Wie macht man ein Sudoku? Transformations-Methode:
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
Vortrag HTML, XHTML, DHTML
20:00.
Klicken Sie in der Meldungsleiste auf Bearbeitung aktivieren,
Formale Sprachen und Automaten
Don`t make me think! A Common Sense Approach to Web Usability
Eine Einführung in die CD-ROM
Syntaxanalyse Bottom-Up und LR(0)
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Der Ablauf eines Clear Rex Klärzyklus
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Eine lllustration der Herausforderungen des Stromsystems der Zukunft
Oliver Spritzendorfer Thomas Fekete
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Vortrag: Frames & Javascript.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
CSS Cascading Style Sheets
Folie Einzelauswertung der Gemeindedaten
HTML Hypertext Markup Language
Numbers Greetings and Good-byes All about Me Verbs and Pronouns
7. Formale Sprachen und Grammatiken
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
- Warum: Das HTML-Dilemma
XML Die “E-Lance Economy” oder die “Digital Economy” stellt neue Anforderungen an Funktionalität im Netz. XML wurde vom World Wide Web Consortium (W3C)
Geoinformation3 Geoinformation III XML Grundlagen und Dokumentspezifikation Vorlesung 12b.
 Präsentation transkript:

Informationsdarstellung mit XML Klaus Becker 2008

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>

Teil 1 Schach dem König

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.

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

Schach-Spielzustände Will man den gespeicherten Spielzustand mit anderen Schachprogrammen verwenden, so ergeben sich Schwierigkeiten.

Schach-Spielzustände Ein Blick hinter die Kulissen soll klären, wodurch die Schwierigkeiten zustande kommen.

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

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 ........ .p.kpQ.. ..np.... .p..b.BP ..q..p.. .....PP. .....RK. W0000

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

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

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

Schach-Spielzustände "Weiß ist am Zug. ..." Information Zur Darstellung der Information (Brettstellungen im Schach) wird eine formale Sprache (FEN) benutzt. Interpretieren Deuten 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. Daten rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

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. http://de.wikipedia.org/wiki/Bild:Brueghel-tower-of-babel.jpg ........ .p.kpQ.. ..np.... .p..b.BP ..q..p.. .....PP. .....RK. W0000 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

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).

Ein Blick hinter die Kulissen Teil 2 Datenformate - Ein Blick hinter die Kulissen

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"] 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 ChessGML PGN

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)

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

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.

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:

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

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

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

Formate zur Informationsdarstellung Repräsentieren Interpretieren Repräsentieren Interpretieren doc: proprietäres Format ODF: standardisiertes Format

Standardisierte Formate 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 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. http://www.cio.de/knowledgecenter/open_source/852833/index3.html

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

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.

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

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. Repräsentieren Interpretieren Repräsentieren Interpretieren <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> ... </sequence> </nsc>

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

Datenformate für Struktogramme StruktEdit-Datei betrachtet mit einem Hex-Editor NSCEdit-Datei betrachtet mit einem Text-Editor

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.

Datenformate für Automaten erstellt mit JFlap40b8 erstellt mit JFlap40b14

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.

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

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>

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

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/

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/

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

Teil 3 Grundlagen von XML

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>

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

Element mit Zeicheninhalt 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. Wurzelelement Element als Container Element mit Zeicheninhalt Ein XML-Dokument vermischt Inhalte mit Informationen über diese Inhalte (Meta-Information).

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

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

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

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.

wohlgeformte XML-Dokumente Wohlgeformtheit Ein XML-Dokument, das alle syntaktischen Bedingungen erfüllt, heißt wohlgeformt. beachte: Nur wohlgeformte XML-Dokumente werden vom Browser in Baumform angezeigt. wohlgeformte XML-Dokumente

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 ...

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>

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. Testen Sie auch, wie die Anwendung reagiert, wenn man zusätzliche Elemente einführt. <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <span>SOLANGE y > 0</span> <span>h := x mod y</span> ... </sequence> </whileloop> </nsc> weglassen

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

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

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 33 36 48 31 116

Dokumenttypen und ihre Validierung Teil 4 Dokumenttypen und ihre Validierung

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> <span>SOLANGE y > 0</span> <span>h := x mod y</span> ... </sequence> </whileloop> <span>Ausgabe: x</span> <span>GGT</span> </nsc> Zielsetzung: Im Folgenden sollen Verfahren vorgestellt werden, mit denen der Dokumenttyp präzise beschrieben werden kann.

Beschreibung des Kontextes Dokumenttyp Wir betrachten XML-Dokumente zur (vereinfachten) Beschreibung eines Schach-Spielzustands. <?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> 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

informelle Beschreibung des Dokumenttyps 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. ... <?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> informelle Beschreibung des Dokumenttyps

Dokumenttypdefinition 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. ... <!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> formale Beschreibung des Dokumenttyps informelle Beschreibung des Dokumenttyps

Dokumenttypdefinition Eine Dokumenttypdefinition (DTD) legt eine Klasse von Dokumenten fest, die alle vom gleichen Typ sind. <!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> Dokumenttypdefinition <?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> Eine Dokumenttypdefinition beschreibt die Struktur eines Dokuments mit Hilfe einer Grammatik. Eine DTD legt somit eine neue Sprache zur Informationsbeschreibung fest.

Einbindung einer 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> interne DTD <?xml version="1.0" encoding="iso-8859-1"?> <!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/xhtml1-strict.dtd"> <html> ... </html> externe DTD <!DOCTYPE Name [...]>

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 <!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 <!ELEMENT Name Inhaltsmodell>

Inhaltsmodelle 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.

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 <!ELEMENT Springer EMPTY> <!ATTLIST Springer ... <!ELEMENT König EMPTY> <!ATTLIST König

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

Gültigkeit Ein XML-Dokument, das alle Bedingungen einer DTD erfüllt, heißt gültig bzw. valide bzgl dieser DTD. <!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> Ein gültiges XML-Dokument muss auch wohlgeformt sein. Gültigkeit bezieht sich immer auf eine spezielle Strukturbeschreibung (hier in Form 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> ... </schwarz> <weiss> <Bauer>h5</Bauer> <Dame>f7</Dame> <König>g1</König> <amZug/> </weiss> </Schach-Spielzustand> Ein gültiges XML-Dokument ist somit ein Wort aus der mit der DTD neu festgelegten Sprache.

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/

Validierung Viele XML-Editoren haben XML-Parser integriert. Open XML Editor

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>christinemeier@gmx.de</email> <email>mei.kantgymnasium@schule.de</email> </lehrer> <lehrer geschlecht="m"> <name>Schmitt</name> <vorname>Thomas</vorname> <kuerzel>sch</kuerzel> <fach>Latein</fach> <fach>Musik</fach> <fach>Philosophie</fach> <name>Müller</name> <vorname>Katharina</vorname> <kuerzel>mue</kuerzel> <fach>Mathematik</fach> <fach>Informatik</fach> <email>mue.kantgymnasium@schule.de</email> </kollegium>

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> <name>KL</name> ... </knotenmenge> <kantenmenge> <kante> <von>TR</von> <nach>KL</nach> <gewicht>116</gewicht> </kante> <von>KL</von> <nach>TR</nach> </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> </graph>

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

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

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>

Teil 5 XML-Vokabulare

Regeln zur Festlegung der Lexik und Syntax von MyHTML 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 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) <!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

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/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

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.

Darstellung im Browser SVG "Scalable Vector Graphics (SVG, deutsch Skalierbare Vektorgrafiken) ist ein Standard zur Beschreibung zweidimensionaler Vektorgrafiken in der XML-Syntax." (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

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.

MathML "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) <?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>

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?

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) http://www.winwap.com/products_2_3.php <?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>

Aufgaben Aufgabe 1 Installieren 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.

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"

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.

Exkurs: Namensräume, Formatierung, Strukturbeschreibung Teil 6 Exkurs: Namensräume, Formatierung, Strukturbeschreibung

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? ...

Namensraum: Ansammlung von Namen für Elemente und Attribute 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> </head> <body> <h1>Überschrift</h1> <p>Absatz</p> </body> </html> Namensraum: Ansammlung von Namen für Elemente und Attribute <?xml version="1.0" encoding="ISO-8859-1"?> <html> <head> <title>Test</title> </head> <body> <h1>Überschrift</h1> <p>Absatz</p> </body> </html>

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> </head> <body> <h1>Überschrift</h1> <p>Absatz</p> </body> </html> Namensraumdeklaration Präfix als Kurzorm URI als weltweit eindeutiger Bezeichner <?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>

Exkurs: Namensräume Beispiel 3: mehrere 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

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

keine Formatierungsangabe Exkurs: Formatierung Beispiel 1: 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>

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

Exkurs: Formatierung Beispiel 3: 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> </dokument> style.xsl <?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>

Exkurs: Formatierung 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. <?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

Strukturbeschreibung mit einer DTD 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> <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 <?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> nur bestimmte Feldbezeichner erlaubt mögliche Anzahl der Bauern: 0..8 <!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 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

Schema-Definition mit e. XML-basierten Sprache 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: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 name="weiss" minOccurs="1" maxOccurs="1">...</xs:element> </xs:schema>

Exkurs: XML-Schema Validierung: z. B. mit http://www.xmlvalidation.com/

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

Verarbeitung von XML-Dokumenten Teil 7 Verarbeitung von XML-Dokumenten

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.

Grafische Aufbereitung (Festlegung der Semantik) Beispiel: Browser Parser OK! <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE html [ ... ] > <html> <head> <title>Test</title> </head> <body> <h1>Weiterbildung am IFB</h1> ... </html> Syntax- Analyse Grafische Aufbereitung (Festlegung der Semantik) Anwendung

Beispiel: Automatensimulator Eingabewort: c@ab.a <?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 OK! Syntax- Analyse Simulation Anwendung Ergebnis: ok!

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. <?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 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(): verweisknoten = dokument.getElementsByTagName("a") verweisliste = [] for knoten in verweisknoten: verweisliste = verweisliste + [knoten.getAttribute("href")] return verweisliste # Test for verweis in verweissuche(): print verweis Verweissucher http://burg-kl.de/neuigkeiten.html http://burg-kl.de/neuigkeiten/archiv.html http://burg-kl.de/neuigkeiten/elternbrief.html ...

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. <?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> abba@caba.bb Simulator Ok!

Vorgehensweise Schritt 1: Strukturbaum erzeugen <?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 structure Schritt 1: Strukturbaum erzeugen Schritt 2: Auf die Knoten des Strukturbaums zugreifen

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> ... state x #text: 60.0 type #text: fa #comment: #document Id: 0 y #text: 59.0 initial 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)

Zugriff auf den Wurzelknoten Dokument-knoten state x #text: 60.0 type #text: fa #comment: #document Id: 0 y #text: 59.0 initial structure Wurzel-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

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 Dokument-knoten #document #comment: Element-knoten structure Text- knoten type ParentNode #text: fa Operationen: Attribut- knoten #comment: state Id: 0 FirstChild x PreviousSibling #text: 60.0 y LastChild #text: 59.0 initial NextSibling state Id: 1 Grafik aus: Introducing the Document Object Model using OpenXML (Part 1) by Craig Murphy

Navigation im DOM-Baum >>> wurzel.firstChild <DOM Text node " "> >>> wurzel.firstChild.nextSibling <DOM Element: type at 0x1190d28> >>> wurzel.firstChild.nextSibling.nextSibling >>> 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.

Aufgabe >>> wurzel.firstChild <DOM Text node " "> >>> wurzel.firstChild.nextSibling <DOM Element: type at 0x1190d28> >>> wurzel.firstChild.nextSibling.nextSibling >>> wurzel.firstChild.nextSibling.nextSibling.nextSibling <DOM Comment node "The list o..."> Navigieren Sie sich durch den Baum bis zum ersten "state"-Knoten.

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 >>>

Aufgabe Navigieren Sie sich durch den Baum bis zum "initial"-Knoten. >>> 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 >>> Navigieren Sie sich durch den Baum bis zum "initial"-Knoten.

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

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 Navigations- und Zugriffsoperationen.

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

Aufgabe Wie erhält man den Attributwert des zweiten Zustands? >>> 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?

Bestimmung des Anfangszustands 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() Pfad / Dateiname ergänzen!

Aufgabe Ergänzen Sie die Funktionsdefinitionen. 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.

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

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 "acb@b.ca", verarbeiten("acb@b.ca") print "acb@bca", verarbeiten("acb@bca")

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 state x #text: 60.0 type #text: fa #comment: #document y #text: 59.0 initial structure PreviousSibling LastChild ParentNode NextSibling Id: 0 Id: 1 FirstChild DOM-Knotenbaum

DOM-Schnittstelle state x #text: 60.0 type #text: fa #comment: #document y #text: 59.0 initial structure PreviousSibling LastChild ParentNode NextSibling Id: 0 Id: 1 FirstChild 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)

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

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

XML im Informatikunterricht Teil 8 XML im Informatikunterricht

Muss man das alles wissen? ObjektOrientierteAnalyse L/S QueryByExample QbE OOA RivestShamirAdleman FTP CyclicRedundancyCheck RSA FileTranferProtocol CRC RequestForComment PBM RFC SQL PortableBitMap StructuredQueryLanguage GeneralPublicLicense POP GPL PostOfficeProtocol XML eXtensibleMarkupLanguage

Lehrplan für das Grundfach Informatik fundamentale Idee unterrichtliche Umsetzung XML

Darstellung mit formalen Sprachen 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) 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) fachliche Bedeutung fachliche Bedeutung Vermittelbarkeit Vermittelbarkeit Vgl.: Schubert / Schwill: Didaktik der Informatik, S. 86 ff Nach: J. S. Bruner: The Process of Education. 1960. Darstellung mit formalen Sprachen

Fachgegenstand → Lerngegenstand 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. Formale Sprachen Validierer XML ODF Nach P. Hubwieser: Didaktik der Informatik, S. 83 ff Inhaltliche Ausrichtung des Unterrichts an fundamentalen Fachkonzepten der Informatik

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.

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. Information zur Weiterverarbeitung in Informatiksystemen aufbereiten ... (Grundfach-LP) Siehe: Hense, Mandl, Gräsel: Problemorientiertes Lernen. In. CuU 44/2001, S. 6ff. Kompetenzentwicklung erfordert handlungsorientierte Auseinandersetzung mit Fachkonzepten in geeigneten (speziellen) Kontexten

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").

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.