fn:upper-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 – Manipulation
Herkunft: XPath 2.0
Rückgabewert: Ein String xs:string; eine Kopie des Eingabestrings, innerhalb derer ursprünglich enthaltene Kleinbuchstaben durch korrespondierende Großbuchstaben ersetzt sind.
Aufruf/Argumente:
fn:upper-case($eingabestring)
$eingabestring:
Ein String xs:string, in dem die enthaltenen Kleinbuchstaben durch die korrespondierenden Großbuchstaben ersetzt werden. Wird der Funktion die leere Sequenz übergeben, so gibt sie einen leeren String zurück.
Verwendungszweck:
Die Funktion fn:upper-case() wandelt alle im Eingabestring vorliegenden Kleinbuchstaben für den Ausgabestring vollständig in die korrespondierenden Großbuchstaben um. Die Umwandlung ist nicht umkehrbar!
Wird der Funktion ein String übergeben, so wird der zum Kleinbuchstaben korrespondierende Großbuchstabe für die Zeichenersetzung gemäß den Regeln für Unicode Case Mapping bestimmt. Existiert zu einem Kleinbuchstaben kein korrespondierender Großbuchstabe (Beispiel: der Buchstabe ß), so wird keine Ersetzung vorgenommen. Ebenso nicht angetastet werden Ziffern, Interpunktions- und andere Nicht-Buchstabenzeichen.
Die entsprechenden Regeln sind im Unicode-Standard niedergelegt. Das Mapping der Buchstaben erfolgt anhand einer Tabelle, in der die korrespondierenden Zeichen abgelegt sind (Auszug):
# vorangehend weitere Mappings
005F;LOW LINE; Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
0060;GRAVE ACCENT; Sk;0;ON;;;;;N;SPACING GRAVE;;;;
0061;LATIN SMALL LETTER A; Ll;0;L;;;;;N;;;0041;;0041
0062;LATIN SMALL LETTER B; Ll;0;L;;;;;N;;;0042;;0042
...
# weitere Mappings
...
03C1;GREEK SMALL LETTER RHO; Ll;0;L;;;;;N;;;03A1;;03A1
03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
03C3;GREEK SMALL LETTER SIGMA; Ll;0;L;;;;;N;;;03A3;;03A3
03C4;GREEK SMALL LETTER TAU; Ll;0;L;;;;;N;;;03A4;;03A4
# 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 'Ll' (»Letter, Lowercase«) markierten Zeichen existiert ein korrespondierendes Zeichen, das dessen großgeschriebene Variante 'Lu' (Letter, Uppercase) darstellt. Das einzeln stehende 'L' (Spalte 5) markiert die Bidi-Klasse (Bidirectional Behavior) »left-to-right«.
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.
Der kleine, in zwei Varianten (für Verwendung innerhalb oder am Ende eines Wortes) existierende griechische Buchstabe Sigma ς (U+03B2) und σ (U+03B3) wird jeweils auf den gleichen Großbuchstaben Σ (U+03A3) gemappt.
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 Großbuchstaben präsentiert werden, so kann mit dem Property text-transform="uppercase" gearbeitet werden. Die Darstellung als Großbuchstaben geschieht dann ohne wirkliche Umwandlung, d.h. ohne Informationsverlust.
Beispiel – Umwandlung von Klein- in Großbuchstaben:
fn:upper-case("abCd0")
ergibt "ABCD0"
Bereits als Großbuchstaben im String enthaltene Zeichen (hier das C) und nicht-alphabetische Zeichen (wie hier die Ziffer 0) sind von der Umwandlung nicht betroffen. Eine Umkehrung der Umwandlung ist nicht möglich, da keine Informationen über den vorherigen Zustand des Strings gespeichert werden.
Funktionsdefinition:
XPath 1.0:
Funktion nicht verfügbar
XPath 2.0:
fn:upper-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