XML

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

XML (Extensible Markup Language) ist ein text-basiertes Format für den Austausch strukturierter Information. Dies können Dokumente, Konfigurationen, Bücher, Rechnungen und vieles mehr sein. Es ist abgeleitet vom älteren Standard SGML (ISO 8879) für die Anwendung im Web. XML wurde von der XML Working Group (ursprünglich bekannt als "SGML Editorial Review Board") desWorld Wide Web Consortium (W3C) im Jahre 1996 entwickelt.




Inhaltsverzeichnis

[Bearbeiten] Die Ziele von XML

Die Entwicklungsziele von XML sind:

  • XML soll im Internet anwendbar sein.
  • XML soll eine Vielzahl an unterschiedlichen Anwendungen unterstützen.
  • XML soll SGML-kompatibel sein.
  • Das Schreiben von Programmen, welche XML verarbeiten, soll einfach möglich sein.
  • Optionale Funktionen sollen in XML auf ein Minimum beschränkt werden, idealerweise sollten keine vorhanden sein.
  • XML soll menschenlesbar und deutlich sein.
  • XML soll zügig verabschiedet werden.
  • Der XML-Entwurf soll formal und präzise sein.
  • XML-Dokumente sollen einfach zu erstellen sein.
  • Im XML-Markup ist das Kurzfassen von untergeordneter Bedeutung.

[Bearbeiten] Begriffe

[Bearbeiten] XML und HTML

Standard-Hierarchie rund um XML

Die ursprüngliche Form von HTML ist streng formal unabhängig von XML. Beide sind aus der SGML hervorgegangen und teilen nur die durch die SGML definierten Sprachelemente. Im Zuge der einfacheren Verarbeitung wurde der Standard HTML 4.01 für XML übersetzt. Dieser neue Standard heißt XHTML 1.0. Erst mit der Einführung von XHTML wurden die Inhalte von HTML zu einer Untermenge von XML. Die Arbeit XHTML 2.0, dessen Gegenentwurf HTML5 ist, wurde eingestellt[1]. Somit wird der XHTML-HTML-Dualismus mit HTML5 beendet.

[Bearbeiten] Sprachtyp

XML ist keine reine Metasprache. Eine Metasprache beschreibt lediglich eine weitere Sprache, die Objektsprache. Da in XML-Dokumenten neben den deskriptiven Anteilen auch Inhalte vertreten sind, spricht man hier von einer Auszeichnungssprache.


[Bearbeiten] Logischer Aufbau

Der Logische Aufbau legt die Abfolge der Zeichen der Gesamteinheit der Daten fest. Die Daten setzen sich dabei aus mindestens einer Entität zusammen. Siehe dazu auch Physischer Aufbau. Vereinfacht gesagt legt dieser Teil Regeln fest, wie ein XML-Dokument aussehen muss.

[Bearbeiten] Dokument

Ein XML-Dokument kann verschiedene Zustände haben.

  • Ein XML-Dokument ist wohlgeformt (well-formed), wenn es die syntaktischen Regeln von XML einhält
  • Ein XML-Dokument ist gültig (valid), wenn es wohlgeformt ist und alle Regeln der Dokumenttypen-Definition (DTD) einhält.

Ein XML-Dokument besteht aus dem Prolog, genau einem Element und beliebig vielen Kommentaren, Verarbeitungsanweisungen (PIs, Processing Instructions) und Trennzeichen (space, Carriage Return, Line feet, Tab).

Hinweis:

In XML gelten Leerzeichen (space), Wagenrücklauf (carriage return), Zeilenvorschub (line feet) und Tabulator (tab) gleichermaßen als gültiges Trennzeichen. Zu Wahrung der Übersicht wird im Folgenden innerhalb von Tag-Definitionen ausschließlich das Leerzeichen sowie in Element-Inhalten je nach Situation Zeilenumbruch oder Leerzeichen verwendet. Streng formal sind alle diese Zeichen gleichbedeutend.

[Bearbeiten] Prolog

Der Prolog enthält Informationen zum Format des nachfolgenden Dokuments. Diese Informationen sind wichtig, damit der XML-Parser das Dokument korrekt einlesen kann.

Beispiel
<?xml version="1.0"?>
Dies ist ein Beispiel für einen Prolog in Minimalform. Lediglich die Version des XML-Dokuments wird angegeben. Optional kann eine Zeichenkodierungsinformation sowie eine Standalone-Definition vorgesehen werden:
Beispiel
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Der Standalone-Wert "yes" legt fest, dass keine fremden Entitäten eingebunden werden. Die Zeichenkodierung legt fest mit welcher Zeichentabelle die Textdaten formatiert wurden. Diese muss natürlich mit der in der Datei benutzten Formatierung übereinstimmen, wenn das Dokument in Form einer Datei vorliegt. Insbesondere bei der Verarbeitung in Programmen muss gewährleistet sein, dass eine Weitergabe des Dokuments (etwa Ausgabe in eine Datei) mit der richtigen Kodierung vorgenommen wird. Für die Versionsnummer ist formal jede Zahl der Form 1.0 bis 1.99999[...] korrekt, jedoch sollte für ein XML 1.0 Dokument diese Version natürlich "1.0" sein.


[Bearbeiten] Datenklassen

In XML existieren zwei Klassen von Daten: Markup und Textdaten.

[Bearbeiten] Markup

Als Markup bezeichnet man alle Zeichengruppen, welche eine Struktur in XML definieren:

  • Start-Tags, z.B.
    <startTag>
  • End-Tags, z.B.
    </endTag>
  • Leerelemente, z.B.
    <Leerelement />
  • Entitätsreferenzen, z.B.
    &amp;
  • Zeichenreferenzen, z.B.
    &x0f;
  • Kommentare, z.B.
    <!-- Kommentar -->
  • CDATA Bereichsbegrenzer,
    <![CDATA[ und ]]>
  • Dokumententypdeklarationen, z.B.
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  • Verarbeitungsanweisungen, z.B.
    <? include ("datei.php") ?>
  • Die XML Deklaration, z.B.
    <?xml version="1.0"?>
  • Textdeklarationen, z.B.
    <?xml encoding="utf-8" ?>

[Bearbeiten] Textdaten

Alle Daten, die kein Markup sind, sind Textdaten. Dabei ist zu beachten, dass das Und-Zeichen (Ampersand: &) und das Kleiner-Als-Zeichen (<) in Textdaten nicht vorkommen dürfen. Beide müssen mit einer Escapesequenz geschützt werden. Für das Ampersand ist das &amp;, für das Kleiner-als-Zeichen &lt;. Aus Kompatibilitätsgründen muss ebenfalls das Größer-als-Zeichen (>) als &gt; geschrieben werden. Ferner sind auch Zeichenreferenzen (z.b. &#x040; für @) zugelassen. In CDATA-Bereichen ist jedes Zeichen bis auf die Endsequenz für den CDATA-Bereich ("]]>") zugelassen.

Um in Attributwerten Anführungszeichen anzugeben, sollten auch diese als &quot; (") und &apos; (') geschrieben werden.

Beispiel
<meinElement attrib="Dies ist ein &quot;komischer&quot; Wert" />

[Bearbeiten] Zeichen

[Bearbeiten] Zeichen nach XML 1.0

In XML 1.0 sind folgende Unicode-Zeichen als "Zeichen" (Characters) definiert:

  • Unicode-Zeichen #x9
  • Unicode-Zeichen #xA
  • Unicode-Zeichen #xD
  • Unicode-Zeichenbereich #x20-#xD7FF
  • Unicode-Zeichenbereich #xE000-#xFFFD
  • Unicode-Zeichenbereich #x10000-#x10FFFF

[Bearbeiten] Zeichen nach XML 1.1

  • Unicode-Zeichenbereich #x1-#xD7FF
  • Unicode Zeichenbereich #xE000-#xFFFD
  • Unicode Zeichenbereich #x10000-#x10FFFF

Gegenüber XML 1.0 wurden der Menge die als RestrictedChars definiert, dies sind

  • Unicode-Zeichenbereich #x1-#x8
  • Unicode-Zeichenbereich #xB-#xC
  • Unicode-Zeichenbereich #xE-#x1F
  • Unicode-Zeichenbereich #x7F-#x84
  • Unicode-Zeichenbereich #x86-#x9F

Diese sind in XML 1.1 ausdrücklich in der Menge der Zeichen mit eingeschlossen.

[Bearbeiten] Namen

Namen sind in XML Bezeichner für strukturierende Elemente (Elemente nicht im Sinne von XML!). Dies können Entitäten, Elemente, Attribute und ähnliches sein. Namen müssen bestimmten Konventionen folgen. Diese unterscheiden sich in XML 1.0 und XML 1.1

[Bearbeiten] Namen nach XML 1.0

In XML 1.0 ist eine Menge an Zeichenkombinationen definiert, welche als Namen zugelassen sind. Alle anderen Namen führen zu nicht wohlgeformten Dokumenten. Diese Regeln gelten für die Editions One bis Four (siehe Versionen).


Beachten Sie: Die Edition Five aus dem Jahr 2008 definiert Namen wie XML 1.1! Dies ist streng genommen eine Änderung des Standards, jedoch deklariert das W3C es als eine Lockerung der Regeln. Namen, die nach XML 1.0 Edition Four wohlgeformt sind, bleiben weiterhin wohlgeformt. Zusätzlich werden weitere Namen zugelassen, sodass die mögliche Namensmenge der in XML 1.1 entspricht.[2]

[Bearbeiten] Namen nach XML 1.1

In XML 1.1 ist eine Menge an Zeichenkombinationen definiert, welche als Namen verboten sind. Alle anderen Kombinationen sind als Namen wohlgeformt.

Der Erste Buchstabe eines Namens kann sein:

  • Doppelpunkt (:)
  • Alle Großbuchstaben (A-Z)
  • Alle Kleinbuchstaben (a-z)
  • Der Unterstrich
  • Die Unicode Zeichenbereiche #xC0 bis #xD6, #xD8 bis #xF6, #xF8 bis #x2FF, #x370 bis #x37D, #x37F bis #x1FFF, #x200C bis #x200D, #x2070 bis #x218F, #x2C00 bis #x2FEF, #x3001 bis #xD7FF, #xF900 bis #xFDCF, #xFDF0 bis #xFFFD, #x10000 bis #xEFFFF

Alle weiteren Buchstaben eines Namens dürfen sein:

  • Alle Zeichen für den ersten Buchstaben eines Namens
  • Alle Ziffern (0-9)
  • Minus (-)
  • Punkt (.)
  • Die Unicode-Zeichen #xB7, #x0300 bis #x036F, #x203F bis #x2040

Praktisch bedeutet das, dass bestimmte Unicode-Zeichen in Namen nicht zugelassen sind. Das sind nach den obigen Mengen der Unicodezeichen #xD7, #xF7, x#37E, #x2000 bis #x200B, #x200E bis #x203E, #x2041 bis #x206F, #x2190 bis #x2BFF, #x2FF0 bis #x3000, #xD800 bis #xF8FF, #xFDD0 bis #xFDEF, #xFFFE, #xFFFF, #xF0000 bis #xFFFFF im Allgemeinen, zuzüglich der Einschränkungen für das erste Zeichen eines Namens.


[Bearbeiten] Verarbeitungsanweisungen

Verarbeitungsanweisungen, Englisch Processing Instructions oder PIs, sind Anweisungen, welche an das verarbeitende Programm gerichtet sind. Verarbeitungsanweisungen beginnen immer mit "<? und enden mit "?>". Die Bezeichnung einer Verarbeitungsanweisung folgt den normalen Regeln für Namen in XML mit Ausnahme aller Groß- und Kleinschreibungskombinationen von "XML". Diese Zeichen sind für zukünftige Versionen von XML reserviert.

Beachten Sie: In Namen für Verarbeitungsanweisungen sind die Buchstabenkombinationen "XML", "XMl", "XmL", "xML", "Xml", "xMl", "xmL" und "xml" verboten.

Es existieren keine Vorschriften zu Verarbeitung der Anweisungen.

Klassisches Beispiel ist eine include-Anweisung aus HTHML/XHTML für einen php-Interpreter:

Beispiel
<?php include ("datei.php") ?>

[Bearbeiten] CDATA-Bereiche

CDATA-Bereiche sind geschütze Datenbereiche, in denen Beschränkungen für die Zeichendaten nicht gelten. CDATA-Bereiche beginnen immer mit der Zeichenfolge "<![CDATA[" (ohne Anführungszeichen) und enden mit "]]>" (ohne Anführungszeichen). Dazwischen ist jedes Zeichen mit Ausnahme der Endmarkierung für CDATA-Bereiche gültig:

Beispiel
<![CDATA[Ein Datenbereich mit richtig komischen zeichen <> & "bla! bla!"]]>

[Bearbeiten] Einzelnachweise

  1. XHTML 2 Working Group Expected to Stop Work End of 2009, W3C to Increase Resources on HTML 5. Website des World Wide Web Consortium. Abgerufen am 07. Januar 2011.
  2. Extensible Markup Language (XML) 1.0 (Fifth Edition). Website des World Wide Web Consortium. Abgerufen am 8. Januar 2011.
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Hilfe
SELFHTML
Diverses
Werkzeuge
Flattr
Soziale Netzwerke