Da XML als Format zur Datenrepräsentation und zum Datenaustausch immer größeren Stellenwert gewonnen hat und noch gewinnt, steigt auch die Nachfrage nach Transformations- und Anfragesprachen für XML. Die am weitesten verbreiteten Vertreter sind wohl XPath und XQuery. Bei diesen beiden Sprachen, wie auch bei vielen anderen, handelt es sich um Sprachen, die einen navigationellen Ansatz zur Bearbeitung von XML-Dokumenten bieten. Der Programmierer muss hier auf bekannten Pfaden durch die XML-Struktur wandern. Dies kann durchaus als hinderliche Einschränkung gesehen werden, wenn man nicht angeben möchte wie man zu seinem Wissen kommt, sondern sich vielmehr darauf beschränken möchte wie die Daten spezifiziert sind. Einen anderen Ansatz verfolgen Sascha Berger, Francois Bry, Paula Patranjan und Sebastian Schaffert von der Universität München bei der Entwicklung der Sprache Xcerpt. Sie verwenden ein Konzept bei dem die Dokumente nach Regeln und Mustern bearbeitet werden. Diese Vorgehensweise ist also eher den logischen Programmiersprachen, wie beispielsweise Prolog, zuzuordnen oder mit Datenbankanfragesprachen wie SQL verwandt.
Auf Xcerpt aufbauend wurde XChange entwickelt. XChange soll für die automatische Verbreitung von Updates im Web und zur Kommunikation zwischen Webseiten eingesetzt werden.
Das Ziel dieser Seminararbeit wird es nun sein, den Aufbau von Xcerpt und XChange näher zu beleuchten. Da die beiden Sprachen erst wenige Jahre alt, sehr experimentell und noch nicht weit verbreitet sind, ist auch nur eine beschränke Literatur vorhanden. Im Großen und Ganzen bezieht sich diese Arbeit daher auf Quellen, die auf der Homepage zu Xcerpt (www.xcerpt.org) und sowie des Lehrstuhls „Programmier- und Modellierungssprachen“ des Instituts für Informatik an der Universität München veröffentlicht wurden.
Um in den Beispielen durchgehend einen roten Faden zu verfolgen, beziehen sich alle gezeigten Beispiele auf eine XML-Datei, die sich im Anhang befindet.
Inhalt
1. Einleitung
2. Xcerpt
2.1 Xcerpt-Konstrukte
2.1.1 Database Terms
2.1.2 Query Terms
2.1.2.1 Allgemeines
2.1.2.2 Descendent
2.1.2.3 Variablen
2.1.3 Construct Terms
2.2 Aufbau eines Xcerpt-Programms
2.2.1 Rules
2.2.2 Rule Chaining
2.2.3 Goals
2.2.4 Ein- und Ausgabe
2.3 Abschließendes Beispiel
3. XChange
4. Erfahrungen und Ausblick
Literatur
Anhang: XML-Datei
1. Einleitung
Da XML als Format zur Datenrepräsentation und zum Datenaustausch immer größeren Stellenwert gewonnen hat und noch gewinnt, steigt auch die Nachfrage nach Transformations- und Anfragesprachen für XML. Die am weitesten verbreiteten Vertreter sind wohl XPath und XQuery. Bei diesen beiden Sprachen, wie auch bei vielen anderen, handelt es sich um Sprachen, die einen navigationellen Ansatz zur Bearbeitung von XML-Dokumenten bieten. Der Programmierer muss hier auf bekannten Pfaden durch die XML-Struktur wandern. Dies kann durchaus als hinderliche Einschränkung gesehen werden, wenn man nicht angeben möchte wie man zu seinem Wissen kommt, sondern sich vielmehr darauf beschränken möchte wie die Daten spezifiziert sind. Einen anderen Ansatz verfolgen Sascha Berger, Francois Bry, Paula Patranjan und Sebastian Schaffert von der Universität München bei der Entwicklung der Sprache Xcerpt. Sie verwenden ein Konzept bei dem die Dokumente nach Regeln und Mustern bearbeitet werden. Diese Vorgehensweise ist also eher den logischen Programmiersprachen, wie beispielsweise Prolog, zuzuordnen oder mit Datenbankanfragesprachen wie SQL verwandt.
Auf Xcerpt aufbauend wurde XChange entwickelt. XChange soll für die automatische Verbreitung von Updates im Web und zur Kommunikation zwischen Webseiten eingesetzt werden.
Das Ziel dieser Seminararbeit wird es nun sein, den Aufbau von Xcerpt und XChange näher zu beleuchten. Da die beiden Sprachen erst wenige Jahre alt, sehr experimentell und noch nicht weit verbreitet sind, ist auch nur eine beschränke Literatur vorhanden. Im Großen und Ganzen bezieht sich diese Arbeit daher auf Quellen, die auf der Homepage zu Xcerpt (www.xcerpt.org) und sowie des Lehrstuhls „Programmier- und Modellierungssprachen“ des Instituts für Informatik an der Universität München veröffentlicht wurden.
Um in den Beispielen durchgehend einen roten Faden zu verfolgen, beziehen sich alle gezeigten Beispiele auf eine XML-Datei, die sich im Anhang befindet.
2. Xcerpt
Wie bereits in der Einleitung erwähnt, handelt es sich bei Xcerpt um eine Verarbeitungssprache für XML-Dokumente. Um diese Sprache nun genauer zu betrachten, soll im Folgenden der Aufbau eines Xcerpt-Programms vorgestellt werden. Es wird zunächst ein Überblick der einzelnen Konstrukte geliefert, um dann ein vollständiges Programm vorzustellen.
2.1 Xcerpt-Konstrukte
Das kleinste Element der Sprache Xcerpt ist ein Term. Aus diesen Termen baut sich die Sprache auf. Aus kombinierten und verschachtelten Termen, werden komplexe Terme gebildet. Auch XML-Dokumente werden als Terme angefragt. Xcerpt kennt drei Arten von Termen, auf die nun näher eingegangen werden soll: Database Terms (Datenterme), Query Terms (Anfrageterme) und Construct Terms (Konstruktionsterme). Wie man im Folgenden sehen wird, ist dabei nicht immer eine Unterscheidung zwischen diesen drei Arten möglich, sondern sie wird oft erst im Zusammenhang deutlich.
2.1.1 Database Terms
Durch Database Terms werden XML-Dokumente innerhalb von Xcerpt dargestellt.
Der erste Buch-Eintrag der Beispiel-XML-Datei wie er auch in XML 1 zu sehen ist, sähe in Xcerpt so aus:
Abbildung in dieser Leseprobe nicht enthalten
Beispiel 1
Diese Darstellung beschreibt exakt den ersten Buch-Eintrag, jeder andere Eintrag würde diesem Database Term nicht entsprechen.
Xcerpt kennt zwei Arten von Klammern: Zum einen die oben verwendeten eckigen Klammern [], die ausdrücken, dass die Unterterme sortiert sind, und die geschweiften Klammern {}, welche ausdrücken, dass die Unterterme nicht sortiert sind.
In Beispiel 1 würde eine Änderung der Reihenfolge von titel, autoren und verlag also nicht mehr
Abbildung in dieser Leseprobe nicht enthalten
Beispiel 2
Beispiel 2 beschreibt also sowohl die Struktur aus XML 1 als auch aus XML 2. Beispiel 1 hingegen repräsentiert nur XML 1.
Abbildung in dieser Leseprobe nicht enthalten
XML 1
Abbildung in dieser Leseprobe nicht enthalten
XML 2
Attribute werden innerhalb von Xcerpt mit dem Schlüsselwort attributes beschrieben. Der attributes -Knoten muss immer der erste Knoten unterhalb des Vaterknotens sein. Weiter werden Attribute immer als ungeordnete Menge betrachtet.
Denken wir uns nun zu jedem Buch-Eintrag des vorangegangenen Beispiels ein jahr -Attribut und stellen die geänderte XML-Struktur als Database Term dar:
Abbildung in dieser Leseprobe nicht enthalten
XML 3
Abbildung in dieser Leseprobe nicht enthalten
Beispiel 3
2.1.2 Query Terms
2.1.2.1 Allgemeines
Nachdem nun bekannt ist wie XML-Strukturen in Xcerpt dargestellt werden, können Anfragen gestellt werden. Dies geschieht durch die Query Terms. Diese besitzen drei grundlegende Eigenschaften:
1. Unvollständigkeit, ein Query Term kann Teilterme des zu durchsuchenden Terms enthalten und somit irrelevante Teile bei der Anfrage auslassen
2. Geordnet / ungeordnet, die Teilterme des Query Terms können sowohl geordnet als auch ungeordnet sein
3. Descendent, es besteht die Möglichkeit einen Teilterm in beliebiger Tiefe zu suchen
Query Terms enthalten neben den bereits in Database Terms erwähnten einfachen Klammerungen auch doppelt geschweifte {{}} und eckige [[]] Klammern. Weiterhin gilt, dass eckige Klammern anzeigen, dass die Reihenfolge exakt gleich sein muss, während die geschweiften Klammern eine ungeordnete Anreihung repräsentieren.
Einfache geschweifte Klammern {} und eckige Klammern [] bedeuten in Query Terms, dass die Data Terms exakt einmal vorkommen dürfen und müssen. Enthält ein zu durchsuchender Data Term mehr als einmal die vorgegebenen Terme oder enthält er die Terme gar nicht, fällt er durch das Suchmuster.
Eine doppelt geschweifte {{}} oder eckige [[]] Klammerung bedeutet, dass die Data Terms des Suchmusters mindestens einmal im auszuwertenden Ausdruck vorkommen müssen. Allerdings können sie auch mehrmals dort auftreten. Xcerpt unterscheidet hier also die Kardinalitäten „exakt 1“ und „größer-gleich 1“.
Durch eine leere einfache Klammerung wird beschrieben, dass dieser Term keinen Subterm enthalten darf. Wird hingegen eine doppelte leere Klammerung verwendet, bedeutet dies, dass hier beliebig viele Subterme vorkommen dürfen.
Abbildung in dieser Leseprobe nicht enthalten
Beispiel 5
Die vorangehenden beiden Beispiele verdeutlichen noch einmal den Unterschied zwischen einfachen und doppelten Klammern. Während der Query Term aus Beispiel 4 ein Muster darstellt, in welches die Beispiel-XML-Datei passt, fällt die Datei durch das Muster aus Beispiel 5 durch. Dies ist darauf zurückzuführen, dass in Beispiel 4 durchaus mehrere Buch-Tags akzeptiert werden, in Beispiel 5 jedoch, darf nur genau ein Buch-Tag vorkommen.
2.1.2.2 Descendent
Um einen Term in einem beliebigen Unterknoten in beliebiger Tiefe eines Teilbaums zu suchen, verwendet Xcerpt den Konstruktor desc.
Im folgenden Beispiel sucht der Query Term nach einem Database Term, der einen Wurzelknoten buecherei mit mindestens einem Unterknoten buch hat, unterhalb dessen in irgendeinem Knoten der Term „A. Friedrich“ zu finden ist.
Abbildung in dieser Leseprobe nicht enthalten
Beispiel 6
2.1.2.3 Variablen
In Query Terms können Variablen vorkommen. Deklariert werden diese durch das Schlüsselwort var gefolgt von einem selbst gewählten Variablennamen.
Passt ein Query Term bei der Abfrage dann auf einen Database Term, werden die entsprechenden Subterme an die Variablen gebunden. Somit kann man aus der Datenbank Daten extrahieren und letztendlich wieder neu zusammenführen (vgl. 2.1.3 Construct Terms).
[...]
- Quote paper
- Andre Altenau (Author), 2005, XCerpt und XChange, Munich, GRIN Verlag, https://www.grin.com/document/53734
-
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X.