XML Grundlagen

XML ist die Abkürzung für Extensible Markup Language. Das XML-Format wurde erfunden, als Speicher immer günstiger wurde und es deshalb sinnvoll wurde, Daten nicht binär abzulegen, sondern in einem Format, welches auch Menschen verstehen können. Somit stellt ähnlich die HTML- oder PHP-Dateien eine XML-Datei eine ganz normale Textdatei dar. Sie besteht aus Tags mit Attributen und Texten. Dabei kommen Tags immer paarweise einmal öffnend und einmal schließend vor. Innerhalb dieses Bereiches können weitere Tag-Paare untergebracht werden. Somit ergibt sich aus einer XML-Datei eine Struktur, die von einem Informatiker als ein Baum bezeichnet wird: Von einer Wurzel her gibt es immer weitere Verzweigungen, bis der Baum schließlich in Blättern endet.

XML verfügt über eine zweite Möglichkeit Informationen unterzubringen. Diese kann innerhalb der Attribute, die innerhalb eines öffnenden Tags angegeben werden können, platziert werden. Hierbei ist pro Attribut ein String-Wert zulässig, der dann aber nicht mehr verschachtelt angegeben werden kann. Das bedeutet, innerhalb der Attribute kann keine Baumstruktur eingebracht werden.

XML-Dokumente können ganz unterschiedliche Daten beinhalten. Deshalb müssen Vereinbarungen getroffen werden, wie die Daten innerhalb der Datei abgelegt werden. Um diese Vereinbarung festzuhalten wurde eine Beschreibungssprache entwickelt, in welcher sich sogenannte DTDs verfassen lassen, die die Struktur einer XML-Datei beschreiben. Eine solche DTD kann innerhalb der XML-Datei selbst angegeben werden, um einem Validierer zu ermöglichen, zu entscheiden, ob es sich um eine valide XML-Datei handelt oder nicht. Leider wurde zunächst bei den DTDs auf kein XML gesetzt. Später hat man festgestellt, dass dies eine schlechte Entscheidung war. So wurden sogenannte XSDs entwickelt. Eine XSD ermöglicht dasselbe wie eine DTD, nur dass diese in XML formuliert ist. Validierung von Dokumenten betrachtet PHP nur am Rande. Aus diesem Grunde wird auf die Nutzung von DTDs und XSDs nicht eingegangen.

Zu wissen ist allerdings, dass dieses Konzept eine der Grundlagen für Namespaces im XML-Bereich sind. Namespaces ermöglichen es, Informationen unterschiedlicher Art innerhalb einer XML-Datei zu vereinigen.

Bei der folgenden XML-Datei handelt es sich um eine SVG-Datei\index{SVG}. Es ist ein vektorbasiertes Bildformat, welches heutzutage fast jeder Browser verstehen kann:

Die erste Zeile der Datei definiert, dass es sich bei dieser Datei um eine XML-Datei handelt. Innerhalb der zweiten Zeile befindet sich das Wurzel-Tag, welches bei einer SVG-Datei <svg> ist. Zusätzlich ist hier ein Attribut version zu finden, so dass dem Interpreter bekannt wird, dass es sich um SVG-Version 1.1 handelt.

Die nächsten beiden Attribute sind interessant. Es handelt sich um Namespaces. Mit dem Attribut xmlns, welches auf http://www.w3.org/2000/svg gesetzt ist, wird der Standardnamespace angegeben, der immer dann aktiv ist, wenn kein Namespace angeben wird. Dieser Namespace gilt schon für das aktuelle Tag <svg>. Mit xmlns:xlink wird ein Namespace mit Namen xlink definiert, der auf http://www.w3.org/1999/xlink gesetzt wird. Dieser benannte Namespace wird unten mit xlink:href angewählt.

In der letzten Zeile wird das SVG-Tag mit </svg> abgeschlossen. Ab dieser Stelle werden die gerade getroffenen Namespacedeklarationen wieder ungültig. Namespaces lassen sich innerhalb der Verschachtelung durch Neu-Definition überschreiben.

Innerhalb des SVG-Tags sind nun vier Verzweigungen zu finden. Die ersten beiden stellen einen Kreis und eine Linie da. Wird ein Tag mit /> abgeschlossen, so gilt dies als das schließende Tag. Es darf kein weiteres schließendes Tag eingefügt werden.

In der vorletzten Verzweigung wird ein Link definiert, der hinter ein Rechteck gelegt wird. Die Definition des Rechtecks wird, wie im Quellcode gezeigt, verschachtelt.

Die letzte Verzweigung ist das Tag <text>. Hier ist zu sehen, dass der Text selbst nicht als Attribut übergeben wird, sondern von dem Tag eingeschlossen wird.

Wird diese Datei mit einem Browser aufgerufen, so sieht man das folgende Bild:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert