XSL Transformationen mit der TransformerAction
Kurzbeschreibung
Die TransformerAction führt XSL Transformationen auf Elemente des Nachrichtenkontextes aus und speichert das Resultat als Kontext-Element. Dadurch ist die Konvertierung von beliebigen XML Dokumente in nahezu beliebige andere Textdokumente möglich. Die Konfiguration dieser Action erfordert grundsätzliche Kenntnisse vonXSL, da entsprechende XSL Transformationsskripte nicht mit der B2B ausgeliefert werden.
Das zu verwendende XSL Skript wird in der B2B als Content hinterlegt. Alternativ kann das Script auch als Extension konfiguriert werden, dazuspäter mehr.Der verwendete Content wird über die gesetzten Action-Eigenschaften, den Nachrichtenkontext und das Nachrichtenformat identifiziert. Dabei sind die Identifikatoren des Content wie folgt belegt:
- Provider
wird aus Action Eigenschaft B3P_CONTENT_PROVIDER eingelesen. - Version
wird falls existent aus dem Attribut B3P_CONTENT_VERSION des Nachrichtenkontexts und sonst aus der Action Eigenschaft B3P_CONTENT_VERSION eingelesen. Der Standardwert ist leer. - Typ
wird aus der Action Eigenschaft B3P_CONTENT_TYPE eingelesen.Der Standardwert ist “application/xslt+xml”. - Format
wird falls existent aus dem Attribut B3P_CONTENT_FORMAT_TYPE des Nachrichtenkontexts und sonst aus der Action Eigenschaft B3P_CONTENT_FORMAT_TYPE eingelesen. Falls beide Werte leer sind, wird die aus der Nachricht identifizierte Formatversion genutzt. Der Standardwert ist leer. - Format Version
wird falls existent aus dem Attribut B3P_CONTENT_FORMAT_VERSION des Nachrichtenkontexts und sonst aus der Action Eigenschaft B3P_CONTENT_FORMAT_VERSION eingelesen. Falls beide Werte leer sind, wird die aus der Nachricht identifizierte Formatversion genutzt. Der Standardwert ist leer. - Zielformat
wird aus Action Eigenschaft B3P_CONTENT_DESTINATION_FORMAT eingelesen.
Zur XSL-Transformation wird standardmäßig die in der Java VM integrierte Funktionalität genutzt.
Einrichtung
Die TransformerAction wird als Java-Action eingerichtet (sieheActions Anlegen). Dabei müssen die folgenden Einstellungen der Action vorgenommen werden.
- Klasse
org.b2bbp.runtime.actions.managed.TransformerAction - Typ
JAVA
Alle weiteren Einstellungen der Action, die nach Erstellen der Action gesetzt werden, finden sich in den nachstehenden Tabellen.
ActionEigenschaften (Erforderlich)
Hier genannte Eigenschaften müssen konfiguriert werden. Sonst wird bei der Ausführung der Action ein Fehler generiert.
Name der Eigenschaft | erlaubte Werte | Beschreibung |
---|---|---|
B3P_CONTENT_DESTINATION_FORMAT | Zeichenkette der Länge 1..100 | Diese Einstellung gibt das Zielformat an, das in der Adminstrationsansicht unter dem Reiter ‘Content’ zur Identifikation des zu verwendenden Skriptes genutzt wird.Velocity Template-Ausdrücke sind erlaubt. |
ActionEigenschaften (Optional)
Hier aufgeführte Eigenschaften werden automatisch beim ersten Ausführen der Action mit den Standardeinstellungen initialisiert, falls sie nicht vom Benutzer gesetzt wurden.
Name der Eigenschaft | erlaubte Werte | Beschreibung |
B3P_ADD_MESSAGE_CONTEXT | true, false (default) | Diese Eigenschaft kontrolliert, ob (falls Wert true ist) der Nachrichtenkontext innerhalb des XSLT Skripts als Parameter 'CONTEXT' bekannt gemacht werden soll. |
B3P_PARAMETERS | Durch Semikolon getrennte Liste von Schlüssel-Wert-Paaren der Länge 1..1000. Beispiel: "schluessel1=wert1;schluessel2=wert2". Die reservierten Zeichen ';', '=' und '\' müssen mit einem zusätzlichen Backslash ('\') als Präfix versehen werden, falls sie in einem Schlüsselnamen oder einem Wert vorkommen. |
Diese Eigenschaft enthält Parameternamen und Werte für Parameter des aufgerufenen XSL Skriptes.Velocity Template-Ausdrücke sind erlaubt. Siehe auch die nächste Eigenschaft "PAR_<name>" |
PAR_<name> z.B. PAR_ID | Beliebiger Wert oder dynamischer Ausdruck | Eigenschaften, die mit dem Präfix PAR_ beginnen, können als Parameter im XSL Skript verwendet werden (ohne Präfix). Z.B. mit der Eigenschaft "PAR_ID=12345" kann "ID" als Parameter in XSL verwendet werden und wird als Wert "12345" haben. |
B3P_RESULT | Zeichenkette der Länge 1..1000 (default: 'CURRENT_PAYLOAD') | Die Eigenschaft bestimmt unter welchem Attribut das Ergebnis der Transformation gespeichert wird. Die Standardeinstellung überschreibt den Nachrichteninhalt. |
B3P_SOURCE | Durch Semikolon getrennte Liste von Attributsnamen der Länge 1..1000 (default: 'CURRENT_PAYLOAD'). Beispiel: "CURRENT_PAYLOAD;B3P_BASE_MESSAGE". Die reservierten Zeichen ';' und '\' müssen mit einem zusätzlichen Backslash ('\') als Präfix versehen werden, falls sie in einem Attributsnamen vorkommen. |
Die Eigenschaft bestimmt unter welchem Attribut der zu transformierende Inhalt gespeichert ist. Die Standardeinstellung transformiert den aktuellen Nachrichteninhalt. |
B3P_TRANSFORM_ALL | true, false (default) | Falls der Wert false ist, wird nur der erste valide Inhalt aus der unter B3P_SOURCE angegebenen Liste transformiert. Wenn der Wert true ist, werden alle Inhalte transformiert und miteinander verkettet. |
B3P_CONTENT_TYPE | Zeichenkette der Länge 0..100 (default: "application/xslt+xml"). | Diese Einstellung gibt den Typ an, der in der Adminstrationsansicht unter dem Reiter 'Content' zur Identifikation des zu verwendenden Skriptes genutzt wird. Falls im Nachrichtenkontext vorhanden, wird diese Eigenschaft aus dem Nachrichtenkontext eingelesen. |
B3P_CONTENT_PROVIDER | Zeichenkette der Länge 0..100 (default: ""). | Diese Einstellung gibt den Provider-Namen an, der in der Adminstrationsansicht unter dem Reiter 'Content' zur Identifikation des zu verwendenden Skriptes genutzt wird. |
B3P_CONTENT_VERSION | Zeichenkette der Länge 0..100 (default: ""). | Diese Einstellung gibt die Version an, die in der Adminstrationsansicht unter dem Reiter 'Content' zur Identifikation des zu verwendenden Skriptes genutzt wird. Falls im Nachrichtenkontext vorhanden, wird diese Eigenschaft aus dem Nachrichtenkontext eingelesen. |
B3P_CONTENT_FORMAT_VERSION | Zeichenkette der Länge 0..100 (default: "") | Diese Einstellung gibt die Formatversion an, die in der Adminstrationsansicht unter dem Reiter 'Content' zur Identifikation des zu verwendenden Skriptes genutzt wird. Falls leer, wird stattdessen der Wert aus dem Nachrichtenformat genutzt. Falls die Eigenschaft im Nachrichtenkontext enthalten ist, überschreibt der Nachrichtenkontext die Service-Eigenschaft. |
B3P_CONTENT_FORMAT_TYPE | Zeichenkette der Länge 0..100 (default: "") | Diese Einstellung gibt das Format an, das in der Adminstrationsansicht unter dem Reiter 'Content' zur Identifikation des zu verwendenden Skriptes genutzt wird. Falls leer, wird stattdessen der Wert aus dem Nachrichtenformat genutzt. Falls die Eigenschaft im Nachrichtenkontext enthalten ist, überschreibt der Nachrichtenkontext die Service-Eigenschaft. |
XSL Skripte aus Extensions laden
Statt aus dem Content können die XSL Scripte auch aus Extensions geladen
werden. Hierfür muss die Property B3P_USE_EXTENSION = false(default) /
true gesetzt werden. Eine Extension muss die folgende Form haben:
Version=<leer>, Type=<leer>, Provider = <XSL Dateiname>. Damit das
Script aus der richtigen Extension genutzt wird, ist folgende Property
zu konfigurieren: B3P_CONTENT_FORMAT_TYPE = <XSL Dateiname>.
Ein XSL Datei kann Abhängigkeiten auf andere XSL Dateien haben (siehe im
Scriptxsl:import). Diese (ggf transitiven)Abhängigkeiten werden
automatisch aufgelöst, wennalle Scripte als Extensions konfiguriert
sind.
Service Eigenschaften (Experte)
Hier genannte Eigenschaften sollten nur in Ausnahmefällen oder durch Expertennutzer gesetzt werden, die mit dem Quellcode der TransformerAction vertraut sind.
Name der Eigenschaft | erlaubte Werte | Beschreibung |
---|---|---|
B3P_INPUT_FACTORY | Zeichenkette der Länge 1..1000 | Hier wird kann die ID angegeben werden, unter der eine Implementierung der abstrakten Klasse javax.xml.stream.XMLInputFactory bekannt gemacht worden ist. In der Regel handelt es sich bei dieser ID um den vollqualifizierten Klassennamen der InputFactory. |
B3P_OUTPUT_FACTORY | Zeichenkette der Länge 1..1000 | Hier wird kann die ID angegeben werden, unter der eine Implementierung der abstrakten Klasse javax.xml.stream.XMLOutputFactory bekannt gemacht worden ist. In der Regel handelt es sich bei dieser ID um den vollqualifizierten Klassennamen der OutputFactory. |
B3P_FAIL_ON_ERROR | true (default), false | Die Eigenschaft gibt an, ob ein Fehler oder Problem in der Ausführung der Transformeraction (z. B. keine zu transformierenden Daten gefunden) zu einem Abbruch der Kanalverarbeitung führen soll. Ist der Wert true, so müssen Daten erfolgreich transformiert werden oder die Verarbeitung schlägt fehl. |