| 
Was ist XML?
Das erste XML Dokument
Entities
CDATA Abschnitte
XML ist eine Markierungssprache, deren einziger
Sinn und Zweck darin besteht, Daten strukturiert darzustellen.
Damit ist schon klar, dass XML mit HTML nur Äußerlichkeiten
gemein hat. Bei HTML geht es primär um die optische Darstellung
der Daten. Mit XML alleine kann man nichts machen. XML ist
aber ein Standard, der von sehr vielen Softwarepaketen und
Programmiersprachen unterstützt wird, so dass er auf
den unterschiedlichsten Medien, Browser, Handy, Drucker dargestellt
werden kann. Mit XML ist es möglich durch eine Veränderung
der Schnittstelle, also des Programms, das die Daten verarbeitet,
die gleichen Daten auf unterschiedlichen Medien unterschiedlich
darzustellen. Die zugrunde liegende Datenstruktur kann sogar
erweitert werden, ohne dass dies einen Einfluss auf die Darstellung
hätte. Da XML im Grunde lediglich eine Textdatei ist,
kann sie auch problemlos kopiert, versendet, vervielfacht
werden. Der eigentlich Inhalt der Datei ist hierbei leicht
zu erfassen, da in der Regel, bei halbwegs sprechender Bezeichnung
der einzelnen Komponenten, die Struktur des Dokumentes klar
ist. Niemand wird ein Problem mit der Interpretation eines
solchen Dokumentes haben.
<Adresse>
<Name>Andrés Ehmann</Name>
<Strasse>Hallandstrasse 2</Strasse>
<Ort>13189 Berlin</Ort>
<Telefon>030-47301390</Telefon>
</Adresse>
Was das bedeutet, ist jedem klar. Die Grundstruktur eines
XML Dokumentes ist sozusagen selbsterklärend. Wundern
kann man sich höchstens über die schliessenden Tags,
aber ansonsten ist es das gleiche wie das.
Adresse
Name: Andrés Ehmann
Strasse: Hallandstrasse 2
Ort:13189 Berlin
Telefon:030-47301390
Entscheidend für XML ist, dass sich die hierarchische
Struktur von Daten in beliebiger und intuitiv fassbarer Weise
darstellen lassen. Ohne dass etwas dazu gesagt wird, ist jedem
klar, was mit dem unten Stehenden gemeint ist.
<buecher>
<Sachbuecher>
<Autor>Prof.Dr. Wirrwarr</Autor>
<Titel>Kafka und Felice Bauer</Titel>
<Erscheinungsjahr>1987</Erscheinungsjahr>
</Sachbuecher>
<Romane>
<Autor>Hans Donnerknall</Autor>
<Titel>Ewig ruft der Berg</Titel>
<Erscheinungsjahr>1956</Erscheinungsjahr>
</Romane>
</buecher>
Es ist klar, dass wir die Struktur nach diesem
Schema beliebig erweitern könnten, also die Sachbücher
nochmal aufsplitten: Gesundheit, Sport, Philosophie etc. die
Romane nochmal in spanische, französische, italienische
Romane etc. etc. Wir könnten auch neue Gebiete hinzufügen,
Lyrik, Lexika etc. etc. XML ist also einfacher als HTML, welches
es ja in der Zwischenzeit auf eine stattliche Anzahl von Tags
gebracht hat, deren Bedeutung man kennen muss, um HTML Dokumente
zu erstellen. Bei XML muss man gar keine Tags kennen, man
kann sie nämlich nach Belieben selber definieren. XML
ist also sehr einfach. Um aber tatsächlich etwas mit
XML-Dokumenten machen zu können, muss man sie in andere
Formate, etwa HTML oder WAP transformieren können und
hierfür, wie auch die für die Modifizierung von
XML Dokumenten on the fly, bedarf es dann einiges an Erfahrung.
Das bis jetzt Dargestellte, wird viele Leute nicht überzeugen.
Sie werden sich auf den Standpunkt stellen, dass man all das
auch mit einem trivialen Flatfile realisieren kann. Das ist
teilweise richtig und teilweise falsch. Erstmal kann man diesem
Einwand eine triviale Antwort entgegenhalten. Flatfiles sind
in der Datenmenge, die man verarbeiten kann, begrenzt. Für
XML gibt es Bibliotheken, wie Expat, wir kommen darauf noch
zurück, die ein Auslesen auch sehr grosser Datenmengen
ermöglichen. Weiter ist es mit einem Flatfile schwierig,
die hierarchische Beziehung der Daten abzubilden. Flatfiles
lassen sich weiter nur sehr schwerfällig modifizieren.
Die Leistungsfähigkeit von XML wird aber erst deutlich,
wenn man sich mit den Tools beschäftigt, die XML verarbeiten.
Die Beispiele oben waren
eigentlich schon fast XML Dokumente. Es fehlt eigentlich nur
noch eine Zeile, die angibt, welche Version von XML verwendet
wird und welcher Zeichensatz. Es fehlt also lediglich eine
Zeile, die diese Angaben enthält zu Beginn des Dokumentes.
Ein vollständiges XML Dokument sehen wir hier.
<?xml version="1.0" encoding="ISO-8859-1"?>
<buecher>
<Sachbuecher>
<Autor Nationalität="Deutsch">Prof.Dr.
Wirrwärr</Autor>
<Titel>Kafka und Felice Bauer</Titel>
<Erscheinungsjahr>1987</Erscheinungsjahr>
</Sachbuecher>
<Romane>
<Autor Nationalität="Schweiz">Hans Donnerknall</Autor>
<Titel>Ewig ruft der Berg</Titel>
<Erscheinungsjahr>1956</Erscheinungsjahr>
</Romane>
</buecher>
Wenn es sich um ein wohlgeformtes, wir kommen
darauf gleich zurück, Dokument handelt, dann kann man
sich das Dokument mit dem Internet Explorer anschauen. Man
muss es also abspeichern unter irgendein_name.xml im Ordner
irgendein_ordner und dann aufrufen. Man sieht dann sowas in
der Art.

Wie man sieht, wird die hierarchische Struktur
des Dokumentes dargestellt. Clickt man auf die Bindestriche,
werden die Ebenen darunter weggeblendet. Schreibt man auf
Deutsch, ist die Angabe des richtigen Zeichensatzes, "ISO-8859-1"
sehr sinnvoll. Ohne diese Angabe würde das Dokument oben
nicht dargestellt werden, weil das ä in Wirrwär
ein unbekanntes Zeichen wäre under der XML Parser abbrechen
würde. Dieser XML Quelltext entspricht bestimmten Minimalanforderungen,
die in wohlgeformt sein lassen. Wenn diese
Wohlgeformtheit nicht vorliegt, wird das Dokument nicht dargestellt.
Damit ein Dokument wohlgeformt ist, müssen folgende Kriterien
erfüllt sein.
| 1) |
Am Anfang muss eine Zeile stehen,
die die XML Version angibt. Die Angabe eines Zeichensatzes
ist optional |
| 2) |
Das gesamte XML Dokument muss von einem
Wurzelement (ähnlich dem HTML Tag in HTML) umklammert
sein |
| 3) |
Jeder öffnende Tag braucht einen schliessenden
Tag ( HTML Tags wie <br> oder <p> oder <hr>
sind nicht möglich |
| 4) |
Die Elemente (Tags) müssen richtig
verschachtelt sein. Bevor der äußere Tag geschlossen
wird, muss der innere Tag geschlossen worden sein. |
| 5) |
Elemente (Tags) sind case sensitiv. <Titel>
öffnend und </titel> schliessend ist falsch
|
| 6) |
Attribute müssen in Anführungstrichen
stehen |
| 7) |
Elemente (Tags) dürfen nicht mit einer
Zahl beginnen: 1Autor ist falsch |
| 8) |
Elemente (Tags) dürfen keine Leerzeichen
enthalten Au tor ist falsch (Unterstrichen, also _, sind
erlaubt) |
| 9) |
Elemente (Tags) müssen aus Zahlen
oder Buchstaben bestehen. (Umlaute und scharf s sind möglich
). |
Ein Element besteht aus einem öffnenden
und dem dazugehörigen schliessenden Tag. Das Element
kann leer sein, andere Elemente oder Text beinhalten. Auch
eine Misch aus Elementen und Text ist möglich. Wie deutlich
zu sehen, sind die Ansprüche an Wohlgeformtheit nicht
besonders hoch. Gültige XML Dokumente müssen allerdings
höheren Ansprüchen genügen. Sie müssen
mit einer selbst definierten DTD (Document Type Definition)
oder einem XML Schema entsprechen. Wir kommen darauf noch
zurück. Kommentare in XML sind syntaktisch identisch
mit Kommentaren in HTML. Das obige XML Dokument mit einem
Kommentar sieht so aus.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Das ist ein Kommentar. Er gleicht syntaktisch einem
HTML Kommentar -->
<buecher>
<Sachbuecher>
<Autor Nationalität="Deutsch">Prof.Dr.
Wirrwärr </Autor>
<Titel>Kafka und Felice Bauer</Titel>
<Erscheinungsjahr>1987</Erscheinungsjahr>
</Sachbuecher>
<Romane>
<Autor Nationalität="Schweiz">Hans Donnerknall</Autor>
<Titel>Ewig ruft der Berg</Titel>
<Erscheinungsjahr>1956</Erscheinungsjahr>
</Romane>
</buecher>
Dass der Explorer, im Gegensatz zu Netscape
6.0, diesen Kommentar zeigt, ist erstmal unerheblich. Bei
einer Auswertung des XML Dokuments mit XSL oder DOMXML würde
er nicht berücksichtigt. Will man XML Dokumente auswerten,
ist es von zentraler Bedeutung zu verstehen, dass ein XML
Dokument eine Baumstruktur hat. Man muss das sehen, weil XPATH,
ein Teil von XSL, das Dokument als Baum sieht. Er sieht die
Äste, die auf der gleichen Hierarchieebene liegen, sieht,
die verschiedenen Hierarchiestufen, die Attribute etc. So
kann er punktuell auf bestimmte Elemente zugreifen. Als Baumstruktur
dargestellt, sähe das XML Dokument so aus.

Es ist wichtig, das zu sehen,
weil ein XML Dokument mit XSL auslesen, vor allem bedeutet,
durch diesen Baum zu hangeln.
Es ist ja denkbar, dass in einem XML Dokument
immer wieder gleiche Textblöcke eingebaut werden sollen.
In einem XML Dokument, dass z.B. den Buchbestand einer Bücherei
hält, immer wieder der Satz "Beststseller: Dieses
Buch ist unter den top five der Spiegel Liste" oder sonst
irgendwas steht. Dann könnte man diesen Satz einmal speichern
und immer wieder aufrufen. Man könnte jetzt vermuten,
dass dies durch eine Variable geschieht, der ein Wert zugewiesen
wird und die dann immer wieder eingesetzt wird. So kennt man
das ja. Es funktionniert aber nur so ähnlich. Tatsächlich
müssen solche Verweise auf z.B. Textblöcke (Details
werden im Kapitel DTD behandelt) in der Document Type Definition
deklariert werden. Das sieht dann so aus.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE buecher [
<!ENTITY test "nur so zum Spass">
]>
<buecher>
<!-- Das ist ein Kommentar. Er gleicht syntaktisch einem
HTML Kommentar -->
<Sachbuecher>
<Autor Nationalität="Deutsch"> Prof.Dr.
Wirrwärr </Autor>
<Titel>Kafka und Felice Bauer</Titel>
<Erscheinungsjahr>1987</Erscheinungsjahr>
</Sachbuecher>
<Romane>
<Autor Nationalität="Schweiz">Hans Donnerknall</Autor>
<Titel>Ewig ruft der Berg</Titel>
<Anmerkung>&test;</Anmerkung>
<Erscheinungsjahr>1956</Erscheinungsjahr>
</Romane>
</buecher>
Wir haben zu Beginn eine Document Type
Definition mit einer gewöhnungsbedürftigen Syntax.
<!DOCTYPE buecher [ die eigentliche
Definition ]>
Der Name der DTD in unserem Falle buecher,
muss mit dem Namen des Wurzelelementes übereinstimmen.
Nebenbemerkung: Dem Explorer ist das ziemlich egal, er prüft
auch nicht die Gültigkeit der DTD. Immerhin stellt er
aber unsere Entity noch dar. Unsere DTD hat nur eine einzige
Deklaration, nämlich die Deklaration der Entity.
<!ENTITY test "nur so zum
Spass">
Diese Entity können wir dann aufrufen
indem wir vor den Entity Namen, in unserem Falle Test, ein
kaufmännisches & Zeichen setzen.
&test;
Das ganze sieht dann so aus.

CDATA Abschnitte kann man brauchen, wenn
man z.B. nicht will, dass der XML Parser den Inhalt interpretiert.
Das heisst, er soll ihn genauso lesen, wie er dasteht. Man
kann das auch brauchen, wenn man Zeichen verwendet, die dem
jeweiligen ISO Zeichensatz nicht entsprechen, was den XML
Parser ja normalerweise zum Absturz bringt. Innerhalb von
CDATA würde er diese problemlos anzeigen. Ein Beispiel
mit CDATA.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE buecher [
<!ENTITY test "nur so zum Spass">
]>
<buecher>
<!-- Das ist ein Kommentar. Er gleicht syntaktisch einem
HTML Kommentar -->
<Sachbuecher>
<Autor Nationalität="Deutsch"> Prof.Dr.
Wirrwärr </Autor>
<Titel>Kafka und Felice Bauer</Titel>
<Erscheinungsjahr>1987</Erscheinungsjahr>
<Bemerkung><![CDATA[<komisch>Hat er den nix
zu Kafka zu sagen</komisch>]]></Bemerkung>
</Sachbuecher>
<Romane>
<Autor Nationalität="Schweiz">Hans Donnerknall</Autor>
<Titel>Ewig ruft der Berg</Titel>
<Anmerkung>&test;</Anmerkung>
<Erscheinungsjahr>1956</Erscheinungsjahr>
</Romane>
</buecher>
Normalerweise würde nur erscheinen
"Hat er den nix zu Kafka zu sagen". Da es aber innerhalb
von CDATA steht, werden die Tags nicht interpretiert und so
gezeigt wie sie dastehen. Das sieht dann so aus.
|
 |