Convertir le premier caractère de chaque mot en majuscule
J'ai un String et j'ai besoin de convertir la première lettre de chaque mot en majuscule et le reste en minuscules à l'aide de xsl, Par exemple,
Chaîne d'entrée= dInEsh sAchdeV kApil Muk
Désirée En Sortie De Chaîne= Dinesh Sachdev Kapil Muk
Bien, je sais que je dois utiliser la fonction de traduction dans le but, mais comment puis-je traduire la première charte de chaque mot en majuscule et le reste tous les bas - de-casse à l'aide de XSLT 1.0
Grâce
source d'informationauteur Dinesh Sachdev 108
Vous devez vous connecter pour publier un commentaire.
La suite n'est pas "sympa", et je suis sûr que quelqu'un (surtout Dimitri) pourrait venir avec quelque chose de beaucoup plus simple (surtout dans XSLT 2.0)... mais j'ai testé et ça marche
L'idée de base est que vous appelez
CamelCase
s'il trouve un espace, puis il exécuteCamelCaseWord
sur tout avant l'espace (c'est à dire le premier mot), puis appelleCamelCase
à nouveau avec le tout après l'espace (c'est à dire le reste de la phrase). Sinon, si aucun espace n'est trouvé (parce qu'il a le dernier mot dans la phrase), puis il appelle justeCamelCaseWord
.La
CamelCaseWord
modèle traduit simplement le premier caractère de l'inférieur au supérieur (si nécessaire) et tous les autres personnages du haut vers le bas (si nécessaire).Afin d'appeler vous auriez...
Supplémentaires:
J'ai raté le 1.0 exigence dans la question. Cela ne fonctionnera a partir de la version 2.0.
Réponse originale à cette question ci-dessous ici.
Je crois que celui-ci a fonctionné pour moi il ya un moment. Déclarer une fonction:
Et de l'utiliser:
de crédit va à samjudson => http://p2p.wrox.com/xslt/80938-title-case-string.html
Ici est une de 8 ans FXSL 1.x (XSLT 1.0 bibliothèque entièrement écrite en XSLT 1.0) solution:
test-strSplit-à-Words10.xsl:
Lorsque cette transformation est appliquée sur le document XML suivant (test-strSplit-to-Words10.xml):
le résultat est:
Lorsqu'il est appliqué à ce document XML (votre exemple):
le résultat est:
Avec juste un peu de l'ajustez, nous obtenir ce code:
qui, désormais, produit le résultat voulu:
Explication:
La
str-split-word-del
modèle de FXSL peut être utilisé pour la segmentation avec (éventuellement plusieurs) délimiteurs spécifié comme une chaîne de caractère en paramètre.Vous pouvez aussi essayer ceci:
http://www.xsltfunctions.com/xsl/functx_camel-case-to-words.html
et vers l'arrière:
http://www.xsltfunctions.com/xsl/functx_words-to-camel-case.html
Voici un autre court de solution. Il utilise pure XSL-T 2.0. Je sais que l'OP avait une exigence pour XSL-T 1.0, mais depuis cette page est classée n ° 1 sur Google pour " xsl-t, cas de titre de fonction en 2015, ce qui semble plus pertinent:
Où " xx " est votre propre espace de noms.
Cette même fonction sur XQUERY:
fonction Xquery pour en Chameau Cas.
Un très court de solution, en utilisant EXSLT de
split()
fonction:De travail de démonstration: http://www.xmlplayground.com/CNmKdF