Benutzer:TobbiM/XML Pipelines

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

In Computerwissenschaft wird eine XML Pipeline gebildet, wenn XML (Extensible Markup Language)-Vorgänge, manchmal bezeichnet als XML-Transformationen miteinander verbunden werden.

Zum Beispiel habe man zwei Transformationen, T1 und T2, diese zwei können miteinander verbunden werden, so dass das Eingangsdokument von T1 transformiert wird und dann die Ausgabe von T1 als Eingangsdokument von T2 gilt.

Lineare Operationen[Bearbeiten | Quelltext bearbeiten]

Einfache Pipelines, wie solche, die oben beschrieben werden, werden als linear bezeichnet; ein einzelnes Eingangsdokument durchläuft immer die selben Schritte einer Transformation, um letztendlich ein einziges Ausgangsdokument zu erstellen.

Hier sind einige Beispiele an Operationen, die in einer linearen Pipeline vorkommen können:

  • Identity transform - erzeugt eine identische Kopie des Inputs als Output
  • Transform - führt eine Transformation des Eingangsdokuments unter Benutzung einer spezifischen XSLT-Datei durch. Version 1.0 oder 2.0 sollten spezifiziert werden.
  • Rename - benennt Elemente oder Attribute um, ohne den Inhalt zu modifizieren
  • Replace - ersetzt Elemente oder Attribute
  • Insert - fügt ein neues Datenelement zum Ausgabe-Stream an einem bestimmten Punkt hinzu
  • Delete - entfernt ein Element oder Attribut
  • Split - nimmt ein einziges XML-Dokument und teilt es in einzelne Dokumente auf
  • Wrap - hüllt Elemente in weitere Elemente ein
  • Reorder - ändert die Reihenfolge von Elementen

Nicht-linear[Bearbeiten | Quelltext bearbeiten]

Nicht-lineare Operationen von Pipelines sind zum Beispiel:

  • Conditionals — dabei wird eine gegebene Transformation ausgeführt, wenn eine bestimmte Bedingung erfüllt ist, ansonsten wird eine andere Transformation ausgeführt
  • Loops — dabei wird eine Transformation an jeder Node eines Node-Sets, dass aus einem Dokument oder einer Transformation ausgewählt wird, solange ausgeführt, bis eine bestimmte Bedingung falsch wird.
  • Tees — dabei werden mehrere Transformationen an einem Dokument ausgeführt, die potentiell parallel verlaufen
  • Aggregations — dabei werden mehrere Dokumente zu einem einzigen Dokument zusammengeführt
  • Exception Handling — Fehler während des Vorgangs führen dazu, dass eine alternative Pipeline ausgeführt wird

Einige Standards kategorisieren Transformationen auch als Macro (Änderungen, die die gesamte Datei betreffen) oder Micro (solche, die nur ein Element oder Attribut betreffen)

XML Pipeline-Sprachen[Bearbeiten | Quelltext bearbeiten]

XML-Pipelinesprachen werden dazu genutzt, Pipelines zu definieren. Ein Programm, dass in einer XML Pipelinesprache geschrieben ist, wird von Software implementiert, die auch unter der Bezeichnung XML Pipeline-Engine bekannt ist. Diese erzeugt die Vorgänge, verbindet diese miteinander und führt schließlich die gesamte Pipeline aus. Existierende XML-Pipelinesprachen sind zum Beispiel:

  • XProc: An XML Pipeline Language derzeit ein W3C-Arbeitsentwurf [1]
  • W3C XML Pipeline Definition Language wird in einer W3C-Note spezifiziert; Sun liefert die Implementation.
  • W3C XML Pipeline Language (XPL) Version 1.0 (Entwurf) [2] [3] wird in einer W3C-Submission spezifiziert und in einer Komponente des Orbeon Presentation Servers OPS (jetzt benannt als Orbeon Forms). Diese Spezifikation bietet eine Implementation einer früheren Version der Sprache. XPL erlaubt die Deklaration komplexer Pipelines mit Conditionals, Loops, Tees, Aggregations und Sub-Pipelines.
  • Cocoon-Sitemaps bieten, neben anderen Funktionen, die Deklaration von XML-Pipelines. Cocoon-Sitemaps sind eine der früheren Implementationen des Konzeptes der XML-Pipeline.
  • smallx XML Pipelines werden vom smallx-Projekt genutzt
  • ServingXML definiert Vokabular zur Darstellung von flat-XML, XML-flat, flat-flat, and XML-XML-Transformationen in Pipelines.
  • PolarLake Circuit Markup Language werden von PolarLake's Laufzeitumgebung genutzt, um XML-Pipelines zu definieren. Circuits are collections of paths through which fragments of XML stream (usually as SAX or DOM events). Components are placed on paths to interact with the stream (and/or the outside world) in a low latency process.

Pipe-Genauigkeit[Bearbeiten | Quelltext bearbeiten]

Unterschiedliche XML-Pipeline-Implementationen unterstützen unterschiedliche Genauigkeiten des Ablaufs:

  • Dokument: Komplette Dokumente durchlaufen die Pipe als atomische Einheiten. Ein Dokument kann nur an einem Platz zur Zeit sein. Obwohl durchaus manchmal mehrere Dokumente in einer Pipe zur gleichen Zeit sein können.
  • Event: Element/Text-Nodesevents können durch verschiedene Pfade laufen. Ein Dokument kann gleichzeitig durch viele Komponenten zur selben Zeit laufen.

Standardisierung[Bearbeiten | Quelltext bearbeiten]

Es gibt derzeit keinen weit verbreiteten Standard für die XML-Pipelinesprachen. Allerdings befindet sich der W3C XProc-Standard in der Phase eines Arbeitsentwurfes seit November 2006 [4] [5]. Die Arbeit am Arbeitsentwurf dauert derzeit an.

XML Pipeline History[Bearbeiten | Quelltext bearbeiten]

  • 1972 Douglas McIlroy of Bell Laboratories adds the pipe operator to the UNIX command shell. This allows the output from one shell program to go directly into input of another shell program without going to disk. This allowed programs such as the UNIX awk and sed to be specialized yet work together [6] [7]. For more details see Pipeline (Unix).
  • 1993 Sean McGrath developed a C++ toolkit for SGML processing [8].
  • 1998 Stefano Mazzocchi releases the first version of Apache Cocoon, one of the first software programs to use XML pipelines.
  • 1998 PolarLake build XML Operating System, which includes XML Pipelining.
  • 2002 Notes submitted by Norman Walsh and Eve Maler from Sun Microsystems, as well as a W3C Submission submitted in 2005 by Erik Bruchez and Alessandro Vernet from Orbeon, were important steps toward spawning an actual standardization effort. While neither submission directly became a W3C recommendation, they were considered key sources of inspiration for the W3C XML Processing Working Group.
  • September 2005 W3C XML Processing Working Group started. The task of this working group was to create a specification for an XML pipelining language.

See also[Bearbeiten | Quelltext bearbeiten]

External links[Bearbeiten | Quelltext bearbeiten]