Convertir un texto a mayusculas (toUpper) o minusculas (toLower) con transformadas xslt

Muchas veces, cuando necesitamos manipular texto desde transformaciones xsl, nos encontramos con el caso de que tenemos un texto en mayúsculas o un texto en minúsculas y queremos convertirlo a minúsculas o mayúsculas respectivamente. En cualquier lenguaje, solemos tener métodos para hacer un ToUpper, strtoupper o por el contrario ToLower, strtolower y similares, pero en xsl, al ser tan genérico, no disponemos de ese tipo de funciones, aunque si deberían de estar.

Para suplir esta necesidad, me he creado 2 funciones muy útiles que utilizan la funcion traslate, que comentare en otro articulo. Básicamente lo que hacemos es intercambiar una cadena por la otra en base a lo que va entrando por un texto. Con estas funciones podemos llamar a StringToLower o StringToUpper como si de un template normal se tratase, indicandole el texto que queremos convertir a mayúsculas o convertir a minúsculas y automáticamente nos convertirá la cadena.

El código seria el siguiente:

<!-- Variables globales -->
<xsl:param name="lower" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:param name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
 
<!-- Convierte una cadena de texto, todo en minusculas -->
<!-- @param string text Cadena a convertir a minusculas -->
<!-- @return Cadena en minusculas -->
<xsl:template name="StringToLower">
  <xsl:param name="text"/>
  <xsl:value-of select="translate($text,$upper,$lower)"/>
</xsl:template>
 
<!-- Convierte una cadena de texto, todo en mayusculas -->
<!-- @param string text Cadena a convertir a mayusculas -->
<!-- @return Cadena en mayusculas -->
<xsl:template name="StringToUpper">
  <xsl:param name="text"/>
  <xsl:value-of select="translate($text,$lower,$upper)"/>
</xsl:template>
 
<xsl:call-template name="StringToLower">
  <xsl:with-param name="text"
      select="'Mi texto que quiere ser Reemplazado a minusculas'" />
</xsl:call-template>
<xsl:call-template name="StringToUpper">
  <xsl:with-param name="text"
      select="'Mi texto que quiere ser Reemplazado a mayusculas'" />
</xsl:call-template>

El resultado de esta tranformacion del StringToLower seria "mi texto que quiere ser reemplazado a minúsculas" y la segunda llamada con el StringToUpper seria "MI TEXTO QUE QUIERE SER REEMPLAZADO A MAYUSCULAS". Esto es algo muy útil para trabajar con textos.

4 comentarios en “Convertir un texto a mayusculas (toUpper) o minusculas (toLower) con transformadas xslt

  1. Pingback: Bitacoras.com
  2. Hola estimado,
    Estoy buscando la función que has creado para mi template. Al leer tu post me ilusioné por que describes mi problema al pie de la letra; sin embargo, mi ilusión duró poco ya que cuando llegué justo a la parte del código no visualicé nada. Me quedé en blanco como el lienzo donde debería estar el código o.0!
    Cuelga el código por fa.
    Saludos;

  3. Can I simply just say what a comfort to uncover a person that truly knows what they're discussing
    on the internet. You certainly know how to bring an issue to
    light and make it important. A lot more people should look at
    this and understand this side of the story. I was surprised that you are not more popular because you certainly possess the gift.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *