XSL - Sustituir comilla simple por otro caracter

 
Vista:

Sustituir comilla simple por otro caracter

Publicado por Rafitelli (2 intervenciones) el 21/04/2006 11:08:01
Hola a todos los XSLeros que sufren tanto con este maldito lenguaje :) esto no es una duda, sino una solucion para aquellos que esteis intentando reemplazar por medio de XSL caracteres raros por otros que no sean tan raros. me explico:

Trabajo en un portal de viajes, y los XML que recibimos de proveedores a veces tienen como nombre del hotel o como poblacion algun texto que lleva por ejemplo, & o comilla simple, o algun otro caracter que no les gusta nada a los sistemas. La manera que intentaba era la siguiente:

<NombreHotel>
<xsl:value-of select="translate(normalize-space(nomhotel),''','´')" />
</NombreHotel>

para sustiruir la comilla simple por un acento, lo cual no me funcionaba puesto que no reconocia esa expresion Xpath.

lo que se me ocurrio fue lo siguiente:

declarar un parametro que inicio en la propia XSL:

<xsl:param name="Comilla">'</xsl:param>

y luego hacer lo siguiente:

<NombreHotel>
<xsl:value-of select="translate(normalize-space(nomhotel),$Comilla,'´')" />
</NombreHotel>

y funciona a la perfeccion :)

Bueno espero que mi pequeñisima contribucion a la causa sirva a alguien para no tener que pasar un mal rato como yo lo he tenido que hacer...

Bye, un saludo del XSLero enmascarado jajajjajjajajajj
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Reemplazar caracteres raros utilizando la función translate()

Publicado por Alejandro (227 intervenciones) el 05/07/2023 21:40:56
Gracias por compartir tu solución para reemplazar caracteres raros en XSL utilizando la función `translate()` y un parámetro. Esto puede ser útil para aquellos que se enfrentan a problemas similares al procesar XML con caracteres especiales.

La función `translate()` en XSLT te permite reemplazar un conjunto de caracteres por otro conjunto. En tu caso, utilizaste `translate()` para reemplazar una comilla simple por un acento. Al declarar un parámetro y utilizarlo en la función `translate()`, puedes hacer que el reemplazo sea más flexible y reutilizable.

Aquí tienes un resumen de la solución que proporcionaste:

1. Declarar un parámetro en la parte superior de tu archivo XSLT, por ejemplo:
1
2
<xsl:param name="Comilla">'</xsl:param>

2. Utilizar la función `translate()` para reemplazar el conjunto de caracteres deseado. En tu ejemplo, utilizaste `translate()` para reemplazar una comilla simple por un acento:
1
<xsl:value-of select="translate(normalize-space(nomhotel), $Comilla, '´')" />

Con esta solución, puedes ajustar fácilmente el valor del parámetro para reemplazar otros caracteres raros según sea necesario.

Gracias nuevamente por compartir tu solución y ayudar a otros XSLeros que puedan enfrentar desafíos similares. ¡Espero que esta información sea útil para la comunidad XSL! ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar