Hauptvorteile von XML

(Auszug aus "Python & XML" von Christopher A. Jones & Fred L. Drake, Jr.)

XML verfügt über einige wesentliche Vorteile, die es im Internet zur Datenrepräsentationssprache Nummer eins machen. Diese Vorteile wurden von Beginn an in XML eingebaut und sind de facto das, was es für Internet-Entwickler so anziehend macht.

Anwendungsneutralität

Zuallererst ist XML sowohl von Menschen als auch von Maschinen lesbar. Dies ist kein unbedeutender Punkt. Haben Sie jemals versucht, ein Microsoft Word-Dokument mit einem Texteditor zu lesen? Das können Sie nicht, wenn es als .doc-Datei gespeichert wurde, da die Information in einem .doc-Dokument in einem binären (d.h. nur von Computern lesbaren) Format vorliegt, obwohl die meisten Word-Dokumente vorwiegend aus Text bestehen. Ein Word-Dokument kann von keiner anderen Anwendung als Word benutzt werden – es sei denn, dieser Anwendung wurde die Komplexität von Words Binärformat beigebracht. In diesem Fall muss der Anwendung auch beigebracht werden, jedesmal mit Änderungen im Word-Format klarzukommen, wenn es eine neue Version von Microsoft gibt.

Das klingt abschreckend für Entwickler, aber wie schlimm ist es wirklich? Schließlich ist Word unglaublich beliebt, also darf es nicht allzu schwer sein, es herauszufinden. Schauen wir uns den Anfang der Word-Datei an, die dieses Kapitel enthält:

ÐÏ_ࡱ_á             >  _ þÿ     _           _   B _      _ D_   _
þÿÿÿ       ? _   @_   A_  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á 7              _  ð_¿      _      _  ›_ _
bjbjU_U_                                     __ 0¸_ 7| 7| W_  _           C
ÿÿ_         ÿÿ_        ÿÿ_                   l Ê_
Ê_   Ê_         Ê_         Ê_       Ê_     Ê_        ¶       Þ_

Das kommt gewiß jedem bekannt vor, der jemals eine Word-Datei mit einem Texteditor geöffnet hat. Wir können unseren Text (den eigentlichen Inhalt) nicht erkennen, also müssen wir annehmen, daß er tief in der Datei versteckt ist. Den wahren Inhalt und seinen Aufenthaltsort zu bestimmen kann schwierig sein, sollte es aber nicht. Denn schließlich sind es unsere Daten. Versuchen wir es mit einem anderen unterstützten Format: »Rich Text Format« oder RTF. Im Gegensatz zur .doc-Datei ist dieses Format textbasiert und sollte daher ein wenig leichter zu dechiffrieren sein. Wir suchen in der Datei, um den Anfang unseres Textes zu finden:

\par }\pard \s34\qr
\li0\ri0\sb80\sa480\sl240\slmult0\widctlpar\aspalpha\aspnum\faauto\out
linelevel0\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\pnrauth1\pnr
date-967302179\pnrnot1\adjustright\rin0\lin0\itap0 {\b0\fs48 Python un
d XML}{
\b0\deleted\fs48\revauthdel1\revdttmdel-2041034726
Grundlagen}{\b0\fs4
8\revised\revauth1\revdttm-2041034726 ?}{\b0\fs48
\par }\pard\plain \qj

Das ist schon besser. Der Titel des Kapitels ist sichtbar, sodass wir versuchen können, die Struktur von diesem Punkt an zu dechiffrieren. Die Auszeichnung scheint kompliziert zu sein, und es gibt einen Hinweis auf eine ältere Version des Kapiteltitels. Um den Text zu extrahieren, den wir eigentlich wollen, müssen wir Words Versionskontrollmodell verstehen, was immer noch viele Herausforderungen birgt.

XML dagegen ist anwendungsneutral. Mit anderen Worten: Ein XML-Dokument wird normalerweise von einem XML-Parser oder -Prozessor verarbeitet, kann aber, wenn keiner vorhanden ist, leicht gelesen und geparst werden. Daten in XML unterliegen nicht den Beschränkungen einer bestimmten Software-Anwendung. Die Möglichkeit, reichhaltige Dateien zu lesen, kann sehr wertvoll werden, etwa wenn Sie in 20 Jahren eine CD-ROM mit alten Geschäftsformularen ausgraben, die Sie plötzlich wieder brauchen. Wird die Software QuickBooks es Ihnen im Jahr 2021 immer noch ermöglichen, diese Daten zu extrahieren? Mit XML können Sie die Daten mit jedem Texteditor lesen.

Sehen wir uns dieses Kapitel in XML an: Da es eine Auszeichnung verwendet, die aus einem Dokumenttyp für Software-Handbücher und -Dokumentation kommt (DocBook), erscheint es ein wenig ausführlich und enthält auch keine Versionsinformationen, aber wir können den Text nun recht einfach identifizieren:

<chapter>
    <title>Python und XML</title>
    <para>Python und XML sind zwei sehr verschiedene Dinge, jeweils mit einer eigenen, reichen Geschichte. Python ist eine universale Programmiersprache, die durch die Vision und unter der Leitung ihres Erfinders Guido van Rossum sehr organisch aus ihren ...</para>
    ...
</chapter>

Man beachte, dass im Dokument zusätzliche Zeichen (verschieden vom Dokumentinhalt) auftauchen. Diese werden Auszeichnungen genannt (oder Markup, Tags). Das haben wir auch in der RTF-Version des Dokuments gesehen, aber es gab viel mehr Textstücke, die schwer zu verstehen waren, und wir können einigermaßen davon ausgehen, dass die seltsamen Daten im MS Word-Dokument diesen in irgendeiner Form entsprechen. Wäre dies ein Buch über RTF, würden Sie schnell zwei Dinge mutmaßen: RTF ist viel mehr so etwas wie eine Drucker-Protokollsprache als das XML-Beispiel, das wir gerade gesehen haben, und ein Programm zu schreiben, das RTF versteht, wäre recht schwierig. Wir werden Ihnen in diesem Buch zeigen, dass XML benutzt werden kann, um Sprachen zu definieren, die zu Ihrer Anwendung passen, und dass Programme zu schreiben, die XML dechiffrieren können, keine schwierige Angelegenheit ist, besonders nicht mit Hilfe von Python.

Hierarchische Struktur

XML ist hierarchisch aufgebaut und ermöglicht es Ihnen, eigene Tag-Namen zu wählen. Das ist ziemlich verschieden von HTML. In XML haben Sie alle Freiheiten, Elemente jeden Typs zu erzeugen und andere Elemente darin zu stapeln. Betrachten Sie z. B. einen Adresseneintrag:

<?xml version="1.0"?>
<address>
  <name>Bubba McBubba</name>
  <street>123 Happy Go Lucky Ln.</street>
  <city>Seattle</city>
  <state>WA</state>
  <zip>98056</zip>
</address>

Im obigen, wohlgeformten XML-Code habe ich einige Datensatznamen erfunden und sie dann mit Daten in einen Topf geworfen. Software, die XML verarbeitet, wie z. B. ein Parser (den Sie benutzen können, um die syntaktischen Konstrukte eines XML-Dokuments zu interpretieren), wäre in der Lage, diese Daten auf verschiedene Weise darzustellen, da ihre Struktur erkannt wird. Wenn wir uns z. B. anschauen sollten, was ein Anwendungsprogrammierer als Quellcode schreiben würde, könnten wir diesen Datensatz in ein Objekt verwandeln, das wie folgt initialisiert wird:

addr = Address( )
addr.name = "Bubba McBubba"
addr.street = "123 Happy Go Lucky Ln."
addr.city = "Seattle"
addr.state = "WA"
addr.zip = "98056"

Dadurch wird XML für viele serialisierte Objekte zu einem sehr geeigneten Format. (Es gibt einige Konstrukte, für die XML nicht ganz so geeignet ist, z. B. viele Formate für große numerische Datenmengen, wie sie bei wissenschaftlichen Berechnungen anfallen.) Die hierarchische Struktur von XML macht es einfach, das Konzept von Objektschnittstellen auf Dokumente anzuwenden – es ist relativ einfach, anwendungsspezifische Objekte direkt aus dem Informationsstrom zu bauen, wenn man Abbildungen von Elementnamen auf Objekttypen hat. Wir werden später sehen, daß wir mehr als einfache hierarchische Strukturen mit XML modellieren können.

Plattformneutralität

Vergessen Sie nicht, daß XML plattformübergreifend ist! Während dies zum größten Teil an seinem textbasierten Format liegt, ist es doch eine Tatsache. Die Verwendung von gewissen Textcodierungen stellt sicher, dass es keine Mißverständnisse bezüglich der Anordnung eines XML-Dokuments gibt. Daher ist es einfach, eine Bestellung in XML von einem Unix-Rechner auf einen drahtlosen PDA weiterzugeben. XML wurde für die Benutzung mit einer existierenden Internet-Infrastruktur basierend auf HTTP, SSL und anderen sich weiterentwickelnden Nachrichtenprotokollen entworfen. Diese Qualitäten führen dazu, daß sich XML für verteilte Anwendungen anbietet. Es wurde erfolgreich als Grundlage in Message Queuing-Systemen, Instant Messaging-Anwendungen und Remote Procedure Call-Rahmenwerken verwendet. Wir untersuchen diese Anwendungen ausführlicher in Python, Webdienste und SOAP und Python und der Entwurf verteilter Systeme. Es bedeutet auch, dass das zuvor angegebene Beispieldokument mehr als nur anwendungsneutral ist und direkt und ohne Informationsverlust von einer Rechnersorte auf eine andere übertragen werden kann. So kann z.B. ein Kapitel eines technischen Buches von einem Programmierer auf seiner Lieblingsversion von Unix geschrieben und dann an einen Verlag geschickt werden, der eine Buchsatz-Software auf einem Macintosh einsetzt. Die vielen schwierigen Formatumwandlungen können dadurch vermieden werden.

Unterstützung internationaler Sprachen

Mit der zunehmenden Durchdringung unseres Alltags durch das Internet werden wir der Welt um uns herum mehr gewahr und erkennen sie als einen kulturell reichen und vielschichtigen Raum. Als Techniker arbeiten wir jedoch noch immer daran, unsere Software derart benutzbar zu machen, daß sie mehr als eine Sprache gleichzeitig unterstützt. Unsere Routinen zur Textbearbeitung »8-Bit-sicher« zu machen ist nicht nur nicht länger ausreichend, es ist nicht einmal mehr nah dran.

Standardisierungsgremien weltweit haben Wege gefunden, mit denen Rechner in ihren Nationalsprachen geschriebene Texte austauschen können, manchmal mehrere Wege, von denen jeder unterschiedlich weit akzeptiert ist. Leider enthalten die meisten Anwendungen keine Informationen darüber, in welcher Sprache oder in welchem Austauschformat ihre Daten geschrieben sind, sodass es schwer ist, Informationen über kulturelle und linguistische Grenzen hinweg auszutauschen, die die verschiedenen Standards darstellen. Manchmal ist es auch schwierig, Informationen innerhalb solcher Grenzen auszutauschen, wenn mehrere prominente Standards existieren.

Die Probleme entstehen aus tiefgreifenden kulturellen Unterschieden bezüglich der Handhabung von Text. Zusätzlich zum westeuropäischen Stil (links-nach-rechts, oben-nach-unten), in dem dieses Buch geschrieben ist, gibt es viele andere Schreibsysteme. Rechts-nach-links ist nichts Ungewöhnliches, und »Zeilen« von oben-nach-unten, angeordnet auf einer Seite von rechts-nach-links, werden in China verwendet. Hebräisch verwendet ein Rechts-nach-links-System, aber Zahlen werden mit arabischen Ziffern links-nach-rechts geschrieben. Andere Systeme erlauben textuelle Anmerkungen parallel zum Text. Man stelle sich vor, was passiert, wenn ein Dokument Text aus verschiedenen Schreibsystemen enthält!

Standardisierungsgremien kennen diese Probleme und arbeiten seit Jahren an Lösungen. Die Herausgeber der XML-Spezifikation haben es bei den meisten dieser Probleme klugerweise vermieden, neue Lösungen vorzuschlagen, und haben es vorgezogen, auf die Arbeit von Experten und auf existierende Standards aufzubauen.

Die Internationale Standardisierungsorganisation (ISO) und das Unicode-Konsortium haben einen Standard erarbeitet, der zwar nicht perfekt, aber dennoch vielleicht der bestgeeignete Standard ist, indem er versucht, die Textdarstellungen der Welt mit der Absicht zu vereinen, alle Sprachen und Alphabete (inklusive ideographischen und hieroglyphischen Zeichensätzen) darstellbar zu machen. Der Standard ist bekannt als ISO/IEC 10646 oder geläufiger als Unicode. Nicht alle nationalen Standardisierungsgremien haben zugestimmt, dass Unicode der Standard für alle zukünftigen Textaustausch-Anwendungen ist (besonders in Asien), aber der Glaube ist weit verbreitet, dass Unicode das Beste ist, was verfügbar ist, um alle zufriedenzustellen. Der Standard behandelt Probleme mit multidirektionalem Text, Regeln für die Groß- und Kleinschreibung und Codierungsalgorithmen, mit denen verschiedene Eigenschaften von Datenströmen garantiert werden können. Der Standard klammert insbesondere jene Sprachprobleme aus, die nicht eng mit der Problematik einzelner Zeichen verbunden sind. Software, die empfindlich auf natürliche Sprache ist, muss eventuell immer noch eine Menge tun, was über Unicode hinausgeht, um den richtigen Vergleich von Namen in einer speziellen Sprache (oder mehreren Sprachen!) zu garantieren. Einige Sprachen werden umfangreiche zusätzliche Unterstützung für die richtige Textdarstellung benötigen (z. B. Arabisch, das verschiedene Zeichenformen für Buchstaben benötigt, je nach Position in einem Wort und benachbarten Zeichenformen).

Das World Wide Web Consortium (W3C) hat einen simplen und cleveren Schritt unternommen, um es einfacher zu machen, sowohl ältere Austauschstandards wie auch Unicode zu verwenden. Es verfügte, dass alle XML-Dokumente in Unicode sein müssen, und bestimmte, dass sie ihre eigene Codierung derart beschreiben müssen, dass alle XML-Prozessoren in der Lage seien, zu bestimmen, in welcher Codierung das Dokument geschrieben ist. Einige spezielle Codierungen müssen von allen Prozessoren erkannt werden, sodass es immer möglich ist, XML zu generieren, das überall gelesen werden kann und alle Zeichen der Welt darstellen kann. Es gibt auch eine Eigenschaft, die es ermöglicht, den Inhalt von XML-Dokumenten mit der Sprache zu markieren, in der er geschrieben ist, aber zur Zeit wird dies nicht so oft benutzt, wie es der Fall sein könnte.

Da XML-Dokumente auch Unicode-Dokumente sind, werden die Sprachen der Welt unterstützt. Die Verwendung von Unicode und Codierungen in XML wird etwas detaillierter in XML-Grundlagen erläutert. Unicode-Strings sind seit Version 2.0 Teil von Python, und dessen Standardbibliothek unterstützt eine große Anzahl von Codierungen.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Python & XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2002 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Python & XML" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de