XML
Elemente, Attribute, Kommentare, Entitäten, Prolog, Processing Instruction, Namespaces sind zentrale Grundbegriffe in XML-Technologien.
XML-Grundlagen
XML-Dateien sind simple Textdokumente, die einige strukturelle Voraussetzungen erfüllen müssen. Zwar ist es möglich, XML-Dateien mit sehr einfachen Texteditoren zu schreiben. Diese bieten jedoch häufig nur eine geringe fachgerechte Unterstützung.
Weit effizienter ist daher die Arbeit mit professionellen Editoren, die Sie in jeder Hinsicht unterstützen. Einer dieser Editoren ist der Oxygen XML Editor 19.1. Über DATEI|NEU erhalten Sie dieses Fenster:
Mit der Auswahl XML-Dokument generiert der Editor eine Datei, in der der sogenannte XML-Prolog bereits enthalten ist.
Diesen Prolog können Sie zunächst löschen, um sich mit den Grundlagen zu befassen.
Elemente
Grundsätzlich hat jedes XML-Dokument genau ein Root-Element. Dieses Element kann so aussehen:
<Personen></Personen>
Das Element besteht aus einem Start-Tag <Personen> und einem Ende-Tag </Personen>.
Wichtig ist dabei die korrekte Schreibweise. Haben Sie das Start-Tag <Personen> genannt, dann muss das Ende-Tag genau so geschrieben werden, lediglich mit dem "/"-Slash-Zeichen versehen. Das Ende-Tag anders zu schreiben, etwa </personen> oder </PERSONEN>, wäre von vornherein falsch: Das XML-Dokument wäre nicht wohlgeformt.
Für die Benennung der Elemente gibt es einige Einschränkungen, auf die ich später noch einmal eingehe.
Nun hindert Sie niemand daran, zwischen Start- und Ende-Tag eines Elements weitere Elemente einzufügen. Zum Beispiel so:
<Personen> <Person></Person> <Person></Person> </Personen>
Das Verfahren können Sie beliebig ausbauen, zudem können Sie zwischen den jeweiligen Start- und Ende-Tags auch normalen Text einfügen.
<Personen> <Person> <Vorname>Susi</Vorname> <Nachname>Sinnlos</Nachname> </Person> <Person> <Vorname>Alfons</Vorname> <Nachname>Achtlos</Nachname> </Person> </Personen>
Wenn Sie dieses XML-Dokument in eine Datei "Personen.xml" abspeichern, dann können Sie diese Datei mit einem normalen Internet-Browser öffnen. Der Firefox zeigt die Datei beispielsweise so an:
Andere Programme können das genauso gut. Gute Power-Tools zeigen darüber hinaus noch eine andere Darstellung.
Angenommen, Sie kennen von einer Person weder den Vornamen noch den Nachnamen. Wenn zwischen dem Start- und Ende-Tag "Person" kein Inhalt abgebildet werden kann, wenn das Element also leer ist, dann handelt es sich sinnigerweise um ein "leeres Element", bei dem Sie sich das Ende-Tag sparen können, sofern der "/" am Ende des Start-Tags erscheint. Beispiel:
<Personen> <Person/> </Personen>
Attribute
Alternativ zur eben dargestellten Elementschreibweise können Sie Inhalte auch als Attribute einfügen. Ein Attribut wird grundsätzlich in das Start-Tag eines Elements geschrieben. Da die ursprünglichen Kind-Elemente entfallen können, schreiben Sie die Information kurzerhand als leeres Element, aber mit Attributen.
<Personen> <Person Vorname="Susi" Nachname="Sinnlos"/> <Person Vorname="Alfons" Nachname="Achtlos"/> </Personen>
Speichern Sie das in einer Datei "Personen2.xml" ab, so zeigt der Internetbrowser das so an:
Auch das XML-Power-Tool macht mit und zeigt diese Darstellung, die sich nur in einer scheinbar winzigen Kleinigkeit von der vorherigen unterscheidet: das @" in @Vorname und @Nachname.
Die Attributschreibweise hat gegenüber der Elementschreibweise nur einen Nachteil: Jedes Attribut darf nur ein einziges Mal vorkommen. Hat eine Person also mehrere Vornamen, so bietet es sich an, den Nachnamen als Attribut und die Vornamen in Elementschreibweise darzustellen.
<Personen> <Person Nachname="Holzflos"> <Vorname>Hugo</Vorname> <Vorname>Helmut</Vorname> <Vorname>Horst</Vorname> </Person> <Person Nachname="Nixlos"> <Vorname>Tanja</Vorname> <Vorname>Theodora</Vorname> </Person> </Personen>
Kommentare
Ein großer Vorteil von XML-Dokumenten ist, dass Sie auch Kommentare einfügen können. Das erleichtert die Lesbarkeit sehr und ist auch in der praktischen Arbeit von erheblicher Bedeutung, nicht zuletzt bei der Fehlersuche. XML-Kommentare beginnen mit "<!--" und enden mit "-->".
<Personen> <!-- Attributschreibweise --> <Person Vorname="Resi" Nachname="Denzschlos"/> <!-- Elementschreibweise --> <Person> <Vorname>Lotte</Vorname> <Nachname>Rielos</Nachname> </Person> </Personen>
Entitäten
Sie haben schon bemerkt, dass jedes Tag mit einem "<" beginnt und mit einem ">" endet. Diese beiden Zeichen haben eine zentrale Bedeutung in XML. Das kann Sie jedoch in einige Verlegenheit bringen, wenn Sie die hochwichtige Information "3 < 4" in XML abbilden möchten.
<Info>3 < 4</Info>
Dieser Versuch geht schief. Jedes XML-Tool, das etwas auf sich hält und nicht außergewöhnlich leidensfähig ist, meckert Sie an:
XML-Verarbeitungsfehler: nicht wohlgeformt
oder im schönsten IT-Deutsch:
System-Fehlerlevel: error The content of elements must consist of well-formed character data or markup.
Hier bleibt Ihnen nur übrig, das "<" als Entität zu deklarieren und entsprechend zu kennzeichnen.
<Info>3 < 4</Info>
Es gibt mehrere Standard-Entitäten und auch die Möglichkeit, eigene Entitäten zu definieren. Dazu später mehr.
Prolog
Häufig finden Sie am Anfang eines XML-Dokuments einige Zusatzinformationen, die fast durchweg so aussehen:
<?xml version="1.0"?> <Personen> <Person/> </Personen>
<?xml version="1.0"?> ist die Minimalinformation. Sie besagt, dass es sich um ein XML-Dokument in der Version 1.0 handelt.
Hin und wieder finden Sie dort auch Informationen zum verwendeten Encoding. Darin ist ein Hinweis auf den im Dokument verwendeten Zeichensatz enthalten. Fehlt diese Angabe, dann handelt es sich per Default um den Zeichensatz "UTF-8".
<?xml version="1.0" encoding="ISO-8859-1"?> <Personen> <Person/> </Personen>
Processing Instruction
Neben dem Prolog können Sie noch Verarbeitungsanweisungen mitgeben für das Programm, das das XML-Dokument auswertet. Beispiel:
<?versandperMail dort@woderpfefferwaechst.de"?>
Das verarbeitende Programm wertet diese Information aus und nimmt (hoffentlich) wohlwollend zur Kenntnis, was hier angemerkt wird.
<?xml version="1.0" encoding="ISO-8859-1"?> <?sorry ich@habnichtsgemacht.gov"?> <Personen> <Person/> </Personen>
Namespace
Namespaces sind ebenfalls ein zentrales Thema in XML. Sie eröffnen weitreichende Möglichkeiten, ein XML-Dokument einem Namensraum zuzuordnen und dabei auch versionsbedingte Informationen einzubinden.
<Personen xmlns="www.Kundenliste.de/2018"> <k:Person xmlns:k="www.besondererKunde.de"> <k:Vorname>Wanja</k:Vorname> <k:Nachname>Wunschlos</k:Nachname> </k:Person> </Personen>
- Zu unterscheiden sind hier Namespace-Präfixe, die ein Kürzel für einen Namensraum definieren, sowie Default-Namespaces.
- Im obigen Beispiel ist xmlns="www.Kundenliste.de/2018" der Default-Namespace.
- xmlns:k="www.besondererKunde.de" definiert einen Namensraum mit einem Kürzel k, dem sogenannen Namespace-Präfix, das bei den Elementen k:Person, k:Vorname und k:Nachname zum Einsatz kommt.
Stören Sie sich nicht daran, wenn einzelne Internet-Browser sich weigern, die Namespaces anzuzeigen, nachdem Sie das Dokument in eine XML-Datei gespeichert haben und den Browser auffordern, diese anzuzeigen. Die...