fn:lower-case
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Kategorie: Stringfunktionen – Analyse und Manipulation
Herkunft: XPath 2.0
Rückgabewert: Ein String xs:string; eine Kopie des Eingabestrings, innerhalb derer ursprünglich enthaltene Großbuchstaben durch korrespondierende Kleinbuchstaben ersetzt sind.
Aufruf/Argumente:
fn:lower-case($eingabestring)
$eingabestring:
Ein String xs:string, in dem die enthaltenen Großbuchstaben durch die korrespondierenden Kleinbuchstaben ersetzt werden. Wird der Funktion die leere Sequenz übergeben, so gibt sie einen leeren String zurück.
Verwendungszweck:
Die Funktion fn:lower-case() wandelt alle im Eingabestring vorliegenden Großbuchstaben für den Ausgabestring vollständig in die korrespondierenden Kleinbuchstaben um. Die Umwandlung ist nicht umkehrbar.
Wird der Funktion ein String übergeben, so wird der zum Großbuchstaben korrespondierende Kleinbuchstabe für die Zeichenersetzung gemäß den Regeln für Unicode Case Mapping bestimmt. Dies ist bedeutsam in Fällen, wo eine mehrdeutige Ersetzungsmöglichkeit vorliegt (Unicode Special Casing), wie beispielsweise beim griechischen Großbuchstaben Σ (Sigma), für den kleingeschrieben zwei Varianten σ und ς existieren (siehe auch fn:upper-case()).
Existiert zu einem Großbuchstaben kein korrespondierender Kleinbuchstabe, so wird keine Ersetzung vorgenommen. Ebenso nicht angetastet werden Ziffern, Interpunktions- und andere Nicht-Buchstabenzeichen.
Die entsprechenden Regeln sind im Unicode Standard (aktuell: Version 5.0) niedergelegt. Das Mapping der Buchstaben erfolgt anhand einer Tabelle, in der die korrespondierenden Zeichen abgelegt sind (Auszug):
# vorangehend weitere Mappings
003F;QUESTION MARK; Po;0; ON;;;;;N;;;;;
0040;COMMERCIAL AT; Po;0; ON;;;;;N;;;;;
0041;LATIN CAPITAL LETTER A; Lu;0; L;;;;;N;;;;0061;
0042;LATIN CAPITAL LETTER B; Lu;0; L;;;;;N;;;;0062;
...
# weitere Mappings
...
03A1;GREEK CAPITAL LETTER RHO; Lu;0; L;;;;;N;;;;03C1;
03A3;GREEK CAPITAL LETTER SIGMA;Lu;0; L;;;;;N;;;;03C3;
# folgend weitere Mappings
Erläuterung:
Buchstaben werden in Unicode in die Kategorie L (»Letter«) eingeordnet, die in verschiedene Untergruppen 'L&' (& ist Platzhalter) zerfällt. Zu allen in der mittleren Spalte mit 'Lu' (»Letter, Uppercase«) markierten Zeichen existiert ein korrespondierendes Zeichen, das dessen kleingeschriebene Variante 'Ll' (Letter, Lowercase) darstellt. Das einzeln stehende 'L' (Spalte 5) markiert die Bidi-Klasse (Bidirectional Behavior) als »left-to-right«.
Für Interpunktions- und Sonderzeichen der Kategorie P (siehe die Zeilen QUESTION MARK »?« und COMMERCIAL AT »@« im obigen Auszug aus der Mappingtabelle) gibt es keine korrespondierende Kleinschreibung – sie sind von einer Ersetzung daher nicht betroffen. Sie sind mit dem Kürzel P 'Po' (Punctuation, other) markiert. Ihre Bidi-Signatur 'ON' bedeutet in diesem Zusammenhang 'other neutrals'.
Achtung – »Titlecaps« sind keine Großbuchstaben
Eine weitere Kategorie 'Lt' (»Letter, Titlecase«) stellt für alle alphabetischen Zeichen ungeachtet ihrer Groß- oder Kleinschreibung dieselben Glyphen zur Verfügung. Sie sollte nicht mit Großbuchstaben verwechselt werden – die Information über die Schreibweise ist in einem in Titlecaps umgewandelten String noch enthalten; bei einer Umwandlung von Groß- in Kleinbuchstaben oder umgekehrt geht die Information über die ursprüngliche Schreibweise dagegen verloren.
Eine korrekte Zeichenersetzung ist sprachabhängig. Nicht alle Zeichen sämtlicher Sprachen sind der Kategorie L zugeordnet, verfügen also zum Teil von vornherein nicht über das Konzept Groß-/Kleinbuchstaben. Aber auch in Sprachen, die (weitestgehend) mit dem normalen lateinischen Alphabet geschrieben werden, ist die Umwandlung nicht sprachübergreifend konsistent – so korrespondiert das »normale« kleine i im Türkischen mit dem großen gepunkteten İ, das »normale« große I dagegen mit dem kleinen ungepunkteten ı.
Alternative – Umwandlung bei der Präsentation
Soll Text mit XSL-FO oder CSS in Kleinbuchstaben präsentiert werden, so kann mit dem Property text-transform="lowercase" gearbeitet werden. Die Darstellung als Kleinbuchstaben geschieht dann ohne wirkliche Umwandlung, d.h. ohne Informationsverlust.
Beispiel – Umwandlung eines Strings in Kleinbuchstaben:
fn:lower-case("ABc!D")
ergibt abc!d. Das Ausrufezeichen ist von der Umwandlung nicht betroffen. Das bereits kleingeschriebene c bleibt unverändert. Eine Rückwandelung des Strings in den ursprünglichen Zustand (Rekonstruktion) ist anschließend nicht mehr möglich.
Funktionsdefinition:
XPath 1.0:
Funktion nicht verfügbar
XPath 2.0:
fn:lower-case($arg as xs:string?) as xs:string
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn