XMLTK (XML toolkit)

Das XML Toolkit (XMLTK) fasst eine Sammlung von Werkzeugen für die Kommandozeilen-basierte Verarbeitung von XML-Dateien zusammen. Der Aufbau von XMLTK orientiert sich an denen unter Unix gängigen Werkzeugen wie u.a. sort, tail oder grep. Neben Funktionen wie Sortieren, Schachtelung oder Aggregation sind weitere wesentliche Funktionen XML-Stream Index (SIX) und XML-Stream-Prozessor, mit denen die Verarbeitung von XML-Datenströmen möglich ist. Die Werkzeuge können für eine komplexere Verarbeitung von XML-Daten auch zu Pipelines kombiniert werden. Zur Identifikation der Knoten in einer XML-Struktur werden XPath-Ausdrücke verwendet. XMLTK definiert zur Verarbeitung ein spezielles, binäres XML-Zwischenformat, so dass eine hohe Performance in der Abarbeitung erreicht wird.


XPath für die Identifizierung der Knoten

Ähnliche Werkzeuge wie sie das XML-Toolkit bietet, sind bereits aus der Unix-Welt bekannt. Dort agieren diese Werkzeuge zwar ebenfalls zeilenbasiert aber unter Nutzung von regulären Ausdrücken. XMLTK dagegen nutzt zur Identifizierung der Knoten in der XML-Struktur zu verarbeitender Dateien spezielle XPath-Ausdrücke, die aus einer Teilmenge der Pattern-Grammatik von XLST abgeleitet werden. Die XMLTK-Werkzeuge agieren nicht im Sinne einer allgemeinen XML-Sprache zur Transformation. Das Ziel von XMLTK ist es, Programme zur Verfügung zu stellen, die auf einfache Weise, grundlegende Aufgaben im Zusammenhang mit XML zu lösen. Dadurch dass die Werkzeuge XML-Daten als Datenströme betrachten, können auch beliebig große Dateien verarbeitet werden. Mit Datenstrom ist hierbei die kontinuierliche Abfolge von Datensätzen gemeint. Das auf zeilenorientierten Kommandos aufbauende XMLTK nutzt so-genannte Pipe-Symbole, um Kommandos für komplexere Aufgabenstellungen direkt über die Befehlszeile zu verbinden.

Zu einer ersten Gruppe von XMLTK-Programmen gehören:

  • xsort für Sortier-Operationen,
  • xdelete für das Löschen von Daten,
  • xagg für die Aggregation von Daten,
  • xflatten für das Auslösen von Ebenen in einer Hierarchie,
  • xpair zur Wiederholung bestimmter Knoten,
  • xnest zum Gruppieren von Daten,
  • xhead für den Beginn eines Dokumentes,
  • xtail für das Ende eines Dokumentes.
Damit lassen sich einfache Operationen auf XML-Daten über Unix-typische Parameter auf der Kommandozeile steuern.

Das Ziel der Verarbeitung von großen XML-Datenströmen ist die Erreichung einer möglichst hohen Performance. Dies ist Aufgabe des XML-Stream-Prozessors, der eine in der Programmiersprache C geschriebenes Application Programming Interface (API) unterstützt, was auch die o.g. Programme zur Auswertung von XPath-Ausdrücken nutzen. Der XML-Stream-Prozessor prüft die Übereinstimmung von sogenannten Variablen - das sind die Markierungen für die Knoten eines XML-Anfragebaumes - mit dem eingelesenen XML-Datenstrom. Über den Zwischenschritt eines nichtdeterministischen endlichen Automaten wird der Anfragebaum schließlich durch einen deterministischen endlichen Automaten (DEA) abgebildet. Der DEA wendet einen Algorithmus zum Pattern-Matching für das Auffinden zuvor bestimmter XML-Daten inner-halb des XML-Datenstroms ein. Ein wesentlicher Vorteil dieser Vorgehensweise ist nicht nur, dass dadurch ein konstanter Durchsatz an XML-Daten erreicht wird, sondern auch, dass dieser unabhängig ist von der Anzahl der zu prüfenden Muster.

Durch den XML-Stream-Prozessor wird weiterhin ein sogenannter Stream Index (SIX) gebildet, der die Anfang- und Endposition eines Knotens im Anfragebaum als ein Wertepaar enthält. Damit ist die Verarbeitung von sehr großen Mengen von Pattern - die durch XPath-Ausdrücke definiert werden - möglich. Wenn nämlich keiner der XPath-Ausdrücke mit den Knoten eines Unterbaumes übereinstimmt, so kann dieser Unterbaum generell überlesen werden.

XMLTK unterstützt die Zusammenführung von XML-Werkzeuge durch Pipelines. Für den dazu erforderlichen Parse-Schritt definiert XMLTK ein spezielles binäres Zwischenformat, das jedem auftretenden Elementnamen eine eindeutige Nummer zuordnet. So sind auch Vergleiche zwischen den XML-Bezeichnern auf einfache Art und Weise möglich.

Die Werkzeuge des XMLTKs sind hauptsächlich auf die performante Realisierung von einfachen XML-Transformationen spezialisiert, und berücksichtigen daher keinerlei Namensräume. Dagegen ist die Integration mit weiteren Werkzeugen für die XML-Verarbeitung durch einen Austausch von XML-Text auf der Ebene des jeweiligen Betriebssystems möglich.

http://www.cs.washington.edu/homes/suciu/XMLTK

http://xmltk.sourceforge.net

Informationen zum Artikel
Deutsch: XML-Toolkit
Englisch: XML toolkit - XMLTK
Veröffentlicht: 28.10.2013
Wörter: 643
Tags: #Web-Software
Links: Aggregation, Algorithmus, API (application programming interface), BS (Betriebssystem), Datei