XML_Einfuehrung_und_Grundlagen¶
ehemalige Veranstaltungen ia3.netz + ia3.data sowie ia4.Netz im Studiengang Interaktive Medien
(c) 2020/2021 Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever
Einführung und Grundlagen von XML¶
Entwicklung des Internets¶
- 1969 Arpanet
- 1975 erste Internet Protokolle
- 1980 Übergang Arpanet (milnet) -> Internet (csnet)
- 1981 RFC 791: Internet Protocol
- 1971 erste E-Mail Protokolle
- 1982 RFC 821: Simple Mail Transfer Protocol (SMTP)
Entwicklung von HTML¶
- 1989 erste WWW Protokolle (Tim Berners-Lee am CERN)
- 1992 Hyper-text Markup Language 1.0
- 1995 HTML 2.0 als RFC 1866
- 1996 HTML 3.2
- 1998 HTML 4.0
- 1999 HTML 4.01
- 2000 XHTML 1.0
- 2001 XHTML™ 1.1 - Module-based XHTML
- 2002 XHTML 1.0 -Second Edition
- 2010 XHTML™ 1.1 - Module-based XHTML - Second Edition
- 2014 HTML 5
- 2017 HTML 5.2
HTML¶
Die derzeit letzte Version von HTML als Spezifikation, HTML 4.01 ist als Recommendation am 24.12.1999 herausgekommen.
Nach diesem Zeitpunkt wurde vom W3C der Schwerpunkt der Weiterentwicklung von HTML im wesentlichen erstmal in die XML Konformität gesteckt, also in die Entwicklung und Weiterentwicklung von XHTML. XHTML wurde jedoch nicht in dem Maße angenommen, wie das vom W3C erhofft wurde. Daher sind 2010 die notwendigen Erweiterungsmaßnahmen aus XHTML 2.0 stattdessen in ein allumfassendes HTML 5 eingeflossen. Im Oktober 2014 mündeten diese Entwicklung in eine Recommendation.
Alle aktuellen Entwicklungen von HTML werden auf der HTML-Seite vom W3C zusammengefasst und veröffentlicht.
Der Unterschied zwischen HTML 4 und HTML 5 ist ebenfalls in einer offiziellen Working Group Note veröffentlicht.
Einführung und Übersicht zu HTML¶
Die aus meiner Sicht beste Einführung und Übersicht in HTML ist seit Jahren Selfhtml von Stefan Münz bzw. das aktuellere Selfhtml-Wiki. Dort gibt es genügend Beispiele, welche den Aufbau und die Struktur von HTML hervorragend erklären. Daher wird in diesem Skript auf weitere Details hierzu verzichtet.
Das Web-Education Wiki des W3C ist ebenfalls eine sehr gute Quelle für das Erlernen von HTML - insbesondere das 4-wöchige Training, wenn sie mit HTML noch nicht sonderlich vertraut sind. Ebenfalls eine gute Quelle ist Webplatform.org, eine Seite einer Allianz des W3C und allen Web Platform Stewards, allen Global Playern, die das Web entwickelt haben und weiterentwicklen (Browser-Hersteller, Social Media Unternehmen, etc.)
SGML - Basis von HTML und XML¶
HTML baut auf der SGML (Standardized General Markup Language) auf, die seit 1986 als ISO Standard existiert (erste Ideen für SGML wurden 1969 von Goldfarb et.al. (IBM) entwickelt)
SGML ist im Publishing Bereich relativ bekannt, aber wegen seiner Mächtigkeit (Spezifikation mit 500 Seiten) und Komplexität nicht einfach anwendbar, aber dafür natürlich sehr flexibel.
1996 kam die Idee auf, den Bekanntheitsgrad und den Erfolg des starren HTML mit der Flexibilität von SGML zu verknüpfen und eine für das Web optimierte EXtended Markup Language (XML) zu definieren.
Im Februar 1998 wurde XML 1.0 zum W3C-Standard erhoben (mit der deutschen Übersetzung)
Im Gegensatz zu SGML ist XML wesentlich einfacher und speziell für das Internet definiert, XML Dokumente können schneller erstellt werden als SGML Dokumente und es ist einfacher Anwendungen zu schreiben, die XML Dokumente interpretieren als Anwendungen, die SGML Dokumente interpretieren.
Aber XML ist SGML:
- XML ist voll kompatibel zu SGML
- beide Sprachen unterstützen eine breite Palette von Anwendungen
- beide benutzen Style Sheets um den Inhalt zu formatieren
- Dokumente von beiden können einfach gelesen und verstanden werden
- Dokumente von beiden benutzen kurze und prägnante Strukturen.
- XML-Dokumente können von SGML-Anwendungen einfach verarbeitet werden
XML in 10 Punkten¶
Das W3C hat eine sehr schöne Zusammenfassung über XML veröffentlicht:
1. XML steht für strukturierte Daten¶
Strukturierte Daten findet man z.B. in so unterschiedlichen Dingen wie Kalkulationstabellen, Adressbücher, Konfigurationsparameter, finanzielle Transaktionen und technische Zeichnungen. XML ist ein Satz an Regeln (man kann ebenso von Richtlinien oder Konventionen sprechen) für die Erstellung von Textformaten zur Strukturierung solcher Daten. XML ist keine Programmiersprache und man braucht auch kein Programmierer zu sein, um XML zu benutzen oder zu lernen. XML erleichtert es einem Computer, Daten zu generieren oder zu lesen und sorgt dafür, dass eine bestimmte Datenstruktur eindeutig bleibt. XML vermeidet herkömmliche Fallen, wie sie in anderen Sprachkonstruktionen auftreten: XML ist erweiterbar, plattformunabhängig und unterstützt Internationalisierung / Lokalisierung und Unicode.
2. XML sieht ein wenig wie HTML aus¶
Wie HTML verwendet XML Tags (durch "<" und ">" geklammerte Wörter) und Attribute (der Form name="value"). Während HTML festlegt, was jedes Tag und Attribut bedeutet, und oft wie der Text dazwischen in einem Browser aussieht, benutzt XML die Tags nur zur Abgrenzung von Daten und überlässt die Interpretation der Daten allein der Anwendung, die sie verarbeitet. Mit anderen Worten: wenn Sie "< p >" in einer XML-Datei sehen, sollten Sie nicht annehmen, dass es sich um einen Absatz (englisch: paragraph) handelt. Je nach Kontext kann es ein Preis, ein Parameter, eine Person, ein(e) P.... sein (übrigens, wer sagt denn, dass es ein Wort mit einem "p" sein muss?).
3. XML ist Text, aber nicht zum Lesen¶
Programme, die Kalkulationstabellen, Adressbücher und andere strukturierte Daten produzieren, speichern diese Daten meist auf der Festplatte, wobei sie entweder ein Binär- oder ein Textformat verwenden. Ein Vorteil des Textformats ist es, dass man sich auf diese Weise die Daten ansehen kann, ohne das produzierende Programm selbst zu verwenden; kurz gesagt: man kann es mit jedem beliebigen Texteditor lesen. Ferner vereinfacht reiner Text dem Entwickler das Debuggen von Anwendungen. Genau wie bei HTML, bestehen XML Dateien aus reinem Text, der zwar von Menschen nicht gelesen werden sollte, aber gelesen werden kann, wenn es notwendig ist. Anders als bei HTML, sind die Regeln bei XML strikt. Ein weggelassenes Tag oder ein Attribut ohne Anführungszeichen, machen eine XML Datei unbenutzbar, während dies bei HTML toleriert und oftmals explizit erlaubt wird. Die offizielle XML Spezifikation verbietet es Anwendungen, erst hinterher Warnmeldungen anzuzeigen, falls sie auf fehlerhafte XML Dateien stossen sollten; ist die Datei fehlerhaft, hat die Anwendung an dieser Stelle anzuhalten und eine Fehlermeldung auszugeben.
4. XML ist vom Design her ausführlich¶
Da XML ein Textformat ist und Tags verwendet, um die Daten abzugrenzen, sind XML-Dateien fast immer größer als vergleichbare binäre Formate. Das war eine bewusste Entscheidung der XML-Entwickler. Die Vorteile eines Textformats sind klar (siehe oben), und die Nachteile können meistens an anderer Stelle ausgeglichen werden. Plattenplatz ist nicht mehr so teuer wie früher, und Programme wie zip und gzip können Dateien sehr gut und sehr schnell komprimieren. Außerdem können Kommunikationsprotokolle wie Modemprotokolle und HTTP/1.1 (das Kernprotokoll des Webs) Daten automatisch komprimieren und damit ebenso effektiv Bandbreite sparen wie ein binäres Format.
5. XML ist eine Familie von Techniken¶
XML 1.0 ist die Spezifikation, die definiert, was "Tags" und "Attribute" sind. Hinter XML 1.0 steht die "XML Familie" als ein wachsender Satz an Modulen, der nützliche Serviceleistungen für die Verwirklichung wichtiger und häufig angefragter Aufgaben bereithält. Xlink beschreibt eine Standardmethode, um Hyperlinks zu XML Dateien hinzuzufügen. XPointer und XFragments sind Syntaxen (in Entwicklung), um auf Teile eines XML Dokuments zu verweisen. Ein XPointer ähnelt ein wenig einem URL, aber anstatt auf Dokumente im Web zu zeigen, zeigt er auf Teildaten innerhalb einer XML Datei. CSS, die Style-Sheet-Sprache, ist auf XML ebenso anwendbar wie auf HTML. XSL ist die weiterentwickelte Sprache zum Erstellen von Style Sheets. Sie basiert auf XSLT, einer Transformationssprache, die für das Umstellen, Hinzufügen und Löschen von Tags und Attributen verwendet wird. Das DOM ist eine Standardmenge von Funktionsaufrufen für die Manipulation von XML (und HTML) Dateien aus einer Programmiersprache. XML Schema 1 und 2 unterstützen Entwickler bei der präzisen Definition ihrer eigenen XML-basierten Formate. Es gibt noch einige weitere verfügbare Module und Werkzeuge, bzw. solche, die sich gerade in der Entwicklung befinden. Sehen Sie sich daher regelmäßig die W3C technical report page an.
6. XML ist neu, aber nicht so neu¶
Die Entwicklung von XML begann 1996 und seit Februar 1998 ist es ein W3C-Standard, was Sie vermuten lassen könnte, dass es eine ziemlich unausgegorene Technologie ist. In Wirklichkeit ist die Technologie nicht sehr neu. Vor XML gab es SGML, das in den frühen 80er Jahren entwickelt wurde, seit 1986 eine ISO-Norm ist und eine breite Anwendung für große Dokumentationsprojekte fand. Die Entwicklung von HTML begann dann 1990. Die Entwickler von XML nahmen - aufgrund der Erfahrung mit HTML - einfach die besten Teile von SGML und produzierten etwas, was nicht weniger mächtig als SGML, aber bei weitem geregelter und einfacher in der Anwendung ist. Einige Evolutionen sind allerdings kaum von Revolutionen zu unterscheiden ... Und man muss sagen, dass, während SGML zumeist für technische Dokumentation und viel weniger für andere Arten von Daten verwendet wird, es bei XML genau umgekehrt ist.
7. XML überführt HTML in XHTML¶
Es gibt eine wichtige XML Anwendung, die ein Dokumentenformat beschreibt: W3C's XHTML, der Nachfolger von HTML. XHTML hat mit HTML viele gleiche Elemente. Die Syntax hat sich ein wenig geändert, um mit den XML Regeln konform zu sein. Ein Dokument, das "XML basiert" ist, erbt die Syntax von XML, wird aber auf verschiedene Weise begrenzt (z.B. XHTML erlaubt "< p >", aber nicht "< r >"); gleichzeitig wird der Syntax Bedeutung zugemessen (bei XHTML bedeutet "< p >", dass nun ein "Absatz" folgt und nicht, dass eine "Person", ein "Preis" oder sonst irgendetwas ausgezeichnet wird).
8. XML ist modular¶
XML erlaubt es einem, ein neues Dokumentenformat zu definieren, indem man andere Formate kombiniert oder wiederbenutzt. Wenn jedoch zwei Formate völlig unabhängig voneinander entwickelt worden sind, können sie Elemente und Attribute enthalten, die in beiden Formaten mit dem gleichen Namen vorkommen. Wenn man diese dann kombinieren will, muss man entsprechend vorsichtig sein (meint "< p >" jetzt "Absatz" aus dem einen Format, oder aber "Person" aus dem anderen Format?). Um bei der Kombination von Formaten Namenskollisionen zu vermeiden, stellt XML den Namensraummechanismus zur Verfügung. XSL und RDF sind zwei gute Beispiele für XML-basierte Formate, die Namensräume benutzen. XML Schema ist entworfen worden, um genau diese Modularisierung bei der Definition von XML Dokumentenstrukturen zu unterstützen. Es ist ein Leichtes, zwei Schemata zu verbinden, um ein drittes herzustellen, welches die Struktur der zusammengefügten Dokumente abbildet.
9. XML ist die Basis für RDF und das Semantic Web¶
W3C's Resource Describtion Framework (RDF) ist ein XML Textformat, welches Beschreibungen von Resourcen und Metadatenanwendungen unterstützt, wie z.B. Musik- oder Photokollektionen, oder Schriftenverzeichnisse. Zum Beispiel kann man mit RDF Personen in einem Photoalbum im Web aufgrund von Informationen aus seiner eigenen Kontaktliste identifizieren und ihnen automatisch eine Email senden, um ihnen mitzuteilen, dass ihr Foto im Web zu finden ist. Genau wie HTML Dokumente, Menüsysteme und Webformulare integrierte, um das Web, so wie wir es heute kennen, ins Leben zu rufen, so integriert RDF Anwendungen und Agenten in ein semantisches Web. So wie Menschen eine Vereinbarung über den Sinn der Worte benötigen, damit sie sich unterhalten können, so benötigen Computer Mechanismen für die Vereinbarung von Bedeutungen, sofern sie effektiv miteinander kommunizieren wollen. Eine formale Beschreibung von Ausdrücken in bestimmten Bereichen (z.B. im Handel oder in der Herstellung) wird Ontologie genannt und ist ein notweniger Teil des Semantic Web. RDF, Ontologie und die Repräsentation von Sinnzusammenhängen, so dass Computer die Arbeit von Menschen unterstützen können, sind alles Themen der Semantic Web Activity.
10. XML ist lizenzfrei, plattformunabhängig und gut unterstützt¶
Wenn Sie XML als Basis für ein Projekt wählen, dann finden Sie Zugang zu einer großen und wachsenden Ansammlung von Werkzeugen (eines davon macht vielleicht schon das, was Sie brauchen!) und zu einer Menge versierter Fachleute. Sich für XML zu entscheiden, ist fast so wie SQL für Datenbanken zu wählen: Sie müssen nur noch Ihren eigenen Datenbestand und die Programme/Prozeduren, die ihn bearbeiten, erstellen. Aber dafür gibt es viele verfügbare Werkzeuge und viele Leute, die Ihnen helfen können. Und, da XML als eine W3C-Entwicklung lizenzfrei ist, können Sie Ihre eigene Software drum herum bauen, ohne jemandem etwas zu bezahlen. Die große und wachsende Unterstützung bedeutet, dass Sie auch nicht an einen einzigen Anbieter gebunden sind. XML ist nicht immer die beste Lösung, aber es lohnt sich immer, XML in Erwägung zu ziehen.
Quelle:
XML - Eine Familie¶
Wie in dem Punkt 5 der obigen Aufzählung bereits zur Sprache gebracht, kann XML nicht alleine betrachtet werden. Das Bild vom W3C lässt deutlich erkennen, dass es sich um ein Gesamtkonzept handelt, wobei die derzeitige Vision des W3C die Weiterentwicklung des Web zum Semantischen Web im Vordergrund steht.

XML Sprache¶
Eine Anwendung der Extensible Markup Language.
Ein Vokabular, das aus Symbolen und der ihnen zugewiesenen Bedeutung (Semantik) gebildet wird, ergänzt um Regeln (grammatikalische Struktur und Gültigkeitsregeln für den Inhalt (z.B. Datentypen)) zur Kombination der Vokabularelemente.
Anwendungen einer so neu geschaffenen XML-Sprache L werden als XML-Dokumente, auch: L-Dokumente, bezeichnet
ein Wort hierzu ...¶
... zur Übersetzung von Language in Extended Markup Language:
Hierüber gibt es, wie ja eben auch vorgestellt, unterschiedliche Interpretationen. Auch wenn viele Übersetzungen dafür Sprache als Begriff verwenden, sind die meisten XML-Spezifikationen keine Sprache im Sinne einer Programmiersprache, sondern als Auszeichnungs- oder Beschreibungssprachen eher ein Format, welches das Aussehen eines Dokuments beschreibt - vergleichbar mit dem Format eines Textverarbeitungsprogramms. XML selbst ist dabei eine Metasprache bzw. besser Metaformat, aus dem sich weitere Sprachen bzw. Formate entwickeln lassen.
XML Dokument¶
Ein XML-Dokument ist ein Datenstrom (der nicht zwingend als Datei vorliegen muss), welcher den Strukturierungsprinzipien der eXtensible Markup Language genügt.
XML Prozessor¶
Ein XML-Prozessor ist eine maschinelle Komponente (typischerweise: Software), die zum Lesen, Speichern und Verarbeiten eines XML-Dokuments eingesetzt wird. Er erlaubt Zugriff auf den Inhalt und die Struktur des XML-Dokuments.
XML Grundlagen und Basics¶
XML Spezifikation¶
Eine gute Übersicht über die Grundlagen aber auch weitergehende Entwicklungen ist in den XML Essentials des W3C zu finden.
Eine interessante Lektüre zu den Spezifikationen von XML sind auch die Annotationen zu XML 1.0 von Tim Bray, auch wenn diese schon sehr alt sind, können sie doch einige Unklarheiten beseitigen.
Erweiterte Backus-Naur-Form (EBNF)¶
Die formale Grammatik von XML ist in der Spezifikation unter Verwendung einer einfachen Erweiterten Backus-Naur-Form (EBNF) definiert. Wie diese Notation zu lesen ist, ist im Abschnitt 6 der Spezifikation aufgeschrieben.
Wohlgeformtes Dokument¶
Ein textartiges Objekt (Dokument), dessen Inhalt gewissen Anforderungen - den Anforderungen der XML Syntax - genügt heißt wohlgeformtes XML Dokument. Diese Anforderungen sind in sogenannten Produktionen (Regeln) in der XML Spezifikation aufgelistet.
Im folgenden sind die drei wichtigsten Produktionen aufgeführt:
-
- Das XML-Dokument enthält genau einen Prolog
- Das Dokument enthält genau ein Wurzelelement
-
- Zu jedem Start-Tag (Produktion [40]) eines Elements existiert genau ein Ende-Tag (Produktion [42])
- Die Elemente sind korrekt ineinander verschachtelt, d.h. Elemente überlappen einander nicht.
- Bei leeren Elementen (Produktion [44]) können diese zu einem Tag zusammenfallen.
- Kein Start-Tag (oder Tag der ein leeres Element einleitet) enthält zwei oder mehr Attribute desselben Namens.
- Keine Kommentare oder Processing Instructions innerhalb von Tags.
-
- Alle Attributwerte sind in einfachen oder doppelten Anführungszeichen.
nachfolgend drei weitere immer wieder benötigte Regeln:
-
- Der Prolog enthält die XML-Deklaration (Produktion [23])
- Im Prolog ist festgelegt, ob das Dokument eine Dokument Type Definition (Produktion [28]) nutzt oder die Standard-Deklaration (Produktion [32]) mit dem Wert standalone="yes" verwendet und damit keine externe Deklaration besitzt, die eine Verarbeitung des Dokuments beeinflussen kann.
-
- Kommentare beginnen und enden mit genau zwei Bindestrichen.
Text als Zeichendaten (Produktion [14]
- Die Sonderzeichen < und & sind nicht im Text innerhalb von Elementinhalten oder Attributwerten erlaubt und dürfen dort nicht auftreten
einfaches XML Beispiel¶
<Buch>
<Author Geschlecht="weiblich">
<Vorname>Marie</Vorname>
<Nachname>von Ebner-Eschenbach</Nachname>
</Author>
<Titel>Das Gemeindekind</Titel>
</Buch>
XML Beschreibung¶
XML kann im Gegensatz zu HTML beliebige Strukturen in einem Dokument beschreiben. Dazu ist aber notwendig, diese Strukturen auch beschreiben zu können, um sie immer wieder in derselben Art und Weise verarbeiten zu können (z.B. für eine Konfiguration oder den Austausch von B2B-Daten). Genauso wie HTML in der entsprechenden HTML Spezifikation definiert und beschrieben ist, kann auch jede beliebige Struktur definiert und beschrieben sein. Für diese Beschreibung gibt im wesentlichen zwei grundlegende Beschreibungsformate: zum einen die bereits für SGML verwendete und daher ältere Dokument Typ Definition (DTD) (s.u.) und zum zweiten das umfangreichere und eher Daten denn Text spezifierende XMLSchema - Format.
gültiges XML Dokument¶
Ein XML-Dokument heißt gültig (valid), wenn es über eine Dokument-Typ-Definition oder ein XML Schema verfügt, und konform zu dieser aufgebaut ist.
Zwei kleine Beispiele für wohlgeformte aber nicht gültige XML Dokumente sind am Anfang des Abschnitts Prolog und Dokument-Typ-Deklaration der Spezifikation aufgelistet.
gemischtes Inhaltsmodell¶
Kann ein Element sowohl über Zeichenketten-artigen als auch Element-wertigen Inhalt verfügen, so wird sein Inhaltsmodell als gemisches Inhaltsmodell (mixed content model) bezeichnet. Innerhalb eines solchen Elements dürfen Unicodezeichen und die zugelassenen Elemente in wahlfreier Kombination auftreten. Die Dokumenttyp-Deklaration für ein solches Element wird in der Produktion Mixed (Produktion [51]) beschrieben.
Im Gegensatz dazu wird ein Element als Element-Inhalts-Typ wenn ausschliesslich Kindelemente in dem Element enthalten sind. Die Dokumenttyp-Deklaration für ein solches Element wird in der Produktion children (Produktion [47]) beschrieben.
Entitäten¶
Die DTD bietet zwar die Möglichkeit, eigene Textersetzungsmuster (Entitäten) durch den Anwender zu definieren, bei neu zu erstellenden XML-Grammatiken sollte man aber wegen eines problematischen Übergangs zu Schemadefinitionen ganz auf die Definition eigener Entitäten verzichten, trotzdem hier ein Beispiel einer Deklaration der Entität entA:
<!ENTITY entA "xyz">
Der Aufruf einer solchen Textersetzung entA erfolgt durch die folgende Syntax:
Innerhalb eines Dokuments wird mit &entA; der in der Deklaration
definierte Text eingefügt.
Die XML-Spezifikation definiert selbst fünf vordefinierter Entitäten:
- &
- <
- >
- '
- "
Notationen¶
Notationen stehen in enger Verbindung mit den Entitäten und dienen der Realisierung von Ersetzungsmustern, die keine XML-codierten Inhalte (z.B. Binärdaten) beinhalten, z.B. Bilddaten:
DTD - Dokument Typ Definition¶
Die DTD beschreibt das Dokument und seinen strukturellen Aufbau. Eine DTD wird innerhalb einer Deklaration (Produktion [28]) definiert. Diese Deklaration ist abgeleitet von und kompatibel mit SGML.
Einfaches DTD Beispiel¶
Am einfachsten erklärt sich diese Beschreibung mit Hilfe eines Beispiels:
Jeder von Ihnen kennt die Struktur und den Aufbau einer E-Mail. Wird eine E-Mail in der Form einer Tabelle auf einer Webseite dargestellt so ergibt sich folgendes Bild:
%%html
<html>
<head>
<title>E-Mail</title>
</head>
<body>
<table>
<tr><th>Empfänger</th><td>Henning Stoyke</td></tr>
<tr><th>Absender</th><td>Nik Klever </td></tr>
<tr><th>Thema</th>
<td>Wie war dein Urlaub ? </td>
</tr>
<tr><th>Datum</th><td>1.10.2009</td></tr>
<tr><th>Nachricht</th>
<td>
<pre>Hallo Henning, ich hoffe,
du hattest einen tollen Urlaub ?
Bis bald, Nik</pre>
</td>
</tr>
</table>
</body>
</html>
| Empfänger | Henning Stoyke |
|---|---|
| Absender | Nik Klever |
| Thema | Wie war dein Urlaub ? |
| Datum | 1.10.2009 |
| Nachricht |
Hallo Henning, ich hoffe, du hattest einen tollen Urlaub ? Bis bald, Nik |
Wenn Sie dieses Format ansehen, erkennen Sie die Zeilen und Spalten einer Tabelle. Ihr Gehirn verknüpft die entsprechenden Zellen dieser Tabelle automatisch und Sie erkennen sofort, dass es sich bei dieser Tabelle um eine E-Mail handelt.
Die entscheidende Frage lautet nun: Kann dies auch ein Programm ?
Schauen wir uns hierzu aber mal folgendes Bild auf einer Webseite an:
%%html
<html>
<head>
<title>Stadt - Land - Fluß</title>
</head>
<body>
<table>
<tr><th>Stadt<td>Augsburg</td></th></tr>
<tr><th>Land<td>Bayern</td></th></tr>
<tr><th>Fluß<td>Lech</td></th></tr>
<tr><th>Bedeutender Künstler<td>Bertold Brecht</td></th></tr>
<tr><th>Bedeutende Persönlichkeit<td>Fugger</td></th></tr>
</table>
</body>
</html>
| Stadt | Augsburg |
|---|---|
| Land | Bayern |
| Fluß | Lech |
| Bedeutender Künstler | Bertold Brecht |
| Bedeutende Persönlichkeit | Fugger |
Vergleichen Sie nun diese beiden HTML-Dokumente, so erkennen Sie, dass die Strukturen identisch sind, aber die Inhalte völlig verschieden. Ihr Gehirn erfasst dieses sofort, aber kann dies auch ein Programm sofort erfassen ?
Schauen wir uns im Gegenzug das folgende Dokument an:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE email SYSTEM "email.dtd">
<email>
<empfaenger>Henning Stoyke</empfaenger>
<absender>Nik Klever</absender>
<datum>2001-04-26</datum>
<thema>Aus dem Urlaub zurück ?</thema>
<nachricht>
Hallo Henning,
ich hoffe, Du bist gesund aus dem Urlaub zurück und
kannst mit frischem Wind unser Projekt beginnen !
Bis bald, Nik
</nachricht>
</email>
Hier kann ebenfalls jeder erkennen, dass es sich um eine E-Mail handelt. Der Unterschied zu eben ist aber, dass mit dieser Struktur auch ein Programm sofort erkennen kann, dass es sich um eine E-Mail-Struktur handelt. Dies liegt am Markup der Tags, die eben sofort von einem entsprechenden Parser erfasst werden können.
Damit aber mehrere E-Mails mit der gleichen Struktur angelegt und bearbeitet werden können und nicht einmal absender, dann email-absender, ein wieder anderes Mal nur sender oder vielleicht verschicker oder z.B. bei einer Liste völlig anders mitglied oder teilnehmer, muss eine entsprechende Struktur vorgegeben werden. Dies kann mit einer Document Type Definition (DTD) geschehen:
<!ELEMENT email (empfaenger+, absender, datum?, thema?, nachricht?)>
<!ELEMENT empfaenger (#PCDATA)>
<!ELEMENT absender (#PCDATA)>
<!ELEMENT datum (#PCDATA)>
<!ELEMENT thema (#PCDATA)>
<!ELEMENT nachricht (#PCDATA)>
In diesem Beispiel ist dabei nur eine Elementtyp-Deklaration (Produktion [45] verwendet worden
Details zu Document Type Definitions sind ebenfalls in dem Kapitel Dokumenttyp-Definitionen (DTDs) von Selfhtml zu finden.
Beispiel einer Projektverwaltung sowohl mit XML-Elementen als auch XML-Attributen¶
<!ELEMENT ProjektVerwaltung (Person+, Projekt+)>
<!ATTLIST ProjektVerwaltung
version CDATA #FIXED "1.0">
<!ELEMENT Person (Vorname+, Nachname, Qualifikationsprofil?)>
<!ATTLIST Person
PersID ID #REQUIRED
Gehaltsgruppe (1 | 1a | 2) "1a"
mitarbeitInProjekt IDREFS #REQUIRED>
<!ELEMENT Qualifikationsprofil (#PCDATA | Qualifikation | Leistungsstufe)*>
<!ELEMENT Qualifikation (#PCDATA)>
<!ELEMENT Leistungsstufe (#PCDATA)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Nachname (#PCDATA)>
<!ELEMENT Projekt EMPTY>
<!ATTLIST Projekt
ID ID #REQUIRED
date CDATA #IMPLIED
budget CDATA "10000"
Projektleiter IDREF #REQUIRED
Mitarbeiter IDREFS #REQUIRED>
In diesem Beispiel wurde auch eine Attributlisten-Deklaration (Produktion [52] verwendet.
Hier dazu ein entsprechendes XML-Dokument zu dieser DTD:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE ProjektVerwaltung SYSTEM "projektverwaltung1.dtd">
<ProjektVerwaltung>
<Person PersID="Pers01" mitarbeitInProjekt="Prj01">
<Vorname>Hans</Vorname>
<Nachname>Hinterhuber</Nachname>
</Person>
<Person PersID="Pers02" mitarbeitInProjekt="Prj02">
<Vorname>Franz</Vorname>
<Vorname>Xaver</Vorname>
<Nachname>Obermüller</Nachname>
<Qualifikationsprofil>
IT-Kompetenz verschiedene Betriebssysteme und
<Leistungsstufe>professionelle</Leistungsstufe>
<Qualifikation>Programmierung</Qualifikation>
verschiedener Programmiersprachen
<Qualifikation>Entwickler</Qualifikation>
von 1988-1990
<Qualifikation>Projektleiterfunktion</Qualifikation>
von 1990-93 im X42-Projekt in Abteilung AB&C
</Qualifikationsprofil>
</Person>
<Projekt ID="Prj01" Projektleiter="Pers01" Mitarbeiter="Pers01"/>
<Projekt ID="Prj02" Projektleiter="Pers02" Mitarbeiter="Pers01"/>
</ProjektVerwaltung>