No dejes de compartir nuestro sitio y códigos en tus redes sociales, necesitamos tu ayuda para hacer crecer esta comunidad.
Solución:
Lo siguiente no es “agradable”, y estoy seguro de que a alguien (principalmente Dimitri) se le podría ocurrir algo mucho más simple (especialmente en XSLT 2.0) … pero lo he probado y funciona
La idea básica es que llames CamelCase
, si encuentra un espacio, corre CamelCaseWord
en todo antes de el espacio (es decir, la primera palabra) y luego llama CamelCase
otra vez con el todo después el espacio (es decir, el resto de la oración). De lo contrario, si no se encuentra ningún espacio (porque llega a la última palabra de la oración), simplemente llama CamelCaseWord
.
El CamelCaseWord
plantilla simplemente traduce el primer carácter de inferior a superior (si es necesario) y todos los caracteres restantes de superior a inferior (si es necesario).
Así que para llamarlo tendrías …
dInEsh sAchdeV kApil Muk
Adicional:
No cumplí con el requisito 1.0 de la pregunta. Esto solo funcionará a partir de la versión 2.0.
Respuesta original a continuación aquí.
Creo que este me funcionó hace un tiempo. Declarar una función:
Y úsalo:
el crédito va a Samjudson => http://p2p.wrox.com/xslt/80938-title-case-string.html
Aquí hay una solución FXSL 1.x de 8 años (una biblioteca XSLT 1.0 escrita completamente en XSLT 1.0):
test-strSplit-to-Words10.xsl:
Cuando esta transformación se aplica en el siguiente documento XML (test-strSplit-to-Words10.xml):
004.lightning crashes (live).mp3
el resultado es:
004.Lightning Crashes (Live).mp3
Cuando se aplica a este documento XML (su muestra proporcionada):
dInEsh sAchdeV kApil Muk
el resultado es:
DInEsh SAchdeV KApil Muk
Con solo un pequeño truco, obtenemos este código:
que ahora produce el resultado deseado:
Dinesh Sachdev Kapil Muk
Explicación:
El str-split-word-del
plantilla de FXSL se puede utilizar para la tokenización con (posiblemente más de uno) delimitadores especificados como string parámetro.
Comentarios y valoraciones
Nos encantaría que puedieras dar difusión a esta noticia si te valió la pena.