Informationsdarstellung mit XML Information und ihre Darstellung XML-Dokumente XML-Dokumenttypen Festlegung von Sprachen XML-basierte Sprachen XML-Dokumente und das Document Object Model Verarbeitung von Sprachen XML im Informatikunterricht "> Informationsdarstellung mit XML Information und ihre Darstellung XML-Dokumente XML-Dokumenttypen Festlegung von Sprachen XML-basierte Sprachen XML-Dokumente und das Document Object Model Verarbeitung von Sprachen XML im Informatikunterricht ">

Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informationsdarstellung, Sprachbeschreibung, Sprachverarbeitung - mit XML - Klaus Becker 2009.

Ähnliche Präsentationen


Präsentation zum Thema: "Informationsdarstellung, Sprachbeschreibung, Sprachverarbeitung - mit XML - Klaus Becker 2009."—  Präsentation transkript:

1 Informationsdarstellung, Sprachbeschreibung, Sprachverarbeitung - mit XML -
Klaus Becker 2009

2 XML <?xml version="1.0" encoding="ISO-8859-1"?>
<Fortbildung> <Titel>Informationsdarstellung mit XML</Titel> <Inhalte> <Inhalt>Information und ihre Darstellung</Inhalt> <Inhalt>XML-Dokumente</Inhalt> <Inhalt>XML-Dokumenttypen</Inhalt> <Inhalt>Festlegung von Sprachen</Inhalt> <Inhalt>XML-basierte Sprachen</Inhalt> <Inhalt>XML-Dokumente und das Document Object Model</Inhalt> <Inhalt>Verarbeitung von Sprachen</Inhalt> <Inhalt>XML im Informatikunterricht</Inhalt> </Inhalte> </Fortbildung>

3 Information und ihre Darstellung
Teil 1 Information und ihre Darstellung

4 Einstieg - Telefon Bedienungsanleitung: Entwurfsmodellierung:
benutzt die Alltagssprache und eine bildliche Darstellung von Information Entwurfsmodellierung: benutzt eine Diagrammsprache (Zustandsdiagramm) zur Darstellung von Information Zustandsdiagramm

5 Werkzeug Charon z. Erzeugung von Zustandsd.
Einstieg - Telefon Speicherformat: benutzt eine spezielle "Daten-Sprache" zur Darstellung von Information Quelltext [Main] Anzahl der Zustände=4 Existiert Start=1 Anzahl Alphabet=4 Zeichen1=Zifferblock Zeichen2=Abheben Zeichen3=Abheben lang Zeichen4=Auflegen [Config] ... [Color] [Zustand1] Name=Ruhezustand Nummer=1 x-Koord=77 y-Koord=249 Typ=0 Typname=Start Kommentar1= AkENTRY1= AkDO1= Werkzeug Charon z. Erzeugung von Zustandsd.

6 Einstieg - Telefon <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> <state id="1" name="q1"> <x>230.0</x> <y>-15.0</y> <label>Rufnummer eingeben</label> <state id="2" name="q2"> <x>389.0</x> <label>Einwählen</label> ... Werkzeug JFlap Quelltext

7 Fachkonzept - Datenformat
Ein Datenformat ist eine Daten-Sprache, die zur computergerechten Darstellung von Information benutzt wird. [Main] Anzahl der Zustände=4 Existiert Start=1 Anzahl Alphabet=4 Zeichen1=Zifferblock Zeichen2=Abheben Zeichen3=Abheben lang Zeichen4=Auflegen [Config] ... [Color] [Zustand1] Name=Ruhezustand Nummer=1 x-Koord=77 y-Koord=249 Typ=0 Typname=Start Kommentar1= AkENTRY1= AkDO1= Datenformat

8 Fachkonzept - Datenformat
Viele Software-Entwickler erfinden eine eigene - also proprietäre - Sprache, in der die zu verwaltenden Daten beschrieben und gespeichert werden. Die Entwicklung geht heute eher dahin, Standards bei der Konzeption von Datenformaten zu nutzen. Standards erleichtern den Austausch von Daten. Auch bei der Entwicklung selbst ergeben sich oft viele Vorteile: Für Standards betreffende Aufgaben gibt es oft schon fertige Lösungen, die man direkt übernehmen kann. [Main] Anzahl der Zustände=4 Existiert Start=1 Anzahl Alphabet=4 Zeichen1=Zifferblock Zeichen2=Abheben Zeichen3=Abheben lang Zeichen4=Auflegen [Config] ... [Color] [Zustand1] Name=Ruhezustand Nummer=1 x-Koord=77 y-Koord=249 Typ=0 Typname=Start Kommentar1= AkENTRY1= AkDO1= <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... proprietäres Datenformat Standard-basiertes Datenformat

9 Fachkonzept - XML als Standard
XML steht für Extensible Markup Language und ist eine Sprache zur Festlegung von Auszeichnungssprachen (Das sind Sprachen um Information strukturiert in Form von Daten und einer Auszeichnung von Daten darzustellen. Auszeichnungen geben dabei Hinweise, wie die Daten zu verarbeiten sind.). XML ist also eine Meta-Sprache, mit deren Hilfe neue Sprachen entwickelt werden können. XML wird inzwischen so viel genutzt, dass es als Standard bei der Entwicklung neuer Datenformate angesehen werden kann. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... Daten Auszeichnung mit Tags

10 Übungen (siehe www.inf-schule.de)
Bearbeiten Sie eine Aufgabe des Abschnitt "Darstellung von Information - Übungen".

11 Teil 2 XML-Dokumente

12 Einstieg - The Beatles The Beatles were a rock and pop band from Liverpool, England that formed in During their career, the group primarily consisted of John Lennon (rhythm guitar, vocals), Paul McCartney (bass guitar, vocals), George Harrison (lead guitar, vocals) and Ringo Starr (drums, vocals). Although their initial musical style was rooted in 1950s rock and roll and skiffle, the group worked with different musical genres, ranging from Tin Pan Alley to psychedelic rock. Their clothes, style and statements made them trend-setters, while their growing social awareness saw their influence extend into the social and cultural revolutions of the 1960s. After the band broke up in 1970, all four members embarked upon successful solo careers. Quelle:

13 Einstieg - The Beatles <?xml version="1.0" encoding="iso "?> <band> <name>Beatles</name> <gründung>1960</gründung> <auflösung>1970</auflösung> <!--Liste der Mitglieder.--> <mitglieder> <mitglied> <name>Lennon</name> <vorname>John</vorname> <instrumente> <instrument>Gesang</instrument> <instrument>Rhytmusgitarre</instrument> <instrument>Tasteninstrumente</instrument> <instrument>Mundharmonika</instrument> </instrumente> </mitglied> <name>McCartney</name> <vorname>Paul</vorname> <sir/> ... </mitglieder> </band> Analysieren Sie das folgende XML-Dokument zur Beschreibung einer Band - hier der Beatles. Welche Information wird hier dargestellt? Wie ist das XML-Dokument zur Darstellung der Information aufgebaut?

14 Exkurs - XML-Dokumente
<?xml version="1.0" encoding="iso "?> <band> <name>Beatles</name> <gründung>1960</gründung> <auflösung>1970</auflösung> <!--Liste der Mitglieder.--> <mitglieder> <mitglied> <name>Lennon</name> <vorname>John</vorname> <instrumente> <instrument>Gesang</instrument> <instrument>Rhytmusgitarre</instrument> <instrument>Tasteninstrumente</instrument> <instrument>Mundharmonika</instrument> </instrumente> </mitglied> <name>McCartney</name> <vorname>Paul</vorname> <sir/> ... </mitglieder> </band> XML-Dokumente werden benutzt, um Information strukturiert darzustellen. The Beatles were a rock and pop band from Liverpool, England that formed in During their career, the group primarily consisted of John Lennon (rhythm guitar, vocals), Paul McCartney (bass guitar, vocals), George Harrison (lead guitar, vocals) and Ringo Starr (drums, vocals). Although their initial musical style was rooted in 1950s rock and roll and skiffle, the group worked with different musical genres, ranging from Tin Pan Alley to psychedelic rock. Their clothes, style and statements made them trend-setters, while their growing social awareness saw their influence extend into the social and cultural revolutions of the 1960s. After the band broke up in 1970, all four members embarked upon successful solo careers. Quelle:

15 Exkurs - XML-Dokumente
Die Strukturierung erfolgt in Form eines Baumes. <?xml version="1.0" encoding="iso "?> <band> <name>Beatles</name> <gründung>1960</gründung> <auflösung>1970</auflösung> <!--Liste der Mitglieder.--> <mitglieder> <mitglied> <name>Lennon</name> <vorname>John</vorname> <instrumente> <instrument>Gesang</instrument> <instrument>Rhytmusgitarre</instrument> <instrument>Tasteninstrumente</instrument> <instrument>Mundharmonika</instrument> </instrumente> </mitglied> <name>McCartney</name> <vorname>Paul</vorname> <sir/> ... </mitglieder> </band> Darstellung im Editor Anzeige mit einem Browser

16 Exkurs - XML-Dokumente
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 (gemischter Inhalt) oder auch gar nichts (leeres Element). Das erste Element eines XML-Dokuments ist das Wurzelelement, das alle anderen Elemente in sich einschließt. Wurzelelement Element als Container Element mit Zeicheninhalt leeres Element

17 Exkurs - XML-Dokumente
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 <sir></sir>

18 Exkurs - XML-Dokumente
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

19 Exkurs - XML-Dokumente
Ein XML-Dokument beginnt in der Regel mit dem Prolog <?xml ... ?>. Der Prolog kennzeichnet das Dokument als XML-Dokument. <?xml version="1.0" encoding="iso "?> <band> <name>Beatles</name> <gründung>1960</gründung> <auflösung>1970</auflösung> <!--Liste der Mitglieder.--> <mitglieder> <mitglied> <name>Lennon</name> <vorname>John</vorname> <instrumente> <instrument>Gesang</instrument> <instrument>Rhytmusgitarre</instrument> <instrument>Tasteninstrumente</instrument> <instrument>Mundharmonika</instrument> </instrumente> </mitglied> <name>McCartney</name> <vorname>Paul</vorname> <sir/> ... </mitglieder> </band> 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 verwenden. Kommentar Kommentare erleichtern das Verständnis und werden vom Browser mit angezeigt.

20 Übungen (siehe www.inf-schule.de)
Bearbeiten Sie Aufgabe 1 und eine der Aufgaben 2, 3, 4 des Abschnitt "XML-Dokumente - Übungen".

21 Teil 3 XML-Dokumenttypen

22 Einstieg - Fehler im XML-Dokument
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> <state id="1" name="q1"> <x>230.0</x> <y>-15.0</y> <label>Rufnummer eingeben</label> <state> <state id="2" name="q2"> <x>389.0</x> <label>Einwählen</label> <state id="3" name="q3"> <x>235.0</x> <y>227.0</y> <label>Wählen</label> <!--The list of transitions.--> ... </automaton> </structure> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... <!--The list of transitions.--> <transition> <von>2</von> <nach>0</nach> <read>Auflegen</read> </transition> <from>3</from> <to>0</to> <from>0</from> </automaton> </structure>

23 Exkurs - wohlgeformte XML-Dokumente
Ein XML-Dokument, das alle syntaktischen Bedingungen von XML erfüllt, heißt wohlgeformt. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> <state id="1" name="q1"> <x>230.0</x> <y>-15.0</y> <label>Rufnummer eingeben</label> <state> <state id="2" name="q2"> <x>389.0</x> <label>Einwählen</label> <state id="3" name="q3"> ... <!--The list of transitions.--> </automaton> </structure> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... <!--The list of transitions.--> <transition> <von>2</von> <nach>0</nach> <read>Auflegen</read> </transition> <from>3</from> <to>0</to> </automaton> </structure> nicht wohlgeformt wohlgeformt Anfangstag Endtag?

24 Exkurs - gültige XML-Dokumente
JFlap kann das XML-Dokument nicht verarbeiten, da es nicht die erforderliche Struktur hat. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... <!--The list of transitions.--> <transition> <von>2</von> <nach>0</nach> <read>Auflegen</read> </transition> <from>3</from> <to>0</to> </automaton> </structure> wohlgeformt keine gültige Tag-Struktur

25 Exkurs - gültige XML-Dokumente
Eine Dokumenttypdefinition (kurz DTD) legt einen Dokumenttyp präzise fest. <!ELEMENT structure (type, automaton)> <!ELEMENT automaton (state*, transition*)> <!ELEMENT type (#PCDATA)> <!ELEMENT state (x, y, label?, initial?)> <!ATTLIST state id CDATA #REQUIRED name CDATA #REQUIRED > <!ELEMENT transition (from, to, read)> <!ELEMENT x (#PCDATA)> <!ELEMENT y (#PCDATA)> <!ELEMENT label (#PCDATA)> <!ELEMENT initial EMPTY> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT read (#PCDATA)> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE structure SYSTEM "automat.dtd"> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... <!--The list of transitions.--> <transition> <von>2</von> <nach>0</nach> <read>Auflegen</read> </transition> <from>3</from> <to>0</to> </automaton> </structure> wohlgeformt DTD in automat.dtd keine gültige Tag-Struktur

26 Exkurs - gültige XML-Dokumente
Ein XML-Dokument, das alle Festlegungen einer DTD erfüllt, heißt gültig bzw. valide bzgl. dieser DTD. <!ELEMENT structure (type, automaton)> <!ELEMENT automaton (state*, transition*)> <!ELEMENT type (#PCDATA)> <!ELEMENT state (x, y, label?, initial?)> <!ATTLIST state id CDATA #REQUIRED name CDATA #REQUIRED > <!ELEMENT transition (from, to, read)> <!ELEMENT x (#PCDATA)> <!ELEMENT y (#PCDATA)> <!ELEMENT label (#PCDATA)> <!ELEMENT initial EMPTY> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT read (#PCDATA)> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE structure SYSTEM "automat.dtd"> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>64.0</x> <y>100.0</y> <label>Ruhezustand</label> <initial/> </state> ... <!--The list of transitions.--> <transition> <from>2</from> <to>0</to> <read>Auflegen</read> </transition> </automaton> </structure> gültig / valide DTD in automat.dtd

27 Exkurs - gültige XML-Dokumente
Man kann die Gültigkeit eines XML-Dokuments mit Hilfe spezieller Validierer überprüfen lassen. Ein XML-Validierer / XML-Parser ist ein Programm, das überprüft, ob das XML-Dokument die von der angegebenen DTD geforderte Struktur hat.

28 Exkurs - Dokumenttypdefinitionen
Eine Dokumenttypdefinition beschreibt den Aufbau eines XML-Dokuments aus Elementen sowie die Attributstruktur der Elemente. <!ELEMENT structure (type, automaton)> <!ELEMENT type (#PCDATA)> <!ELEMENT automaton (state*, transition*)> <!ELEMENT state (x, y, label?, initial?)> <!ATTLIST state id CDATA #REQUIRED name CDATA #REQUIRED > <!ELEMENT transition (from, to, read)> <!ELEMENT x (#PCDATA)> <!ELEMENT y (#PCDATA)> <!ELEMENT label (#PCDATA)> <!ELEMENT initial EMPTY> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT read (#PCDATA)> Das Wurzelelement hat den Namen "structure". Ein Element vom Typ "structure" besteht aus einem Element vom Typ "type" gefolgt von einem Element vom Typ "automaton". Ein Element vom Typ "type" besteht aus Zeichen (parsed character data). Ein Element vom Typ "automaton" besteht aus beliebig vielen Elementen vom Typ "state" gefolgt von beliebig vielen Elementen vom Typ "transition". Ein Element vom Typ "state" besteht aus einem Element vom Typ "x" gefolgt von einem Element vom Typ "y" gefolgt von optionalen Elementen vom Typ "label" und "initial". Ein Element vom Typ "state" hat die Attribute "id" und "name", die beide nicht weggelassen werden können und deren Werte Zeichenketten sind. Ein Element vom Typ "transition" besteht aus einem Element vom Typ "from" gefolgt von einem Element vom Typ "to" gefolgt von einem Elementen vom Typ "read". ... Ein Element vom Typ "initial" ist ein leeres Element. DTD in automat.dtd

29 Exkurs - Dokumenttypdefinitionen
Operator Bedeutung () Bildung von Elementgruppen , Trennzeichen innerhalb einer Sequenz von Elementen | Trennzeichen zwischen sich ausschließenden Alternativen * Element(gruppe) kann beliebig oft (auch gar nicht) vorkommen + Element(gruppe) muss mindestens einmal, kann mehrfach vorkommen ? Element(gruppe) kann einmal oder kein mal vorkommen <!ELEMENT Name Inhaltsmodell> <!ELEMENT structure (type, automaton)> <!ELEMENT type (#PCDATA)> <!ELEMENT automaton (state*, transition*)> <!ELEMENT state (x, y, label?, initial?)> <!ATTLIST state id CDATA #REQUIRED name CDATA #REQUIRED > <!ELEMENT transition (from, to, read)> <!ELEMENT x (#PCDATA)> <!ELEMENT y (#PCDATA)> <!ELEMENT label (#PCDATA)> <!ELEMENT initial EMPTY> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT read (#PCDATA)> Elementtyp-Deklaration

30 Exkurs - Dokumenttypdefinitionen
Inhaltsmodell Beschreibung Elementinhalt Das Element enthält ausschließlich Unterelemente. <!ELEMENT transition (from, to, read)> <transiotion><from>...</from><to>...</to><read>...</read></transition> #PCDATA Das Element enthält nur Zeichendaten. <!ELEMENT type (#PCDATA)> <type>fa</type> 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 initial EMPTY> <initial/> ANY Das Element kann beliebige Inhalte haben.

31 Exkurs - Dokumenttypdefinitionen
<!ATTLIST Elementname Attributname Attributtyp Vorgabewert Attributname Attributtyp Vorgabewert Attributname Attributtyp Vorgabewert > <!ATTLIST state id CDATA #REQUIRED name 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

32 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 "?> <!DOCTYPE structure [ ... ]> <structure> ... </structure> interne DTD <?xml version="1.0" encoding="iso "?> <!DOCTYPE structure SYSTEM "automat.dtd"> <structure> ... </structure> externe DTD <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html> ... </html> externe DTD <!DOCTYPE Name [...]>

33 Übungen (siehe www.inf-schule.de)
Bearbeiten Sie Aufgabe 1 und eine der Aufgaben 2, 3, 4 des Abschnitt "XML-Dokumenttypen - Übungen".

34 Miniprojekt: MyXHTML Ziel ist es, eine DTD für eine vereinfachte Version von XHTML - kurz MyXHTML - selbst zu entwickeln. Das folgende XHTML-Dokument soll dabei als gültig bzgl. dieser DTD validiert werden. Da es sich hier um eine komplexere Aufgabe handelt, sollte man schrittweise vorgehen. <?xml version="1.0" encoding="iso "?> <!DOCTYPE html SYSTEM "myxhtml.dtd"> <html> <head> <title>Steckbrief von Bailey</title> </head> <body> <h1>Steckbrief</h1> <p><img src="bailey1.jpg" alt="Foto von Bailey"/></p> <p>Ich heiße <em>Bailey</em>. Ich lebe in der Nähe von Kaiserslautern.</p> <p>Ich interessiere mich für Agility-Sport. Meine Lieblingsdisziplinen sind:</p> <ul> <li>Sprung durch einen Reifen</li> <li>Lauf über eine Wippe</li> <li>Slalomlauf zwischen Stangen</li> </ul> <p> Ich gehe jedes Wochenende zur <a href=" . </p> </body> </html>

35 Miniprojekt: MyXHTML Schritt 1: Zuerst soll nur die Grundstruktur eines XHTML-Dokuments betrachtet werden. <?xml version="1.0" encoding="iso "?> <!DOCTYPE html SYSTEM "myxhtml.dtd"> <html> <head> <title>Steckbrief von Bailey</title> </head> <body> <h1>Steckbrief</h1> </body> </html> <!ELEMENT html (head, body)> <!ELEMENT head (title)> <!ELEMENT title (#PCDATA)> <!ELEMENT body (h1)> <!ELEMENT h1 (#PCDATA)*>

36 Miniprojekt: MyXHTML Schritt 2: Ein XHTML-Dokument kann mehrere Überschriften 1. Ordnung enthalten. Innerhalb einer Überschrift können bestimmte Zeichenketten auch hervorgehoben werden. <?xml version="1.0" encoding="iso "?> <!DOCTYPE html SYSTEM "myxhtml.dtd"> <html> <head> <title>Steckbrief von Bailey</title> </head> <body> <h1>Steckbrief</h1> </body> </html> <!ELEMENT html (head, body)> <!ELEMENT head (title)> <!ELEMENT title (#PCDATA)> <!ELEMENT body (h1)*> <!ELEMENT h1 (#PCDATA | em)*> <!ELEMENT em (#PCDATA)> Führen Sie die gezeigten Schritte durch. Wenn alles soweit geklappt hat, dann erweitern Sie Schritt für Schritt das XML-Dokument und die zugehörige DTD.

37 Strukturbeschreibung mit einer DTD
Ausblick: XML-Schema Schach-Spielzustand - Version 1: Strukturbeschreibung mit einer DTD <?xml version="1.0" encoding="iso "?> <!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>

38 Ausblick: XML-Schema Nachteile von DTD: zu unflexibel
Strukturbeschreibung mit einer DTD <?xml version="1.0" encoding="iso "?> <!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>

39 Ausblick: XML-Schema Schach-Spielzustand - Version 2:
Strukturbeschreibung mit einem XML-Schema <?xml version="1.0" encoding="iso "?> <Schach-Spielzustand xmlns:xsi=" 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

40 Schema-Definition mit e. XML-basierten Sprache
Ausblick: XML-Schema Schach-Spielzustand - Version 2: Schema-Definition mit e. XML-basierten Sprache <?xml version="1.0" encoding="iso "?> <xs:schema xmlns:xs=" 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>

41 Ausblick: XML-Schema Validierung: z. B. mit

42 Ausblick: 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"." Quelle:

43 Festlegung von Sprachen
Teil 4 Festlegung von Sprachen

44 Einstieg - Probleme mit der Bedeutung
<?xml version="1.0" encoding="iso "?> <!DOCTYPE kr [ <!ELEMENT kr (mi, ra)> <!ELEMENT mi (x, y)> <!ELEMENT x (#PCDATA)> <!ELEMENT y (#PCDATA)> <!ELEMENT ra (#PCDATA)> ]> <kr> <mi> <x>267</x> <y>214</y> </mi> <ra>44</ra> </kr> Was beschreiben XML-Dokumente, die gültig bzgl. der DTD kr sind? <!ELEMENT hundeschule (windhund*, dackel*, bernhardiner*)> <!ELEMENT windhund (#PCDATA)> <!ELEMENT dackel (#PCDATA)> <!ELEMENT bernhardiner (#PCDATA)> Was beschreiben XML-Dokumente, die gültig bzgl. der DTD hundeschule sind?

45 Einstieg - Probleme mit der Bedeutung
<?xml version="1.0" encoding="iso "?> <!DOCTYPE html SYSTEM "myxhtml.dtd"> <html> <head> <title>Steckbrief von Bailey</title> </head> <body> <h1>Steckbrief</h1> <p><img src="bailey1.jpg" alt="Foto von Bailey"/></p> <p>Ich heiße <em>Bailey</em>. Ich ...</p> ... </body> </html> Was beschreiben XML-Dokumente, die gültig bzgl. der DTD html in "myxhtml.dtd" sind? <!ELEMENT html (head, body)> <!ELEMENT head (title)> <!ELEMENT title (#PCDATA)> <!ELEMENT body (h1 | p | ul)+> <!ELEMENT h1 (#PCDATA | a | em)*> <!ELEMENT ul (li)*> <!ELEMENT p (#PCDATA | img | a | em)*> <!ELEMENT img EMPTY> <!ATTLIST img src CDATA #REQUIRED alt CDATA #REQUIRED> <!ELEMENT a (#PCDATA)> <!ATTLIST a href CDATA #REQUIRED > <!ELEMENT li (#PCDATA | img | a | em | ul)*> <!ELEMENT em (#PCDATA)>

46 Fachkonzept - Sprache Die Lexik einer Sprache beschreibt den Wortschatz einer Sprache, d.h. die Gesamtheit der Wörter der Sprache, die als Grundbausteine zur Verfügung stehen. Die Syntax einer Sprache beschreibt den Satzbau einer Sprache, d.h. wie aus Wörtern Sätze gebildet werden können. Üblicherweise wird sie durch eine Grammatik festgelegt. Die Semantik einer Sprache beschreibt die Beziehung zwischen Sprachelementen und ihrer Bedeutung. Pia fährt Rad. Paul hört Musik. Pia fährt Rad Paul hört Musik Pia Musik Paul. hört Paul fährt. Pia fährt Musik. Rad hört Paul.

47 Fachkonzept - Sprache Lexik
<?xml version="1.0" encoding="iso "?> <!DOCTYPE kr [ <!ELEMENT kr (mi, ra)> <!ELEMENT mi (x, y)> <!ELEMENT x (#PCDATA)> <!ELEMENT y (#PCDATA)> <!ELEMENT ra (#PCDATA)> ]> <kr> <mi> <x>267</x> <y>214</y> </mi> <ra>44</ra> </kr> XML-Elemente: <kr>...</kr>, <mi>...</mi>, ... gültige XML-Dokumente bzgl. DTD, z.B.: <?xml version="1.0" encoding="iso "?> <kr> <mi> <x>267</x> <y>214</y> </mi> <ra>44</ra> </kr> Syntax Semantik? XML erlaubt es, neue Sprachen für bestimmte Problembereiche zu entwickeln. Eine XML-Dokumenttypdefinition legt die Lexik und Syntax einer Sprache fest. Die Sprache zu eine Dokumenttypdefinition besteht aus allen XML-Dokumenten, die gültig bzgl. der Dokumenttypdefinition sind.

48 Fachkonzept - Sprache <?xml version="1.0" encoding="iso "?> <!DOCTYPE html SYSTEM "myxhtml.dtd"> <html> <head> <title>Steckbrief von Bailey</title> </head> <body> <h1>Steckbrief</h1> <p><img src="bailey1.jpg" alt="Foto von Bailey"/></p> <p>Ich heiße <em>Bailey</em>. Ich ...</p> ... </body> </html> Die Elemente der Sprache MyXHTML heißen zwar genau so wie die der Sprache XHTML, die Bedeutung überträgt sich damit aber nicht automatisch. Für den Browser handelt es sich also nicht um ein interpretierbares XHTML-Dokument (das als Webseite dargestellt wird), sondern um ein XML-Dokument ohne spezielle Bedeutung. Eine XML-Dokumenttypdefinition legt also nicht die Semantik der Sprache fest. Diese muss zusätzlich festgelegt werden, z.B. durch ein Anwendungsprogramm.

49 XML-basierte Sprachen
Teil 5 XML-basierte Sprachen

50 Einstieg - SVG Pixelgrafik Vektorgrafik PPM SVG P3 130 160 255
... <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" " > <svg xmlns=" width="130" height="160"> <rect x="0" y="0" width="130" height="160" fill="yellow"></rect> <polygon points=" " fill="orange"> </polygon> <circle cx="80" cy="50" r="5" fill="red"></circle> <circle cx="35" cy="100" r="5" fill="red"></circle> <circle cx="80" cy="110" r="5" fill="red"></circle> <circle cx="105" cy="80" r="5" fill="red"></circle> <text x="2" y="10" font-size="10px" fill="blue">Informatikstudium in RLP</text> <text x="2" y="158" font-size="10px" fill="blue">KL - KO - MZ - TR</text> </svg> PPM SVG

51 Fachkonzept - Vektorgrafik
Objekte bilden die Grundlage von Vektorgrafiken. Eine Vektorgrafik setzt sich aus geometrischen Objekten zusammen. Objektdiagramm

52 Fachkonzept - Vektorgrafik
SVG steht für Scalable Vector Graphics. SVG ist eine Sprache, mit der man die Objekte einer Vektorgrafik beschreiben kann. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" " > <svg xmlns=" width="130" height="160"> <rect x="0" y="0" width="130" height="160" fill="yellow"></rect> <polygon points=" " fill="orange"> </polygon> <circle cx="80" cy="50" r="5" fill="red"></circle> <circle cx="35" cy="100" r="5" fill="red"></circle> <circle cx="80" cy="110" r="5" fill="red"></circle> <circle cx="105" cy="80" r="5" fill="red"></circle> <text x="2" y="10" font-size="10px" fill="blue">Informatikstudium in RLP</text> <text x="2" y="158" font-size="10px" fill="blue">KL - KO - MZ - TR</text> </svg> SVG-Quelltext

53 Fachkonzept - Vektorgrafik
Ein SVG-Dokument kann mit einem Texteditor erstellt und dann von einem neueren Browser angezeigt werden. Man muss hierzu nur das SVG-Dokument in einer Datei mit der Erweiterung .svg abspeichern und diese Datei mit dem Browser laden. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" " > <svg xmlns=" width="130" height="160"> <rect x="0" y="0" width="130" height="160" fill="yellow"></rect> <polygon points=" " fill="orange"> </polygon> <circle cx="80" cy="50" r="5" fill="red"></circle> <circle cx="35" cy="100" r="5" fill="red"></circle> <circle cx="80" cy="110" r="5" fill="red"></circle> <circle cx="105" cy="80" r="5" fill="red"></circle> <text x="2" y="10" font-size="10px" fill="blue">Informatikstudium in RLP</text> <text x="2" y="158" font-size="10px" fill="blue">KL - KO - MZ - TR</text> </svg> SVG-Quelltext Einfacher geht es mit speziellen Vektorgrafikprogrammen wie Inkscape . Diese können SVG-Dokumente nicht nur anzeigen, sondern auch automatisch erstellen. SVG: siehe auch

54 Einstieg - WML Hausaufgaben ... ... auf dem Handy!
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" " <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"> Seite 45 Aufgabe 3<br/> <a href="#start">Zurück zur Startseite</a> <card id="deutsch" title="Deutsch"> heute keine<br/> ... </wml>

55 Fachkonzept - Emulator
Ein Emulator ist ein System, das ein anderes System simuliert. Es weist dasselbe Verhalten auf, kann aber dieses Verhalten mit völlig anderen Mitteln erzeugen. Zum Testen von WML-Seiten ist es günstig, Programme zu benutzen, die die Anzeige auf einem Handy-Display simulieren. Man nennt solche Programme WML-Browser-Emulatoren.

56 Exkurs - 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" " <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"> Seite 45 Aufgabe 3<br/> <a href="#start">Zurück zur Startseite</a> <card id="deutsch" title="Deutsch"> heute keine<br/> ... </wml> WML: siehe auch

57 Exkurs - MathML MathML steht für Mathematical Markup Language. MathML ist eine Sprache, mit der man mathematische Ausdrücke beschreiben kann. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" " <math xmlns=" <mrow> <row> <msup> <mi>a</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>b</mi> </row> <mo>=</mo> <mi>c</mi> </mrow> </math>

58 Einstieg - XHTML+MathML+SVG
<?xml version="1.0" encoding="ISO "?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" " <html xmlns=" <head> <title>Pythagoras</title> </head> <body> <h1>Satz des Pythagoras</h1> <p>In einem rechtwinkligen Dreieck mit den Katheten a und b sowie der Hypothenuse c gilt:</p> <p> <math xmlns=" <mrow> ... </mrow> </math> </p> <p>Die folgende Zeichnung verdeutlicht diesen Zusammenhang.</p> <svg width="160" height="160" xmlns=" <rect x="40" y="80" width="40" height="40" fill="red"></rect> <rect x="80" y="50" width="30" height="30" fill="red"></rect> <polygon points=" " fill="red"> </polygon> </svg> </body> </html> Webseite mit integrierten XML-Sprachen

59 Einstieg - XHTML+MathML+SVG
<?xml version="1.0" encoding="ISO "?> <seite xmlns:xhtml=" xmlns:math=" xmlns: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: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=" " fill="red"> </svg:polygon> </svg:svg> </xhtml:body> </seite> Mischung aus XML-Sprachen

60 Exkurs - Namensraum <?xml version="1.0" encoding="ISO "?> <seite xmlns:xhtml=" xmlns:math=" xmlns: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: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=" " fill="red"> </svg:polygon> </svg:svg> </xhtml:body> </seite> Ein Namensraum ist eine Ansammlung von Namen für Elemente und Attribute. Ein veröffentlichter Namensraum muss mit einem weltweit eindeutigen Namen versehen werden. Dieser Identifikator wird in einer Namensraumdeklaration angegeben. Namensräume

61 XML-Dokumente und das Document Object Model
Teil 6 XML-Dokumente und das Document Object Model

62 Einstieg - Erkundung des DOM-Baumes
<?xml version="1.0" encoding="iso "?> <kr><mi><x>210</x><y>267</y></mi><ra>44</ra></kr> DOM-Baum DOM-Baum

63 Einstieg - Erkundung des DOM-Baumes
<?xml version="1.0" encoding="iso "?> <kr><mi><x>210</x><y>267</y></mi><ra>44</ra></kr> DOM-Baum Erkunden Sie mit dem Python-Programm "dombaum.pyw" die Baumstruktur eines XML-Dokuments. Versuchen Sie, alle Knoten des Baumes mit Hilfe der die Operationen parentNode, previousSibling, nextSibling, firstChild, lastChild zu besuchen.

64 Einstieg - Erkundung des DOM-Baumes
<?xml version="1.0" encoding="iso "?> <kr><mi><x>210</x><y>267</y></mi><ra>44</ra></kr> # -*- coding: iso *- from xml.dom.minidom import * # Quelltext in einen DOM-Baum umwandeln xml_quelltext = """<?xml version="1.0" encoding="iso "?> <kr><mi><x>210</x><y>267</y></mi><ra>44</ra></kr>""" document = parseString(xml_quelltext) # Navigation im DOM-Baum aktuellerKnoten = document print aktuellerKnoten.nodeName aktuellerKnoten = aktuellerKnoten.firstChild aktuellerKnoten = aktuellerKnoten.nextSibling # ... DOM-Baum Das Python-Programm zeigt, wie man aus einem XML-Quelltext einen DOM-Baum erzeugt und wie man mit Hilfe von Operationen im DOM-Baum navigiert. Testen und ergänzen Sie das Python-Programm.

65 Einstieg - Erkundung des DOM-Baumes
# -*- coding: iso *- from xml.dom.minidom import * # Quelltext in einen DOM-Baum umwandeln xml_quelltext = """<?xml version="1.0" encoding="iso "?> <kr><mi><x>210</x><y>267</y></mi><ra>44</ra></kr>""" document = parseString(xml_quelltext) # Verarbeitung eines DOM-Baumes def mittelpunkt(doc): k = doc k = k.firstChild # kr k = k.firstChild # mi k = k.firstChild # x k = k.firstChild # #text x = int(k.nodeValue) k = k.parentNode # x k = k.nextSibling # y y = int(k.nodeValue) return (x, y) # Test print mittelpunkt(document) Das folgende Python-Programm zeigt, wie man einen DOM-Baum verarbeitet. Testen Sie das Python-Programm. Was berechnet die Funktion mittelpunkt? Entwickeln Sie analog eine Funktion radius. DOM-Baum

66 Einstieg - Erkundung des DOM-Baumes
# -*- coding: iso *- from xml.dom.minidom import * # Quelltext in einen DOM-Baum umwandeln xml_quelltext = """<?xml version="1.0" encoding="iso "?> <kr> <mi> <x>210</x> <y>267</y> </mi> <ra>44</ra> </kr>""" document = parseString(xml_quelltext) # Verarbeitung eines DOM-Baumes def mittelpunkt(doc): # ... wie bisher ... return (x, y) # Test print mittelpunkt(document) Wir ändern den XML-Quelltext geringfügig ab, indem wir Zeilenumbrüche und Leerzeichen integrieren. Wie wirkt sich dies auf den DOM-Baum aus? Welche Konsequenzen ergeben sich für die Funktion mittelpunkt? DOM-Baum

67 Einstieg - Erkundung des DOM-Baumes
# -*- coding: iso *- from xml.dom.minidom import * # Quelltext in einen DOM-Baum umwandeln xml_quelltext = """<?xml version="1.0" encoding="iso "?> <kr> <mi> <x>210</x> <y>267</y> </mi> <ra>44</ra> </kr>""" document = parseString(xml_quelltext) # Verarbeitung eines DOM-Baumes def mittelpunkt(doc): k = doc xKnoten = k.getElementsByTagName("x") x = xKnoten[0].firstChild.nodeValue yKnoten = k.getElementsByTagName("y") y = yKnoten[0].firstChild.nodeValue return (x, y) # Test print mittelpunkt(document) Teste diese Implementierung der Funktion mittelpunkt mit verschieden formatierten XML-Dokumenten (ohne / mit Zeilenümbrüche etc.). Welchen Vorteil hat es, die Operation getElementsByTagName zu benutzen? Implementieren Sie analog die Funktion radius. DOM-Baum

68 Exkurs - Das Document Object Model
Das Document Object Model (DOM) ist eine standardisierte Spezifikation einer Schnittstelle für den Zugriff auf XML-Dokumente. Die Grundidee des DOM besteht darin, ein XML-Dokument in Baumform mit Hilfe geeigneter Objekte zu repräsentieren. DOM-Baum Um einen solchen Baum mit Hilfe von Objekten darzustellen, benötigt man einen geeigneten Satz von Klassen zusammen mit deren Methoden und Attributen. Dieser Satz von Klassen wird in der DOM-Spezifikation genau beschrieben und in einer DOM-Implementierung ausprogrammiert.

69 Exkurs - Das Document Object Model
Die Basisklasse zur Realisierung eines DOM-Baumes ist die Klasse Node. Objekte dieser Klasse verfügen über geeignete Attribute, um einen Baum zu erstellen und um die Daten der XML-Elemente zu speichern. DOM-Baum Node-Objekte

70 Exkurs - Das Document Object Model
Die Basisklasse Node ist weiter spezialisiert zu den Klassen Document (zur Verwaltung des gesamten XML-Dokuments), Element (zur Verwaltung von XML-Elementen) und Text (zur Verwaltung von Textpassagen). Diese abgeleiteten Klassen stellen zusätzliche Attribute und Methoden zur Verwaltung und Verarbeitung eines DOM-Baumes zur Verfügung.

71 Exkurs - Das Document Object Model
Mit Hilfe der Operationen dieser Klassen lässt sich die Verarbeitung eines DOM-Baumes recht einfach realisieren. # Verarbeitung eines DOM-Baumes def mittelpunkt(doc): k = doc xKnoten = k.getElementsByTagName("x") x = int(xKnoten[0].firstChild.data) yKnoten = k.getElementsByTagName("y") y = int(yKnoten[0].firstChild.data) return (x, y) # Test print mittelpunkt(document)

72 Miniprojekt - Automatensimulator
Ziel ist es, einen von JFlap erzeugten XML-Quelltext zur Beschreibung eines endlichen Automaten mit Hilfe eines selbst entwickelten Automatensimulators zu verarbeiten. Dieser Simulator muss also XML-Quelltexte wie den folgenden verarbeiten können. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--Created with JFLAP > <structure> <type>fa</type> <automaton> <!--The list of states.--> <state id="0" name="q0"> <x>60.0</x> <y>59.0</y> <initial/> </state> ... <!--The list of transitions.--> <transition> <from>4</from> <to>5</to> <read>b</read> </transition> </automaton> </structure>

73 Miniprojekt - Automatensimulator
# -*- coding: iso *- from xml.dom.minidom import * # Anfangszustand def anfangszustand(baum): z = None k_initial_liste = baum.getElementsByTagName("initial") if k_initial_liste != []: k_state = k_initial_liste[0].parentNode z = k_state.getAttribute("id") return z # Einlesen des XML-Quelltextes f_xml = file(" .jff", "r") xml_quelltext = f_xml.read() # Initialisierung des DOM-Baums dombaum = parseString(xml_quelltext) wurzel = dombaum.documentElement # Test z = anfangszustand(wurzel) print z Analysieren Sie zunächst den gezeigten Python-Quelltext. Was leistet die Funktion "anfangszustand"? Benutzen Sie die Datei " .jff" zum Testen.

74 Miniprojekt - Automatensimulator
# -*- coding: iso *- from xml.dom.minidom import * # Anfangszustand def anfangszustand(baum): ... # nächster Zustand def naechsterzustand(baum, zustand, eingabe): # Endzustand def endzustand(baum, zustand): Entwickeln Sie analog die Funktionen "naechsterzustand" und "endzustand".

75 Miniprojekt - Automatensimulator
... # Einlesen des XML-Quelltextes f_xml = file(" .jff", "r") xml_quelltext = f_xml.read() # Initialisierung des DOM-Baums dombaum = parseString(xml_quelltext) wurzel = dombaum.documentElement # Test wort = z = anfangszustand(wurzel) print z for w in wort: z = naechsterzustand(wurzel, z, w) if endzustand(wurzel, z): print "akzeptiert" else: print "nicht akzeptiert" Testen Sie den entwickelten Automatensimulator.

76 Miniprojekt - Automatensimulator
def naechsterzustand(baum, zustand, eingabe): z = None k_transition_liste = baum.getElementsByTagName("transition") for k in k_transition_liste: k_from_liste = k.getElementsByTagName("from") k_to_liste = k.getElementsByTagName("to") k_read_liste = k.getElementsByTagName("read") az = k_from_liste[0].firstChild.data zz = k_to_liste[0].firstChild.data e = k_read_liste[0].firstChild.data if (az == zustand) and (e == eingabe): z = zz return z # Endzustand def endzustand(baum, zustand): ez = False k_final_liste = baum.getElementsByTagName("final") for k in k_final_liste: if k.parentNode.getAttribute("id") == zustand: ez = True return ez

77 Verarbeitung von Sprachen
Teil 7 Verarbeitung von Sprachen

78 Einstieg - Verarbeitung von Grafik-Dok.
Ziel ist es, XML-Grafik-Dokumente so zu verarbeiten, dass eine Grafik entsteht. <?xml version="1.0" encoding="iso "?> <grafik> <rechteck> <ecke> <x>20</x> <y>50</y> </ecke> <laenge>80</laenge> <breite>40</breite> </rechteck> grafik.xml

79 Einstieg - Verarbeitung von Grafik-Dok.
def verarbeiteRechteck(knoten): x_knoten = knoten.getElementsByTagName("x") y_knoten = knoten.getElementsByTagName("y") laenge_knoten = knoten.getElementsByTagName("laenge") breite_knoten = knoten.getElementsByTagName("breite") ecke_x = int(x_knoten[0].firstChild.data) ecke_y = int(y_knoten[0].firstChild.data) laenge = int(laenge_knoten[0].firstChild.data) breite = int(breite_knoten[0].firstChild.data) t.up() t.forward(ecke_x) t.left(90) t.forward(ecke_y) t.right(90) t.down() t.forward(laenge) t.forward(breite) rechteck.xml def verarbeiten(quelltext): dokument = parseString(quelltext) rechteck_knoten = dokument.getElementsByTagName("rechteck") for knoten in rechteck_knoten: verarbeiteRechteck(knoten)

80 Einstieg - Verarbeitung von Grafik-Dok.
# -*- coding: iso *- from turtle import * t = Turtle() from xml.dom.minidom import * def verarbeiteRechteck(knoten): x_knoten = knoten.getElementsByTagName("x") y_knoten = knoten.getElementsByTagName("y") laenge_knoten = knoten.getElementsByTagName("laenge") ... def verarbeiten(quelltext): dokument = parseString(quelltext) rechteck_knoten = dokument.getElementsByTagName("rechteck") for knoten in rechteck_knoten: verarbeiteRechteck(knoten) # Test f_xml = file("grafik.xml", "r") xml_quelltext = f_xml.read() print xml_quelltext verarbeiten(xml_quelltext)

81 Fachkonzept - Interpreter
Ein Interpreter ist ein Programm, das Sätze einer Sprache schrittweise ausführt (interpretiert). # -*- coding: iso *- from turtle import * t = Turtle() from xml.dom.minidom import * def verarbeiteRechteck(knoten): x_knoten = knoten.getElementsByTagName("x") y_knoten = knoten.getElementsByTagName("y") laenge_knoten = knoten.getElementsByTagName("laenge") ... def verarbeiten(quelltext): dokument = parseString(quelltext) rechteck_knoten = dokument.getElementsByTagName("rechteck") for knoten in rechteck_knoten: verarbeiteRechteck(knoten)

82 Einstieg - Verarbeitung von Grafik-Dok.
def verarbeiten(quelltext): svg_dokument = svg_prolog + svg_starttag dokument = parseString(quelltext) rechteck_knoten = dokument.getElementsByTagName("rechteck") for knoten in rechteck_knoten: x_knoten = knoten.getElementsByTagName("x") y_knoten = knoten.getElementsByTagName("y") laenge_knoten = knoten.getElementsByTagName("laenge") breite_knoten = knoten.getElementsByTagName("breite") if x_knoten != []: ecke_x = x_knoten[0].firstChild.data if y_knoten != []: ecke_y = y_knoten[0].firstChild.data if laenge_knoten != []: laenge = laenge_knoten[0].firstChild.data if breite_knoten != []: breite = breite_knoten[0].firstChild.data svg_rect = "" svg_dokument = svg_dokument + svg_rect svg_dokument = svg_dokument + svg_endtag return svg_dokument

83 Einstieg - Verarbeitung von Grafik-Dok.
# -*- coding: iso *- from xml.dom.minidom import * # Konstanten svg_prolog = """<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' ' >""" svg_starttag = """ <svg xmlns=' width='400' height='400'> """ svg_endtag = """ </svg>""" # Verarbeitung def verarbeiten(quelltext): # siehe ... # Test f_xml = file("grafik.xml", "r") xml_quelltext = f_xml.read() svg_quelltext = verarbeiten(xml_quelltext) f_svg = file("grafik.svg", "w") f_svg.write(svg_quelltext) f_svg.close()

84 Fachkonzept - Compiler
Ein Compiler ist ein Programm, das Sätze einer Sprache in eine andere Sprache übersetzt. <?xml version="1.0" encoding="iso "?> <grafik> <rechteck> <ecke> <x>20</x> <y>50</y> </ecke> <laenge>80</laenge> <breite>40</breite> </rechteck> grafik <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' ' > <svg xmlns=' width='400' height='400'> <rect x='20' y='50' width='80' height='40'></rect> </svg> svg

85 XML im Informatikunterricht
Teil 8 XML im Informatikunterricht

86 Lehrplan für das Grundfach Informatik
fundamentale Idee unterrichtliche Umsetzung Darstellung mit formalen Sprachen XML

87 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 Darstellung mit formalen Sprachen

88 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

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

90 Kompetenzorientierter Unterricht
Kompetenz: notwendige Fähigkeiten und Fertigkeiten, in unterschiedlichen lebensweltlichen Situationen Probleme zu lösen und die Bereitschaft, dies zu tun 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: LOGIN 154/155, S. 33 Kompetenzentwicklung erfordert handlungsorientierte Auseinandersetzung mit Fachkonzepten in geeigneten (speziellen) Kontexten

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

92 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. M. Jeckle: Vorlesung XML. XML in 10 Punkten: SELFHTML: Weitere benutzte Materialien sind auf den jeweiligen Folien zitiert.


Herunterladen ppt "Informationsdarstellung, Sprachbeschreibung, Sprachverarbeitung - mit XML - Klaus Becker 2009."

Ähnliche Präsentationen


Google-Anzeigen