diciembre 2009

Reemplazar texto en transformada xslt

Trabajo desde hace años usando de una forma intensiva las transformadas xslt, y a pesar de que son fáciles de utilizar y se pueden hacer infinidad de cosas, llegando al caso de ser propiamente dicho, un lenguaje de programación, hay algo que siempre he echado en falta. A pesar de que xsl tiene funciones para el tratamiento de cadenas como substring, startwith, concat, etc. nunca he visto que tenga una función para reemplazar texto, algo que seria muy útil. Siempre que he tenido que hacer un reemplazo de texto lo he hecho de diferentes formas, a cual mas chapucera. Si tenia que sustituir una frase entera, llenaba el xsl de xsl:if o de xsl:choose con sus consecuentes xsl:when, pero si tenia que sustituir parte de una frase, ya la cosa se complicaba mas, usando casi siempre el nombre de espacio user, y definiendo una función en el lenguaje que utilizaba (en mi caso .net), pero esto tiene un problema, si por algún casual, quiero migrar a otro lenguaje (que no veo yo a mi jefe mucho por la labor), la transformada no me serviría fuera del entorno de .net.

Para solucionar este problema, decidí crear una función de xsl, mas que una función es un template, pero como a mi me gusta usar los templates como funciones con parámetros, también me gusta llamarlas funciones. Bueno, el caso es que he creado una función/template, que recibe 3 parámetros, y que vendría a ser mas o menos como el replace de php, pero con el funcionamiento del replace de javascript, porque de momento solo reemplaza de 1 en 1, digamos que no es un replace all. La función recibe 3 parámetros, uno con el texto a base, la cadena de donde queremos reemplazar el texto, otro parámetro con el texto que va a ser reemplazado, y otro parámetro con el texto a reemplazar. El código de la función seria el siguiente:



   
   
   
   
   
   

   
   
   
   





   
      
      
      
   

Espero que esta pequeña función para xsl, os sea tan útil como a mi. Por cierto, el ejemplo me lo saque de uno que monte en el curro, así que cada uno lo tendrá que modificar en base a sus necesidades. A ver si me lo curro un poco y modifico la función para que sea un replace all, en lugar de un replace one.

OmmWriter beta 2

Logo de OmmWriter
Logo de OmmWriter

El miércoles por la tarde recibí un correo de Rafa Soto (un correo automático), donde decía que acababan de publicar la versión beta 2 de OmmWriter, ya comentado anteriormente en este blog. En ese mismo momento me dispuse a bajarlo y sustituir la beta 1 por la beta 2.

Como ya he comentado en una entrada anterior, OmmWriter, el editor de textos Zen, OmmWriter es una aplicación para escribir textos con toda la tranquilidad del mundo, y salvo ciertos defectillos, es magnifica y la recomiendo a todos los que tengan un Mac

De entrada, la nueva versión, se aprecia que en cuanto a interfaz, no hay nada nuevo, pero a nivel interno, rendimiento, mejoras, fallos, si se ha trabajo bastante para mejorar la aplicación. Los cambios de la nueva versión son:

Nuevas características:

  • Contador de palabras
  • Backup automático, producido cada 3 minutos, guardandolo en el archivo situado en «Library/OmmWriter/OmmWriterBackup.omm»

Bugs corregidos:

  • Corregido un error en los micros i7 que fallaba al arrancar
  • Al abrir un archivo no te preguntaba si querías guardar el actual y perdías el contenido
  • Al parecer un error que se producía cuando presionábamos cmd+p
  • La beta 1 estaba limitada a la versión 10.5.5 de Mac Os X, se ha rebajado a la versión 10.5.0 de Mac Os X
  • Al parecer el tipo de letra script, perdía ciertas animaciones en algunas letras en ciertos tamaños de texto
  • OmmWriter no guardaba todos los archivos con codificación UTF-8
  • Al parecer, al minimizar la ventana desaparecía y era recuperable (a mi si me funcionaba)
  • El panel de guardar aparecía 2 veces.
  • El panel de «guardar antes de salir» esta mas detallado, ahora aparece «cancelar, no guardar, guardar»
  • El panel de «guardar antes de salir» desaparecía al cambiar de aplicación.
  • Los scrolls volvían al inicio cuando se abría un nuevo documento
  • Redibujado de scrolls cuando se borra un texto seleccionado
  • Redibujado de scrolls cuando se abre un nuevo archivo
  • El cursor es mas preciso para ciertas combinaciones de fuetes y tamaños.
  • Reducido al mínimo la transparencia de CharAnimationLayer, que lo hacia desaparecer cuando no se usaba (la verdad, no se a que se refiere).
  • Mejor experiencia al arrastrar la capa que engloba al texto al llevarlo a los bordes de la pantalla
  • El tipo de letra manuscrita, tenia cierto lag que se ha corregido a la hora de introducir texto
  • Cuando usábamos cmd+tab o cmd+q, cuando no teníamos el foco en un documento no guardado, producía que la interfaz se quedara transparente o se quedara en una transacción de transparencia. Como nota añadir que al hacer cmd+q para cerrar, si el documento no estaba guardado, a mi me petaba, pero con esta nueva versión ya me funciona
  • Corregido un error en las extensiones cuando estábamos en el panel de «guardar como»
  • Cambiado que cuando escribimos una palabra mal escrita salía en gris en lugar de rojo subrayado. Decir que ni en la anterior ni en esta versión, me subraya las palabras mal escritas

Poco a poco va mejorando esta magnifica aplicación, a ver si corrigen alguno de los errores que aun se siguen produciendo. Y como no, recomiendo a todo el que tenga un Mac Os X, que lo prueba, porque no se arrepentirá de usar OmmWriter.

Por fin de vacaciones

Hace un mes retome el blog, después de mucho tiempo sin escribir en el. Por desgracia, el ritmo de trabajo, intentando, como no, sacar proyectos de meses de trabajo en pocos días, hacia que al llegar a casa lo que menos me apetecía era coger un ordenador. Por fin, y gracias a la incompetencia de los proveedores de servicios (webservice de datos) que no saben hacer la O con un canuto, no puedo avanzar mas en mi trabajo y por fin, puedo disfrutar de unas mas que merecidas vacaciones. Ya era hora de descansar, 35 días de vacaciones, contando festivos y fines de semana, repartidos hasta el 31 de Enero. A ver si gracias a este descanso puedo aprovechar, entre otras cosas, mas tiempo al blog.

Scroll al inicio