Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Extensible Markup Language

Erweiterbare Auszeichnungssprache), abgekürzt XML, ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten im Format einer Textdatei …

Inhalt6 Abschnitte
  1. 1. Grundidee und Zweck
  2. 2. Aufbau, Elemente und Grundregeln
  3. 3. Wohlgeformtheit, Validität und DTD
  4. 4. Verarbeitung und Programmierschnittstellen
  5. 5. Dokumenttypen und Transformation
  6. 6. Schemas, XML-Familie und Einsatzfelder

Grundidee und Zweck

Die Extensible Markup Language (XML, „Erweiterbare Auszeichnungssprache“) ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Textdateien. XML-Dokumente sind sowohl für Menschen als auch für Maschinen lesbar. XML dient außerdem dem plattform- und implementationsunabhängigen Datenaustausch zwischen Computersystemen, besonders über das Internet.

XML wurde vom World Wide Web Consortium (W3C) am 10. Februar 1998 veröffentlicht. Die aktuelle Fassung ist die fünfte Ausgabe vom 26. November 2008. XML wurde aus SGML erweitert und ist eine Metasprache: Auf ihrer Grundlage können durch strukturelle und inhaltliche Einschränkungen anwendungsspezifische Sprachen definiert werden. Solche Einschränkungen werden durch eine Document Type Definition (DTD) oder ein XML Schema beschrieben. Beispiele für XML-Sprachen sind RSS, MathML, GraphML, XHTML, XAML, SVG und GPX; auch XML Schema selbst ist eine XML-Sprache.

Die Standardzeichenkodierung ist UTF-8. XML-verarbeitende Systeme müssen UTF-8 und UTF-16 beherrschen. Sollen Binärdaten in einem XML-Dokument gespeichert werden, müssen sie in Text umkodiert werden, beispielsweise mit Base64. XML-Dateien haben meist die Endung .xml; wichtige MIME-Typen sind application/xml und text/xml. Die magische Zahl eines XML-Dokuments lautet 3C 3F 78 6D 6C (hexadezimal), entsprechend „<?xml“.

Aufbau, Elemente und Grundregeln

Die zentrale Struktureinheit ist das Element. Es kann Text, weitere Elemente oder beides enthalten und bildet einen Knoten im hierarchischen Strukturbaum. Elemente tragen die Informationen des Dokuments. Für ihre Auszeichnung gibt es drei Tag-Arten: <Elementname> als Starttag, </Elementname> als Endtag und <Elementname/> als Leertag für ein Element ohne Inhalt.

Ein XML-Dokument besitzt einen physischen und einen logischen Aufbau. Physisch enthält die Dokument-Entität das Hauptdokument. Weitere Entitäten können über Entitätenreferenzen wie &name; oder %name; eingebunden werden. Einzelne Zeichen lassen sich als &#Dezimalzahl; oder &#xHexadezimalzahl; referenzieren. Die XML-Deklaration kann die XML-Version, die Zeichenkodierung und die mögliche Verarbeitbarkeit ohne DTD angeben. Eine DTD kann Entitäten und den erlaubten logischen Aufbau festlegen.

Logisch ist XML als Baum organisiert. Zu den Bestandteilen gehören Elemente, Attribute, Verarbeitungsanweisungen, Kommentare und Text. Attribute sind zusätzliche Eigenschaften eines Elements, die im Start- oder Leertag in der Form Attributname=Attributwert stehen. Verarbeitungsanweisungen haben die Form <?Zielname Daten?>, Kommentare die Form <!-- Kommentar-Text -->. Text kann als normale Zeichendaten oder in einem CDATA-Abschnitt <![CDATA[ beliebiger Text]]> vorkommen.

Ein Dokument muss genau ein Element auf der obersten Ebene besitzen, das Wurzelelement. Unterhalb davon können weitere Elemente und Text hierarchisch verschachtelt werden. Im Beispiel des Artikels ist <verzeichnis kategorie="Geografie"> das oberste Element; sein Attribut kategorie hat den Wert Geografie. Es enthält unter anderem den Titel „Wikipedia Städteverzeichnis“ sowie Einträge mit den Stichwörtern „Genf“ und „Köln“.

Wohlgeformtheit, Validität und DTD

Ein XML-Dokument ist wohlgeformt (well-formed), wenn es alle XML-Regeln einhält. Dazu gehören insbesondere:

  • Es gibt genau ein Wurzelelement.
  • Elemente mit Inhalt besitzen Start- und Endtag; leere Elemente können mit einem Leertag geschrieben werden.
  • Tags sind ebenentreu-paarig verschachtelt. Ein Element muss geschlossen sein, bevor das Elternelement oder ein Geschwisterelement geschlossen beziehungsweise begonnen wird.
  • Ein Element darf nicht mehrere Attribute mit demselben Namen besitzen.
  • Attributwerte stehen in Anführungszeichen, entweder in "..." oder in '...'.
  • Groß- und Kleinschreibung muss in Start- und Endtag übereinstimmen. <eintrag></Eintrag> ist daher nicht gültig.

Validität bedeutet mehr als Wohlgeformtheit. Für den Datenaustausch ist es vorteilhaft, das Format durch eine Grammatik zu definieren. Nach dem Standard ist ein XML-Dokument gültig (valid), wenn es wohlgeformt ist, auf eine Grammatik verweist und deren Regeln einhält.

Eine Dokumenttypdefinition (DTD) beschreibt die Struktur und Grammatik von Dokumenten. Bei Dokumenten mit externer oder integrierter DTD prüft der Parser das Dokument bereits beim Öffnen. Der Schwerpunkt liegt darauf, ob der Inhalt den DTD-Regeln entspricht; ein solches Dokument ist stets ein valides Dokument. DTDs sind vor allem für Volltextdokumente beziehungsweise erzählende Dokumente vorgesehen. Dokumente ohne DTD eignen sich eher für beliebigen Datenaustausch. Der Parser prüft dann nur die Wohlgeformtheit; das Auslesen und Prüfen der eigentlichen Informationen erfolgt in nachgelagerten Prozessen.

Ein XML-Parser ist ein Programm oder Programmteil, der XML-Daten ausliest, interpretiert und gegebenenfalls auf Gültigkeit prüft. Ein Parser, der die Validität prüft, heißt validierender Parser.

Verarbeitung und Programmierschnittstellen

Beim Zugriff auf XML sind drei Verarbeitungskriterien wichtig: Der Zugriff kann sequenziell oder wahlfrei erfolgen, die Ablaufkontrolle kann beim Parser („Push“) oder beim aufrufenden Programm („Pull“) liegen, und das Baumstrukturmanagement kann hierarchisch oder verschachtelt organisiert sein.

Ein XML-Prozessor beziehungsweise XML-Parser stellt der Anwendung eine Programmierschnittstelle (API) zur Verfügung. Die wichtigsten Verarbeitungsmodelle sind:

  • DOM stellt das gesamte XML-Dokument als Baum dar und ermöglicht wahlfreien Zugriff, Lesen, Ändern und Zurückschreiben. Dafür ist DOM sehr speicherintensiv.
  • SAX verarbeitet das Dokument als sequentiellen Datenstrom. Bei bestimmten Ereignissen ruft der Parser registrierte Rückruffunktionen (Callbacks) auf.
  • Eine Pull-API verarbeitet ebenfalls sequenziell, bietet ereignisbasierte Verarbeitung und einen Iterator. Die Ablaufkontrolle liegt beim Programm; das ist speichereffizient und gegebenenfalls leichter zu programmieren als SAX.
  • Data Binding wandelt XML-Daten durch Unmarshalling direkt in Datenstrukturen, zum Beispiel Objekte, um.
  • Ein nicht extrahierendes XML-API verarbeitet Daten auf Byte-Ebene besonders effizient.

Anwendungscode greift häufig über zusätzliche Zugriffsschichten auf native Objekte oder Datenstrukturen zu. Beispiele sind JAXB in Java, der Data Binding Wizard in Delphi und das XML Schema Definition Toolkit in .Net. Die Umwandlung zwischen Objekten und XML ist üblicherweise bidirektional möglich und heißt Serialisierung oder Marshalling.

Parser-APIs existieren unter anderem für Java, C, C++, C#, Python, Perl und PHP. Beispiele sind StAX als speichereffiziente Java-Pull-Implementierung mit Cursor- und Iteratorverarbeitung, JAXB für Data Binding in Java, XMLBeans, Xerces als validierender Parser für C++, Java und Perl sowie MSXML mit Unterstützung unter anderem für DOM, SAX, XSLT und XML-Schemata. XML-Editoren dienen der Erstellung, XML-Datenbanken der Speicherung und Verwaltung. Webbrowser wie Apple Safari, Google Chrome, Microsoft Edge, Mozilla Firefox und Opera können XML mit ihrem eingebauten Parser direkt visualisieren.

Dokumenttypen und Transformation

XML-Dokumente werden nach ihrem Gebrauch und ihrem Strukturierungsgrad unterschieden. Dokumentzentrierte Dokumente orientieren sich an Texten, die für Menschen auch ohne zusätzliche Metainformation größtenteils verständlich sind. Elemente markieren vor allem die Bedeutung von Textpassagen. Die Struktur ist schwach, weshalb die maschinelle Verarbeitung schwierig sein kann.

Datenzentrierte Dokumente sind hauptsächlich für die maschinelle Verarbeitung bestimmt. Sie folgen einem Schema, das Entitäten eines Datenmodells, deren Beziehungen und ihre Attribute beschreibt. Deshalb sind sie stark strukturiert, für den unmittelbaren menschlichen Gebrauch aber weniger geeignet. Semistrukturierte Dokumente bilden eine Mischform: Ihre Struktur ist stärker als bei dokumentzentrierten, aber schwächer als bei datenzentrierten Dokumenten. Die Grenze zwischen den Typen ist fließend.

Bei datenzentrierten Dokumenten haben Elemente typischerweise entweder Elementinhalt oder Textinhalt. Gemischter Inhalt (mixed content), also Elemente mit gleichzeitigem Text und Kindelementen, ist typisch für die anderen Dokumentarten.

XML-Dokumente können mit Transformationssprachen wie XSLT oder DSSSL in andere Dokumente umgewandelt werden. Häufig wird ein Dokument aus einer XML-Sprache in eine andere überführt, beispielsweise nach XHTML, damit es in einem Webbrowser angezeigt werden kann.

Schemas, XML-Familie und Einsatzfelder

Schemasprachen beschreiben die Struktur von XML-Sprachen. XML Schema beziehungsweise XSD (XML-Schema-Definition) ist eine moderne Möglichkeit dafür. Ein XSD ist selbst ein XML-Dokument und kann komplexere inhaltliche Zusammenhänge beschreiben als eine formale DTD. Es kann außerdem Inhalte von Elementen und Attributen einschränken, etwa auf Zahlen, Datumsangaben oder Texte, auch mithilfe regulärer Ausdrücke. Weitere Schemasprachen sind Document Structure Description, RELAX NG und Schematron.

Zur XML-Familie gehören W3C-Sprachen und Grundbausteine für häufige Aufgaben: XSLT und STX transformieren XML, XPath adressiert Teile eines XML-Baums, XPointer, XLink und XInclude verknüpfen XML-Ressourcen, XQuery selektiert Daten und XUpdate verändert sie. XForms dient elektronischen Formularen, XML Signature und XML-Encryption der Signatur und Verschlüsselung, XSL-FO der formatierten Darstellung und XML-RPC dem Methoden- beziehungsweise Funktionsaufruf durch verteilte Systeme.

Viele formale Sprachen nutzen XML wegen der einfachen Syntax und der vorhandenen Parser. Beispiele aus verschiedenen Bereichen sind DocBook, DITA und XHTML für Text; SVG und X3D für Grafik; GML, GPX, KML und CityGML für Geodaten; MusicXML und SMIL für Multimedia; SAML, XML Signature und XML-Encryption für Sicherheit; AutomationML, CAEX, GSDML, IODD und PLMXML für Ingenieurwissenschaften; sowie MathML für mathematische Formeln. Weitere XML-Sprachen dienen unter anderem Webservices wie SOAP und WSDL, Graphen wie GraphML, dem Semantischen Web wie RDF und OWL, Nachrichten wie XMPP, Finanzberichten wie XBRL und Office-Dokumenten wie dem OpenDocument-Austauschformat.

Kritisiert wird XML häufig wegen seiner Weitschweifigkeit, Komplexität, großen Dateigröße, geringeren Verarbeitungsleistung, Sicherheitsproblemen, fehlender Unterstützung von Datentypen, Redundanz und der erschwerten Abbildung von Strukturen wie Arrays und assoziativen Arrays im Vergleich zu JSON.

Weiterlesen

Auszeichnungssprache Eine Auszeichnungssprache (englisch markup language, abgekürzt ML) ist eine maschinenlesbare Sprache für die Gliederung und Formatierung von Texten und … Computer Ein Computer (englisch; deutsche Aussprache [kɔmˈpjuːtɐ]) oder Rechner ist ein Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Internet Mit Social-Media-Plattformen wie Facebook, Twitter oder YouTube trat das bidirektionale Austauschen von Inhalten unter den Nutzern (sogenanntem user … UTF-8 UTF-8 (Abkürzung für 8-Bit UCS Transformation Format, wobei UCS wiederum Universal Coded Character Set abkürzt) ist die am weitesten verbreitete Kodierung … Anführungszeichen Regeln · Überschriften, Werktitel (etwa von Büchern und Theaterstücken), Namen von Zeitungen und dergleichen: · Sprichwörter, Äußerungen und dergleichen, zu denen … Formale Grammatik Formale Grammatiken werden mithilfe von Semi-Thue-Systemen angegeben in der Chomsky-Hierarchie klassifiziert. Dezimalsystem Daneben führen noch – fachsprachlich in der elektronischen Datenverarbeitung – das Dualsystem (Binärsystem) sowie das Sedezimalsystem (Hexadezimalsystem) ein … Hexadezimalsystem Aussprache der Hexadezimalzahlen · 0x10 sprich: „eins-null“ (nicht: „zehn“), oder mit Kontext „hex eins-null“ · 0x1E sprich: „eins-E“, · 0xF112 sprich: „F-eins- … Webbrowser Webbrowser oder allgemein auch Browser ([ˈbɹaʊ̯zə(ɹ)], zu englisch to browse ‚stöbern') sind Computerprogramme zur Darstellung von Webseiten im World Wide … Programmierschnittstelle Im Gegensatz zu einer Binärschnittstelle (ABI) definiert eine Programmierschnittstelle nur die Programmanbindung auf Quelltext-Ebene. Die Bereitstellung einer … Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte.