XML Schema

Eine Kernkomponente von onion.net ist die schemabasierte Informationsarchitektur .

Was bedeutet das? Im Grunde nur, dass alle an ein onion.net Content Management System angebundenen Datenquellen als XML vereinheitlicht werden. Somit ist dem Entwickler egal, woher die Informationen kommen (onion.net, SQL-Datenbank, Web-Ressource...), da sie alle gleich behandelt werden können, sie liegen in onion.net alle in XML vor.

Um sich sozusagen auf eine gemeinsame Grammatik einigen zu können, werden die XML-Dokumenttypen in onion.net mit Hilfe von XML Schema beschrieben. XML Schema ist eine Empfehlung des »World Wide Web Consortium« (W3C) . Es handelt sich hierbei um eine Auszeichnungsprache, welche die Deklaration von einfachen und komplexen Datentypen ermöglicht. Das Schema beschreibt Typen, Elemente und Attribute. Der Autor kann selbst wählen ob ein bestimmtes Attribut optional oder zwingend erzeugt werden soll. Bei den Elementen kann der Autor entscheiden, ob sie optional sind, wieviele erforderlich sind und in welcher Reihenfolge sie verwendet werden.

XML Schema bietet noch viele weitere fortschrittliche Features, darunter: Vererbung, Namensräume, lokale und globale Typen, Default-Werte für Attribute und Elemente und vieles mehr.

Dadurch ist XML Schema ein sehr mächtiges Werkzeug um Informationsmodelle zu beschreiben. Dank XML Schema können Sie in onion.net die Dokumenttypen exakt nach Ihren Projektanforderungen konstruieren und ihre kreativen Ideen frei umsetzen. Für jedes Dokument in onion.net ist exakt definiert, welche Elemente etwa in welcher Reihenfolge und Anzahl vorkommen dürfen, ob und welche Attribute sie haben, welche Werte erlaubt sind und welche benannten Zeichenreferenzen verwendet werden dürfen.

Mit einem XML Schema werden also verbindliche Regeln für die Beschaffenheit eines XML-Dokumenttyps festgelegt, beispielsweise dass eine Postleitzahl in Deutschland aus 5 Ziffern besteht. Der Vorteil für Sie: Sie müssen diese Regeln nicht an anderer Stelle, zum Beispiel in der Bedienoberfläche, als Programmlogik implementieren. Wenn sich derartige Regeln ändern modifizieren Sie einfach das Schema. Da das XML Schema selbst ein Dokument ist, kann eine Regeländerung (für die in anderen Produkten eine Codeanpassung programmiert werden müsste) meist schon durch das Editieren des XML Schema Dokuments erledigt werden. In onion.net editieren Sie das Schema natürlich mit dem onion.net Editor, benötigen also keinerlei zusätzliche Werkzeuge.

XML-Schema macht es also nicht nur einfacher, die XML-Dokumente zu behandeln, sondern setzt auch einen sehr nützlichen W3C-Standard um. Dennoch haben nur wenige Content Management Systeme W3C-Standards so fest im Kern verankert.

Dabei liegen die Vorteile klar auf der Hand

W3C-Standards bieten eine sehr hohe Flexibilität und Leistung, mehr als jede Eigenentwicklung, denn »Standard« bedeutet immer eine große Verbreitung. Hinzu kommt, dass Implementierungen dieser Standards frei verfügbar sind, so dass eine enorme Anzahl an Entwicklern mit den unterschiedlichsten Hintergründen zu der Implementation eines W3C-Standards beiträgt. Eine solche Vielfältigkeit können Eigenentwicklungen nicht bieten.

Komponenten einzubinden, die einen Standard implementieren und durch ihre freie Verfügbarkeit überall auf der Welt ständig weiter entwickelt werden, bedeutet also, dass auch onion.net überall auf der Welt ständig weiter entwickelt wird. Hat eine neue Implemantation die Marktreife erlangt und wird vom W3C als Empfehlung heraus gegeben, ist es mit relativ wenig Aufwand möglich, die neue Implementation in onion.net einzubinden und deren Vorteile zu nutzen.

Weitere Vorteile von XML Schema

Die Verwendung von einheitlichen "Grammatik-Regeln" in Form von XML Schema beugt auch der Inkonsistenz der Daten vor. Wird nachträglich etwas an einem Schema verändert, wird es gegen alle bereits vorhandenen Instanzen des Schemas validiert. Würden die Änderungen dazu führen, dass bereits vorhandene Objekte im System nicht mehr gültig sind, können sie nicht gespeichert werden. Es gibt keine Inkonsistenzen.

XML Schema an einem Beispiel

Man stelle sich vor, wir haben in unserem Schema für einen XML-Dokumenttyp "page" definiert, dass als erstes ein Titel angegeben werden muss und als zweites Element ein Fließtext angegeben werden kann.

Nun haben wir schon einige Seiten in dieser Form in onion.net angelegt (also Instanzen des XML-Dokumenttyps "page" erzeugt) und stellen plötzlich fest, dass wir gerne unter dem Fließtext noch einen Teaser anlegen möchten.

Da Teaser ja im Allgemeinen eine andere Form haben, als Fließtext, ist hierfür ein eigenes Element im XML Schema sinnvoll. Wir fügen nun dieses Element in das bestehende "page"-Schema ein und müssen feststellen, dass wir es nicht abspeichern können.

Warum? Wenn wir den Typen speichern würden mit der Regel, dass drei Elemente darin enthalten sein müssen (Titel, Fließtext, Teaser), würden die bereits bestehenden Seiten gegen diese Regel verstoßen, da sie ja nur die Elemente Titel und Fließtext beinhalten.

Ändert man die Regel jedoch so ab, dass ein Teaser optional angelegt werden kann, aber eben nicht vorhanden sein muss, verstößt auch keine der vorhandenen Seiten mehr gegen unserer Dokumenttyp-Definition. Wir haben den Typen erfolgreich (und konsistent) erweitert.