Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   XSL: mostrar el HTML de un CDATA (http://www.forosdelweb.com/f14/xsl-mostrar-html-cdata-442385/)

monoswim 11/11/2006 19:49

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

Mikmoro 12/11/2006 16:55

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.

monoswim 13/11/2006 11:06

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

Mikmoro 13/11/2006 12:35

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.

monoswim 13/11/2006 13:39

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 !!!

monoswim 14/11/2006 06:43

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

Mikmoro 14/11/2006 11:58

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.

monoswim 14/11/2006 12:47

Mil gracias chaval, me quedó más que claro !!!

Saludos

jpelozo 25/09/2008 07:45

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?

monoswim 25/09/2008 08:57

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


La zona horaria es GMT -6. Ahora son las 08:49.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.