XML- XML

XML (Standard)
Erweiterbare Auszeichnungssprache
Extensible Markup Language (XML) logo.svg
Status Veröffentlicht, W3C-Empfehlung
Jahr begonnen 1996 ; vor 25 Jahren ( 1996 )
Erstmals veröffentlicht 10. Februar 1998 ; Vor 23 Jahren (als W3C-Empfehlung) ( 1998-02-10 )
Letzte Version 1.1 (Zweite Ausgabe)
29. September 2006 ; vor 15 Jahren ( 2006-09-29 )
Organisation World Wide Web-Konsortium (W3C)
Herausgeber
Basisstandards SGML
Zugehörige Normen XML-Schema
Domain Datenserialisierung
Abkürzung XML
Webseite www .w3 .org / xml
XML (Dateiformat)
Dateinamenerweiterung
.xml
Internet-Medientyp
Uniform Type Identifier (UTI) public.xml
UTI-Konformation öffentlicher.text
magische Zahl <?xml
Entwickelt von World Wide Web Konsortium
Formattyp Auszeichnungssprache
Verlängert von SGML
Erweitert um
Standard
Offenes Format ? Jawohl

Extensible Markup Language ( XML ) ist eine Auszeichnungssprache , die eine Reihe von Regeln für die Codierung von Dokumenten in einem Format definiert , das sowohl für Menschen als auch für Maschinen lesbar ist . Die XML 1.0-Spezifikation des World Wide Web Consortium von 1998 und mehrere andere verwandte Spezifikationen – alle freie offene Standards – definieren XML.

Die Designziele von XML betonen Einfachheit, Allgemeingültigkeit und Benutzerfreundlichkeit im gesamten Internet . Es ist ein textuelles Datenformat mit starker Unterstützung über Unicode für verschiedene menschliche Sprachen . Obwohl sich das Design von XML auf Dokumente konzentriert, wird die Sprache häufig für die Darstellung beliebiger Datenstrukturen verwendet, wie sie beispielsweise in Webdiensten verwendet werden .

Es gibt mehrere Schemasysteme, die bei der Definition von XML-basierten Sprachen helfen, während Programmierer viele Anwendungsprogrammierschnittstellen (APIs) entwickelt haben, um die Verarbeitung von XML-Daten zu unterstützen.

Anwendungen

Das Wesen, warum erweiterbare Auszeichnungssprachen sind notwendig ist , erklärte in Auszeichnungssprache (siehe zum Beispiel der Auszeichnungssprache § XML und at) Standard Generalized Markup Language .

Hunderte von Dokumentformaten mit XML-Syntax wurden entwickelt, darunter RSS , Atom , SOAP , SVG und XHTML . XML-basierte Formate sind der Standard für viele Büro-Produktivitäts - Tools, darunter werden Microsoft Office ( Office Open XML ), OpenOffice.org und Libreoffice ( Opendocument ) und Apple - s iWork . XML hat auch die Basissprache für Kommunikationsprotokolle wie XMPP bereitgestellt . Anwendungen für das Microsoft .NET Framework verwenden XML-Dateien für die Konfiguration, und Eigenschaftslisten sind eine Implementierung des auf XML basierenden Konfigurationsspeichers.

Viele Industriedatenstandards wie Health Level 7 , OpenTravel Alliance , FpML , MISMO und das National Information Exchange Model basieren auf XML und den umfangreichen Funktionen der XML-Schemaspezifikation. Viele dieser Standards sind recht komplex und eine Spezifikation umfasst nicht selten mehrere tausend Seiten. Im Verlagswesen ist Darwin Information Typing Architecture ein XML-Industriedatenstandard. XML wird in großem Umfang verwendet, um verschiedene Veröffentlichungsformate zu unterstützen.

XML wird häufig in einer serviceorientierten Architektur (SOA) verwendet. Unterschiedliche Systeme kommunizieren miteinander, indem sie XML-Nachrichten austauschen. Das Nachrichtenaustauschformat ist als XML-Schema (XSD) standardisiert . Dies wird auch als kanonisches Schema bezeichnet. XML hat sich für den Datenaustausch über das Internet durchgesetzt. IETF RFC:3023 , jetzt ersetzt durch RFC:7303 , gab Regeln für die Konstruktion von Internet-Medientypen zur Verwendung beim Senden von XML. Es definiert auch die Medientypen application/xmlund text/xml, die nur sagen, dass die Daten in XML vorliegen, und nichts über ihre Semantik .

RFC 7303 empfiehlt außerdem, dass XML-basierten Sprachen Medientypen mit der Endung +xml; zum Beispiel image/svg+xmlfür SVG . Weitere Richtlinien für die Verwendung von XML in einem vernetzten Kontext finden sich in RFC 3470, auch bekannt als IETF BCP 70, einem Dokument, das viele Aspekte des Entwerfens und Bereitstellens einer XML-basierten Sprache abdeckt.

Schlüsselbegriffe

Das Material in diesem Abschnitt basiert auf der XML-Spezifikation. Dies ist keine vollständige Liste aller Konstrukte, die in XML vorkommen; Es bietet eine Einführung in die wichtigsten Konstrukte, die im täglichen Gebrauch am häufigsten anzutreffen sind.

Charakter

Ein XML - Dokument ist eine Folge von Zeichen . Fast jedes zulässige Unicode- Zeichen kann in einem XML-Dokument vorkommen.

Prozessor und Anwendung

Der Prozessor analysiert das Markup und übergibt strukturierte Informationen an eine Anwendung . Die Spezifikation stellt Anforderungen darüber, was ein XML-Prozessor tun muss und was nicht, aber die Anwendung liegt außerhalb ihres Anwendungsbereichs. Der Prozessor (wie ihn die Spezifikation nennt) wird umgangssprachlich oft als XML-Parser bezeichnet .

Markup und Inhalt

Die Zeichen, aus denen ein XML-Dokument besteht, werden in Markup und Inhalt unterteilt , die durch die Anwendung einfacher syntaktischer Regeln unterschieden werden können. Im Allgemeinen beginnen Zeichenfolgen, die Markup bilden, entweder mit dem Zeichen <und enden mit einem >oder sie beginnen mit dem Zeichen &und enden mit einem ;. Zeichenfolgen, die kein Markup sind, sind Inhalt. In einem CDATA- Abschnitt werden jedoch die Trennzeichen <![CDATA[und ]]>als Markup klassifiziert, während der Text dazwischen als Inhalt klassifiziert wird. Außerdem wird Leerraum vor und nach dem äußersten Element als Markup klassifiziert.

Schild

Ein Tag ist ein Markup-Konstrukt, das mit beginnt <und mit endet >. Es gibt drei Arten von Tags:
  • start-tag , wie <section>;
  • End-Tag , wie </section>;
  • Leerelement-Tag , wie z <line-break />.

Element

Ein Element ist eine logische Dokumentkomponente, die entweder mit einem Start-Tag beginnt und mit einem passenden End-Tag endet oder nur aus einem leeren Element-Tag besteht. Die Zeichen zwischen dem Start-Tag und dem End-Tag, falls vorhanden, sind der Inhalt des Elements und können Markup enthalten, einschließlich anderer Elemente, die als untergeordnete Elemente bezeichnet werden . Ein Beispiel ist <greeting>Hello, world!</greeting>. Ein anderer ist <line-break />.

Attribut

Ein Attribut ist ein Markup-Konstrukt, das aus einem Name-Wert-Paar besteht, das in einem Start-Tag oder einem leeren Element-Tag vorhanden ist. Ein Beispiel ist <img src="madonna.jpg" alt="Madonna" />, wo die Namen der Attribute "src" und "alt" sind und ihre Werte "madonna.jpg" bzw. "Madonna" sind. Ein weiteres Beispiel ist <step number="3">Connect A to B.</step>, wo der Name des Attributs "Zahl" ist und sein Wert "3" ist. Ein XML-Attribut kann nur einen einzelnen Wert haben und jedes Attribut kann höchstens einmal in jedem Element vorkommen. In der üblichen Situation, in der eine Liste mit mehreren Werten gewünscht wird, muss dies durch Codieren der Liste in ein wohlgeformtes XML-Attribut mit einem Format erfolgen, das über das hinausgeht, was XML selbst definiert. Normalerweise ist dies entweder eine durch Kommas oder Semikolons getrennte Liste oder, wenn bekannt ist, dass die einzelnen Werte keine Leerzeichen enthalten, kann eine durch Leerzeichen getrennte Liste verwendet werden. <div class="inner greeting-box">Welcome!</div>, wobei das Attribut "class" sowohl den Wert "inner Greeting-box" hat als auch die beiden CSS- Klassennamen "inner" und "greeting-box" angibt .

XML-Deklaration

XML-Dokumente können mit einer XML-Deklaration beginnen , die einige Informationen über sich selbst beschreibt. Ein Beispiel ist <?xml version="1.0" encoding="UTF-8"?>.

Charaktere und Flucht

XML-Dokumente bestehen ausschließlich aus Zeichen aus dem Unicode- Repertoire. Mit Ausnahme einer kleinen Anzahl speziell ausgeschlossener Steuerzeichen kann jedes durch Unicode definierte Zeichen im Inhalt eines XML-Dokuments vorkommen.

XML enthält Funktionen zum Identifizieren der Kodierung der Unicode-Zeichen, aus denen das Dokument besteht, und zum Ausdrücken von Zeichen, die aus dem einen oder anderen Grund nicht direkt verwendet werden können.

Gültige Zeichen

Unicode-Codepunkte in den folgenden Bereichen sind in XML 1.0-Dokumenten gültig:

  • U+0009 (Horizontaler Tab), U+000A (Zeilenvorschub), U+000D (Wagenrücklauf): Dies sind die einzigen C0- Steuerelemente, die in XML 1.0 akzeptiert werden;
  • U+0020–U+D7FF, U+E000–U+FFFD: Dies schließt einige Nichtzeichen im BMP aus (alle Surrogate, U+FFFE und U+FFFF sind verboten);
  • U+10000–U+10FFFF: Dies beinhaltet alle Codepunkte in ergänzenden Ebenen, einschließlich Nichtzeichen.

XML 1.1 erweitert den Satz zulässiger Zeichen um alle oben genannten Zeichen sowie die verbleibenden Zeichen im Bereich U+0001–U+001F. Gleichzeitig wird jedoch die Verwendung anderer C0- und C1- Steuerzeichen als U+0009 (Horizontaler Tab), U+000A (Zeilenvorschub), U+000D (Wagenrücklauf) und U+0085 (Nächste Zeile) eingeschränkt ), indem sie in Escape-Form geschrieben werden müssen (zum Beispiel muss U+0001 als &#x01;oder eine Entsprechung geschrieben werden). Bei C1-Zeichen handelt es sich bei dieser Einschränkung um eine Rückwärtsinkompatibilität; Es wurde eingeführt, um die Erkennung häufiger Codierungsfehler zu ermöglichen.

Der Codepunkt U+0000 (Null) ist das einzige Zeichen, das in keinem XML 1.0- oder 1.1-Dokument erlaubt ist.

Kodierungserkennung

Der Unicode-Zeichensatz kann zur Speicherung oder Übertragung auf verschiedene Weise in Bytes codiert werden, die als "Codierungen" bezeichnet werden. Unicode selbst definiert Codierungen, die das gesamte Repertoire abdecken; bekannte sind UTF-8 und UTF-16 . Es gibt viele andere Textkodierungen, die vor Unicode liegen, wie ASCII und ISO/IEC 8859 ; ihre Zeichenrepertoires sind in fast allen Fällen Teilmengen des Unicode-Zeichensatzes.

XML ermöglicht die Verwendung jeder der Unicode-definierten Codierungen und aller anderen Codierungen, deren Zeichen ebenfalls in Unicode erscheinen. XML bietet auch einen Mechanismus, mit dem ein XML-Prozessor ohne Vorkenntnisse zuverlässig feststellen kann, welche Codierung verwendet wird. Andere Codierungen als UTF-8 und UTF-16 werden nicht unbedingt von jedem XML-Parser erkannt.

Flucht

XML bietet Escape-Funktionen zum Einschließen von Zeichen, deren direktes Einfügen problematisch ist. Zum Beispiel:

  • Die Zeichen "<" und "&" sind wichtige Syntaxmarkierungen und dürfen niemals in Inhalten außerhalb eines CDATA- Abschnitts vorkommen. Die Verwendung von "<" in XML-Entitätswerten ist zulässig, wird jedoch nicht empfohlen.
  • Einige Zeichenkodierungen unterstützen nur eine Teilmenge von Unicode. Es ist beispielsweise zulässig, ein XML-Dokument in ASCII zu codieren, aber ASCII fehlen Codepunkte für Unicode-Zeichen wie "é".
  • Es ist möglicherweise nicht möglich, das Zeichen auf dem Computer des Autors einzugeben.
  • Einige Zeichen haben Glyphen , die visuell nicht von anderen Zeichen unterschieden werden können, wie das geschützte Leerzeichen ( &#xa0;) " " und das Leerzeichen ( &#x20;) " " sowie der kyrillische Großbuchstabe A ( &#x410;) "А" und der lateinische Großbuchstabe A ( &#x41;) "EIN".

Es gibt fünf vordefinierte Entitäten :

  • &lt; stellt "<" dar;
  • &gt; stellt ">" dar;
  • &amp; repräsentiert "&";
  • &apos;stellt " ' " dar;
  • &quot;steht für ' ' '.

Alle zulässigen Unicode-Zeichen können mit einer numerischen Zeichenreferenz dargestellt werden . Betrachten Sie das chinesische Zeichen "中", dessen numerischer Code in Unicode hexadezimal 4E2D oder dezimal 20.013 ist. Ein Benutzer, dessen Tastatur keine Methode zur Eingabe dieses Zeichens bietet, könnte es dennoch in ein XML-Dokument einfügen, das entweder als &#20013;oder codiert ist &#x4e2d;. Ebenso könnte die Zeichenfolge "I <3 Jörg" für die Aufnahme in ein XML-Dokument als I &lt;3 J&#xF6;rg.

&#0;ist jedoch nicht zulässig, da das Nullzeichen eines der von XML ausgeschlossenen Steuerzeichen ist, auch wenn eine numerische Zeichenreferenz verwendet wird. Zur Darstellung solcher Zeichen ist ein alternativer Codierungsmechanismus wie Base64 erforderlich.

Kommentare

Kommentare können überall in einem Dokument außerhalb anderer Markups erscheinen. Kommentare dürfen nicht vor der XML-Deklaration stehen. Kommentare beginnen mit <!--und enden mit -->. Aus Kompatibilitätsgründen mit SGML ist die Zeichenfolge "--" (doppelter Bindestrich) in Kommentaren nicht zulässig; Dies bedeutet, dass Kommentare nicht verschachtelt werden können. Das kaufmännische Und-Zeichen hat in Kommentaren keine besondere Bedeutung, daher werden Entitäts- und Zeichenreferenzen nicht als solche erkannt und es gibt keine Möglichkeit, Zeichen außerhalb des Zeichensatzes der Dokumentkodierung darzustellen.

Ein Beispiel für einen gültigen Kommentar: <!--no need to escape <code> & such in comments-->

Internationaler Einsatz

XML 1.0 (Fifth Edition) und XML 1.1 unterstützen die direkte Verwendung fast aller Unicode- Zeichen in Elementnamen, Attributen, Kommentaren, Zeichendaten und Verarbeitungsanweisungen (außer denen, die in XML selbst eine besondere symbolische Bedeutung haben, wie z -als-Zeichen, "<"). Das Folgende ist ein wohlgeformtes XML-Dokument mit chinesischen , armenischen und kyrillischen Zeichen:

<?xml version="1.0" encoding="UTF-8"?>
<俄语 լեզու="ռուսերեն">данные</俄语>

Syntaktische Korrektheit und Fehlerbehandlung

Die XML-Spezifikation definiert ein XML-Dokument als wohlgeformten Text, dh es erfüllt eine Liste von Syntaxregeln, die in der Spezifikation bereitgestellt werden. Einige wichtige Punkte in der ziemlich langen Liste sind:

  • Das Dokument enthält nur ordnungsgemäß codierte gültige Unicode-Zeichen.
  • Keines der speziellen Syntaxzeichen wie <und wird &angezeigt, außer wenn sie ihre Markup-Abgrenzungsrollen ausführen.
  • Das Start-Tag, das End-Tag und das Leerelement-Tag, die Elemente begrenzen, sind korrekt verschachtelt, wobei keines fehlt oder sich überschneidet.
  • Bei Tag-Namen muss die Groß-/Kleinschreibung beachtet werden. das Start-Tag und das End-Tag müssen genau übereinstimmen.
  • Tag-Namen dürfen keines der Zeichen !"#$%&'()*+,/;<=>?@[\]^`{|}~, noch ein Leerzeichen enthalten und dürfen nicht mit "-" beginnen, "." oder eine numerische Ziffer.
  • Ein einzelnes Wurzelelement enthält alle anderen Elemente.

Die Definition eines XML-Dokuments schließt Texte aus, die Verstöße gegen Wohlgeformtheitsregeln enthalten; sie sind einfach kein XML. Ein XML-Prozessor, der auf eine solche Verletzung stößt, muss solche Fehler melden und die normale Verarbeitung einstellen. Diese Richtlinie, die gelegentlich als " drakonische Fehlerbehandlung" bezeichnet wird, steht in bemerkenswertem Gegensatz zum Verhalten von Programmen, die HTML verarbeiten , die darauf ausgelegt sind, auch bei schwerwiegenden Markup-Fehlern ein vernünftiges Ergebnis zu erzielen. Die Richtlinien von XML in diesem Bereich wurden als Verstoß gegen das Gesetz von Postel kritisiert ("Sei konservativ in dem, was du sendest; sei liberal in dem, was du akzeptierst").

Die XML-Spezifikation definiert ein gültiges XML-Dokument als wohlgeformtes XML-Dokument, das auch den Regeln einer Document Type Definition (DTD) entspricht.

Schemata und Validierung

Ein XML-Dokument kann nicht nur wohlgeformt sein, sondern auch gültig sein . Dies bedeutet, dass es einen Verweis auf eine Document Type Definition (DTD) enthält und dass seine Elemente und Attribute in dieser DTD deklariert sind und den grammatikalischen Regeln für sie folgen, die die DTD spezifiziert.

XML-Prozessoren werden als validierend oder nicht validierend klassifiziert, je nachdem, ob sie XML-Dokumente auf Gültigkeit prüfen oder nicht. Ein Prozessor, der einen Gültigkeitsfehler entdeckt, muss diesen melden können, kann aber die normale Verarbeitung fortsetzen.

Eine DTD ist ein Beispiel für ein Schema oder eine Grammatik . Seit der ersten Veröffentlichung von XML 1.0 wurde im Bereich der Schemasprachen für XML umfangreiche Arbeit geleistet. Solche Schemasprachen beschränken typischerweise den Satz von Elementen, die in einem Dokument verwendet werden können, welche Attribute auf sie angewendet werden können, die Reihenfolge, in der sie auftreten können, und die zulässigen Eltern/Kind-Beziehungen.

Dokumenttypdefinition

Die älteste Schemasprache für XML ist die von SGML geerbte Document Type Definition (DTD).

DTDs haben folgende Vorteile:

  • DTD-Unterstützung ist aufgrund ihrer Aufnahme in den XML 1.0-Standard allgegenwärtig.
  • DTDs sind im Vergleich zu elementbasierten Schemasprachen knapp gehalten und präsentieren folglich mehr Informationen auf einem einzigen Bildschirm.
  • DTDs ermöglichen die Deklaration von standardmäßigen öffentlichen Entity-Sets zum Veröffentlichen von Zeichen.
  • DTDs definieren einen Dokumenttyp und nicht die Typen, die von einem Namespace verwendet werden, und gruppieren somit alle Einschränkungen für ein Dokument in einer einzigen Sammlung.

DTDs haben die folgenden Einschränkungen:

  • Sie haben keine explizite Unterstützung für neuere Funktionen von XML, was am wichtigsten Namespaces .
  • Ihnen fehlt die Aussagekraft. XML-DTDs sind einfacher als SGML-DTDs und es gibt bestimmte Strukturen, die nicht mit regulären Grammatiken ausgedrückt werden können. DTDs unterstützen nur rudimentäre Datentypen.
  • Ihnen fehlt die Lesbarkeit. DTD-Designer verwenden in der Regel stark Parameterentitäten (die sich im Wesentlichen wie textuelle Makros verhalten ), die die Definition komplexer Grammatiken erleichtern, jedoch auf Kosten der Klarheit.
  • Sie verwenden eine Syntax, die auf der Syntax regulärer Ausdrücke basiert und von SGML geerbt wurde, um das Schema zu beschreiben. Typische XML-APIs wie SAX versuchen nicht, Anwendungen eine strukturierte Darstellung der Syntax anzubieten, daher ist sie für Programmierer weniger zugänglich als eine elementbasierte Syntax.

Zwei besondere Merkmale, die DTDs von anderen Schematypen unterscheiden, sind die syntaktische Unterstützung zum Einbetten einer DTD in XML-Dokumente und zum Definieren von Entitäten , bei denen es sich um beliebige Text- oder Markup-Fragmente handelt, die der XML-Prozessor in die DTD selbst und in das XML-Dokument einfügt, wo immer sie sind referenziert werden, wie Escapezeichen.

Die DTD-Technologie wird aufgrund ihrer Allgegenwart immer noch in vielen Anwendungen verwendet.

Schema

Eine neuere Schemasprache, die vom W3C als Nachfolger von DTDs beschrieben wird, ist XML Schema , oft auch als Initialismus für XML-Schema-Instanzen, XSD (XML Schema Definition) bezeichnet. XSDs sind bei der Beschreibung von XML-Sprachen weitaus leistungsfähiger als DTDs. Sie verwenden ein umfangreiches Datentypisierungssystem und ermöglichen detailliertere Einschränkungen für die logische Struktur eines XML-Dokuments. XSDs verwenden auch ein XML-basiertes Format, das es ermöglicht, normale XML-Tools zu verwenden, um sie zu verarbeiten.

xs:schema-Element, das ein Schema definiert:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"></xs:schema>

ENTSPANNEN NG

RELAX NG (Regular Language for XML Next Generation) wurde ursprünglich von OASIS spezifiziert und ist heute ein Standard (Teil 2: Regular-Grammatik-basierte Validierung von ISO/IEC 19757 – DSDL ). RELAX NG-Schemas können entweder in einer XML-basierten Syntax oder einer kompakteren Nicht-XML-Syntax geschrieben werden; die beiden Syntaxen sind isomorph und das Konvertierungswerkzeug von James ClarkTrang – kann ohne Informationsverlust zwischen ihnen konvertieren. RELAX NG verfügt über ein einfacheres Definitions- und Validierungs-Framework als XML-Schema, wodurch es einfacher zu verwenden und zu implementieren ist. Es hat auch die Möglichkeit, Datentyp- Framework- Plug-Ins zu verwenden ; ein RELAX NG-Schema-Autor kann beispielsweise verlangen, dass Werte in einem XML-Dokument den Definitionen in XML-Schema-Datentypen entsprechen.

Schematron

Schematron ist eine Sprache, um Aussagen über das Vorhandensein oder Fehlen von Mustern in einem XML-Dokument zu treffen. Es verwendet normalerweise XPath- Ausdrücke. Schematron ist mittlerweile ein Standard (Teil 3: Regelbasierte Validierung von ISO/IEC 19757 – DSDL ).

DSDL und andere Schemasprachen

DSDL (Document Schema Definition Languages) ist ein mehrteiliger ISO/IEC-Standard (ISO/IEC 19757), der einen umfassenden Satz kleiner Schemasprachen vereint, die jeweils auf spezifische Probleme ausgerichtet sind. DSDL umfasst die vollständige und kompakte Syntax von RELAX NG , die Schematron- Assertion-Sprache und Sprachen zum Definieren von Datentypen, Zeichenrepertoire-Einschränkungen, Umbenennung und Entitätserweiterung sowie Namespace-basierte Weiterleitung von Dokumentfragmenten an verschiedene Validatoren. DSDL-Schemasprachen haben noch nicht die Unterstützung von XML-Schemas durch den Hersteller und sind in gewissem Maße eine Reaktion der Basis von Industrieverlagen auf den mangelnden Nutzen von XML-Schemas für die Veröffentlichung .

Einige Schemasprachen beschreiben nicht nur die Struktur eines bestimmten XML-Formats, sondern bieten auch eingeschränkte Möglichkeiten, die Verarbeitung einzelner XML-Dateien, die diesem Format entsprechen, zu beeinflussen. DTDs und XSDs haben beide diese Fähigkeit; sie können zum Beispiel die Infoset- Erweiterungsfunktion und Attributstandardwerte bereitstellen . RELAX NG und Schematron stellen diese bewusst nicht zur Verfügung.

Zugehörige Spezifikationen

Kurz nach der ersten Veröffentlichung von XML 1.0 wurde ein Cluster von Spezifikationen entwickelt, die eng mit XML verbunden sind. Häufig wird der Begriff "XML" verwendet, um XML zusammen mit einer oder mehreren dieser anderen Technologien zu bezeichnen, die inzwischen als Teil des XML-Kerns angesehen werden.

  • XML-Namespaces ermöglichen es, dass ein und dasselbe Dokument XML-Elemente und -Attribute aus unterschiedlichen Vokabularen enthält, ohne dass Namenskollisionen auftreten. Obwohl XML-Namespaces nicht Teil der XML-Spezifikation selbst sind, unterstützt praktisch jede XML-Software auch XML-Namespaces.
  • XML Base definiert das xml:baseAttribut, das verwendet werden kann, um die Basis für die Auflösung relativer URI-Referenzen innerhalb des Geltungsbereichs eines einzelnen XML-Elements festzulegen.
  • XML Information Set oder XML Infoset ist ein abstraktes Datenmodell für XML-Dokumente in Bezug auf Informationselemente . Das Infoset wird häufig in den Spezifikationen von XML-Sprachen verwendet, um die Beschränkungen der XML-Konstrukte zu beschreiben, die diese Sprachen zulassen.
  • XSL (Extensible Stylesheet Language) ist eine Familie von Sprachen, die zum Transformieren und Rendern von XML-Dokumenten verwendet wird und in drei Teile unterteilt ist:
  • XSLT (XSL Transformations), eine XML-Sprache zum Transformieren von XML-Dokumenten in andere XML-Dokumente oder andere Formate wie HTML, Klartext oder XSL-FO. XSLT ist sehr eng mit XPath gekoppelt, das es verwendet, um Komponenten des XML-Eingabedokuments zu adressieren, hauptsächlich Elemente und Attribute.
  • XSL-FO (XSL Formatting Objects), eine XML-Sprache zum Rendern von XML-Dokumenten, die häufig zum Generieren von PDFs verwendet wird.
  • XPath (XML Path Language), eine Nicht-XML-Sprache zum Adressieren der Komponenten (Elemente, Attribute usw.) eines XML-Dokuments. XPath wird häufig in anderen Kern-XML-Spezifikationen und in Programmierbibliotheken für den Zugriff auf XML-codierte Daten verwendet.

Einige andere Spezifikationen, die als Teil des "XML Core" konzipiert wurden, haben keine breite Akzeptanz gefunden, darunter XInclude , XLink und XPointer .

Programmierschnittstellen

Zu den Designzielen von XML gehört: "Es soll einfach sein, Programme zu schreiben, die XML-Dokumente verarbeiten." Trotzdem enthält die XML-Spezifikation fast keine Informationen darüber, wie Programmierer eine solche Verarbeitung durchführen könnten. Die XML Infoset- Spezifikation stellt ein Vokabular bereit, um auf die Konstrukte in einem XML-Dokument zu verweisen, bietet jedoch keine Anleitung zum Zugriff auf diese Informationen. Es wurde eine Vielzahl von APIs für den Zugriff auf XML entwickelt und verwendet, und einige wurden standardisiert.

Vorhandene APIs für die XML-Verarbeitung fallen in der Regel in diese Kategorien:

  • Stream-orientierte APIs, auf die über eine Programmiersprache zugegriffen werden kann, beispielsweise SAX und StAX .
  • Tree-Traversal-APIs, auf die über eine Programmiersprache zugegriffen werden kann, beispielsweise DOM .
  • XML-Datenbindung , die eine automatisierte Übersetzung zwischen einem XML-Dokument und Programmiersprachenobjekten bereitstellt.
  • Deklarative Transformationssprachen wie XSLT und XQuery .
  • Syntaxerweiterungen für allgemeine Programmiersprachen, z. B. LINQ und Scala .

Stream-orientierte Einrichtungen benötigen weniger Speicher und sind für bestimmte Aufgaben, die auf einem linearen Durchlauf eines XML-Dokuments basieren, schneller und einfacher als andere Alternativen. Tree-Traversal- und Data-Binding-APIs erfordern normalerweise viel mehr Speicher, werden aber von Programmierern oft als bequemer empfunden. einige beinhalten das deklarative Abrufen von Dokumentkomponenten über die Verwendung von XPath-Ausdrücken.

XSLT wurde für die deklarative Beschreibung von XML-Dokumenttransformationen entwickelt und ist sowohl in serverseitigen Paketen als auch in Webbrowsern weit verbreitet. XQuery überschneidet sich in seiner Funktionalität mit XSLT, ist aber eher für die Suche in großen XML-Datenbanken konzipiert .

Einfache API für XML

Simple API for XML (SAX) ist eine lexikalische , ereignisgesteuerte API, in der ein Dokument seriell gelesen wird und sein Inhalt als Callbacks an verschiedene Methoden eines vom Benutzer entworfenen Handler-Objekts gemeldet wird . SAX ist schnell und effizient zu implementieren, aber schwierig zu verwenden, um Informationen willkürlich aus dem XML zu extrahieren, da es den Anwendungsautor dazu neigt, den Überblick darüber zu behalten, welcher Teil des Dokuments verarbeitet wird. Es eignet sich besser für Situationen, in denen bestimmte Arten von Informationen immer gleich behandelt werden, egal wo sie im Dokument vorkommen.

Pull-Parsing

Beim Pull-Parsing wird das Dokument als eine Reihe von Elementen behandelt, die nacheinander unter Verwendung des Iterator-Entwurfsmusters gelesen werden . Dies ermöglicht das Schreiben von rekursiven absteigenden Parsern, bei denen die Struktur des Codes, der das Parsen durchführt, die Struktur des zu analysierenden XML widerspiegelt, und geparste Zwischenergebnisse können verwendet und als lokale Variablen innerhalb der Funktionen, die das Parsen ausführen, verwendet oder weitergegeben werden ( als Funktionsparameter) in untergeordnete Funktionen oder zurückgegeben (als Funktionsrückgabewerte) an übergeordnete Funktionen. Beispiele für Pull-Parser sind Data::Edit::Xml in Perl , StAX in der Programmiersprache Java , XMLPullParser in Smalltalk , XMLReader in PHP , ElementTree.iterparse in Python , System.Xml.XmlReader in .NET Framework und DOM Traversal-API (NodeIterator und TreeWalker).

Ein Pull-Parser erstellt einen Iterator, der nacheinander die verschiedenen Elemente, Attribute und Daten in einem XML-Dokument durchsucht. Code, der diesen Iterator verwendet, kann das aktuelle Element testen (um beispielsweise festzustellen, ob es sich um ein Start-Tag oder End-Tag oder Text handelt) und seine Attribute (lokaler Name, Namespace , Werte von XML-Attributen, Wert von .) untersuchen Text usw.) und kann den Iterator auch zum nächsten Element verschieben. Der Code kann somit Informationen aus dem Dokument extrahieren, während er es durchquert. Der rekursive-absteigende Ansatz eignet sich dazu, Daten als typisierte lokale Variablen im Code beizubehalten, der das Parsen durchführt, während SAX beispielsweise normalerweise erfordert, dass ein Parser Zwischendaten manuell in einem Stapel von Elementen verwaltet, die Elternelemente des Elements sind geparst werden. Pull-Parsing-Code kann einfacher zu verstehen und zu warten sein als SAX-Parsing-Code.

Dokumentobjektmodell

Document Object Model (DOM) ist eine API, die die Navigation durch das gesamte Dokument ermöglicht, als ob es ein Baum von Knotenobjekten wäre , die den Inhalt des Dokuments darstellen. Ein DOM-Dokument kann von einem Parser erstellt oder von Benutzern (mit Einschränkungen) manuell generiert werden. Datentypen in DOM-Knoten sind abstrakt; -Implementierungen stellen ihre eigenen programmiersprachenspezifischen Bindungen bereit . DOM-Implementierungen neigen dazu, speicherintensiv zu sein , da sie im Allgemeinen erfordern, dass das gesamte Dokument in den Speicher geladen und als Baum von Objekten aufgebaut wird, bevor der Zugriff erlaubt wird.

Datenbindung

XML-Datenbindung ist die Bindung von XML-Dokumenten an eine Hierarchie von benutzerdefinierten und stark typisierten Objekten im Gegensatz zu den generischen Objekten, die von einem DOM-Parser erstellt werden. Dieser Ansatz vereinfacht die Codeentwicklung und ermöglicht in vielen Fällen die Identifizierung von Problemen zur Kompilierzeit und nicht zur Laufzeit. Es eignet sich für Anwendungen, bei denen die Dokumentenstruktur zum Zeitpunkt der Erstellung der Anwendung bekannt und festgelegt ist. Zu den Beispieldatenbindungssystemen gehören die Java Architecture for XML Binding (JAXB), die XML-Serialisierung in .NET Framework . und XML-Serialisierung in gSOAP .

XML als Datentyp

XML ist als erstklassiger Datentyp in anderen Sprachen aufgetaucht . Die ECMAScript for XML (E4X)-Erweiterung der Sprache ECMAScript /JavaScript definiert explizit zwei spezifische Objekte (XML und XMLList) für JavaScript, die XML-Dokumentknoten und XML-Knotenlisten als unterschiedliche Objekte unterstützen und eine Punktnotation verwenden, die Eltern-Kind-Beziehungen angibt . E4X wird von den Browsern Mozilla 2.5+ (obwohl jetzt veraltet) und Adobe Actionscript unterstützt , wurde jedoch nicht universeller übernommen. Ähnliche Notationen werden in der LINQ- Implementierung von Microsoft für Microsoft .NET 3.5 und höher sowie in Scala (das die Java VM verwendet) verwendet. Die Open-Source-Anwendung xmlsh, die eine Linux-ähnliche Shell mit speziellen Funktionen für die XML-Manipulation bereitstellt, behandelt XML in ähnlicher Weise als Datentyp mit der Notation <[ ]>. Das Resource Description Framework definiert einen Datentyp rdf:XMLLiteralfür umschlossenes, kanonisches XML . Facebook hat Erweiterungen für die Sprachen PHP und JavaScript entwickelt, die ähnlich wie E4X XML zur Kernsyntax hinzufügen, nämlich XHP bzw. JSX .

Geschichte

XML ist ein Anwendungsprofil von SGML (ISO 8879).

Die Vielseitigkeit von SGML für die dynamische Informationsanzeige wurde von frühen Herausgebern digitaler Medien in den späten 1980er Jahren vor dem Aufkommen des Internets verstanden. Bis Mitte der 1990er Jahre hatten einige SGML-Praktiker Erfahrungen mit dem damals neuen World Wide Web gesammelt und glaubten, dass SGML Lösungen für einige der Probleme bot, mit denen das Web während seines Wachstums wahrscheinlich konfrontiert war. Dan Connolly fügte SGML der Liste der W3C-Aktivitäten hinzu, als er 1995 zum Stab kam; Die Arbeiten begannen Mitte 1996, als der Sun Microsystems- Ingenieur Jon Bosak eine Charta ausarbeitete und Mitarbeiter rekrutierte. Bosak war in der kleinen Gemeinschaft von Leuten, die sowohl Erfahrung mit SGML als auch mit dem Web hatten, gut vernetzt.

XML wurde von einer elfköpfigen Arbeitsgruppe zusammengestellt , unterstützt von einer (rund) 150-köpfigen Interessengruppe. Auf der Mailingliste der Interessengruppe fand eine technische Debatte statt, und Probleme wurden durch Konsens oder, wenn dies fehlgeschlagen war, durch Mehrheitsbeschluss der Arbeitsgruppe gelöst. Am 4. Dezember 1997 wurde von Michael Sperberg-McQueen eine Aufzeichnung der Designentscheidungen und ihrer Begründungen zusammengestellt . James Clark diente als technischer Leiter der Arbeitsgruppe und steuerte insbesondere die Leerelement- <empty />Syntax und den Namen "XML" bei. Andere Namen, die zur Diskussion gestellt wurden, waren "MAGMA" (Minimal Architecture for Generalized Markup Applications), "SLIM" (Structured Language for Internet Markup) und "MGML" (Minimal Generalized Markup Language). Die Mitherausgeber der Spezifikation waren ursprünglich Tim Bray und Michael Sperberg-McQueen . Nach der Hälfte des Projekts nahm Bray einen Beratungsauftrag mit Netscape an , was zu lauten Protesten von Microsoft führte. Bray wurde vorübergehend aufgefordert, die Redaktion niederzulegen. Dies führte zu heftigen Auseinandersetzungen in der Arbeitsgruppe, die schließlich durch die Ernennung von Microsofts Jean Paoli zum dritten Mitherausgeber beigelegt wurden.

Die XML-Arbeitsgruppe hat sich nie persönlich getroffen; Das Design wurde mit einer Kombination aus E-Mail und wöchentlichen Telefonkonferenzen realisiert. Die wichtigsten Designentscheidungen wurden in einer kurzen Reihe intensiver Arbeit zwischen August und November 1996 getroffen, als der erste Working Draft einer XML-Spezifikation veröffentlicht wurde. Weitere Designarbeiten wurden bis 1997 fortgesetzt und XML 1.0 wurde am 10. Februar 1998 eine W3C- Empfehlung.

Quellen

XML ist ein Profil eines ISO-Standards SGML, und der größte Teil von XML stammt unverändert aus SGML. Von SGML kommt die Trennung von logischen und physikalischen Strukturen (Elemente und Entitäten), die Verfügbarkeit von grammatikbasierter Validierung (DTDs), die Trennung von Daten und Metadaten (Elemente und Attribute), gemischter Inhalt, die Trennung von Verarbeitung und Repräsentation ( Verarbeitung Anweisungen ) und die standardmäßige Winkelklammersyntax. Die SGML-Deklaration wurde entfernt; also XML hat einen festen Begrenzer Satz und nimmt Unicode als Dokumentzeichensatz .

Andere Technologiequellen für XML waren die TEI (Text Encoding Initiative), die ein Profil von SGML zur Verwendung als "Transfersyntax" definierte; und HTML , in denen Elemente synchron mit ihrer Ressource waren, Dokumentzeichensätze von der Ressourcencodierung getrennt waren, das xml:langAttribut erfunden wurde und (wie HTTP ) Metadaten die Ressource begleiteten, anstatt bei der Deklaration eines Links benötigt zu werden. Das ERCS-Projekt (Extended Reference Concrete Syntax) des SPREAD-Projekts (Standardization Project About East Asian Documents) der ISO-bezogenen Expertengruppe für China/Japan/Korea Document Processing bildete die Grundlage für die Namensregeln von XML 1.0; SPREAD führte auch hexadezimale numerische Zeichenreferenzen und das Konzept von Referenzen ein, um alle Unicode-Zeichen verfügbar zu machen. Um ERCS, XML und HTML besser zu unterstützen, wurde der SGML-Standard IS 8879 1996 und 1998 mit WebSGML-Anpassungen überarbeitet. Der XML-Header folgte dem von ISO HyTime .

Zu den in der Diskussion entwickelten Ideen, die in XML neu sind, gehören der Algorithmus zur Codierungserkennung und der Codierungsheader, das Verarbeitungsbefehlsziel, das xml:space-Attribut und das neue Schließen-Begrenzungszeichen für Leerelement-Tags. Der Begriff der Wohlgeformtheit im Gegensatz zur Gültigkeit (die das Parsen ohne Schema ermöglicht) wurde zuerst in XML formalisiert, obwohl er erfolgreich in der Software "Dynatext" von Electronic Book Technology implementiert wurde; die Software des New Oxford English Dictionary Project der University of Waterloo; der Textprozessor RISP LISP SGML bei Uniscope, Tokio; das IADS-Hypertextsystem des US Army Missile Command; Mentor-Grafikkontext; Interleaf- und Xerox-Publishing-System.

Versionen

Es gibt zwei aktuelle Versionen von XML:

XML 1.0

Die erste ( XML 1.0 ) wurde erstmals 1998 definiert. Seitdem wurde sie geringfügig überarbeitet, ohne eine neue Versionsnummer zu erhalten, und befindet sich derzeit in der fünften Auflage, die am 26. November 2008 veröffentlicht wurde. Sie ist weit verbreitet und immer noch für den allgemeinen Gebrauch empfohlen.

XML 1.1

Die zweite ( XML 1.1 ) wurde ursprünglich am 4. Februar 2004 veröffentlicht, am selben Tag wie XML 1.0 Third Edition, und befindet sich derzeit in der zweiten Ausgabe, die am 16. August 2006 veröffentlicht wurde. Sie enthält (teilweise umstrittene) Funktionen, die beabsichtigt sind um die Verwendung von XML in bestimmten Fällen zu vereinfachen. Die wichtigsten Änderungen bestehen darin, die Verwendung von Zeilenendezeichen zu ermöglichen, die auf EBCDIC- Plattformen verwendet werden, und die Verwendung von Skripten und Zeichen, die in Unicode 3.2 fehlen. XML 1.1 ist nicht sehr weit verbreitet und wird nur für diejenigen empfohlen, die seine besonderen Funktionen benötigen.

Gültige Unicode-Zeichen in XML 1.0 und XML 1.1

Vor der Veröffentlichung der fünften Edition unterschied sich XML 1.0 von XML 1.1 durch strengere Anforderungen an Zeichen, die für die Verwendung in Element- und Attributnamen und eindeutigen Bezeichnern verfügbar sind: In den ersten vier Editionen von XML 1.0 wurden die Zeichen ausschließlich unter Verwendung einer bestimmten Version des Unicode- Standard (Unicode 2.0 bis Unicode 3.2.) Die fünfte Edition ersetzt den Mechanismus von XML 1.1, der zukunftssicherer ist, aber die Redundanz reduziert . Der Ansatz in der fünften Edition von XML 1.0 und in allen Editionen von XML 1.1 ist, dass nur bestimmte Zeichen in Namen verboten sind und alles andere in zukünftigen Unicode-Versionen geeignete Namenszeichen aufnehmen darf. In der fünften Ausgabe können XML-Namen neben vielen anderen seit Unicode 3.2 zu Unicode hinzugefügten Zeichen in den balinesischen , Cham- oder phönizischen Schriften enthalten.

Fast jeder Unicode-Codepoint kann in den Zeichendaten und Attributwerten eines XML 1.0- oder 1.1-Dokuments verwendet werden, auch wenn das dem Codepoint entsprechende Zeichen in der aktuellen Unicode-Version nicht definiert ist. In Zeichendaten und Attributwerten erlaubt XML 1.1 die Verwendung von mehr Steuerzeichen als XML 1.0, aber aus Gründen der "Robustheit" müssen die meisten der in XML 1.1 eingeführten Steuerzeichen als numerische Zeichenreferenzen ausgedrückt werden (und #x7F bis #x9F , die in XML 1.0 erlaubt waren, müssen in XML 1.1 sogar als numerische Zeichenreferenzen ausgedrückt werden). Zu den unterstützten Steuerzeichen in XML 1.1 gehören zwei Zeilenumbruchcodes, die als Leerzeichen behandelt werden müssen. Whitespace-Zeichen sind die einzigen Steuercodes, die direkt geschrieben werden können.

XML 2.0

Es gab Diskussionen über ein XML 2.0, obwohl keine Organisation Pläne für die Arbeit an einem solchen Projekt angekündigt hat. XML-SW (SW for skunkworks ), geschrieben von einem der ursprünglichen XML-Entwickler, enthält einige Vorschläge, wie ein XML 2.0 aussehen könnte: Eliminierung von DTDs aus der Syntax, Integration von Namespaces , XML Base und XML Information Set in die Basis Standard.

Binäres XML

Das World Wide Web Consortium hat auch eine XML Binary Characterization Working Group, die Vorabforschungen zu Anwendungsfällen und Eigenschaften für eine binäre Kodierung von XML Information Set durchführt. Die Arbeitsgruppe ist nicht beauftragt, offizielle Standards zu erstellen. Da XML per Definition textbasiert ist, verwenden ITU-T und ISO den Namen Fast Infoset für ihr eigenes binäres Infoset, um Verwirrung zu vermeiden (siehe ITU-T Rec. X.891 und ISO/IEC 24824-1).

Kritik

XML und seine Erweiterungen werden regelmäßig wegen ihrer Ausführlichkeit, Komplexität und Redundanz kritisiert.

Die Abbildung des grundlegenden Baummodells von XML auf Typsysteme von Programmiersprachen oder Datenbanken kann schwierig sein, insbesondere wenn XML für den Austausch hochstrukturierter Daten zwischen Anwendungen verwendet wird, was nicht das primäre Designziel war. Jedoch XML Datenbindungssysteme erlauben Anwendungen zugreifen XML - Daten direkt von den Gegenständen eine repräsentiereDatenStruktur der Daten in der verwendeten Programmiersprache, die gewährleistet , Typsicherheit , anstatt die Verwendung von DOM oder SAX Daten aus einer direkten Repräsentation des XML abzurufen selbst. Dies wird erreicht, indem automatisch eine Zuordnung zwischen Elementen des XML-Schemas XSD des Dokuments und Mitgliedern einer im Speicher darzustellenden Klasse erstellt wird.

Andere Kritikpunkte versuchen, die Behauptung zu widerlegen, dass XML eine selbstbeschreibende Sprache ist (obwohl die XML-Spezifikation selbst keinen solchen Anspruch erhebt).

JSON , YAML und S-Expressions werden häufig als einfachere Alternativen vorgeschlagen (siehe Vergleich von Datenserialisierungsformaten ), die sich auf die Darstellung stark strukturierter Daten und nicht auf Dokumente konzentrieren, die sowohl stark strukturierte als auch relativ unstrukturierte Inhalte enthalten können. Die standardisierten XML-Schemaspezifikationen des W3C bieten jedoch im Vergleich zu einfacheren Serialisierungsformaten ein breiteres Spektrum an strukturierten XSD- Datentypen und bieten Modularität und Wiederverwendung durch XML-Namespaces .

Siehe auch

Anmerkungen

Verweise

Weiterlesen

Externe Links