Informatik-Lexikon

X

XML - eXtensible Markup Language
XML-Schema
XML-Strukturaquisition

XML

Kurzinfo Die eXtensible Markup Language (XML) findet zunehmend starke Beachtung. In den letzten Jahren gewann neben Java kein anderes Thema in so kurzer Zeit an Bedeutung. XML basiert auf der Standard Generalized Markup Language (SGML), die 1986 zum ISO-Standard avancierte.

 

Erläuterung

Ein Dokument (im weitesten Sinne) besteht aus Inhalt, Struktur und Layout. Die Ausgabe eines Dokuments auf unterschiedlichen Medien darf nicht zum Informationsverlust führen, während sich das Aussehen je nach Medium ändern kann. SGML basiert auf dem Konzept der Trennung des Informationsgehalts eines Dokuments von seinem Erscheinen. Mit Hilfe von Markierungen („markups") werden die Struktur und Daten eines Dokuments beschrieben. Diese Beschreibung wird mit Marken (auch Tag genannt) in das Dokument eingebettet. Die Interpretation und Verarbeitung der Strukturinformationen eines Dokuments liegt im Ermessen des verarbeitenden Programms. Jede Marke markiert den Anfang und das Ende eines Elements.

SGML schreibt keine feste Menge von Elementen vor. Sie beschreibt eher einen Weg, wie Elemente definiert werden und was die Beziehung der definierten Elemente in einer bestimmten Dokumentenklasse ist.

Eine Menge von SGML-Elementen, die für die Lösung eines bestimmten Problems (z.B. eine Vorlage für Berichte) definiert sind, heißt eine SGML-Anwendung. Jede SGML-Anwendung wird durch eine Document Type Definition (DTD) beschrieben, die die Grammatik dieser Anwendung vorschreibt.

Wenn ein Dokument der DTD einer SGML-Anwendung genügt, ist es eine Instanz dieser Anwendung.

XML

In den ersten Jahren des WWW konnte die HyperText Markup Language (HTML), eine SGML-Anwendung, ihre Aufgabe als Seitenbeschreibungssprache erfüllen. Im Laufe der Zeit erwies sich aber HTML als zu restriktiv und unflexibel. Im Web existieren unterschiedliche Angebote unter anderem für Datenbanken, Warenhäuser, Dienstleistungen, von denen jedes seine eigene Datenbeschreibungssprache hat. Eine neue Sprache war notwendig, die weder die HTML-Einschränkungen, noch die SGML-Komplexität hatte. Die Lösung sah das WWW-Konsortium (W3C) in der Definition einer Untermenge von SGML, welche die selten benutzten Elemente von SGML nicht beinhaltet und gleichzeitig flexibel genug ist, um den unterschiedlichen Anforderungen des Webs wie z.B. Heterogenität, Internationalisierung, Erweiterbarkeit gerecht zu werden.

Mit diesem Ziel stellte das W3C im November 1996 den Entwurf des XML-Standards vor [3]. In der Einführung ist zu lesen:

„XML describes a class of data objects stored on computers and partially describes the behavior of programs which process these objects. Such objects are called XML documents. XML is an application profile or restricted form of SGML".

Die Version 1.0 wurde im Februar 1998 vorgelegt. Als Ziele werden darin u.a. einfache Benutzung im Internet, Unterstützung unterschiedlicher Anwendungen, Kompatibilität mit SGML, Einfachheit sowohl beim Erzeugen als auch bei der Verarbeitung, minimale Zahl an optionalen Eigenschaften und Lesbarkeit genannt.

Ein XML-Dokument besteht aus drei Teilen: dem Prolog, dem Elemente und „Misc". Der letztere beinhaltet Kommentare und Verarbeitungsanweisungen, die von dem XML-Parser an die Anwendung weitergereicht werden. Im Prologteil werden XML-Deklarationen, der Dokumenttyp und andere Charakteristika des Dokuments beschrieben.

Der Prolog kann auch leer sein. Die XML-Deklaration enthält Informationen über die Version und den Zeichensatz sowie die Angabe, ob ein Dokument standalone ist.

Beispiel 1 zeigt einen einfachen Prolog:

Beispiel 1:

< ?xml version = „1.0" encoding = „UTF-8"? >
< !DOCTYPE mail SYSTEM „http://server.de/mail.dtd" >

Es handelt sich hier um ein XML-Dokument der Version 1.0, das die Zeichenkodierung „UTF-8" verwendet. Das Dokument ist vom Typ „mail", und dessen DTD ist im Dokument namens „mail.dtd" auf dem Rechner „server.de" zu finden. XML ist Unicodefähig. Während in HTML die Groß-/Kleinschreibung bei Elementnamen keine Rolle spielt (oder sie wird von den verarbeitenden Programmen geduldet), darf man in XML diese nicht ignorieren.

Im Beispiel 1 wurde ein XML-Dokument vorgestellt, das eine externe DTD hat. Die DTD kann auch im Dokument enthalten sein. In diesem Fall spricht man von einer internen DTD.

XML erlaubt die flexible Organisation des Dokumentinhalts. Die Flexibilität wird mit Hilfe von Entitäten erreicht. Sie ermöglichen das Aufbrechen des Dokuments in mehrere Objekte, die getrennt gespeichert werden können. So erreicht man einen gewissen Grad von Wiederverwendbarkeit und/oder Verteiltheit. Im einfachen Fall ist eine Entität eine Abkürzung, welche Entitätsname genannt wird. Der Text, auf den sich die Abkürzung bezieht, heißt Entitätsinhalt. Eine Entität kann (so wie die DTD) intern oder extern deklariert werden. Eine Entität, die als Abkürzung eines XML-Elements verwendet wird, heißt Parameterentität. Sie kann nur in der DTD eingesetzt werden.

Wie in SGML können Elemente in XML verschachtelt sein. Die wichtigste Regel ist, daß ein Element andere Elemente umschließen muß. Diese und einige andere Regeln bilden die Wohlgeformtheitsbeschränkungen. Ein XML-Dokument ist wohlgeformt, wenn es allen diesen Beschränkungsregeln genügt. Ist ein Dokument wohlgeformt, und genügt es der Grammatik einer DTD, ist es ein gültiges XML-Dokument. Beispiel 2 zeigt ein gültiges XML-Dokument mit der zugehörigen DTD.

Beispiel 2:

„organisation. dtd"
< !ELEMENT organisation (name, mail + ) >
< !ELEMENT name (#PCDATA) >
< !ELEMENT mail (#PCDATA) >

„organisation. xml"
< ?xml version = „1.0" encoding = „UTF-8"? >
< !DOCTYPE organisation SYSTEM „organisation.dtd" >
< name > World Wide Web Consortium
< mail > w3c@w3.org

Ein XML-Prozessor muß die Verletzung der Wohlgeformtheitsbeschränkungen feststellen können.

Namensräume

Um Elemente der DTDs wiederverwenden zu können und sie nicht immer wieder definieren zu müssen, definiert XML den Namensraum. Mit Hilfe von Namensräumen kann man unternehmensweit einheitliche (evtl. vorgeschriebene) Elemente einführen. Mit

< elem xmlns:gi = "http://gi-ev.de/schema" >

wird z.B. ein neuer Namensraum (gi) bekannt gegeben, der den angegebenen URL vertritt. Nun kann man unter Eingabe von „gi:" auf die in dem angegebenen Dokument definierten Elemente und Attribute zugreifen. Es ist zu beachten, daß der Zugriff nur innerhalb von elem gültig ist. Mit

< gi:article band = "22" heft = "6" autor = "farsi"/ >

wird z.B. dieser Artikel referenziert, vorausgesetzt, es gibt ein Dokument unter dem angegebenen URL, das das Element „article" mit den angegebenen Attributen enthält.

XLink, XPointer

Die Möglichkeit, Dokumente mit Hilfe von Verweisen (Links) untereinander zu vernetzen, ist bereits von HTML bekannt. Diese Möglichkeit bietet auch XML. Es liegen dem W3C zwei Entwürfe vor, nämlich XML Linking Language (XLink) und XML Pointer Language (XPointer) (beide vom Juli 1999). XLink definiert zwei Typen von Verweisen, den einfachen und den erweiterten Verweis. Der einfache Link entspricht dem von HTML. Mit einem erweiterten Link kann ein Verweis zwischen zwei Ressourcen errichtet werden, ohne daß eine von ihnen irgend etwas über diese Relation weiß. In diesem Fall existiert der Link in einer dritten Ressource. Man kann außerdem einen Link zwischen mehr als nur zwei Dokumenten definieren. Einrichten von Links von Medien oder Dateien aus, die selbst nicht beschreibbar sind (z.B. CD-Roms), sind ebenso möglich.

Mit XPointer kann auf eine Stelle oder einen Bereich innerhalb eines XML-Dokuments verwiesen werden. Absolute Adressierung ist mit Hilfe von vordefinierten Schlüsselwörtern möglich. Ist mit Hilfe eines der Schlüsselwörter der Ausgangspunkt eines Verweises festgestellt, kann man mit relativen Angaben auf beliebige Stellen eines Dokuments verweisen. Mit http://gi-ev.de/#root().child(2, P) wird z.B. der zweite mit <P>-Marke definierte Abschnitt in der Homepage der GI referenziert.

XSL

XML ist eine Strukturbeschreibungssprache und kann u.a. zum Datenaustausch in heterogenen Umgebungen verwendet werden. Aber was ist mit der Darstellung? Im Gegensatz zur HTML beinhaltet ein XML-Dokument keine Informationen, wie seine Daten dargestellt werden sollen. Dies wird mit eXtensible Stylesheet Language (XSL) bewerkstelligt. Mit XSL werden Stilvorlagen für XML-Dokumente beschrieben, um sie zwecks der Darstellung im Web in HTML umzuwandeln oder dem bearbeitenden Programm die Darstellungregeln vorzuschreiben. Um dies zu erreichen, führt ein XML-Stylesheet-Prozessor einen zweistufigen Prozeß durch. In der ersten Phase (tree transformation) wird ein Ergebnisbaum von dem Ausgangsdokument erzeugt, und in der zweiten Phase (formatting) wird der Ergebnisbaum interpretiert, um eine formatierte Präsentation für Bildschirm, Papier, Sprache oder ein anderes Medium zu erzeugen.

Weitergehende Arbeiten, Projekte

Zahlreiche Arbeiten verwenden gegenwärtig XML als Basis. Neben Industrieprojekten zählen dazu auch Projekte beim W3C. Hier werden nur einige von ihnen erwähnt:

  • XML-Dokumente liegen bekanntlich in Textform vor. Eine Anwendung, die ein XML-Dokument bearbeiten will, muß zuerst dieses analysieren und den Inhalt des Dokuments in eine Baumstruktur umwandeln. Um eine einheitliche Sicht auf XML-Dokumente zu haben, hat das W3C das Document Object Model (DOM, [2]) spezifiziert. DOM ist eine plattform- und sprachunabhängige Schnittstelle, die Programmen einen dynamischen Zugriff auf Inhalt und Struktur der Dokumente ermöglicht.
  • Die Synchronized Multimedia Integration Language (SMIL, [4]) soll die Integration einer Menge von „unabhängigen" Multimediaobjekten in eine synchronisierte Multimediapräsentation erlauben.
  • Mit dem Resource Description Framework (RDF [5]) versucht W3C, ein Rahmenwerk zur Bearbeitung von Metadaten zur Verfügung zu stellen. RDF unterstützt die Interoperabilität zwischen Anwendungen, die maschinenverständliche Informationen über das Internet austauschen.
  • Bei Prescod u. Goldfarb [1] sind weitere Beispiele angegeben, wo XML in größeren Projekten Einsatz findet: Von webbasierten Auktionen bis personalisierten Web-Seiten für Vielflieger.

Fazit

XML unterstützt den Austausch von Daten zwischen Anwendungen in offenen heterogenen Systemen. Die Standardisierung des Sprachumfangs ermöglicht die Interoperabilität der Programme verschiedener Anbieter. Es gibt mittlerweile viele z. T. frei verfügbare Programmbibliotheken für das Parsen, Konvertieren und Darstellen von XML-Dokumenten. In diesem Artikel konnte auf einige Aspekte von XML und den Entwicklungstand nicht eingegangen werden. Weitere Informationen sind bei Prescod u. Goldfarb [1], Mintert u. Behme [6], Fachzeitschriften und auf den W3C-Seiten im WWW zu entnehmen.

Danksagung

Der Autor dankt Kurt Geihs und Wolfgang Putz für ihre Kommentare zu diesem Beitrag.

                   Artikelanfang  Seitenanfang

Literatur

  1. Prescod, P., Goldfarb, C.: The XML Handbook. Prentice-Hall International 1998
  2. W3Consortium. Document Object Model,
    www.w3.org/DOM/, December 1998
  3. W3Consortium. EXtensible Markup Language,
    www.w3.org/TR/REC-xml, February 1998
  4. W3Consortium. Synchronized Multimedia Integration Language,
    www.w3.org/TR/REC-smil/, June 1998
  5. W3Consortium. Resource description framework,
    www.w3.org/rdf, March 1999
  6. Mintert, S., Behme H.: XML in der Praxis. Addison-Wesley 1998
     

Autor & Copyright

Reza Farsi
Verteilte Systeme und Betriebssysteme,
Johann Wolfgang Goethe-Universität Frankfurt
farsi@cs.unifrankfurt.de

© 1999 Informatik Spektrum, Springer-Verlag Berlin Heidelberg

                   Artikelanfang  Seitenanfang

XML-Schema

Kurzinfo XML hat sich als Sprache zur Definition von Dokumenten für den universellen Datenaustausch etabliert. XML-Schema ermöglicht ausgefeilte Definitionen für XML-Dokumente und hat beste Chancen, die bisher eingesetzte DTD abzulösen. Neben einer allgemeinen Einführung geht dieser Beitrag auch auf verfügbare Produkte und neue Möglichkeiten der objektorientierten Softwareentwicklung mit XML-Schema ein.

 

Erläuterung

Das World Wide Web Consortium (W3C) hat die Spezifikation von XML-Schema im Mai 2001 mit dem Status „Recommendation " versehen und somit nach einem dreijährigen Entwicklungsprozess verabschiedet [14]. Ein XML-Schema definiert ähnlich wie die DTD (Document Type Definition) Regeln für die Syntax und die Struktur einer Klasse von XML-Dokumenten [12].

Die DTD ist Teil der XML-Spezifikation. Es hat sich jedoch herausgestellt, dass die DTD Schwächen aufweist, die zur Entwicklung von XML-Schema geführt haben. Die wichtigsten Verbesserungen sind:

  • Jedes XML-Schema ist selbst ein XML-Dokument, sodass im Gegensatz zur DTD keine spezielle Syntax verwendet wird, die separate Werkzeuge zur Verarbeitung erfordert. Insbesondere lässt sich jedes XML-Schema wiederum durch ein XML-Schema validieren, ohne dass eine weitere Metaebene benötigt wird.
  • Auch komplexe Integritätsbedingungen sind formulierbar.
  • XML-Schema enthält eine große Zahl vordefinierter Datentypen und ermöglicht die Definition von eigenen Datentypen, wodurch eine Typprüfung möglich wird.
  • Bei Datentypen werden Vererbung und Substitution unterstützt.
  • Nullwerte sind, wie bei Referenzen und in Datenbanken üblich, darstellbar.
  • Das Modularisieren und Wiederverwenden von XML-Schemata ist möglich.
  • Benennungskonflikte können durch Verwendung von XML-Namensräumen vermieden werden.

Beispiel
 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 3   <xsd:complexType name="PersonTyp" abstract="true">
 4     <xsd:sequence>
 5       <xsd:element name="Vorname" type="xsd:string" maxOccurs="3"/>
 6       <xsd:element name="Name" type="xsd:string"/>
 7       <xsd:element name="Geburtsdatum" type="xsd:date"/>
 8     </xsd:sequence>
 9   </xsd:complexType>
10   <xsd:complexType name="MitarbeiterTyp">
11     <xsd:complexContent>
12       <xsd:extension base="PersonTyp">
13         <xsd:sequence>
14           <xsd:element name="Gehalt">
15             <xsd:simpleType>
16               <xsd:restriction base="xsd:float">
17                 <xsd:minInclusive value="10000"/>
18               </xsd:restriction>
19             </xsd:simpleType>
20           </xsd:element>
21         </xsd:sequence>
22       </xsd:extension>
23     </xsd:complexContent>
24   </xsd:complexType>
25   <xsd:element name="Unternehmen">
26     <xsd:complexType>
27       <xsd:sequence>
28         <xsd:element name="Mitarbeiter" type="MitarbeiterTyp"
29           maxOccurs="unbounded"/>
30       </xsd:sequence>
31     </xsd:complexType>
32   </xsd:element>
33 </xsd:schema>

Abb. 1. Beispiel für ein XML-Schema.

Einige dieser Besonderheiten sollen anhand des Beispiels in Abb.1 erläutert werden. In Zeile 2 wird zunächst der Namensraum für alle Schlüsselworte festgelegt, die im Folgenden durch das Präfix xsd kenntlich gemacht werden. Der Datentyp PersonTyp wird in Zeile 3 als abstrakt definiert, kann also nicht für Element- oder Attributdeklarationen verwendet werden. Das Subelement Vorname kann maximal dreimal vorkommen (Zeile 5) .Geburtsdatum ist mit dem in XML-Schema vordefinierten Datentyp date deklariert. In Zeile 12 wird PersonTyp als Supertyp für MitarbeiterTyp festgelegt, d.h., MitarbeiterTyp erbt alle Elemente und Attribute von PersonTyp und fügt ihm das Element Gehalt hinzu. Gehalt besitzt als Datentyp eine Dezimalzahl, die größer oder gleich 10.000 sein muss. Schließlich enthält das Element Unternehmen in Zeile 28 eine Referenz auf das Element Mitarbeiter des Datentyps MitarbeiterTyp das beliebig oft vorkommen kann.

Ein Beispiel für ein zum Schema passendes XML-Dokument ist in Abb. 2 enthalten.
 

<?xml version="1.0" encoding="UTF-8"?>
<Unternehmen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="Beispiel.xsd">
 <Mitarbeiter>
  <Vorname>Hagen</Vorname>
  <Vorname>Dieter</Vorname>
  <Name>Becker</Name>
  <Geburtsdatum>1967-08-13</Geburtsdatum>
  <Gehalt>39512.34</Gehalt>
 </Mitarbeiter>
 <Mitarbeiter>
  <Vorname>Jutta</Vorname>
  <Name>Stehl</Name>
  <Geburtsdatum>1976-09-11</Geburtsdatum>
  <Gehalt>42500.34</Gehalt>
 </Mitarbeiter>
</Unternehmen>

Abb. 2. Beispiel für ein zum Schema in Abb. 1 passendes XML-Dokument

Verfügbare Produkte

Das W3C hat neben der Spezifikation [14] auch eine Einführung in XML-Schema mit zahlreichen Beispielen veröffentlicht [7].Es gibt bereits ausgereifte XML-Schema-Editoren (beispielsweise XML Spy Suite [1] und Turbo XML [13]), welche die Erstellung von XML-Schemata durch geeignete Benutzeroberflächen stark vereinfachen und die syntaktische Korrektheit der erstellten XML-Schemata sicherstellen. Die Schemagültigkeit kann aber auch mittels frei verfügbarer Validatoren kontrolliert werden. Soll dies innerhalb selbst entwickelter Programme erfolgen, übernehmen validierende Parser (z.B. Apache Xerces [2]) diese Aufgabe.

Eine Produktübersicht für XML-Schema ist unter www.wifo.uni-mannheim.de/xml-schema/ zu finden.

Die Verbreitung von XML-Schema nimmt ständig zu. Schema-Repositorys, deren wichtigste Vertreter XML.org [15] und Microsoft BizTalk [8] sind, enthalten wiederverwendbare XML-Schemata für bestimmte Anwendungsbereiche. Auch die Initiative ebXML [4] benutzt XML-Schemata zur Definition ihrer Standards.

Ein interessanter Aspekt im Zusammenhang mit der objektorientierten Modellierung von Systemen ist, dass sich jedes XML-Schema (und sogar die komplette Syntax von XML-Schema) als UML-Klassendiagramm darstellen lässt. CASE-Tools, welche die XML-Metadata-Interchange-Spezifikation (XMI [9]) unterstützen, können automatisch aus einem UML-Klassendiagramm das zugehörige XML-Schema erzeugen. Und auch der umgekehrte Vorgang – das Reverse Engineering – ist möglich.

Objektorientierte Softwareentwicklung

Auch für die objektorientierte Softwareentwicklung bietet XML-Schema interessante Möglichkeiten, wobei speziell die Programmiersprache Java in Betracht kommt. Beispielsweise besitzen viele der in XML-Schema vordefinierten Datentypen direkte Entsprechungen in Java [3].Darüber hinaus sind sowohl XML als auch Java plattformunabhängig konzipiert.

Der wichtigste Einsatzbereich von XML-Schema bei der objektorientierten Softwareentwicklung ist derzeit das XML-Data-Binding. Dabei werden XML-Schemata durch einen Schema-Compiler automatisch in die Klassen einer objektorientierten Programmiersprache übersetzt. Im Gegensatz dazu muss bei Verwendung einer DTD in einem manuell zu erstellenden XML-Dokument, dem sog. Binding-Schema, die mangelnde Ausdrucksfähigkeit der DTD aufwändig ausgeglichen werden.

Ein XML-Data-Binding-Framework stellt Methoden zum Zugriff und zur Manipulation der Attribut- und Elementwerte eines schemagültigen XML-Dokuments zur Verfügung und nimmt deren Validierung vor. Dieses Verfahren ist effizienter und einfacher als der Einsatz von SAX oder DOM [11].

Derzeit sind zahlreiche XML-Data-Binding-Frameworks in Entwicklung, dazu gehören insbesondere die Open-Source-Projekte Castor [6] und Zeus [5] sowie von Sun das Java API for XML Processing (JAXP) ab Version 1.2 [10].
 

Unternehmen unternehmen
   = Unternehmen.unmarshal(new FileReader ("Beispiel.xml"));
Enumeration mitarbeiter
   = unternehmen.enumerateMitarbeiter(); // leider keine Iteratoren
while (mitarbeiter.hasMoreElements()) {
 Mitarbeiter m = (Mitarbeiter) mitarbeiter.nextElement();
 for (int i = 0; i < m.getVornameCount(); ++i)
  out.print(m.getVorname(i) + "");
 String name = m.getName();
 Date geburtsdatum = m.getGeburtsdatum().toDate();
 float gehalt = m.getGehalt();
 out.println(name + ", "
  + DateFormat.getDateInstance().format (geburtsdatum) + ", "
  + gehalt);
}
// ... Daten modifizieren, z.B.
// unternehmen.getMitarbeiter(0).setGehalt(48000);
if (unternehmen.isValid())
 unternehmen.marshal(new FileWriter("Beispiel2.xml"));

Abb. 3. Java-Programmfragment zum XML-Data-Binding mit Castor

In Abb. 3 ist ein Ausschnitt aus einer Methode gezeigt, die alle Mitarbeiter-Elemente sowie Subelemente aus einem schemagültigen XML-Dokument ausliest und anzeigt. Mit geeigneten Methoden wird der Inhalt der einzelnen Mitarbeiter-Elemente ermittelt. Beim Element Vorname ist dabei zu beachten, dass es mehrfach auftreten kann. Auf ebenso einfache Weise können Elemente mittels Methodenaufruf geändert werden.

Ein XML-Data-Binding-Framework übernimmt die Validierungsregeln aus dem XML-Schema und generiert geeigneten Programmcode zur Validierung der zu bearbeitenden Daten. In eigenem Programmcode können entsprechende Prüfungen deshalb entfallen. Dadurch vereinfacht sich die Programmentwicklung, und die Programme sind später leichter zu warten. Im Beispiel wird das Gehalt eines Angestellten modifiziert und anschließend mit isValid geprüft, ob die neuen Daten zum Schema passen (s. Abb. 3) .Dabei müssen die Daten vor der Validierung nicht erst in einem XML-Dokument gespeichert werden.

Fazit

Aufgrund der Standardisierung durch das W3C nimmt der Einsatz von XML-Schema auf breiter Front zu. Dokumentiert wird dieser Trend durch bereits verfügbare sowie angekündigte Tools. Wie gezeigt, existieren für XML-Schema neben der eigentlichen Anwendung als Beschreibungssprache für XML-Dokumente auch interessante Einsatzgebiete bei der objektorientierten Softwareentwicklung. Dies lässt erwarten, dass XML und XML-Schema auch Eingang in zukünftige Programmierparadigmen finden werden.

                   Artikelanfang  Seitenanfang

Literatur

  1. Altova GmbH: XML Spy Suite. www.xmlspy.com
  2. Apache XML Project: Xerces – XML Parsers in Java and C++.
    http://xml.apache.org
  3. Biron, P. V., Malhotra, A.: XML Schema Part 2 – Datatypes. World Wide Web Consortium, Recommendation.
    www.w3.org/TR/xmlschema-2 (2001)
  4. ebXML.org: Electronic Business XML (ebXML).
    www.ebxml.org
  5. Enhydra.org: Zeus. http://zeus.enhydra.org/index.html
  6. ExoLab Group: Castor Project. http://castor.exolab.org
  7. Fallside, C.: XML Schema Part 0 – Primer. World Wide Web Consortium, Recommendation.
    www.w3.org/TR/xmlschema-0 (2001)
  8. Microsoft: BizTalk. www.biztalk.org
  9. OMG: XMI Production for XML Schema Specification.
    http://cgi.omg.org/docs/ptc/01-12-03.pdf (2001)
  10. Sun Microsystems: Java API for XML Processing (JAXP).
    http://java.sun.com/xml/jaxp (2002)
  11. Sun Microsystems: Java Architecture for XML Binding (JAXB) – Frequently Asked Questions.
    http://java.sun.com/xml/jaxb/faq.html (2001)
  12. Thompson, H. S., Beech, D., Maloney, M., Mendelsohn, N.: XML Schema Part 1 – Structures. World Wide Web Consortium, Recommendation.
    www.w3.org/TR/xmlschema-1 (2001)
  13. TIBCO Software Inc.: TIBCO TurboXML. www.tibco.com
  14. W3C: XML Schema. www.w3.org/XML/Schema
  15. XML.org: www.xml.org

Hinweis: Die URLs entsprechen dem Stand bei der Veröffentlichung des Artikels und werden nicht aktualisiert.

                   Artikelanfang  Seitenanfang

Autoren & Copyright
Matthias Hansch
McKinsey & Company,
Birkenwaldstraße 149,
70191 Stuttgart
matthias_hansch@mckinsey.com

Stefan Kuhlins
Universität Regensburg,
Lehrstuhl für Wirtschaftsinformatik IV,
Universitätsstraße 31,
93040 Regensburg
stefan.kuhlins@wiwi.uni-regensburg.de

Martin Schader
Universität Mannheim,
Lehrstuhl für Wirtschaftsinformatik III,
Schloss,
68131
Mannheim
mscha@wifo3.uni-mannheim.de

© 2002 Informatik Spektrum, Springer-Verlag Berlin Heidelberg

                   Artikelanfang  Seitenanfang

XML-Strukturakquisition

Kurzinfo Derzeit oft diskutierte Zukunftsszenarien wie das semantische Web oder der Einsatz von Datenbanktechnik in der Dokumentenwelt gehen stillschweigend von der Annahme aus, dass in den Dokumenten relevante strukturelle und inhaltliche Aspekte durch eine geeignete Form der Annotation explizit kenntlich gemacht sind.

 

Erläuterung

Diese Annotationsformalismen bezeichnet man als Markup-Sprachen, und XML ist der De-fac-to-Standard. Ist diese Annahme verletzt, so wird in der Regel eine direkte maschinelle Auswertung unmöglich. Taucht z.B. in einem E-Commerce-Angebot die Zahl 12.05 im Fließtext auf, so kann diese maschinell erst dann vernünftig interpretiert werden, wenn die semantische Rolle, etwa mit Hilfe von Tags der Form <Haltbarkeitsdatum> 12.05</Haltbarkeitsdatum>, explizit gemacht wurde. Weitere Tags müssen eindeutig erkennbar machen, auf welches Produkt sich die Angabe bezieht. Bei der Mehrzahl der existierenden und derzeit produzierten Dokumente sind die benötigten strukturellen Markierungen a priori nicht vorhanden. Da eine rein manuelle Akquisition der Strukturinformation aus Kostengründen nicht in Frage kommt, ist eine maschinelle Unterstützung notwendig. In diesem Schlagwortartikel gebe ich einen Überblick über Werkzeuge zur Durchführung einer XML-Strukturakquisition für vorhandene Dokumente.

Klassifikation von Formaten und Werkzeugen

Ein Blick auf den Schreibtisch, in das eigene Filesystem, in den vorliegenden Artikel, in das Web oder auf sonstige Dokumentensammlungen zeigt, dass heute noch sehr wenige Dokumente in XML vorliegen. Gründe dafür sind die Vorherrschaft von Druck auf Papier als Dokumentenformat, die noch mangelnde XML-Unterstützung von Microsoft-Office-Paketen sowie die Etablierung von HTML als Lingua franca des Web. Wenn man zunächst Papierdokumente außer Acht lässt, lassen sich die elektronischen Formate in folgende drei Gruppen einteilen:

  • deskriptive,
  • prozedurale und
  • präsentationale Formate.

Liegen Dokumente in einem deskriptiven Format vor, so ist bereits eine hierarchische, baumartige Struktur explizit ausgezeichnet, die den Aufbau eines Dokuments und seiner Teile beschreibt. Der rein textuelle Inhalt ist in Blättern des Baums zu finden. In SGML Ð der Urmutter der Markup-Sprachen Ð und bei dem daraus abgeleiteten, vereinfachten XML-Standard wird die entsprechende Markierung realisiert, indem Tags um die Textbausteine schachtelförmig angeordnet werden. Außerdem besteht die Möglichkeit, ein Dokument mit Hilfe so genannter Stylesheets in verschiedene Präsentationsformate zu transformieren. Beispiele für deskriptive Formate sind MathML, SCORM und TEI Ð in XML formulierte Standards aus den Bereichen Mathematik, E-Learning und Literatur.

Prozedurale Formate bestehen aus textuellem Inhalt plus expliziten Visualisierungsanweisungen, wie beispielsweise PostScript.

Präsentationale Formate kennen keine explizite Auszeichnung von Struktur oder Layout. Sofern diese Informationen nicht gänzlich fehlen sollen, werden sie mit Hilfe des Zeichensatzes umschrieben, mit dem auch der Inhalt verfasst ist. In E-Mails und Newsartikeln werden z.B. Listenelemente mit vorangestelltem Bindestrich oder Mehrspaltigkeit durch Leerzeichen angedeutet.

Ergänzend bleibt anzumerken, dass XML-basiert nicht zwangsweise mit deskriptiv gleichzusetzen ist. Die Reformulierung des HTML-Standards in XHTML1.0 beispielsweise erfolgte zwar aufbauend auf XML, bleibt jedoch weiterhin eine Mischform deskriptiver Struktur- und prozeduraler Layoutauszeichnung. Auch LATEX und die Formate aktueller Office-Applikationen besitzen teils prozedurale, teils deskriptive Elemente.

Um die reichhaltigen Anfrage-, Manipulations- und Weiterverarbeitungsmöglichkeiten deskriptiver Formate nutzen zu können, muss zum einen bei Werkzeugen zur Neuerstellung von Dokumenten eine XML-Anbindung realisiert, zum anderen der vorhandene Dokumentenbestand mittels geeigneter Formen der Strukturakquisition nach XML konvertiert werden. Die hierfür existierende Software lässt sich anhand der Ausgangsformate in drei Gruppen einteilen:

  • Werkzeuge zur Informationsextraktion (IE) aus präsentationalen Daten,
  • Document-Analysis and Understanding (DAU) gedruckter Dokumente,
  • Wrapper-Tools für die Strukturgewinnung aus (X)HTML.

Obwohl sich die Zielsetzung und auch die angewandten Techniken überschneiden, sind Softwaresysteme in drei weitgehend unabhängigen Forschungs-Communities entstanden.

Informationsextraktionssysteme

Während in Europa die Forschung zu Informationsextraktionssystemen auf Anwendungen im E-Commerce fokussiert, sieht man einigen amerikanischen Veröffentlichungen deutlich das dahinter stehende militärische Interesse an. In den zitierten Anwendungen werden z.B. in großen Sammlungen elektronischer Zeitungen Artikel über terroristische Aktivitäten automatisch lokalisiert und ausgewertet. Abstrakter gesprochen werden in Textkorpora informationstragende Muster zu speziellen Inhalten gesucht, mit dem Ziel, die vorgefundenen Informationen in ein Schema bzw. Datenmodell abzubilden oder die relevanten Textpassagen mit Struktur anzureichern. Zwei Sorten Regeln zum Lokalisieren von zweierlei Sorten der Informationsverpackung lassen sich unterscheiden: linguistische und delimiterorientierte Regeln. Ein ziviles Beispiel: Die Information Michael Schuhmacher gewinnt den Großen Preis von Brasilien vor seinem Bruder kann entweder - wie im Kursivteil dieses Satzes - natürlichsprachlich codiert sein oder tabellarisch:

Großer Preis von Brasilien:
1. Michael Schuhmacher
2. Ralf Schuhmacher

Um die gewünschten Informationen aus der natürlichsprachlichen Verpackung zu extrahieren, werden mit Hilfe linguistischer Regeln die Objekte der Verbalphrase GEWINNEN herausgelöst und die semantischen Beziehungen der Teilphrasen ermittelt.
Da die dazu notwendigen linguistischen Annotationen nicht explizit vorliegen, wird dazu ein Vorverarbeitungsschritt angestoßen. Bei diesem sog. Tagging wird versucht, mit Hilfe von Lexika, Heuristiken und statistischen Methoden jeder Wortform eine eindeutige lexikalische Kategorie zuzuordnen.

Mit Hilfe von Delimiter-Regeln hingegen werden Informationen aus der tabellarischen Verpackung extrahiert. Im obigen Beispiel stehen etwa die Namen der Akteure zwischen der Platzierungsnummer - einer Ziffer gefolgt von einem Punkt sowie einem Leerzeichen - und einem Zeilenumbruch.

Delimiter-Regeln lassen sich überall dort einsetzen, wo bestimmte Zeichenfolgen auf ein relevantes Textstück hinweisen. Aufgrund des nur schwach strukturierten Aufbaus der im Informationsextraktionsbereich behandelten Beispielkorpora werden dort aber hauptsächlich linguistische Regeln eingesetzt. Die Regeln werden mit verschiedenen Formalismen spezifiziert: diverse Automaten- und Transducertypen, Grammatiken und Muster kommen in Frage, zum Teil angereichert mit Formalismen zur Behandlung von Unschärfen. Um einen höheren Automatisierungsgrad für die zeitraubende manuelle Codierung dieser Regeln zu erreichen, werden Techniken der KI - verschiedene Algorithmen des maschinellen Lernens - eingesetzt.

DAU-Systeme

In Hollywood werden Filme über Hollywood gedreht und auch in der Berufsgruppe der Forscher findet man selbstbezügliches Denken. Ein oft anzutreffendes Anwendungsbeispiel aus dem Bereich der DAU-Systeme ist der Aufbau eines Information-Retrieval-Systems über einer Sammlung gedruckter Publikationen. Die Rekonstruktion eines prozeduralen Formats aus einem Papierdokument bezeichnet man als Document-Analysis. Für diesen ersten Schritt existieren heute bereits kommerzielle Produkte für den Massenmarkt, sog. OCR-Software.

Streng genommen bezeichnet „Optical Character Recognition" nur die Texterkennung. Da OCR-Systeme heute in der Regel auch Features wie Schriftgröße oder -schnitt erkennen, wird der Begriff oft auch in diesem erweiterten Sinn verwendet.

Im Allgemeinen ist das Ergebnis der Rekonstruktion noch mit Erkennungs- und Segmentierungsfehlern behaftet. Abhängig von einer Vielzahl von Eigenschaften des Ausgangsdokuments reicht das Spektrum von nahezu fehlerfrei bis zu komplett unbrauchbar.

Im zweiten Schritt - genannt Document-Understanding - werden den baumartig angeordneten Layoutobjekten semantische Strukturelemente zugeordnet. So umfassen für gewöhnlich die letzten Blöcke einer Publikation die Bibliographie, und die darin enthaltenen Subblöcke entsprechen den Einzelnen Literaturangaben. Die Baumstruktur des Layouts ermöglicht einen Einbezug der hierarchischen Beziehung in die Strukturierungsregeln sowie eine schrittweise Bottom-up- oder Top-down-Strukturanreicherung. Daneben werden auch die Regeltypen verwendet, die man in Informationsextraktionssystemen findet: linguistische Regeln und delimiterorientierte Regeln, die sich textuell angedeutete Strukturierung zu Nutze machen. In vielen DAU-Systemen werden die Regeln ebenfalls mit maschinellem Lernen trainiert.

Wrapper-Tools

Im Web gibt es eine Vielzahl an Sites, die unterschiedliche Informationen in immer das gleiche Layouttemplate verpacken. Das sind zum einen regelmäßig aufgefrischte Seiten wie Wetterberichte oder Börsenkurse und zum anderen dynamisch zu einer Anfrage generierte Webseiten, z.B. Rückgabemengen von Suchmaschinen oder E-Commerce-Angebote. Möchte man zu mehreren solchen Datenquellen eine einheitliche Schnittstelle schaffen, muss man die Informationen aus dem prozeduralen Layoutgewand auspacken und in ein deskriptives Strukturgewand einpacken. Systeme, die diese Transformation zur Laufzeit ausführen, nennt man Mediatorensysteme.

Neben solchen virtuell integrierten Systemen gibt es auch Systeme, die mehrere Quellen so vereinen, dass alle Anfragen innerhalb einer materialisierten Datenbank verarbeitet werden können. Im UNICO-Projekt der Siemens AG (University Industry Co-Operation) wird beispielsweise seit fünf Jahren ein universelles Datenbankmanagementsystem aufgebaut, das systematisch die Forschungsaktivitäten deutscher Hochschulen katalogisiert.

Dieses Projekt ist ein Beispiel dafür, dass es sich beim Reverse-Engineering von Datenbanken mittels Wrapper-Tools nicht um Datendiebstahl, sondern um einen De-facto-Standard des Datenaustausches handelt. Die Technologietransferstellen der Universitäten stellen bereitwillig Daten zur Verfügung, allerdings nicht in deskriptiven Formaten, sondern in Form von Forschungskatalogen und Web-Datenbanken, die mit einem DAU-System und Wrapper-Tools integriert werden.

Im Zusammenhang mit dem Boom, den das Web erlebt hat, ist das Gebiet der Wrapper-Tools in der Forschung intensiv bearbeitet worden. Zum Ausprobieren habe ich eine Liste von zehn Teams zusammengestellt, die gratis Software zur Verfügung stellen, die meisten davon sind auch Open Source:

Daneben gibt es mindestens ebenso viele kommerzielle Entwicklungen. Die meisten Wrapper-Tools arbeiten wie Informationsextraktions- und DAU-Systeme mit Lernalgorithmen, basieren allerdings fast ausschließlich auf Delimiter-Regeln. Für stark irreguläre Daten und sog. One-Shot-Aufgaben, wie man sie beim Aufbau eines universellen Datenbankmanagementsystems vorfindet, ist diese Architektur nicht sinnvoll. Besser dafür geeignet sind LAPIS, ein spezialisierter Editor oder WebL, eine Programmiersprache, die eigene Datentypen und Methoden für Crawling und Wrapping mitbringt.

Fast alle angeführten Wrapper-Tools sind in Java implementiert. Das ist ein Beispiel für den Gewinn bringenden Einsatz der mächtigen Klassenbibliothek von Java, insbesondere im Bereich der GUI-Entwicklung. Neben Wiederverwendung, Robustheit und Integration von Wrappern in ein Gesamtsystem ist Visualisierung eine der Hauptforschungsrichtungen in diesem Bereich.

                   Artikelanfang  Seitenanfang

Literatur

  1. Bry, F., Kraus, M., Olteanu, D., Schaffert, S.: Aktuelles Schlagwort / Semistrukturierte Daten. Informatik Spektrum 24(4), 230–233 (2001)
  2. Crespo, A., Jannink, J., Neuhold, E., Rys, M., Studer, R.: A survey of semi-automatic extraction and transformation. (Submitted for publication)
  3. Muslea, I.: Extraction patterns for information extraction tasks: a survey. AAAI'99 Workshop on Machine Learning for Information Extraction, AAAI Press 1999

Hinweis: Die URLs entsprechen dem Stand bei der Veröffentlichung des Artikels und werden nicht aktualisiert.

                   Artikelanfang  Seitenanfang

Autor & Copyright
Christian Strohmaier
Oettingenstr. 67,
80538 München
strohmai@cis.uni-muenchen.de

Auch: Eberhard-Karls Universität Tübingen,
Seminar für Sprachwissenschaft,
Wilhelmstr. 113,
D-72074 Tübingen

© 2002 Informatik Spektrum, Springer-Verlag Berlin Heidelberg

                   Artikelanfang  Seitenanfang