Efficient XML Interchange
Efficient XML Interchange (EXI) ist ein vom World Wide Web Consortium (W3C) vorgeschlagenes Format für die binäre Repräsentation von XML Information Sets. Im Vergleich zu textbasierten XML-Dokumenten können Dokumente im EXI-Format schneller verarbeitet werden und benötigen weniger Bandbreite beim Transfer über ein Netzwerk. Neben EXI gibt es weitere Ansätze eine binäre Repräsentation für XML zu etablieren (vgl. Binary XML). GeschichteAuf Basis der Schlussfolgerungen der XML Binary Characterization Working Group wurde im November 2005 die Efficient XML Interchange (EXI) working Group gegründet, mit dem Ziel ein binäres Beschreibungsformat für XML zu definieren.[2] Nach Analyse und Vergleich mehrerer Ansätze (u. a. XML+gzip, Fast Infoset, Fujitsu Binary, Xebu und esXML) wurde im November 2006 Efficient XML als Basis für EXI gewählt.[3] Im Juli 2007 wurde der erste Entwurf für den Efficient XML Interchange standard veröffentlicht. Die Planung der Arbeitsgruppe sah es vor, EXI im September 2009 als W3C-Empfehlung zu veröffentlichen.[4] Im Januar 2011 wurde dann ein Vorschlag für eine W3C-Empfehlung[5] und im März 2011 die darauf aufbauende W3C-Empfehlung[6] publiziert. Im Februar 2014 wurde eine 2te Edition[7] veröffentlicht. Im November 2016 hat die Arbeitsgruppe ihren Namen von „Efficient XML Interchange (EXI)“ zu „Efficient Extensible Interchange (EXI)“ geändert um der breiten Anwendbarkeit des Formates Rechnung zu tragen.[8] KonzeptDer Algorithmus verwendet eine Grammatik, um anhand dieser zu bestimmen, was wahrscheinlich an einer bestimmten Stelle in einem XML-Dokument vorkommt. Die wahrscheinlichste Alternative wird dann mit weniger Bits kodiert als unwahrscheinlichere (vgl. Entropiekodierung). Dieser allgemein gehaltene Algorithmus kann auf jede Sprache, die von einer Grammatik beschrieben wird (z. B. SVG, Java, HTML usw.), angewendet werden. EXI ist für XML-Sprachen optimiert, das EXI4JSON-Beispiel zeigt wiederum die Anwendbarkeit des Verfahrens auf JSON-Dokumente.[9] Die Grammatik erlaubt als Eingabe ein beliebiges XML-Dokument oder Fragmente davon. Um genauere Vorhersagen treffen zu können, was an einer bestimmten Stelle vorkommt, kann die Grammatik durch verschiedene Schemata (z. B. DTD oder XML Schema) erweitert werden. Der Encoder erzeugt, unter Zuhilfenahme der Grammatik, aus der Eingabe einen Stream of Events (englisch für „Strom der Ereignisse“), der aus einer Reihe von einfachen Codes variabler Länge besteht. Diese Event Codes ähneln Huffman-Kodierungen, sind aber viel einfacher zu berechnen und zu pflegen. Zusätzlich können die Event Codes durch Lauflängenkodierung komprimiert werden. Magische ZahlUm EXI-Streams von XML-Streams zu unterscheiden, wurden zwei Unterscheidungs-Bits eingeführt. Die ersten zwei Bits des ersten Oktetts müssen die Werte ‚1‘ und ‚0‘ in genau der Reihenfolge haben. Diese Reihenfolge ist in wohlgeformten XML-1.0-Dokumenten in den üblichen Zeichenkodierungen nicht möglich.[10] Um aber die Unterscheidung auch für mögliche zukünftige Kodierungen zu gewährleisten, wurde schon früh die Einführung eines magic cookie vorgeschlagen.[11] In der Spezifikation zum Format 1.0 wird festgelegt, dass der EXI-Header mit dem so genannten EXI-Cookie, der ASCII-Zeichenfolge Zwar ist die Verwendung des EXI-Cookies optional, sie wird aber in der Spezifikation dringend empfohlen. BeispielEin EXI-Stream der Version 1 mit EXI-Cookie und ohne EXI-Optionen würde mit folgenden Bytes beginnen: 24 45 58 49 80 Ein EXI-Stream ab der Version 16 mit EXI-Cookie und EXI-Optionen würde wie folgt beginnen: 24 45 58 49 AF ImplementierungenAuf der Webseite der Interchange Working Group findet man eine ausführliche Beschreibung der Implementierungen.[12]
Siehe auchWeblinks
Quellen
|
Portal di Ensiklopedia Dunia