Foros del Web » Programación para mayores de 30 ;) » Programación General »

XSL: mostrar el HTML de un CDATA

Estas en el tema de XSL: mostrar el HTML de un CDATA en el foro de Programación General en Foros del Web. Tengo un XML que tiene en un lugar un CDATA con un código fuente HTML dentro... Al mostrarlo desde el XSL me muestra el código ...
  #1 (permalink)  
Antiguo 11/11/2006, 19:49
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
XSL: mostrar el HTML de un CDATA

Tengo un XML que tiene en un lugar un CDATA con un código fuente HTML dentro...

Al mostrarlo desde el XSL me muestra el código fuente, sin interpretarlo... o sea que en vez de poner hola en negrita me pone <b>hola</b>

Como puedo hacer que me lo interprete ?

Saludos
__________________
Esteban Quintana
  #2 (permalink)  
Antiguo 12/11/2006, 16:55
Avatar de Mikmoro
Colaborador
 
Fecha de Ingreso: octubre-2006
Ubicación: K-pax
Mensajes: 7.228
Antigüedad: 17 años, 6 meses
Puntos: 280
Yo diría que debes usar la etiqueta copy-of para que muestre el contenido del CDATA tal cual.

<xsl:template match="tu_etiqueta">
<xsl:copy-of select="."/>
</xsl:template>

Esto sacará el conteido tal cuál, y por tanto será interpretada la negrita.
Mikel.
  #3 (permalink)  
Antiguo 13/11/2006, 11:06
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
No me funciona como dices

<xsl:template match="/root/pagina">
<div class="pTitle"><xsl:value-of select="titulo" /></div>
<xsl:copy-of select="cuerpo" />
</xsl:template>

el XMl es
<root><pagina>
<titulo>quelindo</titulo>
<cuerpo>hola<b>que onda</b></cuerpo>
</pagina></root>

me muestra el código fuente con los <b> y todo, al igual que si pongo el value-of

Que podría ser / hacer ?

Saludos
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 13/11/2006, 12:35
Avatar de Mikmoro
Colaborador
 
Fecha de Ingreso: octubre-2006
Ubicación: K-pax
Mensajes: 7.228
Antigüedad: 17 años, 6 meses
Puntos: 280
Buscando el problema

He hecho la prueba con tu xml y el código xsl que pones y veo perfectamente la negrita, tanto en Explorer como en Firefox. Igual el problema está en la cabecera:
¿Tienes puesto en la cabecera del archivo xsl los siguente?

<xsl:output method="html" encoding="ISO-8859-1"/>

En Firefox, si tienes el method de salida como xml (xsl:output method="xml"), no verás la negrita, porque devuelve un xml que no interpreta el formato, pero si pones html como salida ves la negrita perfectamente. No sé si será este el problema. Si no, pon el archivo xslt al completo a ver si se ve otra cosa.
Mikel.
  #5 (permalink)  
Antiguo 13/11/2006, 13:39
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
wow, joder, es verdad, ese código funciona y hace lo que necesito...Ahora veré paso por paso que es lo que puede estar fallando en mi código entero...

Saludos y gracias !!!
__________________
Esteban Quintana
  #6 (permalink)  
Antiguo 14/11/2006, 06:43
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Me funciona pero sin el CDATA, poniendo directamente el código entre los tags...Con el CDATA no me funca...

para poner código HTML dentro de un XML lo correcto es el cdata no ?

O es correcto tirar los tags dentro del XML ?

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 14/11/2006, 11:58
Avatar de Mikmoro
Colaborador
 
Fecha de Ingreso: octubre-2006
Ubicación: K-pax
Mensajes: 7.228
Antigüedad: 17 años, 6 meses
Puntos: 280
Depende

No, justamente al estar en un CDATA le estás diciendo: "lo que viene a continuación es código, y no debes interpretarlo", de forma que por eso no lo interpreta. Depende de qué código debe ir directamente dentro de la etiqueta que sea, pero según cuál, puede que sea mejor que le dés una característica única a esa etiqueta y luego añadas el código mediante la xslt.

En el ejemplo que ponías,

<root><pagina>
<titulo>quelindo</titulo>
<cuerpo>hola<b>que onda</b></cuerpo>
</pagina></root>

es posible hacerlo así sin que pase nada (todo depende de tu DTD), pero también sería posible separar lo que va en negrita en otra etiqueta y sacarla en negrita con la xslt, por ejemplo:

<root><pagina>
<titulo>quelindo</titulo>
<cuerpo>hola</cuerpo>
<saludo>que onda</saludo>
</pagina></root>

Y luego en la xslt añadir
<xsl:template match="saludo">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>

Según qué quieras usar es mejor hacerlo de una manera o de otra, aunque en general es mejor la segunda.
Mikel.
  #8 (permalink)  
Antiguo 14/11/2006, 12:47
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Mil gracias chaval, me quedó más que claro !!!

Saludos
__________________
Esteban Quintana
  #9 (permalink)  
Antiguo 25/09/2008, 07:45
 
Fecha de Ingreso: septiembre-2007
Mensajes: 3
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: XSL: mostrar el HTML de un CDATA

Como estas viejo!! estoy teniendo el mismo problema, tampoco a mi me interpreta el codigo html desde el xml/xsl

podrias guiarme como solucionar?
  #10 (permalink)  
Antiguo 25/09/2008, 08:57
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Respuesta: XSL: mostrar el HTML de un CDATA

El ejemplo que coloqué antes funciona bien...estúdialo que te debería de funcionar

Más que eso no puedo hacer...si no colocas el código fuente...

Saludos
__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:44.