Table of Contents
Filename: strings.xsl
$Revision: 49 $, $Date: 2012-05-18 01:42:08 +0200 (Fri, 18 May 2012) $
Dieses Stylesheet enthält Funktionen für Strings und Texte.
Da für Testroutinen Funktionen und Templates aus internals.xsl
benötigt werden, wird dieses Stylesheet in strings_tests.xsl
getestet.
Autor:
Homepage: http://www.expedimentum.org/
Lizenz (duale Lizenzierung):
Dieses Stylesheet und die dazugehörige Dokumentation sind unter einer Creative Commons-Lizenz (CC-BY 3.0) lizenziert. Die Weiternutzung ist bei Namensnennung erlaubt.
Dieses Stylesheet und die dazugehörige Dokumentation sind unter der sogenannten Expat License (einer GPL-kompatiblen MIT License) lizensiert. Es darf – als Ganzes oder auszugweise – unter Beibehaltung der Copyright-Notiz kopiert, verändert, veröffentlicht und verbreitet werden. Die Copyright-Notiz steht im Quelltext des Stylesheets und auf der Startseite der Dokumentation.
Original-URLs
Stylesheet: http://www.expedimentum.org/example/xslt/xslt-sb/strings.xsl
Dokumentation: http://www.expedimentum.org/example/xslt/xslt-sb/doc/strings.html
Test-Stylesheet: http://www.expedimentum.org/example/xslt/xslt-sb/strings_tests.xsl
Test-Dokumentation: http://www.expedimentum.org/example/xslt/xslt-sb/doc/strings_tests.html
Google Code: http://code.google.com/p/xslt-sb/
Revision History | ||
---|---|---|
Revision 0.2.50 | 2012-05-27 | Stf |
neue Funktionen: xsb:fill-left() , xsb:fill-right() | ||
Revision 0.2.49 | 2012-05-18 | Stf |
neue Funktionen: xsb:escape-for-replacement() ;
überarbeitet: xsb:trim-left() , xsb:trim-right() ;
erweiter: xsb:listed()
| ||
Revision 0.2.47 | 2012-05-15 | Stf |
neue Funktionen: xsb:sort() , xsb:escape-for-regex() , xsb:count-matches() | ||
Revision 0.2.0 | 2011-05-14 | Stf |
erste veröffentlichte Version | ||
Revision 0.129 | 2011-02-27 | Stf |
Erweiterung der Lizenz auf Expath/MIT license | ||
Revision 0.53 | 2009-10-25 | Stf |
Umstellung auf Namespaces xsb: und intern: | ||
Revision 0.36 | 2009-08-02 | Stf |
initiale Version |
xsb:lax-string-compare(2) as="xs:boolean" (xsl:function)
Verarbeitet Eingabe und Vergleichswert mit
normalize-space()
undlower-case()
und vergleicht dann Eingabe und Vergleichswert. Dadurch werden kleine Differenzen ignoriert.
Revision History Revision 0.53 2009-10-25 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
Parameter
compare-to as="xs:string?"
Vergleichswert (String)
xsb:return-default-if-empty(2) as="xs:string" (xsl:function)
gibt einen übergebenen Standardwert aus, wenn der übergeben String leer ist oder nur Whitespace enthält, sonst den String selbst
Wenn der übergebene Standardwert eine Leersequenz ist, wird ein Leerstring zurückgegeben.
Revision History Revision 0.53 2009-10-25 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
Parameter
default as="xs:string?"
Standardwert (String)
xsb:trim-left(1) as="xs:string" (xsl:function)
Revision History Revision 0.2.48 2012-05-18 Stf Status: beta
auf
fn:replace()
umgeschriebenRevision 0.53 2009-10-25 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
xsb:trim-right(1) as="xs:string" (xsl:function)
entfernt Whitespace am Ende eines Strigs
Revision History Revision 0.2.48 2012-05-18 Stf Status: beta
auf
fn:replace()
umgeschriebenRevision 0.53 2009-10-25 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
xsb:trim(1) as="xs:string" (xsl:function)
entfernt Whitespace am Anfang und am Ende. Im Unterschied zu
normalize-space()
wird Whitespace in der Mitte nicht berücksichtigt.
Revision History Revision 0.53 2009-10-25 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
xsb:normalize-paragraphs(1) as="xs:string?" intern:solved="EmptySequenceAllowed" (xsl:function)
ersetzt mehrfache Zeilenwechsel durch einen einzelnen Zeilenwechsel. Im Unterschied zu
normalize-space()
wird ein Zeilenwechsel aber erhalten.rekursiver Algorithmus: die Funktion ruft sich solange selbst auf, bis keine mehrfachen Zeilenwechsel in der Eingabe vorhanden sind.
Da die Eingabe sinnvoll eine Leersequenz sein kann, ist die Rückgabe einer Leersequenze erlaubt.
Revision History Revision 0.53 2009-10-25 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
xsb:listed(2) as="xs:boolean" (xsl:function)
Diese Funktion überprüft, ob in einer Leerzeichen-getrennten Liste ein bestimmter Eintrag vorhanden ist.
Die Eingabe eines Leerstrings oder einer Leersequenz als Parameter
list
ergibtfalse()
.Die Eingabe eines Leerstrings oder einer Leersequenz als Parameter
item
ergibtfalse()
.
Revision History Revision 0.2.48 2012-05-18 Stf Status: beta
neben Leerzeichen ist jetzt auch anderer Whitespace zum Trennen der String-Token erlaubt
Revision 0.69 2009-12-05 Stf Status: beta
initiale Version
Parameter
list as="xs:string?"
Whitespace-getrennte Liste von String-Token
Parameter
item as="xs:string?"
String-Token, auf dessen Existenz getestet werden soll
xsb:return-composed-string-if-not-empty(3) as="xs:string" (xsl:function)
Diese Funktion fügt vor und nach dem zu testenden String die übergebenen Strings ein, wenn der zu testende String nicht leer ist.
Mit dieser Funktion wird die Erzeugung von bedingten Texten vereinfacht, bspw. das Einfügen von Kommata oder Doppelpunkten nach einem Text.
Revision History Revision 0.96 2010-06-27 Stf Status: beta
initiale Version
Parameter
tested-string as="xs:string?"
getesteter String
Parameter
string-before as="xs:string?"
String, der vor dem getesteten String eingefügt werden soll
Parameter
string-after as="xs:string?"
String, der nach dem getesteten String eingefügt werden soll
xsb:encode-for-id(1) as="xs:string" (xsl:function)
wandelt einen eingegebenen String in eine xs:ID um, indem verbotene Zeichen ersetzt werden
Revision History Revision 0.124 2010-10-10 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
Eingabe (String)
xsb:sort(1) as="xs:anyAtomicType*" intern:solved="EmptySequenceAllowed" (xsl:function)
Shortcut für
xsb:sort($input-sequence, 'ascending')
Revision History Revision 0.2.47 2012-05-14 Stf Status: beta
initiale Version
Parameter
input-sequence as="xs:anyAtomicType*"
Sequenz von
atomic values
xsb:sort(2) as="xs:anyAtomicType*" intern:solved="EmptySequenceAllowed" (xsl:function)
Die Implementierung folgt dem XSLT Beispiel aus dem 2.0-Standard.
Die Werte in der Sequenz müssen mit
lt
vergleichbar sein. Insbesondere scheitert das Sortieren von gemischten Sequenzen aus Strings und Zahlen.
Revision History Revision 0.2.47 2012-05-14 Stf Status: beta
initiale Version
Parameter
input-sequence as="xs:anyAtomicType*"
Sequenz von
atomic values
Parameter
order as="xs:string"
»
ascending
«/»descending
«
xsb:escape-for-regex(1) as="xs:string" (xsl:function)
escapet Steuerzeichen in regulären Ausdrücken mit »
\
«Ist
input
die Leersequenz, wird der Leerstring zurückgegeben.Beispiele
xsb:escape-for-regex('Jan.')
ergibt »Jan\.
«
xsb:escape-for-regex('^1.200$')
ergibt »\^1\.200\$
«
Revision History Revision 0.2.47 2012-05-15 Stf Status: alpha
initiale Version
Parameter
input as="xs:string?"
String, der escapet werden soll
xsb:escape-for-replacement(1) as="xs:string" (xsl:function)
escapet Steuerzeichen in Ersetzungstexten für
fn:replace()
(»\
« und »$
«) mit »\
«Ist
input
die Leersequenz, wird der Leerstring zurückgegeben.Beispiele
xsb:escape-for-replacement('$0')
ergibt »\$0
«
xsb:escape-for-replacement('\1.200$')
ergibt »\\1.200\$
«
Revision History Revision 0.2.48 2012-05-17 Stf Status: alpha
initiale Version
Parameter
input as="xs:string?"
String, der escapet werden soll
xsb:count-matches(3) as="xs:integer" (xsl:function)
zählt das Vorkommen eines Suchstrings in einem String
Sind
string
oderregex
Leerstring oder die Leersequenz, wird0
zurückgegeben.Beispiele
xsb:count-matches('abc def abc', 'def')
ergibt »1
«
xsb:count-matches('abc def abc', 'abc')
ergibt »2
«
xsb:count-matches('abc', '[ab]')
ergibt »2
«
xsb:count-matches('abc', '[ab]+')
ergibt »1
«
xsb:count-matches('Aa', 'a', '')
ergibt »1
«
xsb:count-matches('Aa', 'a', 'i')
ergibt »2
«
Revision History Revision 0.2.47 2012-05-15 Stf Status: beta
initiale Version
Parameter
string as="xs:string?"
String, in dem gezählt wird
Parameter
regex as="xs:string?"
regulärer Ausdruck, nach dem in
string
gesucht wirdParameter
flags as="xs:string?"
flags analog zum
flags
-Parameter vonfn:matches()
(siehe XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition), 7.6.6.1 Flags)
xsb:count-matches(2) as="xs:integer" (xsl:function)
Shortcut für
xsb:count-matches($string, $regex, '')
Revision History Revision 0.2.47 2012-05-16 Stf Status: beta
initiale Version
Parameter
string as="xs:string?"
String, in dem gezählt wird
Parameter
regex as="xs:string?"
regulärer Ausdruck, nach dem in
string
gesucht wird
xsb:replace(4) as="xs:string" (xsl:function)
führt wiederholtes paarweises Suchen und Ersetzen über einen String aus
Diese Funktion vereinfachte wiederholtes Suchen und Ersetzen über den selben String. Für jeden Wert aus der
pattern
-Sequenz wird einfn:replace()
mit dem korrespondierenden Wert (selbe Position) aus derreplacement
-Sequenz über den Eingabe-String ausgeführt. Sind in derreplacement
-Sequenz weniger Werte als in derpattern
-Sequenz, werden (analog zufn:translate()
) die Fundstellen der »überzähligen« Pattern gelöscht.Ist
input
der Leerstring oder die Leersequenz, wird ein Leerstring zurückgegeben.Ist
pattern
der Leerstring oder die Leersequenz, wirdinput
unverändert zurückgegeben (Ausnahme: Wenninput
die Leersequenz ist, wird ein Leerstring zurückgegeben).Ist
replacement
der Leerstring, wird jeder Treffer vonpattern
ininput
gelöscht.Achtung: eine Leersequenz innerhalb der pattern- oder replacement-Sequenz »verschwindet« aus der Sequenz, d.h. die nachfolgenden Werte rücken eine Position nach vorn. Das wird in der Regel nicht der gewünschte Effekt sein!
Beispiele
xsb:replace('Affe Bär Elefant', ('Affe', 'Elefant') , ('monkey', 'elephant') )
ergibt »monkey Bär elephant
«
xsb:replace('Affe Bär Elefant', ('Affe', 'Elefant') , ('monkey', '') )
ergibt »monkey Bär
«
xsb:replace('Affe Bär Elefant', ('Affe', 'Elefant') , ('monkey') )
ergibt »monkey Bär
«
xsb:replace('Affe Bär Elefant Löwe', ('Affe', 'Bär', 'Elefant', 'Löwe') , ('monkey', '', 'elephant', 'lion') )
ergibt »monkey elephant lion
«
xsb:replace('Affe Bär Elefant', ('Affe', '', 'Elefant') , ('monkey', '', 'elephant') )
ergibt »monkey Bär elephant
« (Leerstring in der pattern-Sequenz lässt Eingabe unverändert)
xsb:replace('Affe Bär Elefant', ('Affe', (), 'Elefant') , ('monkey', '', 'elephant') )
ergibt »monkey Bär
« (Leersequenz in der pattern-Sequenz »verschwindet«, dadurch wird Elefant durch den Leerstring ersetzt)
xsb:replace('Affe Bär Elefant', ('Affe', 'Bär', 'Elefant') , ('monkey', (), 'elephant') )
ergibt »monkey elephant
« (Leersequenz in der replacement-Sequenz »verschwindet«, dadurch wird Bär durch elephant ersetzt, und Elefant wird gelöscht.)
Revision History Revision 0.2.47 2012-05-15 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
String, in dem ersetzt wird
Parameter
pattern as="xs:string*"
Sequenz von regulären Ausdrücken, nach denen in
input
gesucht wirdParameter
replacement as="xs:string*"
Sequenz von Ersetzungstexten
Parameter
flags as="xs:string?"
flags analog zum
flags
-Parameter vonfn:replace()
(siehe XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition), 7.6.6.1 Flags)
xsb:replace(3) as="xs:string" (xsl:function)
Shortcut für
xsb:replace($input, $pattern, $replacement, '')
Revision History Revision 0.2.47 2012-05-15 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
String, in dem ersetzt wird
Parameter
pattern as="xs:string*"
Sequenz von regulären Ausdrücken, nach denen in
input
gesucht wirdParameter
replacement as="xs:string*"
Sequenz von Ersetzungstexten
xsb:index-of-first-match(3) as="xs:integer" (xsl:function)
ermittelt die Position des ersten Auftretens von
pattern
instring
Ist
string
oderpattern
der Leerstring oder die Leersequenz, wird0
zurückgegeben.Beispiele
xsb:index-of-first-match('ab', 'a')
ergibt »1
«
xsb:index-of-first-match('ab', 'b')
ergibt »2
«
xsb:index-of-first-match('ab', 'c')
ergibt »0
«
xsb:index-of-first-match('ABC', 'b', '')
ergibt »0
«
xsb:index-of-first-match('ABC', 'b', 'i')
ergibt »2
«
Revision History Revision 0.2.47 2012-05-16 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
String, in dem gesucht wird
Parameter
pattern as="xs:string?"
regulärer Ausdruck, nach dem in
input
gesucht wirdParameter
flags as="xs:string?"
flags analog zum
flags
-Parameter vonfn:tokenize()
(siehe XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition), 7.6.6.1 Flags)
xsb:index-of-first-match(2) as="xs:integer" (xsl:function)
Shortcut für
xsb:index-of-first-match($input, $pattern, '')
Revision History Revision 0.2.47 2012-05-16 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
String, in dem gesucht wird
Parameter
pattern as="xs:string?"
regulärer Ausdruck, nach dem in
input
gesucht wird
xsb:fill-left(3) as="xs:string" (xsl:function)
füllt
$input
links bis zur Länge$length
mit dem Zeichen$fill-with auf
Bei einem Leerstring oder einer Leersequenz als
$input
wird vollständig mit$fill-with
aufgefüllt.Bei einem Leerstring oder einer Leersequenz als
$fill-with
wird$input
unverändert zurückgegeben.Ist
$input
länger als$fill-with
, wird$input
unverändert zurückgegeben.Beispiele
xsb:fill-left('X', '-', 4)
ergibt »---X
«
xsb:fill-left('', '-', 4)
ergibt »----
«
xsb:fill-left('X', '', 4)
ergibt »X
«
xsb:fill-left('sieben', '-', 4)
ergibt »sieben
«
Revision History Revision 0.2.50 2012-05-27 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
String, der aufgefüllt werden soll
Parameter
fill-with as="xs:string?"
Zeichen, mit dem aufgefüllt werden soll
Parameter
length as="xs:integer"
Anzahl Zeichen, auf die aufgefüllt werden soll
xsb:fill-right(3) as="xs:string" (xsl:function)
füllt
$input
rechts bis zur Länge$length
mit dem Zeichen$fill-with auf
Bei einem Leerstring oder einer Leersequenz als
$input
wird vollständig mit$fill-with
aufgefüllt.Bei einem Leerstring oder einer Leersequenz als
$fill-with
wird$input
unverändert zurückgegeben.Ist
$input
länger als$fill-with
, wird$input
unverändert zurückgegeben.Beispiele
xsb:fill-right('X', '-', 4)
ergibt »X---
«
xsb:fill-right('', '-', 4)
ergibt »----
«
xsb:fill-right('X', '', 4)
ergibt »X
«
xsb:fill-right('sieben', '-', 4)
ergibt »sieben
«
Revision History Revision 0.2.50 2012-05-27 Stf Status: beta
initiale Version
Parameter
input as="xs:string?"
String, der aufgefüllt werden soll
Parameter
fill-with as="xs:string?"
Zeichen, mit dem aufgefüllt werden soll
Parameter
length as="xs:integer"
Anzahl Zeichen, auf die aufgefüllt werden soll