Transformationen

Dieses Kapitel gibt eine Übersicht über Literalfunktionen, welche Literalwerte ändern oder ersetzen. Wie die im nächsten Kapitel besprochenen Filterfunktionen werden sie innerhalb des <data>-Elementes eingefügt und können, wo sinnvoll, beliebig miteinander kombiniert werden. Dabei wird der Wert von oben nach unten von der einen zur nächsten Funktion durchgereicht. Ein Beispiel:

<data source="litA" name="gruss">
  <trim/>
  <whitelist>
    <entry name="hallo"/>
    <entry name="grüezi"/>
  </whitelist>
  <case to="upper"/>
</data>

compose

compose fügt dem Wert ein Prä- (prefix=) und/oder ein Suffix (postfix=) hinzu

Beispiel

constant

constant ersetzt Wert durch ein Literal (value=)

Beispiel

timestamp

timestamp ersetzt Wert durch aktuellen Zeitstempel

Beispiel

substring

substring extrahiert Substring basierend auf Indizes (start=, end=)

Beispiel

regexp

regexp extrahiert einen Substring basierend auf einem regulären Ausdruck (match=). Rückwärtsreferenzen (capture groups) werden unterstützt, welche durch format="${1..n}" wiederverwendet werden können. Syntax entspricht derjenigen von regulären Ausdrücken in Java.

Beispiel

replace / setreplace

replace / setreplace ersetzt einen passenden Substring (pattern=) durch einen anderen Wert (with=). Java-konforme reguläre Ausdrücke werden unterstützt. Durch setreplace lässt sich eine ganze lokale Ersetzungstabelle definieren (<entry name="ausdruck" value="ersetzung"/>) oder mithilfe von map= eine solche referenzieren.

Für weitere Informationen siehe Abschnitt “Nachschlagetabellen”

Beispiel

lookup

lookup ist analog zu setreplace, unterstützt aber nur statische Strings als Suchmuster. Mithilfe von in= kann alternativ auch eine Konkordanztabelle referenziert werden. default= definiert einen Standardwert, wenn Schlüssel nicht in Tabelle definiert ist.

Für weitere Informationen siehe Abschnitt “Nachschlagetabellen”

Beispiel

case

case wandelt Wert in Gross- (upper) bzw. Kleinbuchstaben (lower) (to=) um. Nimmt optional ein Sprach-Tag entgegen (language=)

Beispiel

trim

trim schneidet Leerzeichen am Ende des Feldwertes ab

Beispiel

normalize-utf8

normalize-utf8 normalisiert Zeichen in kanonische Form, bspw. ein ä, das aus dem Diakrit ¨ + a gebildet wurde, zu ä. Für Details siehe hier.

Beispiel

dateformat

dateformat formatiert Datum

removeLeadingZeros="true" entfernte in unseren Tests fälschlicherweise auch Nulle in vierstelligen Jahreszahlen, das Resultat war also bspw. 218 anstelle von 2018!

Beispiel

split

split teilt Feldwert basierend auf regulärem Ausdruck (delimiter=) in Substrings

Beispiel

isbn

isbn transformiert ISBN-Nummern. Das Attribut to akzeptiert drei Werte: isbn10 für eine Umwandlung von ISBN13 zu ISBN10, isbn13 für das Umgekehrte und clean für eine Bereinigung der Nummer. Optional können zudem die Attribute verifyCheckDigit, standardmässig false, und errorString gesetzt werden.

Beispiel

urlencode

urlencode enkodiert Wert als URL

Beispiel

htmlanchor

htmlanchor baut aus Wert einen HTML-Link. Umfasst drei Attribute: prefix (zwingend), postfix und title (optional)

Beispiel

switch-name-value

switch-name-value vertauscht Feldname und -wert

Beispiel

script

script übergibt Wert zur Transformation an eine Javascript-Funktion (invoke=) in einer externen Datei (file=)

Hinweise zur Implementierung einer solchen Funktion finden sich im Anhang

Beispiel

java

java übergibt Wert zur Tranformation einer Java-Klasse (class=, voller Name). Werte aller weiteren Attribute werden einer gleichnamigen setter-Methode der Klasse übergeben.

Hinweise zur Implementierung einer solchen Klasse finden sich im Anhang

Beispiel

count

count gibt Anzahl der aktuell gezählten Werte aus.

Um nur den letzten Wert zu berücksichtigen, siehe das Rezept “Nur letzten Wert eines Literals berücksichtigen”.

Beispiel