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
constant
constant
ersetzt Wert durch ein Literal (value=
)
timestamp
timestamp
ersetzt Wert durch aktuellen Zeitstempel
format
: Format des Zeitstempels gemässjava.text.SimpleDateFormat
timezone
: Zeitzone gemässjava.util.TimeZone
(Standard:UTC
)language
: Gebietsschema gemässjava.util.Locale
substring
substring
extrahiert Substring basierend auf Indizes (start=
, end=
)
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.
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”
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”
case
case
wandelt Wert in Gross- (upper
) bzw. Kleinbuchstaben (lower
) (to=
) um. Nimmt optional ein
Sprach-Tag entgegen (language=
)
trim
trim
schneidet Leerzeichen am Ende des Feldwertes ab
normalize-utf8
normalize-utf8
normalisiert Zeichen in kanonische Form, bspw. ein ä
, das aus dem Diakrit ¨
+ a
gebildet wurde, zu ä
. Für Details siehe hier.
dateformat
dateformat
formatiert Datum
inputformat
: Format des Inputdatums gemässjava.text.SimpleDateFormat
outputformat
: Format des Ausgabedatums:FULL
,LONG
(Standard),MEDIUM
oderSHORT
(s. Beschreibung injava.text.DateFormat
)era
: Epoche:AUTO
(Standard),AD
oderBC
removeLeadingZeros
: Entferne führende Nulle (Standard:false
)language
: Gebietsschema gemässjava.util.Locale
removeLeadingZeros="true"
entfernte in unseren Tests fälschlicherweise auch Nulle in
vierstelligen Jahreszahlen, das Resultat war also bspw. 218
anstelle von 2018
!
split
split
teilt Feldwert basierend auf regulärem Ausdruck (delimiter=
) in Substrings
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.
urlencode
urlencode
enkodiert Wert als URL
htmlanchor
htmlanchor
baut aus Wert einen HTML-Link. Umfasst drei Attribute: prefix
(zwingend),
postfix
und title
(optional)
switch-name-value
switch-name-value
vertauscht Feldname und -wert
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
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
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”.