Was Schemas für XML leisten

(Auszug aus "XML Schema" von Eric van der Vlist)

Eine XML-Schemasprache ist eine in Form von Regeln oder Strukturmodellen ausgedrückte Formalisierung der Beschränkungen, die auf eine Klasse von XML-Dokumenten zutreffen. In vielerlei Hinsicht dienen Schemas als Entwurfswerkzeuge, indem sie den Rahmen abstecken, auf dem Implementierungen aufbauen können. Da Formalisierung das notwendige Fundament für Software-Designer ist, kann die Formalisierung der Beschränkungen und Strukturen von XML-Instanzdokumenten zu sehr unterschiedlichen Anwendungen führen. Auch wenn Tag für Tag neue Anwendungen für Schemas entwickelt werden, fallen die meisten in die Rubriken Validierung, Dokumentation, Abfrage, Bindung oder Editieren.

Validierung

Validierung ist die verbreitetste Anwendung für Schemas in der XML-Welt. Es gibt viele Gründe und Gelegenheiten, ein XML-Dokument zu validieren: wenn wir eines erhalten, bevor wir Daten in ein traditionelles System importieren, wenn wir eines erzeugt oder von Hand verändert haben, wenn wir die Ausgabe einer Anwendung testen wollen usw. In all diesen Fällen hilft ein Schema dabei, einen wesentlichen Teil der Aufgabe zu erledigen. Verschiedene Arten von Schema führen verschiedene Arten von Validierung durch. Einige besonders komplizierte Regeln lassen sich manchmal besser als prozeduraler Code statt als beschreibendes Schema ausdrücken, im allgemeinen ist Validierung jedoch der ursprüngliche und auch der hauptsächliche Zweck eines Schemas.

Validierung kann als »Firewall« gegen die Vielfalt von XML betrachtet werden. Wir brauchen solche Brandmauern hauptsächlich in zwei Situationen: zum einen wirklich als Firewall, wenn wir Dokumente von »draußen« bekommen (wie es üblicherweise bei Webservices und anderen XML-Kommunikationsvorgängen geschieht). Zum anderen können sie uns definierte Übergabestellen liefern, wenn wir Verarbeitungsvorgänge als Abfolge von Transformationen entwerfen. Dadurch, daß man ein Dokument gegen ein Schema validiert, kann man sicherstellen, daß der Inhalt des Dokuments wie erwartet den Regeln entspricht, und so werden die Programme, die man zur Verarbeitung benötigt, einfacher.

Validierung kann die Gefahren bei der Verarbeitung von XML-Dokumenten, die aus Quellen jenseits des eigenen Einflußbereichs stammen, deutlich verringern. Dadurch wird es nicht überflüssig, die Verwaltungsregeln des gewählten Kommunikationsprotokolls zu befolgen oder robuste Anwendungen zu schreiben, Validierung ist jedoch eine nützliche zusätzliche Prüfschicht, die sich zwischen die Kommunikationsschnittstelle und das von Ihnen geschriebene Programm einpaßt.

Validierung kann auf verschiedenen Ebenen stattfinden. Strukturvalidierung stellt sicher, daß die Strukturen von XML-Elementen und -Attributen vorgegebene Anforderungen erfüllen, helfen jedoch beim Textgehalt dieser Strukturen nicht viel weiter. Datenvalidierung sieht sich die Inhalte dieser Strukturen genauer an und sorgt dafür, daß sie den Regeln dafür, welche Arten von Information vorliegen sollten, gehorchen. Andere Arten von Validierung, die oft als »Business-Regeln« bezeichnet werden, prüfen möglicherweise Beziehungen zwischen Informationen und einer höheren Ebene von Prüfungen auf Sinnhaftigkeit. Solche Vorgänge werden jedoch meistens durch prozeduralen Code realisiert, nicht durch schemabasierte Validierung.

XML ist eine gute Grundlage für Transformations-Pipelines unter Verwendung weithin verfügbarer Werkzeuge. Da jede solche Transformation ein Fehlerrisiko mit sich bringt und da jeder Fehler um so leichter zu beheben ist, je näher an seiner Quelle er entdeckt wird, ist es sinnvoll, in die Pipeline Checkpoints einzubauen, an denen die Dokumente validiert werden. Bei einigen Anwendungen wird sich herausstellen, daß eine Validierung nach jedem Schritt ein untragbarer Zusatzaufwand bedeutet, bei anderen hingegen wird es sich als wesentlich erweisen, Fehler sofort nach ihrem Auftreten zu bemerken, noch bevor sie Schaden angerichtet haben und während sie noch einfach festzustellen sind. Unterschiedliche Situationen werden unterschiedliche Validierungsanforderungen zeigen, und es kann sinnvoll sein, während der Entwicklung einer Pipeline häufiger zu validieren als später im Produktionseinsatz.

Dokumentation

XML- Schemas werden oft verwendet, um ein XML-Vokabular zu dokumentieren, selbst wenn Validierung nicht erforderlich ist. Schemas liefern eine formale Beschreibung eines Vokabulars mit einer Genauigkeit und Schärfe, die im Klartext nur schwer erreichbar ist. Es ist höchst ungewöhnlich, die Spezifikation eines neuen XML-Vokabulars zu veröffentlichen, ohne eine Art von XML-Schema beizufügen.

Die Maschinenlesbarkeit von Schemas ist für diese als Dokumentationsform in vielerlei Hinsicht vorteilhaft. Aus der formalen Beschreibung des Schemas kann eine für Menschen lesbare Fassung erzeugt werden. Schema-IDEs können beispielsweise grafische Darstellungen erzeugen, die beim Verstehen der Dokumentenstruktur hilfreich sein können. Entwickler können auch XSLT-Transformationen entwickeln, die eine Beschreibung der Struktur erzeugen. (Diese Technik wurde verwendet, um die Struktur von der XML Schema-Element-Referenz und der Datentypen-Referenz aus dem W3C XML Schema für W3C XML Schema zu entwickeln, wie es auf der W3C-Website veröffentlicht ist.)

Wir werden unter Dokumentation von Schemas sehen, daß W3C XML Schema weitere Möglichkeiten eingebaut hat, um Schemas sowohl mit strukturierten als auch mit unstrukturierten Zusatzinformationen zu versehen. Dadurch wird es leichter, Schemas ausdrücklich für die Dokumentation zu benutzen.

Unterstützung von Abfragen

Die ersten Fassungen von XPath und XSLT waren so angelegt, daß sie ohne ausdrückliches Verständnis von der Struktur der zu verarbeitenden Dokumente funktionierten. Dies war erfolgreich, hat jedoch Grenzen der Verarbeitungsgeschwindigkeit wie auch der Funktionalität zur Folge gehabt. Die Kenntnis der Dokumentenstruktur könnte Optimierer leistungsfähiger machen, und einige Funktionen, etwa das Sortieren oder das Testen auf Gleichheit, können durch ein Typensystem verbessert werden. Die zweite Fassung von XPath und XSLT wie auch die erste Version von XQuery (einer neuen, noch im Werden begriffenen Spezifikation, die eine XML-Abfragesprache definiert) werden sich darauf verlassen, daß ein W3C XML Schema vorliegt, um diese Möglichkeiten zu bieten.

Datenbindung

Auch wenn es nicht besonders schwer ist, mit Hilfe von SAX, DOM und ähnlichen APIs Anwendungen zu schreiben, die XML-Dokumente verarbeiten, ist dies eine niedere Aufgabe, die sowohl eintönig als auch fehleranfällig ist. Die Kosten für das Schreiben und die Wartung solcher Programme wachsen mit der Anzahl von Elementen und Attributen im Vokabular schnell an. Der Gedanke, dies zu automatisieren, indem man die in XML-Dokumenten verfügbaren Informationen direkt in die Strukturen von Anwendungen »einbindet« (üblicherweise als Objekte oder als RDBMS-Tabellen), ist vermutlich so alt wie die Auszeichnungssprachen selbst.

Ronald Bourret, der eine Liste von XML-Datenbindungsressourcen pflegt, unterscheidet zwischen Bindungs-Tools für die Entwurfsphase und solchen für die Laufzeit. Laufzeitbindungs-Tools erbringen ihre Leistung, indem sie eine Bindung auf der Grundlage der Struktur von Dokumenten und Anwendungen erzeugen, die sie durch Introspektion analysieren. Entwurfsphasen-Tools arbeiten hingegen mit einem Modell, das in einer bestimmten Form von Schema formalisiert vorliegt. Er beschreibt diese Kategorie als »normalerweise flexibler in den Abbildungen, die sie unterstützen«.

Viele verschiedene Sprachen, seien es spezialisierte oder Allzweck-XML-Schema-Sprachen, definieren solche Bindungen. W3C XML Schema hat in diesem Bereich große Zugkraft. Viele Datenbindungs-Tools haben begonnen, W3C XML Schema bereits für frühe Fassungen der Spezifikation zu unterstützen, noch bevor sie endgültig feststand.

Geführtes Editieren

XML- Editoren (und früher bereits die SGML-Editoren) benutzen schon seit langem Schemas, um Anwendern während der Erzeugung und der Bearbeitung von Dokumenten passende Auswahlmöglichkeiten anzubieten. Während DTDs bereits Strukturinformationen bereitstellten, fügen neuere XML-Schemasprachen ausgefeiltere Informationen über Strukturen und Datentypen hinzu.

Das W3C erschafft derzeit eine neue Standard-API, die von Anwendungen zum geführten Editieren verwendet werden kann, um von einem Schema-Prozessor Informationen darüber einzuholen, welcher Vorgang an einer bestimmten Stelle in einem Dokument ausgeführt werden kann – beispielsweise »Kann ich hier dieses neue Element einfügen?«, »Kann ich diesen Textknoten auf diesen Wert setzen?« usw. Die »Document Object Model (DOM) Level 3 Abstract Schemas and Load and Save Specification« (die noch im Entstehen begriffen ist) definiert »abstrakte Schemas« so allgemein, daß sowohl DTDs als auch W3C XML Schema (und grundsätzlich auch andere Schemasprachen) dadurch abgedeckt werden. Wenn diese API einmal endgültig feststeht und weithin akzeptiert worden ist, sollte sie es ermöglichen, einen beliebigen Schema-Prozessor in jede Editor-Anwendung einzubinden.

Ein anderer Ansatz für Editor-Anwendungen erzeugt aus den in Schemas enthaltenen Informationen den Editor. Zusammen mit Informationen über die Darstellung und die Steuerungselemente (Controls) ermöglichen diese Werkzeuge es dem Anwender, XML-Dokumente mit Anwendungen zu editieren, die für ein konkretes Schema maßgeschneidert sind. Beispielsweise schlägt die W3C-Spezifikation XForms (die noch in Arbeit ist) vor, die Logik und die Darstellung des Formulars von der Struktur der zu editierenden Daten zu trennen. Die Struktur wird dann einem W3C XML Schema entnommen.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML Schema 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 "XML Schema" 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