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.

3 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;

Deja un comentario

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

Scroll al inicio