XML-Pipeline
Eine XML-Pipeline wird gebildet, wenn mehrere XML- (Extensible Markup Language)-Prozesse wie Transformationen und Validierungen miteinander verbunden werden. Zum Beispiel können zwei Transformationen, T1 und T2, so miteinander verbunden werden, dass das Eingangsdokument von T1 transformiert wird und dann die Ausgabe von T1 als Eingangsdokument von T2 gilt.
Lineare Operationen
Einfache Pipelines, wie solche, die oben beschrieben werden, werden als linear bezeichnet; ein einzelnes Eingangsdokument durchläuft immer dieselben Schritte einer Transformation, um letztendlich ein einziges Ausgangsdokument zu erstellen.
Hier sind einige Beispiele an Operationen, die in einer linearen Pipeline vorkommen können:
- Identitätstransformation – 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 – teilt ein einziges XML-Dokument in einzelne Dokumente auf
- Wrap – hüllt Elemente in weitere Elemente ein
- Reorder – ändert die Reihenfolge von Elementen
Nicht-linear
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
- Schleifen – dabei wird eine Transformation an jedem Knoten einer Knotenmenge, die 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-Transformationen (solche, die nur ein Element oder Attribut betreffen)
XML-Pipeline-Sprachen
XML-Pipeline-Sprachen werden dazu genutzt, Pipelines zu definieren. Ein Programm, das in einer XML-Pipeline-Sprache 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-Pipeline-Sprachen sind zum Beispiel:
- XProc: An XML Pipeline Language ist eine W3C-Empfehlung.[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] 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, Trees, 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- und XML-XML-Transformationen in Pipelines.
Pipe-Granularität
Unterschiedliche XML-Pipeline-Implementationen unterstützen unterschiedliche Granularitäten des Ablaufs:
- Dokument: Komplette Dokumente durchlaufen die Pipe als atomare 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: Einzelne Teile des Dokumentes können, ausgelöst durch Ereignisse (engl. events), parallel und gleichzeitig durch verschiedene Pfade laufen.
Siehe auch
- Apache Cocoon
- Pipe (Informatik)
- XSLT
Weblinks
- W3C XML Pipeline Definition Language Note
- W3C XML Pipeline Language (XPL) Version 1.0 (Draft) Submission
- W3C XML Processing Model Working Group
- Einführung und Referenz zu XProc
- Norman Walsh’s XProc web site – Norman Walsh is the chair of the W3C XProc standards committee.