Allgegenwärtiges XML - Das Metaformat in der Realität
Das Wunderkind des W3C, die eXtensible Markup Language - kurz XML hat in den letzten Jahren in vielen Bereichen Einzug gehalten. Die Gründe dafür sind vielfältig, doch häufig wie so vieles in der Faulheit der Programmierer zu suchen. Anstatt ein eigenes Format zur Datenspeicherung zu definieren und sowohl Ausgabe wie auch Parser schreiben zu müssen greifen viele Programmierer auf das durch grossflächig verfügbare XML Bibliotheken einfach zu handhabende XML zurück.
Die meisten der verwendeten XML Formate sind entgegen des Grundgedankens nicht einmal definiert und daher auch nicht valide. Dieser Umstand ist weit weniger Fatal als es auf den ersten Blick scheint, denn damit ein XML Parser ein Dokument verarbeiten kann muss es lediglich Wohlgeformt sein, jedoch nicht gültig, sofern dem Parser kein Dokumenttyp angegeben wurde.
Im Kontext der eXtensible Markup Language bedeutet der Begriff der Wohlgeformtheit lediglich dass das Dokument gemäss den grundlegenden Verschachtelungsregeln entspricht (keine überlappenden Tags), das in dem Dokument keine unmaskierten Steuerzeichen vorkommen ( ‘<’ ‘>’ ‘&’) sowie dass das Dokument auf einzelnes Wurzelelement zurückgeht. Ausserdem muss ein Wohlgeformtes Dokument am Anfang eine XML Deklaration enthalten, Anfang ist in diesem Fall ernst zu nehmen, denn selbst Whitespace vor der Deklaration ist nicht erlaubt.
Ein XML Dokument ist gültig wenn es einer bestimmten Spezifikation entspricht.
Diese Spezifikation kann in unterschiedlichen Formaten vorliegen, entweder als eine aus SGML entlehnte DTD oder als moderneres XML-Schema, wobei es mehrere Schemasprachen zur Auswahl gibt. Das W3C unterstüzt offiziell die Standards XML Schema und Relax NG. Ein XML Dokument ist gültig wenn es den in der DTD oder dem Schema spezifizierten Richtlinien entspricht. Aufgrund der Möglichkeiten die DTDs und Schemata bieten ist es durchaus möglich dass ein Dokument Gültig und Wohlgeformt ist wenn es mit dem Schema verwendet wird, aber ohne dieses Schema nicht den Richtlinien der Wohlgeformtheit genügt. Daher ist es Sinnvoll ein XML Dokument immer unter Beachtung seiner Schema oder DTD Spezifikation zu verarbeiten, falls diese Vorliegt. Bei nicht Spezifizierten, ‘wilden’ XML Formaten ist es hingegen nicht zwingend notwendig ein Schema zu schreiben um sie zu verarbeiten, da diese meist so aufgebaut sind dass sie unter der normalen XML Spezifikation als Wohlgeformt gelten.
Obwohl die Zahl der Namenlosen, unspezifizierten Wilden XML Formate wahrscheinlich um einiges Grösser sein wird haben sich viele XML Standards etabliert. Viele dieser Formate verrichten ihren Zweck grösstenteils im Verborgenen oder haben nie Beachtung erhalten. Ich habe eine kleine Liste teils prominenter, teils weniger bekannter XML Formate zusammengestellt, welche ohne Anspruch auf Vollständigkeit zu haben die Verbreitung von XML sehr schön darstellt.
CML - Chemical Markup Language
Beschreibungssprache für Chemische Elemente und Moleküle, findet hauptsächlich in Wissenschaftlichen Anwendungen als Datenaustauschformat Verwendung.
DTD - Document Type Definition
Die DTD ist, obwohl sie dem XML Vorgänger SGML entlehnt wurde, selbst ein XML Format, selbstverständlich hat das DTD selbst eine Spezifikation, welche unter anderem als DTD vorliegt. Diese Art der Rekursiven Selbstdefinition findet bei den XML Schemasprachen (ich zähle DTDs auch als Schemasprache) häufig statt.
DocX - Microsoft Word OpenXML
Die von neueren Wordversionen verwendete Variante von Microsofts OpenXML
MathML - Mathematical Markup Language
MathML wurde entwickelt um Mathematische Terme und Gleichungen zu Speichern und darzustellen. Besonders bei komplexen Termen welche sich nicht mehr akzeptabel durch Plaintext repräsentieren lassen hat sich MathML etabliert da in MathML definierte Konstrukte sowohl dargestellt als auch Weiterverarbeitet werden können.
OpenXML - Microsofts neues Office Format
Das von Microsoft spezifizierte OpenXML ist das native Speicherformat neuerer Office Versionen. Dem Open in seinem Namen wird OpenXML allerdings nicht ganz gerecht, denn Obwohl seine Spezifikation öffentlich verfügbar ist, wurde sie von Microsoft derart komplex gestaltet dass des unabhängigen Programmierern nahezu unmöglich ist das Format in ihre Applikationen zu integrieren. Dieser Umstand zeugt davon dass Microsoft sich aufgrund der Initiativen einiger Regierungen welche offene Standards forderten, ein augenscheinlich Offenes zu verwenden. Ohne diesen Schritt würde Microsoft Gefahr laufen Marktanteile an Konkurrenzprodukte wie OpenOffice zu verlieren. Microsoft strebt seit einiger Zeit an OpenXML zum ISO Standart zu machen um Kritikern des Formates den Wind aus den Segeln zu nehmen.
ODF - Open Document Format
ODF ist das native Speicherformat des OpenSource Office Paketes OpenOffice. ODF hat die meisten Relevanten Standardisierungsgremien durchlaufen und stellt den direkten Konkurrenten zum Microsoftschen OpenXML. Die im Gegensatz zu seinem Nebenbuhler ernst-gemeinte Offenheit zeigt sich darin dass neben OpenOffice viele weitere Programme ODF lesen und schreiben können.
OPML - Outline Processor Markup Language
Der Verwendungszweck von OPML ist nicht so genau festgelegt wie bei den meisten anderen XML Formaten. Der grundlegende Gedanke hinter OPML ist Auszüge mehrerer Dokumente verschiedener Quellen inklusive Metadaten zu Speichern, quasi als Metasyndizierungsformat. OPML ist eng mit dem bekannten Syndizierungsformat RSS gekoppelt und findet hauptsächlich in der Blogosphäre Anwendung. Dort aber auf vielfältige Weise, als Austauschformat zwischen Feedreader und Feedaggregator, zur Syndizierung multipler Blogs oder multipler Kategorien eines einzelnen Blogs sowie als Blogroll mit Mehrwert.
RSS - Really Simple Syndication
RSS ist eines der bekannteren XML Formate und wird am Häufigsten in Blogs zur Syndizierung verwendet. Beinahe jedes Blogsystem kann einen RSS erzeugen. Je nach verwendetem Blogsystem und dessen Konfiguration enthält der RSS Feed entweder den ganzen Text eines Blogeintrages oder auch nur einen kurzen Abriss. Viele Webseiten bieten auch RSS Feeds ihrer News an. RSS wird auch häufig andere Zwecke eingesetzt beispielsweise bieten einige Online Shops die neuesten Produkte als RSS Feed an. Auch das Comprehensible Perl Archive Network (CPAN) hält einen RSS-Feed der kürzlich hochgeladenen Module Bereit.
XSL - eXtensible Stylesheet Language (oder so)
XSL ist eine Turing Vollständige Programmiersprache zur Transformation von XML-Dokumenten. XSL wird selbst in XML geschrieben und kann daher auch XSL fremde XML Strukturen enthalten. Auch wenn der Name XSL auf eine Stylesheetsprache hindeutet hat XSL nur wenig mit CSS gemein, während CSS die Darstellung von (X)HTML (die Verwendung von CSS auf andere XML Formate ist zwar auch definiert, kommt aber selten zur Anwendung) beeinflusst, transformiert XSL die Struktur eines Dokumentes direkt. Obwohl XSL als Eingabeformat zwingend Wohlgeformtes XML erfordert kann das Ausgabeformat ein beliebiges sein, von Plaintext bis PDF. Eine häufig angewendete Strategie ist die Transformation von XML Daten nach XHTML um sie in einem Webbrowser anzuzeigen. Die meisten Browser haben einen XSL Processor integriert sodass die mitunter aufwendige Transformation auf dem Clienten stattfinden kann. Ich schrieb bereits über XSL, die RSS Feeds im dropfblog werden mittels eines XSL nach HTML Transformiert. Das dazu verwendete Stylesheet darf von jedem frei genutzt und geändert werden. (geändert = aber nicht meines hier! ;) )
XHTML - X Hyper Text Markup Language
Das wohl prominenteste Mitglied der Familie ist XHTML. XHTML ist die Neudefinition von HTML 4.01 in XML. HTML wurde eigentlich in der Metasprache SGML definiert, doch wenige der nicht in XML verfügbaren SGML Eigenschaften finden in HTML tatsächlich Verwendung. Es gab schon immer gemäß SGML Spezifikation in HTML legale Konstrukte die von Webbrowsern nicht verstanden wurden. Ein vielzitiertes Beispiel ist die abkürzende Schreibweise :
<i/Foobar/ ist nach Lex SGML äquivalent zu <i>Foobar</i> lässt aber jeden Browser das Handtuch werfen. Mit der ständigen Erweiterung von HTML seitens der Browserhersteller und ihrer Vernachlässigung
des Markup Erbes seiner SGML Mutter wurde HTML mehr und mehr ein Waisenkind dessen einzig Anwendbare Spezifikation es selbst wurde. Daher ist es auch ausgesprochen Schwierig einen Parser zu schreiben welcher Gossen-HTML, wie es im Web zuhauf vorkommt, zuverlässig verarbeiten kann. Dieser unglückliche Zustand ist einer der Gründe dafür dass das W3C HTML in XML neu definiert hat. Das daraus Entstandene XHTML ist nahezu vollständig kompatibel zu HTML, nur einige Kleinigkeiten müssen geändert werden um dem Anspruch der Wohlgeformtheit genüge zu tun. Einen geschickten Webmaster fällt es nicht schwer gemäß XHTML gültige Dokumente welche auch von nicht XHTML fähigen Browsern anstandslos verarbeitet werden. Die momentane Verbreitung von XHTML liegt weit unter dem was sich das W3C erhofft hatte was nicht zuletzt darin erklärt dass XHTML dem Webmaster üblicherweise keinerlei Vorteile bringt, aber unter Umständen erheblichen Aufwand erfordert. Viele Webseiten rühmen sich mit XHTML Konfomität ohne diesem Anspruch gerecht zu werden, eine erbärmliche Tatsache über die ich zuvor schon berichtete. Die Entwicklung von HTML ist bei XHTML zwar nicht stehen geblieben, mit XHTML2 hat das W3C einen sehr potenten Nachfolger am Start der sich jedoch als Totgeburt entpuppen könnte. Alle modernen Browser können mit XHTML umgehen, auch wenn es in nicht HTML kompatibler Weise geschrieben wird. Einer der wenigen Vorteile die XHTML gegenüber HTML für den Webmaster aufweist ist die möglichkeit andere XML Daten einzubetten was Hauptsächlich bei RDF und SVG Angewendet wird und nicht von allen Browsern unterstützt wird. Das Mischen verschiedener XML Formate unter expliziter Angabe des Namensraumes innerhalb eines einzelnen XML Dokumentes ist ein enormer Vorteil.
Weitere XML Formate
Es gibt unzählige weitere Erwähnenswerte XML Formate doch ich habe nicht die Zeit alle ausfürlich zu Beschreiben. Daher habe ich eine zweite Liste mit denen ich ausgelassen habe erstellt. Selbstverständlich ist diese Liste auch nicht Vollständig, und eine dritte Liste mit denen die ich in der zweiten Liste ausgelassen habe werde ich definitiv nicht anfertigen doch sollen nicht ungenannt bleiben.
- SVG - Scalable Vector Graphics, ein vom W3C entwickeltes Vektorgrafik Format.
- RDF - Ressource Description Framework, fundamentaler Bestandteil des Semantischen Webs sowie Grundlage für RSS 1.0 (nicht aber 0.92/2.0)
- ATOM, ein weiteres Syndizierungsformat dass allerdings nicht ganz soweit verbreitet ist wie RSS
- manifest, ein das Format das vom Microsoft .NET Framework verwendet wird
- plist - Property List, wird von vielen Mac Programmen zur Speicherung von Einstellungen verwendet. Gibt es sowohl als XML als auch binäre Variante.
- WSDL - Web Service Description Language, wir von SOAP basierenden Webservices und deren Clients verwendet.
- OpenShipment, ein von UPS Software verwendetes Format zum Austausch von Versanddaten.
- XSD, XML Schema Definition, das Format des W3C XML Schema.
Wie meine kleine Zusammenstellung deutlich zeigt ist XML in den letzen Jahren in jede Ritze geflossen und kaum noch wegzudenken. Auch wenn ein Grossteil der XML Formate ihren Zweck erfüllen ohne dass man es mitbekommt ist XML zu einem wichtigen Standbein der IT Industrie geworden. Für den Programmierer stellt die Verwendung von XML in vielen kein Problem dar, da umfangreiche XML Bibliotheken für die meisten Programmiersprachen und Laufzeitumgebungen das durchaus Komplizierte parsen und validieren von XML erheblich erleichtern. Obwohl XML seine Wurzeln im Web hat, hat es grossflächig Einzug in Betriebsysteme und Applikationen gehalten so dass jeder ernsthafte Programmierer gut daran tut sich mit XML auseinander zu setzen.
Trackback Adresse für diesen Eintrag:
http://dropfknuck.net/dropfblog/blogs/htsrv/trackback.php/162
Kommentare, Trackbacks, Pingbacks:
Bisher keine Kommentare/Trackbacks/Pingbacks für diesen Eintrag...
Hinterlasse einen Kommentar: