cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache cache
 

Grundlagen - XML

Drucken
Extensible Markup Language (XML)
Geschrieben von: Christian Jänicke
Samstag, 23. Januar 2010

Die Extensible Markup Language (XML), zu deutsch erweiterbare Textauszeichnungssprache, wurde entwickelt, um Informationen in Form einer hierarchischen Struktur zu beschreiben. Diese Struktur kann durch eine Document Type Definition (DTD) bzw. ein XML-Schema vorgegeben werden.

Ein XML-Dokument setzt sich aus einer Kombination von Texten und zusätzlichen Informationen zu den Texten, den Auszeichnungselementen (Englisch: markup elements), zusammen.

XML Elemente

Ein Auzeichnungselement, im folgenden nur noch kurz Element genannt, ist eine semantische Struktur, um einen Text mit zusätzlichen Informationen anzureichern. In XML besteht ein Element aus einem öffnenden und einem schließenden Bezeichnungstext, den sogennanten Tags (zu deutsch: Abgrenzer, Bezeichnung). Zwischen den beiden Tags wird der eigentliche Text angegeben. Tags bestehen aus einem Namensteil und mehreren optionalen Attributen.

Ein Tag ist immer von einem Pärchen spitzer Klammern < … > umgeben. Dem Zeichen < des schließenden Tags wird ein Querstrich / angehängt, um ihn vom öffnenden Tag zu unterscheiden.

<vorname>Christian</vorname>

Die Schreibweise des Namens (Groß-/Kleinschreibung) muss in dem öffnenden und dem schließenden Tag identisch sein. Namen können Buchstaben, Ziffern und andere Zeichen enthalten mit folgenden Ausnahmen:

  • Der Name darf nicht mit einer Ziffer oder einem Satzzeichen (Punkt, Komma, etc.) beginnen
  • Der Name darf nicht mit den Buchstaben xml (in jeder Schreibweise) beginnen
  • Der Name darf keine Leerzeichen enthalten

Hat ein Element keinen Inhaltstext, so kann man anstatt eines schließenden Tags vor dem Zeichen > des öffnenden tags einen Querstrich / einfügen, um ein Element als leeres Element zu kennzeichnen.

<vorname></vorname>

ist äquivalent zu

<vorname/>

Zusätzlich können einem Element mit Attributen weitere Eigenschaften zugewiesen werden.

XML Attribute

Attribute können nur im öffnenden Tag definiert werden und müssen in der folgenden Syntax angegeben werden:

name="wert"

Wobei name der Name des Attributes ist und wert der Wert (Inhalt) des Attributs ist. Attributwerte müssen immer von Anführungszeichen eingeschlossen sein, wobei sowohl einfache ('), wie auch doppelte Anführungszeichen (") verwendet werden können, sofern beide Anführungszeichen gleich sind. Attributwerte werden nicht nach Datentypen unterschieden – alle Werte sind immer Alphanumerisch. Attribute können keine Elemente enthalten.

Beispiel:

<telefonnummer privat="ja">44556677</telefonnummer>

XML Struktur

Elemente können andere Elemente enthalten, d.h. in einem Element können ein oder mehrere weitere Elemente im Inhalt eingebunden werden. Die eingebundenen Elemente werden als Kindelemente (Child elements) bezeichnet und das einbindende Element wird als Elternelement (Parent element) bezeichnet.

<adresse>
  <telefonnummer privat="ja">44556677</telefonnummer>
</adresse>

Wichtig ist hierbei, dass die schließenden Tags in umgekehrter Reihenfolge zu den öffnenden Tags angegeben werden, d.h. jedes Kindelement muss erst geschlossen sein, bevor der schließende Tag des Elternelements angegeben wird.

Jedem XML-Dokument muss und darf nur genau ein Wurzelelement zugewiesen werden. Alle weiteren Elemente müssen innerhalb des Wurzelelements angegeben werden.

In XML gibt es keine vordefinierten Elemente, sondern jedes XML-Dokument verfügt über eigene Elemente. Grundsätzlich müssen die Elemente nicht explizit definiert werden, sondern können frei im XML-Dokument angegeben werden. Allerdings empfielt es sich, wenn XML-Dokumente zwischen Anwendungen ausgetauscht werden sollen, die erlaubten Elemente und die Dokumentstruktur festzulegen. Hierzu kann man entweder eine Document Type Definition (DTD) verwenden oder ein XML-Schema. Aber weder eine DTD noch ein XML-Schema sind zwingend notwendig.

XML Deklaration

In der ersten Zeile eines XML-Dokuments wird ein Dokument durch Angabe eines speziellen Elements als XML-Dokument ausgezeichnet:

<?xml?>

Auffällig ist, dass hinter der öffnenden Klammer < und vor der schließenden Klammer > ein Fragezeichen ? gesetzt wird. Außerdem gibt es kein schließendes Element und somit darf auch kein Querstrich / angegeben werden.

Diesem speziellen Element, der sogenannten XML-Deklaration, können drei optionale Attribute zugewiesen werden. In der XML-Spezifikation sind folgende Attribute für das xml Element definiert:

version Die verwendete Versionsnummer der XML-Spezifikation. Das Attribut kann derzeit die Werte 1.0 oder 1.1 annehmen.
encoding Definiert die Zeichenkodierung des XML-Dokuments. Falls keine Zeichenkodierung angegeben ist, wird als Zeichenkodierung UTF-8 angenommen.
standalone Der Wert des Attributs ist entweder yes oder no. Der Wert yes zeigt an, dass das XML-Dokument keine weiteren externen Referenzen, wie zum Beispiel eine externde DTD, einbindet. Der Vorgabewert ist no, was bedeutet, das externe Referenzen eingebunden werden können.

Beispiel:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

XML 1.0 und XML 1.1

Die XML-Spezifikation wurde vom World Wide Web Consoritum (W3C) am 10. Februar 1998 in der Version 1.0 veröffentlicht und liegt seit dem 16. August 2006 in der überarbeiteten Ausgabe 4 vor, wobei es sich immer noch um die Version 1.0 handelt.

Am 04. Februar 2004 wurde die XML-Spezifikation in der Version 1.1 veröffentlicht, die ebenfalls am 16. August 2006 mit der 2. Ausgabe überarbeitet wurde.

In der Version 1.1 wurde die Spezifikation den weiterentwickelten Standards angepasst, auf denen XML basiert. So werden in der XML Version 1.1 nun alle Unicode Versionen unterstützt und nicht nur die Unicode Version 2.0, wie in der XML Version 1.0. Auch wurde die Liste der erlaubten Zeichen für die Markierung des Zeilenendes angepasst. Zusätzlich definiert die XML Version 1.1 eine Reihe von Beschränkungen unter dem Begriff Normalisierung, mit denen XML-Parser nun Namen, Attribute und Inhalte durch einen einfachen Vergleich von Unicode-Zeichenketten auf Identität überprüfen können.

XML Processing Instructions

In XML können Verarbeitungsanweisungen (Englisch: Processing Instructions) für bestimmte Anwendungen, welche das XML-Dokument einlesen, hinterlegt werden. Die Verarbeitungsanweisungen können an einer beliebigen Stelle im XML-Dokument in bzw. außerhalb von XML-Elementen deklariert werden und haben folgenden Aufbau:

<?target daten?>

Während target die Anwendung, für die diese Anweisung gedacht ist, bezeichnet und den gleichen Namensregeln wie der der Tags unterliegt, ist die Struktur der Daten nicht definiert. Häufig werden die Daten in der gleichen Attribut-Wert-Struktur, wie in den Tags abgelegt.

Beispiele:

<?XMLPrinter ausgabeformat="pdf" pfad="/temp"?>
<?MeineAnwendung Copyright 2007 www.bitworld.de?>

Kommentare

In einem XML-Dokument können auch Kommentare angegeben werden. Kommentare werden zwischen der Zeichenfolge <!-- und der Zeichenfolge --> angegeben. Kommentare können an den gleichen Stellen wie Elemente angegeben werden, d.h. nicht innerhalb eines Tags, sondern nur zwischen den Tags.

<!-- Das ist ein Kommentar -->

Wohlgeformte und gültige XML-Dokumente

XML-Dokumente werden in zwei Qualitätsstufen eingeteilt: wohlgeformt (well formed) und gültig (valid). Ein wohlgeformtes XML-Dokument muss folgende Bedingungen erfüllen:

  • Das XML-Dokument muss genau ein Wurzelelement haben
  • Jederöffnende Tag muss einen korrespondierenden schließenden Tag besitzen
  • Die Schreibweise desöffnenden und des schließenden Tags ist identisch
  • Die Reihenfolge deröffnenden und schließenden Tags bei verschachtelten Elementen ist korrekt
  • Alle Attributwerte sind von Anführungszeichen umschlossen

Ein gültiges XML-Dokument muss alle Anforderungen eines wohlgeformten Dokumentes erfüllen, entspricht aber in seinem Aufbau zusätzlich einer definierten Dokumentstruktur, die entweder als Document Type Definition (DTD) oder als XML-Schema vorgegeben ist.

  Wohlgeformt Gültig
Genau ein Wurzelelement Ja Ja
Korrespondierender schließender Tag Ja Ja
Identische Schreibeweise des öffnenden und schließenden Tags Ja Ja
Korrekte Reihenfolge bei verschachtelten Elementen Ja Ja
Anführungszeichen um Attributwerte Ja Ja
Dokumentstruktur ist vorgegeben (DTD oder XML-Schema) -- Ja

XML-Dokumente, die zwischen Anwendung ausgetauscht werden müssen, sollten immer gültig sein, d.h. einer DTD oder besser einem XML-Schema entsprechen, um Inkompatibilitäten zu vermeiden.

Namensraum (Namespace)

Grundsätzlich können in einem XML-Dokument mehrere verschiedene Datenstrukturen enthalten sein. So ist es beispielsweise möglich, zwei verschiedene XML-Dokumente zu einem zusammenzufassen. Problematisch wird es nur, wenn beide XML-Dokumente gleiche Elementnamen für die Auszeichnung unterschiedlicher Inhalte verwenden. Um solche Namenskonflikte zu vermeiden können Elemente zusätzlich durch einen frei wählbaren Präfix gekennzeichnet werden.

<?xml version="1.0"?>
<adressen>
  <p:person>
    <p:name>Christian</p:name>
  </p:person>
  <o:ort>
    <o:name>Berlin</o:name>
  </o:ort>
</adressen>

Zur besseren Unterscheidung kann einem Präfix ein eindeutiger Namensraum zugewiesen werden, der in dem öffnenden Tag eines Elements angegeben wird. Alle Kindelemente mit dem gleichen Präfix werden dann automatisch dem gleichen Namensraum zugeordnet.

URI

Ein Uniform Resource Identifier (URI) ist ein Oberbegriff für verschiedene Internet Resourcen. Er besteht aus einer Zeichenfolge. Der bekannteste URI ist der Uniform Resource Locator (URL), der eine Internetadresse beschreibt (z.B. http://www.bitworld.de).

Ein Namensraum wird durch ein Attribut definiert, dessen Name sich aus der Zeichenfolge xmlns: gefolgt von dem Präfix des Namensraums zusammensetzt. Der Attributwert ist ein eindeutiger Uniform Resource Identifier (URI), dessen Resource jedoch nicht existieren muss.

<?xml version="1.0"?>
<adressen>
  <p:person xmlns:p="http://www.bitworld.de/personen/">
    <p:name>Christian</p:name>
  </p:person>
  <o:ort xmlns:o="http://www.bitworld.de/orte/>
    <o:name>Berlin</o:name>
  </o:ort>
</adressen>

Beide Namensräume könnte man auch im Element adressen definieren, da die Namensräume für alle Kindelemente definiert sind.

<?xml version="1.0"?>
<adressen xmlns:p="http://www.bitworld.de/personen/" xmlns:o="http://www.bitworld.de/orte/">
  <p:person>
    <p:name>Christian</p:name>
  </p:person>
  <o:ort>
    <o:name>Berlin</o:name>
  </o:ort>
</adressen>

Allgemeiner Namensraum (Default namespace)

Durch einfaches weglassen des Präfix bei der Definition eines Namensraums erzeugt man einen Allgemeinen Namensraum, der für alle Kindelemente automatisch gilt.

<?xml version="1.0"?>
<adressen>
  <person xmlns="http://www.bitworld.de/personen/">
    <name>Christian</name>
  </person>
  <ort xmlns="http://www.bitworld.de/orte/">
    <name>Berlin</name>
  </ort>
</adressen>

Sonderzeichen

Die XML Sonderzeichen < und das kaufmännische Und & müssen, sofern Sie als Inhaltstext von Elementen angegeben werden, durch so genannte Entity references ersetzt werden. Sonderzeichen wie > und Anführungszeichen müssen nicht, sollten aber ebenfalls ersetzt werden.

&lt; < kleiner als
&gt; > größ er als
&amp; & kaufmännisches Und
&apos; ' Apostroph (einfaches Anführungszeichen)
&quot; " doppeltes Anführungszeichen

CDATA

Anstatt die XML Sonderzeichen durch Entity references zu ersetzen, kann man den Inhaltstext eines Elements auch als CDATA-Sektion kennzeichnen. Innerhalb einer CDATA-Sektion können alle XML Sonderzeichen direkt angegeben werden. Eine CDATA-Sektion beginnt mit der Zeichenfolge <![CDATA[ und endet mit der Zeichenfolge ]]> . Innerhalb einer CDATA-Sektion ist lediglich die direkte Angabe der Zeichenfolge ]]> verboten und muss entsprechend durch Entity references ersetzt werden.

<gewinn><![[CDATA[if einkauf < verkauf]]></gewinn>

PCDATA

In Zusammenhang mit einer DTD wird häufig von Parsed character data (PCDATA) gesprochen. Als PCDATA werden alle Inhaltstexte von Elementen bezeichnet, die nicht durch eine CDATA-Sektion gekennzeichnet sind.

Zuletzt aktualisiert am Samstag, 23. Januar 2010

Impressum

Impressum

Haftungsausschluss

(1) Haftungsbeschränkung

Inhalte dieser Website

Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt erstellt. Der Anbieter übernimmt jedoch keine Gewähr für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Inhalte. Die Nutzung der abrufbaren Inhalte erfolgt auf eigene Gefahr des Nutzers. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder.

Verfügbarkeit der Website

Der Anbieter wird sich bemühen, den Dienst möglichst unterbrechungsfrei zum Abruf anzubieten. Auch bei aller Sorgfalt können aber Ausfallzeiten nicht ausgeschlossen werden. Der Anbieter behält sich das Recht vor, sein Angebot jederzeit zu ändern oder einzustellen.

Externe Links

Diese Website enthält Verknüpfungen zu Websites Dritter ("externe Links"). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle dieser externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.

Werbeanzeigen

Für den Inhalt der Werbeanzeigen ist der jeweilige Autor verantwortlich, ebenso wie für den Inhalt der beworbenen Website. Die Darstellung der Werbeanzeige stellt keine Akzeptanz durch den Anbieter dar.

Kein Vertragsverhältnis

Mit der Nutzung der Website des Anbieters kommt keinerlei Vertragsverhältnis zwischen dem Nutzer und dem Anbieter zustande. Insofern ergeben sich auch keinerlei vertragliche oder quasivertragliche Ansprüche gegen den Anbieter. Für den Fall, dass die Nutzung der Website doch zu einem Vertragsverhältnis führen sollte, gilt rein vorsorglich nachfolgende Haftungsbeschränkung: Der Anbieter haftet für Vorsatz und grobe Fahrlässigkeit sowie bei Verletzung einer wesentlichen Vertragspflicht (Kardinalpflicht). Der Anbieter haftet unter Begrenzung auf Ersatz des bei Vertragsschluss vorhersehbaren vertragstypischen Schadens für solche Schäden, die auf einer leicht fahrlässigen Verletzung von Kardinalpflichten durch ihn oder eines seiner gesetzlichen Vertreter oder Erfüllungsgehilfen beruhen. Bei leicht fahrlässiger Verletzung von Nebenpflichten, die keine Kardinalpflichten sind, haftet der Anbieter nicht. Die Haftung für Schäden, die in den Schutzbereich einer vom Anbieter gegebenen Garantie oder Zusicherung fallen sowie die Haftung für Ansprüche aufgrund des Produkthaftungsgesetzes und Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit bleibt hiervon unberührt.

(2) Urheberrecht

Die auf dieser Website veröffentlichten Inhalte und Werke sind urheberrechtlich geschützt. Jede vom deutschen Urheberrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des jeweiligen Autors oder Urhebers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte und Beiträge Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.

Links zur Website des Anbieters sind jederzeit willkommen und bedürfen keiner Zustimmung durch den Anbieter der Website. Die Darstellung dieser Website in fremden Frames ist nur mit Erlaubnis zulässig.

(3) Datenschutz

Durch den Besuch der Website des Anbieters können Informationen über den Zugriff (Datum, Uhrzeit, betrachtete Seite) auf dem Server gespeichert werden. Diese Daten gehören nicht zu den personenbezogenen Daten, sondern sind anonymisiert. Sie werden ausschließlich zu statistischen Zwecken ausgewertet. Eine Weitergabe an Dritte, zu kommerziellen oder nichtkommerziellen Zwecken, findet nicht statt.

Der Anbieter weist ausdrücklich darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen und nicht lückenlos vor dem Zugriff durch Dritte geschützt werden kann.

Die Verwendung der Kontaktdaten der Anbieterkennzeichnung - insbesondere der Telefon-/Faxnummern und E-Mailadresse - zur gewerblichen Werbung ist ausdrücklich nicht erwünscht, es sei denn der Anbieter hatte zuvor seine schriftliche Einwilligung erteilt oder es besteht bereits ein geschäftlicher Kontakt. Der Anbieter und alle auf dieser Website genannten Personen widersprechen hiermit jeder kommerziellen Verwendung und Weitergabe ihrer Daten.

(4) Anwendbares Recht

Es gilt ausschließlich das maßgebliche Recht der Bundesrepublik Deutschland.

(5) Besondere Nutzungsbedingungen

Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Punkten (1) bis (4) abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.

Quelle: Disclaimer von Juraforum.de - Portal mit Rechtsanwalt-Suche.