Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Programmieren von Webanwendungen

Statische Webseiten

XML

XML ist eine der wichtigsten Sprachen im Umfeld der Programmierung von Web-Anwendungen.

XML (eXtensible Markup Language) ist eine vom W3C standardisierte Sprache zur Speicherung von strukturierten Daten in Textdateien. Sie hat sich ebenfalls als Standard für den Austausch solcher Daten zwischen Systemen etabliert. Ähnlich wie HTML bietet sie die Möglichkeit, Informationen mithilfe von hierarchisch strukturierten Elementen und deren Attribute zu speichern. Allerdings entstammen die Namen der Elemente und Attribute nicht einem bestimmten Vokabular, sondern man kann sie - nach bestimmten Regeln, die später genannt werden - frei definieren. Dieser Sachverhalt trägt wesentlich zu einer wichtigen Eigenschaft von XML-Dateien bei: Sie können, im Gegensatz zu vielen anderen Möglichkeiten der computergestützten Speicherung von Informationen, auch von Menschen gelesen und verstanden werden.

Außerdem gibt es, anders als in der Sprache HTML, keine Regeln für die Schachtelung der Elemente. Man kann allerdings eigene Regeln und ein eigenes Vokabular mithilfe von XML-Schemata definieren, die in einer separaten XSD-Datei (XML Schema Definition) festgehalten werden. Eine einfache XML-Datei mit Artikeldaten könnte zum Beispiel wie folgt aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<bestellung>
  <kopfdaten>
    <bestellnr>48729</bestellnr>
    <auftraggeber>Samuel Berg</auftraggeber>
    <bestellung_vom>04.12.2011</bestellung_vom>
    <kundennummer>AD-4333 532</kundennummer>
  </kopfdaten>
  <positionsdaten>
    <position>
      <id>1</id>
      <artikelnr>57823566</artikelnr>
      <menge>4</menge>
      <preisEUR>15,90</preisEUR>
    </position>
    <position>
      <id>2</id>
      <artikelnr>54733462</artikelnr>
      <menge>2</menge>
      <preisEUR>8,90</preisEUR>
    </position>
  </positionsdaten>
</bestellung>

XML-Dateien bestehen aus einem Wurzelelement (bestellung), dem Elemente untergeordnet sind (kopfdaten und positionsdaten). Die Kopfdaten enthalten allgemeine Informationen zur Bestellung und die Positionsdaten enthalten eine Liste von Bestellpositionen mit der ID der Position, einer Artikelnummer, der bestellten Menge und dem Preis.
XML-Dateien besitzen keine Stilinformationen. Trotzdem können alle bekannten Browser XML-Dateien mithilfe eines eingebauten Stylesheets darstellen. Viele sind sogar in der Lage, die untergeordneten Elemente eines Tags ein- oder auszublenden.

Es gibt zwei Stufen für die "Korrektheit" einer XML-Datei: Wenn alle allgemeinen Syntax-Regeln eingehalten wurden, dann ist sie wohlgeformt. In diesem Fall müssen zum Beispiel alle Tags mit einem passenden Ende-Tag geschlossen werden, es darf nur ein Wurzel-Element enthalten sein und alle Attribute müssen in Anführungszeichen stehen. Wenn darüber hinaus auch die Regeln eines zu der XML-Datei angegebenen Schemas erfüllt werden, handelt es sich um eine gültige XML-Datei.

Für die Vergabe der Tag-Namen gelten lediglich folgende Regeln: Das erste Zeichen muss ein Buchstabe, ein Unterstrich oder ein Doppelpunkt sein; der Rest darf Zeichen oder Ziffern enthalten und ist in der Länge prinzipiell unbegrenzt. Den Einsatz von Doppelpunkten sollte man allerdings vermeiden, weil sie auch eine andere Funktion haben. Darüber hinaus darf der Name eines Tags nicht mit "xml" beginnen.

XML differenziert zwischen drei Typen von Elementen. Einfache Elemente enthalten nur Zeichenketten. Im oben aufgeführten Beispiel ist die Bestellnummer ein einfaches Element:

<bestellnr>48729</bestellnr>

Strukturierte Elemente enthalten weitere Elemente. Im Beispiel trifft das auf jede Position der Bestellung zu:

<position>
  <id>1</id>
  <artikelnr>57823566</artikelnr>
  <menge>4</menge>
  <preisEUR>15,90</preisEUR>
</position>

Leere Elemente besitzen keinen Inhalt. Die Information steckt also lediglich in der Präsenz des Elements und - falls vorhanden - in dessen Attributen. Das HTML-Element für Zeilenumbrüche ist hierfür ein Beispiel:

<br />

Attribute sind dazu geeignet, XML-Elemente mit Eigenschaften zu versehen. Sie dürfen ausschließlich im Anfangs-Tag des Elements stehen. Die Regeln für die Benennung von Attributen sind identisch mit den Regeln für Tag-Namen. Darüber hinaus müssen sie im Element eindeutig sein, das heißt, sie dürfen in einem Element nur maximal einmal vorkommen. Die Werte der Attribute müssen in einfachen oder doppelten Anführungszeichen stehen.
Abbildung: Regeln für die Syntax von Attributen in XML-Elementen

Attribute sind in vielen Fällen eine sinnvolle Möglichkeit zur Speicherung von Informationen. Allerdings sind sie die kleinste Informationseinheit in der XML-Sprache. Attribute können also nicht weiter durch zusätzliche Informationen verfeinert werden. Ihr Einsatz ist daher mit gewissen Risiken hinsichtlich Flexibilität verbunden, falls sich im Laufe des Betriebs Änderungen an der Datenstruktur ergeben. Dies lässt sich am besten an einem Beispiel erklären: Angenommen man würde im Beispiel der Artikel-Bestellung den Namen des Auftraggebers nicht als einfaches Element, sondern als Attribut des Kopfdaten-Elements speichern:

<kopfdaten auftraggeber="Samuel Berg">
  <bestellnr>48729</bestellnr>
  <bestellung_vom>04.12.2011</bestellung_vom>
  <kundennummer>AD-4333 532</kundennummer>
</kopfdaten>

Sollten nun zum Auftraggeber jeweils Vor- und Nachname getrennt aufgeführt und außerdem zusätzlich der Geburtsname angegeben werden, müsste das Attribut auftraggeber entfernt und durch andere ersetzt werden. Eine solche Änderung ist mit großem Aufwand verbunden. Wenn der Auftraggeber hingegen als Element gespeichert ist, ist eine solche Änderung an der Datenstruktur einfacher, schließlich müssen nur zusätzliche Unter-Elemente hinzugefügt werden:

<kopfdaten>
  <bestellnr>48729</bestellnr>
  <auftraggeber>
    <vorname>Samuel</vorname>
    <nachname>Berg</nachname>
    <geburtsname></geburtsname>
  </auftraggeber>
  <bestellung_vom>04.12.2011</bestellung_vom>
  <kundennummer>AD-4333 532</kundennummer>
</kopfdaten>