Konvertiere das erste Zeichen jedes Wortes in Großbuchstaben

7

Ich habe einen String und ich muss den ersten Buchstaben jedes Wortes in Großbuchstaben umwandeln und mit xsl in den Kleinbuchstaben setzen, zum Beispiel

Eingabestring = dInEsh sAchdeV kApil Muk

Gewünschter Ausgangsstring = Dinesh Sachdev Kapil Muk

Obwohl ich weiß, dass ich die Übersetzungsfunktion für den Zweck verwenden muss, aber wie kann ich die erste Urkunde jedes Wortes in Großbuchstaben übersetzen und alles in Kleinbuchstaben mit XSLT 1.0 ablegen

Danke

    
Dinesh Sachdev 108 29.10.2012, 13:26
quelle

7 Antworten

10

Das Folgende ist nicht "nett", und ich bin mir sicher, dass jemand (hauptsächlich Dimitri) etwas viel Einfacheres (besonders in XSLT 2.0) finden könnte ... aber ich habe dies getestet und es funktioniert

%Vor%

Die Grundidee ist, dass Sie CamelCase aufrufen, wenn es ein Leerzeichen findet, dann CamelCaseWord auf alles vor Leerzeichen (also das erste Wort) ausführt und dann CamelCase aufruft wieder mit dem alles nach der Raum (dh der Rest des Satzes). Andernfalls, wenn kein Leerzeichen gefunden wird (weil es das letzte Wort im Satz ist), ruft es nur CamelCaseWord auf.

Die Vorlage CamelCaseWord übersetzt einfach das erste Zeichen von unten nach oben (falls erforderlich) und alle verbleibenden Zeichen von oben nach unten (falls erforderlich).

Um es zu nennen, hättest du ...

%Vor%     
freefaller 29.10.2012, 13:53
quelle
3

Zusätzlich:

Ich habe die 1.0-Anforderung in der Frage verpasst. Dies funktioniert nur ab Version 2.0.

Ursprüngliche Antwort hier unten.

Ich glaube, das hat vor einiger Zeit für mich funktioniert. Deklariere eine Funktion:

%Vor%

Und benutze es:

%Vor%

Gutschrift geht an samjudson = & gt; Ссылка

    
Kris 29.10.2012 14:18
quelle
3

Hier ist eine 8 Jahre alte Version von FXSL 1.x (eine XSLT 1.0 Bibliothek, komplett in XSLT 1.0 geschrieben):

test-strSplit-to-Words10.xsl:

%Vor%

Wenn diese Umwandlung auf das folgende XML-Dokument angewendet wird (test-strSplit-to-Words10.xml):

%Vor%

Das Ergebnis ist :

%Vor%

Bei Anwendung auf dieses XML-Dokument (Ihr bereitgestelltes Beispiel):

%Vor%

Das Ergebnis ist :

%Vor%

Mit nur ein wenig Tweek erhalten wir diesen Code :

%Vor%

was nun das gewünschte Ergebnis erzeugt :

%Vor%

Erläuterung :

Die Vorlage str-split-word-del von FXSL kann für die Tokenisierung mit (möglicherweise mehr als einem) Trennzeichen verwendet werden angegeben als String-Parameter.

    
Dimitre Novatchev 29.10.2012 22:52
quelle
2

Sie können das auch versuchen:

Ссылка

%Vor%

und rückwärts: Ссылка

%Vor%     
Petr Plenkov 06.12.2017 15:19
quelle
1

Hier ist eine andere kurze Lösung. Es verwendet reines XSL-T 2.0. Ich weiß, dass OP eine Anforderung für XSL-T 1.0 hatte, aber da diese Seite 2015 auf Platz 1 der "xsl-t title case function" von Google steht, scheint dies relevanter zu sein:

%Vor%

Dabei steht 'xx' für Ihren eigenen Namensraum.

    
Richard Kennard 09.04.2015 22:36
quelle
0

Dieselbe Funktion in XQUERY:

Funktion Xquery zu Camel Case.

%Vor%     
Marcelo Okada 17.10.2013 19:05
quelle
0

Eine sehr kurze Lösung, die die Funktion split() von EXSLT verwendet:

%Vor%

Arbeitsdemo: Ссылка

    
Utkanos 04.02.2014 13:30
quelle

Tags und Links