Fallstricke von XML

(Auszug aus "Perl & XML" von Erik T. Ray & Jason McIntosh)

In diesem Abschnitt werden wir einige Themen ansprechen, die Sie beim weiteren Lesen des Buchs in Erinnerung behalten sollten. Sie sind die Ursache für viele der Probleme, über die früher oder später jeder bei der Arbeit mit XML stolpert.

Wohlgeformtheit

XML hat eine Art eingebaute Qualitätskontrolle. Ein Dokument muß einige minimale Syntaxregeln erfüllen, um als XML-Dokument zu gelten. Die meisten Parser sind nicht in der Lage, das Dokument zu lesen, sobald auch nur eine dieser Regeln verletzt wird. Sie sollten also sicherstellen, daß die von Ihnen gelesenen Daten eine ausreichende Qualität haben.

Zeichensätze

Im 21. Jahrhundert müssen wir leider auch den jeweiligen Zeichensatz berücksichtigen. Die Zeiten, in denen man sich damit begnügen konnte, den Alleinherrscher ASCII zu kennen, sind vorbei. Der neue König heißt Unicode, ein sehr umfangreicher Zeichensatz, eine Obermenge aller wichtigen Zeichensätze der Welt. XML arbeitet standardmäßig mit Unicode und vorzugsweise mit Perls bevorzugter Unicode-Variante UTF-8. Normalerweise brauchen Sie nicht daran zu denken, aber behalten Sie dies immer als mögliche Quelle von Problemen im Hinterkopf. [Anmerkung: Im deutschsprachigen Raum ist das Thema des Zeichensatzes fast immer aktuell, da UTF-8 und ISO-8859-1, der hierzulande übliche Zeichensatz, nicht ganz kompatibel sind. Zwar ist es richtig, daß ISO-8859-1 ein »wichtiger« Zeichensatz und damit eine Teilmenge von UTF-8 ist, aber gewöhnen Sie sich besser gleich die magische Zeile <?xml version="1.0" encoding="ISO-8859-1"?> zu Beginn des Dokuments an – Sie werden sich damit viel Ärger ersparen. – Anm. d. Ü.]

Namensräume

Nicht jeder arbeitet mit Namensräumen, viele kennen sie nicht einmal. Namensräume sind ein Feature von XML, dessen Nützlichkeit nicht ganz so einleuchtend ist und sich eher allmählich herausstellt. Namensräume sollen Markup und Tags unterscheiden, die verschiedenen Spezifikationen oder Vorgaben entsprechen. Sie erlauben es, völlig verschiedene Dokumenttypen nach Belieben zu vermischen. Mathematische Gleichungen in HTML? Markup als Daten in XSLT? Aber gerne, und dank der Namensräume auch einfach und sicher. Ältere Module unterstützen Namensräume oft nicht, aber die neuere Generation hat damit keine Probleme mehr. Vergessen Sie das nicht.

Deklarationen

Eine Deklaration ist kein Teil des Dokuments an sich; sie kann aber an ganz anderer Stelle Auswirkungen haben. Das macht sie unhandlich und führt dazu, daß man sie leicht unberücksichtigt läßt. Bedenken Sie, daß viele Dokumente eine DTD verwenden, die dann Deklarationen von Entities oder Attributen enthält. Man übersieht in diesem Bereich sehr leicht etwas, z. B. Standardwerte von Attributen usw.

Entities

Entities und Entityreferenzen scheinen recht einfach zu sein: Sie bezeichnen einen gewissen Inhalt, den man an anderer Stelle eingegeben hat, vielleicht weil man zu faul ist, zehnmal dasselbe einzugeben. Der Inhalt eines Entity kann auch in einer ganz anderen Datei stehen. Auch für nicht direkt über die Tastatur eingebbare Zeichen (z.B. Griechische Buchstaben) sind Entities eine gute Lösung. Das Konzept ist einfach, aber die Anwendung kann zum Alptraum werden. Zum Beispiel sollen Referenzen meistens aufgelöst werden, aber manchmal eben doch nicht. Der eine Parser will die Deklarationen mit aller Gewalt verarbeiten, den anderen interessieren sie gar nicht. Entities können verschachtelt sein, d. h. andere Entities enthalten, und zwar beliebig tief. Sie sind trickreiche, kleine Biester, und wenn Sie nicht genau aufpassen, dann garantieren wir Ihnen, daß sie Sie früher oder später austricksen werden.

Leerzeichen

In XML gibt es nur einerseits Markup, d. h. Tags, PIs (Verarbeitungsanweisungen) usw., und andererseits Textdaten. Das kann gelegentlich zu Überraschungen führen. Zum Beispiel ist oft unklar, was denn eigentlich mit Leerzeichen geschehen soll. Standardmäßig sollte ein Prozessor Leerzeichen stets erhalten – einschließlich der Zeilenenden und Tabulatorzeichen, die man gerne aus Gründen der Lesbarkeit einfügt. Es gibt Parser, die einem anbieten, solche Leerzeichen unter gewissen Umständen wegzulassen, aber die dabei befolgten Regeln sind keineswegs offensichtlich oder einheitlich.

Alles in allem ergänzen sich Perl und XML hervorragend. Es gibt Klippen und Fallstricke (Anmerkung: Die aber eher in der Anwendung von XML begründet sind – ein Java- oder C++-Programmierer hat es da keinen Deut besser), aber dank der Arbeit der verschiedenen Modulentwickler sollten Sie keine unlösbaren Probleme mit Perl/XML haben.

  

  

<< zurück vor >>

 

 

 

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

Copyright © 2003 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 "Perl & 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