Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

22.10.1999 - 

Sprachunabhängige Schnittstellen

Standards fördern die Entwicklung von XML-Tools

MÜNCHEN (ws) - Beim Design der Extensible Markup Language (XML) ging es darum, eine "Light"-Variante der Standard Generalized Markup Language (SGML) zu definieren. Der reduzierte Funktionsumfang sollte die Programmierung von XML-fähigen Anwendungen vereinfachen. Weiteren Auftrieb verleihen XML nun standardisierte Programmier-Schnittstellen, die die Verarbeitung strukturierter Dokumente zusätzlich erleichtern.

Anwender, die Dokumente verstärkt im XML-Format speichern wollen, stellen sich vielleicht die Frage, welchen Nutzen sie von Programmierstandards für XML haben sollen - vor allem, wenn sie im Moment noch keinen Grund zu eigener Programmierung sehen. Unmittelbar profitieren Anwender und Hersteller von der reduzierten SGML-Komplexität und einheitlichen APIs für Parser, weil Standardprodukte schneller und preiswerter auf den Markt gebracht werden können. Angesichts der breiten Akzeptanz der Markup-Sprache in der Software-Industrie zeichnet sich bereits ein reiches Angebot an Editoren, Browsern, Konvertierungswerkzeugen oder XML-fähigen Datenbanken ab. Darin unterscheidet sich XML von SGML, wo die zu ihrer Verarbeitung notwendige Software relativ selten und zudem teuer ist.

Dennoch wird sich bei Anwendern genügend Bedarf für Eigenentwicklungen ergeben, die dank Standards dann erheblich leichter fallen. Die Nutzung von XML wird vor allem dazu führen, daß Texte nicht nur mit Strukturinformationen wie "Kapitel" oder "Überschrift" versehen, sondern um viele semantische Auszeichnungen angereichert werden. Derartig markierte Inhalte eröffnen gerade für Web-Dienste neue Möglichkeiten. Beispielsweise könnte der Anbieter eines Online-Lexikons in allen Artikeln Berufsangaben nach dem Muster auszeichnen. Erhalten zudem Geburts- und Sterbedaten aller erwähnten Personen ebenfalls ihre eigenen Tags, dann könnten sich Nutzer dieses Dienstes über eine entsprechende Funktion alle schreibenden Zeitgenossen von Heinrich Heine anzeigen lassen.

Eine solche intelligente Auswertung von strukturierten Dokumenten kommt in Unternehmen vor allem dem Wissens-Management zugute. Allerdings wird sie kaum auf Grundlage von Standardprodukten stattfinden können, sondern meist individueller Programme bedürfen, die auf die benutzten Markierungen zugeschnitten sind.

Eine weitere Notwendigkeit für eigene Entwicklungen ergibt sich aus der Nutzung von XML für die medienneutrale Speicherung von Informationen. Je nach Weiterverwertung des Content für das Web, CD-ROM oder Print müssen die Daten anschließend in verschiedene Formate überführt werden.

Eine zentrale Rolle bei der Bearbeitung von XML-Dateien kommt Parsern zu. Sie überprüfen Dokumente auf ihre Gültigkeit oder Wohlgeformtheit und bieten Anwendungsprogrammen Schnittstellen für den Zugriff auf alle Textbestandteile. Die Entwicklung von Parsern wird unter XML durch das erforderliche "Full Markup" vereinfacht: Im Gegensatz zu SGML oder HTML muß jedes öffnende Tag auch wieder geschlossen werden.

Die XML-Euphorie der Hersteller und der im Vergleich zu SGML geringere Aufwand haben eine ganze Reihe solcher Programme hervorgebracht, die sich einfach in eigene Anwendungen einbinden lassen.

Eine Übersicht findet sich unter http://www.xml.com/pub/Guide/ XML_Parsers. Besonders die großen XML-Befürworter wie Microsoft (http://msdn.microsoft.com/ xml/IE4/jparser.asp), IBM (http:// www.alphaworks.ibm.com/tech/ xml4j) oder Sun (http://developer. java.sun.com/developer/products/ xml) bieten XML-Parser kostenlos an. Die hier genannten Beispiele sind in Java geschrieben. Dies ist ein Indiz dafür, daß sich Suns Programmiersprache aufgrund ihrer guten Portierbarkeit mit der ebenfalls plattformunabhängigen XML gut ergänzt.

Parser von Drittanbietern entbinden Anwendungsentwickler von der lästigen Aufgabe, Dokumente nach Markierungen, Kommentaren sowie Processing Instructions zu durchsuchen oder Entities aufzulösen.

Statt dessen können sie zur Manipulation von XML-Dokumenten auf höherer Abstraktionsebene über APIs auf die Daten zugreifen. Dieser Komfort ginge allerdings schnell verloren, wenn jeder Parser andere Schnittstellen aufweisen würde. In diesem Fall müßten beim Wechsel auf ein anderes Produkt ein neues API gelernt und bestehende Programme angepaßt werden.

Um dies zu verhindern und die Akzeptanz von XML zu beschleunigen, schlugen eine Reihe von Herstellern das Document Object Model (DOM) als Standard vor. DOM Level 1 wurde schon vor einiger Zeit vom W3-Consortium für XML und HTML als Empfehlung verabschiedet, Level 2 befindet sich im Stadium des Entwurfs (Working Draft).

DOM dient dazu, Anwendungsprogrammen alle Dokumentdaten über eine logische Baumstruktur zugänglich zu machen. Der Dokumentenbaum stellt die Abhängigkeiten von Markierungen untereinander in einer hierarchischen Form dar (siehe Grafik auf Seite 17). Damit Programme Textabschnitte unabhängig von ihrer Position direkt auslesen und manipulieren können, erfordert dieser Ansatz, daß das gesamte geparste Dokument im Speicher gehalten wird.

DOM definiert unabhängig von bestimmten Programmiersprachen eine Reihe von Funktionen, die eine beliebige Navigation in Dokumentbäumen erlauben. So könnte beispielsweise eine Anwendung über einen einfachen Methodenaufruf von Kapitelüberschrift zu Kapitelüberschrift springen. Weitere Funktionen erlauben das Verschieben, Einfügen oder Löschen von Dokumentenabschnitten.

Allgemein zugängliche Parser mit DOM-Unterstützung beschleunigen die Ambitionen von Herstellern, ihre Produkte XML-fähig zu machen. Besonders eifrig zeigen sich dabei die Datenbankanbieter. Das DOM bietet sich an, um XML-Dokumente für die Speicherung in ihre Textbestandteile zu zerlegen, anstatt sie einfach als Character Large Objects (Clobs) abzulegen. Jeder Knoten des Dokumentenbaums findet sich dann in einem eigenen Datensatz wieder, wobei die Informationen zur Dokumentenhierarchie bewahrt werden müssen. Dies hat den Vorteil, daß sich einzelne Abschnitte von Autoren bearbeiten lassen, ohne daß dafür das gesamte Dokument für alle anderen Benutzer gesperrt werden muß.

Neben DOM, das den wahlfreien Zugriff auf Abschnitte eines Dokumentenbaumes erlaubt, existiert mit dem Simple API (SAX) eine weitere Schnittstelle für das maschinelle Bearbeiten von XML-Texten. Wie der Name schon verheißt, sind die Möglichkeiten von SAX verglichen mit jenen von DOM eingeschränkt. Allerdings konkurriert SAX nicht mit dem Document Object Model, sondern ist für den sequentiellen Zugriff auf Dokumente ausgelegt. Der Programmierer schreibt dabei Funktionen, die anläßlich bestimmter Ereignisse aufgerufen werden. Zu diesen Events zählen beispielsweise das Auftreten eines Start- oder Ende-Tags, das Erreichen des Dokumentenendes oder das Vorkommen eines vorher festgelegten Textes. Der Programmdurchlauf vom Anfang bis zum Ende des Dokuments erfordert nicht, daß dieses wie bei der Erstellung eines Baumes vollständig im Speicher gehalten werden muß.

Im Unterschied zu DOM kann bei SAX in vielen Fällen ein Arbeitsschritt ausreichen, während bei dem Document Object Model grundsätzlich zuerst der Baum erstellt wird, bevor mit den Daten gearbeitet werden kann. Allerdings ist bei SAX die Vorausschau auf kommende Elemente nicht möglich. Fragen wie "Ist das aktuelle Element der letzte Knoten des darüberliegenden Elternknotens?" lassen sich im Gegensatz zu DOM bei der sequentiellen Verarbeitung nicht beantworten.

De-facto-Standard für XML-Parser

SAX ist anders als DOM nicht von einem Gremium wie W3C oder IETF abgesegnet, hat sich aber bereits als De-facto-Standard etabliert. Er ging aus einer Diskussion in der Mailing-Liste XML-DEV (http://www.xmlinfo.com/ lists/_xml-dev) hervor, maßgeblichen Anteil an der Definition der Schnittstellen hatte David Magginson von der kanadischen Firma Microstar. Auf seiner Website (http://www.megginson.com/ SAX) finden sich daher alle wesentlichen Informationen über SAX. Fast alle gängigen XML-Parser unterstützen SAX, außerdem liegen schon Bibliotheken und Module für Java, Python oder Perl vor.

Neben diesen Programmier-Schnittstellen wollen einige Hersteller eine Abfragesprache für XML-Dokumente etablieren. Zu den aktiven Förderern der XML Query Language zählen unter anderem Microsoft, Oracle und die Software AG. Das Darmstädter Softwarehaus engagierte dafür den XQL-Initiator und renommierten XML-Experten Jonathan Robie.

XQL wurde bewußt einfach gehalten und eignet sich nicht nur für die Nutzung innerhalb von Programmen, sondern auch für den interaktiven Betrieb oder in URLs. Die Syntax der Sprache lehnt sich weitgehend an die Suchmuster der Extensible Style Lan- guage (XSL) an. Beispielsweise würde /buch/einleitung/autor alle Dokumententeile zurückgeben, die innerhalb der Einleitung des Buches mit markiert wurden. Mittlerweile existieren eine Reihe von XQL-Engines, darunter eine Java-Implementierung der deutschen W3C-Repräsentanz GMD in Darmstadt (http://xml.darmstadt.gmd.de/xql). Letztere unterstützt auch das DOM und umfaßt einen Indexer sowie einen Query-Optimizer. Eine Übersicht über XQL-Software findet sich unter http://metalab.unc.edu/xql.