1.18k likes | 1.39k Vues
Informationsdarstellung mit XML. Klaus Becker 2007. Ziele und Inhalte. <?xml version="1.0" encoding="ISO-8859-1"?> <Fortbildung> <Titel>Informationsdarstellung mit XML</Titel> <Ziele> <Ziel>Einblick in XML</Ziel> <Ziel>XML - ein Thema für den Informatikunterricht</Ziel>
E N D
Informationsdarstellung mit XML Klaus Becker 2007
Ziele und Inhalte <?xml version="1.0" encoding="ISO-8859-1"?> <Fortbildung> <Titel>Informationsdarstellung mit XML</Titel> <Ziele> <Ziel>Einblick in XML</Ziel> <Ziel>XML - ein Thema für den Informatikunterricht</Ziel> <Ziel>Informatikunterricht am Puls der Zeit</Ziel> </Ziele> <Inhalte> <Inhalt>Ein Blick hinter die Kulissen</Inhalt> <Inhalt>Grundlagen von XML</Inhalt> <Inhalt>Dokumenttypen und ihre Validierung</Inhalt> <Inhalt>XML-basierte Sprachen</Inhalt> <Inhalt>Exkurs: Namensräume, Formatierung, ...</Inhalt> <Inhalt>Verarbeitung von XML-Dokumenten</Inhalt> </Inhalte> </Fortbildung>
Teil 1 Ein Blick hinter die Kulissen
Textverarbeitung Mit OpenOffice wurde ein Text über den Kölner Dom erstellt und anschließend in verschiedenen Ausgabeformaten abgespeichert ...
Darstellung des Textes ... als MS-Word-Datei (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.
Erstellung von Struktogrammen Mit Hilfe von verschiedenen Struktogramm-Editoren wurde der Algorithmus zur Berechnung des ggT in Struktogrammform dargestellt: StruktEdit NSCEdit
Datei-Formate zur Darstellung StruktEdit-Datei betrachtet mit einem Hex-Editor NSCEdit-Datei betrachtet mit einem Text-Editor
Automatensimulator Das Simulationsprogramm JFlap wurde in den letzten Jahren mehrfach überarbeitet und weiterentwickelt. Insbesondere wurde auch das Speicherformat verändert. Zunächst sah dies so aus (JFlap40b8):
Automatensimulator In den neueren Versionen sieht das so aus (JFlap40b14):
Aufgabe Viele Programme speichern Daten heute im XML-Format. Um den Speicherbedarf zu verringern, werden die Daten zusätzlich komprimiert. Beispiel: GeoGebra Benennen Sie eine mit GeoGebra erstellte Datei (z. B. grenzwert_mit_streifen.ggb) geeignet um (grenzwert_mit_streifen.zip) und entpacken Sie sie. Schauen Sie sich die entpackte Datei mit einem Editor an.
Aufgabe Lesen Sie den unten abgebildeten Text. Vergleichen die Situation der Baumeister mit heutigen Nutzern von digital gespeicherter Information. Welche Vorteile bietet eine XML-basierte Darstellung? 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. (Quelle: http://www.wdr.de/tv/q21/1058.0.phtml)
Aufgabe Im Ordner "Material_Datenbank" finden Sie Daten aus einer Datenbank , die im XML-Format exportiert worden sind. Warum macht es Sinn, einen solchen Datenexport anzubieten? <?xml version="1.0" encoding="utf-8" ?> <wm-stufe1> <!-- Tabelle begegnung --> <begegnung> <Team1>Deutschland</Team1> <Team2>Costa Rica</Team2> <Ergebnis>4:2</Ergebnis> <Datum>2006-06-09</Datum> <Ort>Muenchen</Ort> </begegnung> <begegnung> <Team1>Polen</Team1> <Team2>Ecuador</Team2> <Ergebnis>0:2</Ergebnis> <Datum>2006-06-09</Datum> <Ort>Gelsenkirchen</Ort> </begegnung> ... </wm-stufe1>
Aufgabe Verschaffen Sie sich einen ersten Überblick über XML. Lesen Sie sich hierzu die Seite "XML in 10 Punkten" durch. 1. XML steht für strukturierte Daten2. XML sieht ein wenig wie HTML aus3. XML ist Text, aber nicht zum Lesen4. XML ist vom Design her ausführlich5. XML ist eine Familie von Techniken6. XML ist neu, aber nicht so neu7. XML überführt HTML in XHTML8. XML ist modular9. XML ist die Basis für RDF und das Semantic Web10. XML ist lizenzfrei, plattformunabhängig und gut unterstützt siehe: http://www.w3c.de/Misc/XML-in-10-Punkten.html
Datenrepräsentation bei Werkzeugen Repräsentieren Repräsentieren Interpretieren Interpretieren <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text><span>Eingabe: x, y</span></text> </statement> <whileloop> <text><span>SOLANGE y > 0</span></text> <sequence> <statement> <text><span>h := x mod y</span></text> ... StruktEdit:proprietäres Format NSCEdit:standardisiertes Format
Datenrepräsentation mit XML XML steht für Extensible Markup Language. XML wird benutzt, um Daten strukturiert darzustellen. Daten können auf ganz unterschiedliche Weise dargestellt und auch strukturiert werden. XML bietet eine Art Standard zur Strukturierung von Daten, den inzwischen sehr viele Werkzeuge nutzen. <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text><span>Eingabe: x, y</span></text> </statement> <whileloop> <text><span>SOLANGE y > 0</span></text> <sequence> <statement> <text><span>h := x mod y</span></text> ... NSCEdit:standardisiertes Format
Teil 2 Grundlagen von XML
Strukturierte Darstellung v. Information XML-Dokumente werden benutzt, um Information strukturiert darzustellen. <?xml version="1.0" encoding="UTF-8"?> <!--Created with JFLAP 4.0b14.--> <structure> <type>fa</type> <!--The list of states.--> <state id="0"> <x>119.0</x> <y>101.0</y> </state> <state id="1"> <x>119.0</x> <y>101.0</y> <initial/> <final/> </state> <state id="2"> <x>248.0</x> <y>101.0</y> </state> <!--The list of transitions.--> <transition> <from>2</from> <to>1</to> <read>1</read> </transition> ... </structure> <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <text> <span>SOLANGE y > 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> ... </sequence> <text> <span>GGT</span> </text> </nsc>
Aufgabe Schauen Sie sich ein XML-Dokument mit einem geeigneten Browser an. Darstellung im Editor <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <text> <span>SOLANGE y > 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> ... </sequence> <text> <span>GGT</span> </text> </nsc> Anzeige mit einem Browser
Hierarchische Baumstruktur Die Strukturierung erfolgt in Form eines Baumes. <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <text> <span>SOLANGE y > 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> ... </sequence> <text> <span>GGT</span> </text> </nsc> Anzeige mit einem Browser
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). • 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 also 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. Attributwert Attribut
Kommentare • Kommentare erleichtern das Verständnis und werden vom Browser mit angezeigt. <?xml version="1.0" encoding="UTF-8"?> <!--Created with JFLAP 4.0b14.--> <structure> <type>fa</type> <!--The list of states.--> <state id="0"> <x>119.0</x> <y>101.0</y> </state> <state id="1"> <x>119.0</x> <y>101.0</y> <initial/> <final/> </state> <state id="2"> <x>248.0</x> <y>101.0</y> </state> <!--The list of transitions.--> <transition> <from>2</from> <to>1</to> <read>1</read> ... </structure> 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. • Im Prolog kann der Zeichensatz festgelegt werden, der zur Kodierung benutzt wird. Fehlt die Angabe des Zeichensatzes, so wird UTF-8 als Vorgabe benutzt. Wenn deutsche Umlaute korrekt dargestellt werden sollen, sollte man den Zeichensatz ISO-8859-1 verwenden. <?xml version="1.0" encoding="UTF-8"?> <!--Created with JFLAP 4.0b14.--> <structure> <type>fa</type> <!--The list of states.--> <state id="0"> <x>119.0</x> <y>101.0</y> </state> <state id="1"> <x>119.0</x> <y>101.0</y> <initial/> <final/> </state> <state id="2"> <x>248.0</x> <y>101.0</y> </state> <!--The list of transitions.--> <transition> <from>2</from> ... </structure>
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 Was geschieht, wenn man die Elementstruktur verändert. Lassen Sie gezielt Tags weg bzw. verändern Sie gezielt die Baumstruktur, ohne gegen die Syntaxregeln von XML zu verstoßen. <?xml version="1.0" encoding="UTF-8"?> <nsc version="0.2"> <sequence> <statement> <text> <span>Eingabe: x, y</span> </text> </statement> <whileloop> <text> <span>SOLANGE y > 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> ... </nsc> weglassen
Aufgabe Versuchen Sie, eine neue Anweisung im Struktogramm zur Berechnung des GGT einzufügen (z. B. die Zuweisung h := 0 nach der Eingabe). Benutzen Sie aber nicht die Struktogramm-Editoren, sondern versuchen Sie es direkt im "Quelltext". Öffnen Sie anschließend den Quelltext mit dem entsprechenden Struktogrammeditor. Welche Unterschiede zeigen sich zwischen den verschiedenen Datenformaten? Vergleichen Sie mit der Situation beim Bau des Kölner Doms.
Aufgabe Eine Bank möchte Daten von Ü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.
KO 54 128 RB 28 35 MZ BI 98 33 35 TR AZ 36 48 116 FT 48 31 KL SP Aufgabe Graphen treten in sehr vielen Anwendungen auf. Entwickeln Sie ein XML-Dokument, mit dem man die Graph-Daten strukturiert darstellen kann.
Teil 3 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> <text> <span>SOLANGE y > 0</span> </text> <sequence> <statement> <text> <span>h := x mod y</span> </text> </statement> ... </sequence> </whileloop> <statement> <text> <span>Ausgabe: x</span> </text> </statement> </sequence> <text> <span>GGT</span> </text> </nsc> Zielsetzung: Im Folgenden sollen Verfahren vorgestellt werden, mit denen der Dokumenttyp präzise beschrieben werden kann.
Dokumenttyp Wir betrachten als erstes Beispiel XML-Dokumente zur (vereinfachten) Beschreibung eines Lehrerkollegiums. <?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> </lehrer> <lehrer geschlecht="w"> <name>Müller</name> <vorname>Katharina</vorname> <kuerzel>mue</kuerzel> <fach>Mathematik</fach> <fach>Informatik</fach> <email>mue.kantgymnasium@schule.de</email> </lehrer> </kollegium> Ein Kollegium besteht aus Lehrerinnen und Lehrern (mindestens eine / einer). Im Folgenden werden mit "Lehrer" auch Lehrerinnen erfasst. Jeder Lehrer hat einen Namen und Vornamen. Jedem Lehrer ist ein Kürzel zugeordnet. Jeder Lehrer unterrichtet mindestens ein Fach. Ein Lehrer kann eine oder mehrere Email-Adressen angeben. Beschreibung des Kontextes
Dokumenttyp <?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> </lehrer> <lehrer geschlecht="w"> <name>Müller</name> <vorname>Katharina</vorname> <kuerzel>mue</kuerzel> <fach>Mathematik</fach> <fach>Informatik</fach> <email>mue.kantgymnasium@schule.de</email> </lehrer> </kollegium> Das Wurzelelement hat den Namen "kollegium". Ein Element vom Typ "kollegium" besteht aus mindestens einem Element vom Typ "lehrer". Ein Element vom Typ "lehrer" besteht aus - einem Element vom Typ "name",- einem Element vom Typ "vorname",- einem Element vom Typ "kuerzel",- mindestens e. Element v. Typ "fach"- beliebig viel. Elementen v. Typ "email".Zudem hat ein Element vom Typ "lehrer" das Attribut "geschlecht". Ein Element vom Typ "name" besteht aus Zeichen. ... informelle Beschreibung des Dokumenttyps
Dokumenttypdefinition <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE kollegium [ <!ELEMENT kollegium (lehrer*)> <!ELEMENT lehrer (name, vorname, kuerzel, fach+, email*)> <!ATTLIST lehrer geschlecht CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT kuerzel (#PCDATA)> <!ELEMENT fach (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> <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> .. </kollegium> Das Wurzelelement hat den Namen "kollegium". Ein Element vom Typ "kollegium" besteht aus mindestens einem Element vom Typ "lehrer". Ein Element vom Typ "lehrer" besteht aus - einem Element vom Typ "name",- einem Element vom Typ "vorname",- einem Element vom Typ "kuerzel",- mindestens e. Element v. Typ "fach"- beliebig viel. Elementen v. Typ "email".Zudem hat ein Element vom Typ "lehrer" das Attribut "geschlecht". Ein Element vom Typ "name" besteht aus Zeichen. ... informelle Beschreibung des Dokumenttyps formale Beschreibung des Dokumenttyps
Dokumenttypdefinition Eine Dokumenttypdefinition (DTD) legt eine Klasse von Dokumenten fest, die alle vom gleichen Typ sind. <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE kollegium [ <!ELEMENT kollegium (lehrer*)> <!ELEMENT lehrer (name, vorname, kuerzel, fach+, email*)> <!ATTLIST lehrer geschlecht CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT kuerzel (#PCDATA)> <!ELEMENT fach (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> <kollegium> <lehrer geschlecht="w"> <name>Meier</name> <vorname>Christiane</vorname> <kuerzel>mei</kuerzel> <fach>Deutsch</fach> <fach>Erdkunde</fach> <email>christianemeier@gmx.de</email> <email>mei.kantgymnasium@schule.de</email> </lehrer> .. </kollegium> Dokumenttypdefinition Eine Dokumenttypdefinition beschreibt die Struktur eines Dokuments mit Hilfe einer Grammatik, die in Form von Deklarationen beschrieben wird.
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 kollegium [ ... ]> <kollegium> ... </kollegium> interne DTD <!DOCTYPE kollegium SYSTEM "kollegium.dtd"> <kollegium> ... </kollegium> 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 <!DOCTYPE kollegium [ <!ELEMENT kollegium (lehrer*)> <!ELEMENT lehrer (name, vorname, kuerzel, fach+, email*)> <!ATTLIST lehrer geschlecht CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT kuerzel (#PCDATA)> <!ELEMENT fach (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> Elementtyp-Deklaration <!ELEMENT Name Inhaltsmodell>
Inhaltsmodelle Inhaltsmodell Beschreibung Elementinhalt Das Element enthält ausschließlich Unterelemente <!ELEMENT kollegium (lehrer*)> <kollegium><lehrer>...</lehrer><lehrer>...</lehrer></kollegium> #PCDATA Das Element enthält nur Zeichendaten <!ELEMENT name (#PCDATA)> <fach>Sport</fach> gemischter Inhalt Das Element kann Zeichendaten und Unterelemente enthalten <!ELEMENT anrede (#PCDATA?, vormame, name)> <anrede>Frau<vorname>Christine</vorname><name>Meier</name></anrede> EMPTY Das Element hat keinen Inhalt <!ELEMENT direktor EMPTY> <direktor/> ANY Das Element hat beliebige Inhalte haben.
Deklaration von Attributlisten <!ATTLIST Elementname Attributname Attributtyp Vorgabewert Attributname Attributtyp Vorgabewert Attributname Attributtyp Vorgabewert ... > <!ATTLIST lehrer geschlecht 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. <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE kollegium [ <!ELEMENT kollegium (lehrer*)> <!ELEMENT lehrer (name, vorname, kuerzel, fach+, email*)> <!ATTLIST lehrer geschlecht CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT kuerzel (#PCDATA)> <!ELEMENT fach (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> <kollegium> <lehrer geschlecht="w"> <name>Meier</name> <vorname>Christiane</vorname> <kuerzel>mei</kuerzel> <fach>Deutsch</fach> <fach>Erdkunde</fach> <email>christianemeier@gmx.de</email> <email>mei.kantgymnasium@schule.de</email> </lehrer> .. </kollegium> • Ein gültiges XML-Dokument muss auch wohlgeformt sein. • Gültigkeit bezieht sich immer auf eine spezielle Strukturbeschreibung (hier in Form einer DTD).
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. http://www.validome.org/xml/validate/
Validierung Viele XML-Editoren haben XML-Parser integriert. Open XML Editor
Aufgabe Erweitern Sie die DTD zur Beschreibung von Lehrerkollegien. Die Lehrer-Daten sollen um Adressangaben ergänzt werden. Validieren Sie das erweiterte XML-Dokument. Testen Sie insbesondere interne und auch externe DTD.
Aufgabe Wir betrachten XML-Dokumente zur Beschreibung von Graphen. Entwickeln Sie jeweils passende DTD. <?xml version="1.0" encoding="ISO-8859-1"?> <graph id="RLP"> <node id="TR"/> <node id="KL"/> <node id="KO"/> <edge source="TR" target="KL"> <data>116</data> </edge> <edge source="TR" target="KO"> <data>128</data> </edge> </graph> <?xml version="1.0" encoding="ISO-8859-1"?> <graph> <knotenmenge> <knoten> <name>TR</name> </knoten> <knoten> <name>KL</name> </knoten> ... </knotenmenge> <kantenmenge> <kante> <von>TR</von> <nach>KL</nach> <gewicht>116</gewicht> </kante> <kante> <von>KL</von> <nach>TR</nach> <gewicht>116</gewicht> </kante> ... </kantenmenge> </graph>
Aufgabe Entwickeln Sie eine DTD für Automatenbeschreibungen. Die von JFlap erzeugten XML-Beschreibungen sollen dabei als gültig erkannt werden.