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 Kleinbuch­staben 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, Interpunkti­ons- und andere Nicht-Buchstabenzeichen.

Die entsprechenden Regeln sind im Unicode-Standard niedergelegt. Das Mapping der Buchstaben erfolgt anhand einer Tabelle, in der die korrespondierenden Zei­chen 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 Vari­ante 'Lu' (Letter, Uppercase) darstellt. Das einzeln stehende 'L' (Spalte 5) mar­kiert die Bidi-Klasse (Bidirectional Behavior) »left-to-right«.

Achtung – »Titlecaps« sind keine Großbuchstaben
Eine weitere Kategorie 'Lt' (»Letter, Titlecase«) stellt für alle alphabe­tischen Zeichen ungeachtet ihrer Groß- oder Kleinschreibung dieselben Gly­phen zur Verfügung. Sie sollte nicht mit Großbuchstaben verwechselt wer­den – die Information über die Schreibweise ist in einem in Titlecaps umge­wandelten String noch enthalten; bei einer Umwandlung von Groß- in Kleinbuchstaben oder umgekehrt geht die Information über die ursprüngli­che 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ämt­licher Sprachen sind der Kategorie L zugeordnet, verfügen also zum Teil von vornherein nicht über das Konzept Groß-/Kleinbuchstaben. Aber auch in Spra­chen, die (weitestgehend) mit dem normalen lateinischen Alphabet geschrie­ben werden, ist die Umwandlung nicht sprachübergreifend konsistent – so kor­respondiert 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 wer­den, 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 Umwand­lung nicht betroffen. Eine Umkehrung der Umwandlung ist nicht möglich, da keine Informationen über den vorherigen Zustand des Strings gespeichert wer­den.

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