Cómo pongo saltos de línea en XML + XSL
Me estoy metiendo poco a poco en estas cosas y me surge un problema básico:
Tengo un xml contiene texto:
<code><documento>
<texto> Vestibulum gravida arcu ac dui. Proin porttitor, turpis nec gravida varius, nibh augue viverra purus, id facilisis neque ante at pede. Donec eros.
</texto>
</documento></code>
Por otra parte tengo una plantilla xsl para transformarlo en xhtml y un script básico -que me donaron solidariamente- de php para parsearlo.
<code><?php
$xml = new DOMDocument;
$xml->load("../xml/index.xml");
$xsl = new DOMDocument;
$xsl->load('../xsl/index.xsl');
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?></code>
El problema es con los <br /> ¿Cómo los pongo en el xml para que me aparezcan en el xhtml resultante? Ya he visto de todo, usar \n, he hecho pruebas con otros scripts de php, etc. pero no lo logro.
MIl millón gracias!
(Gracias Gonzalo x tu paciencia!)
cbp
el método funciona, otra cosa es que sea una ñapa bastante grande :P
almostdesign
cbp
había un hilo en donde se hablaba de cómo transformar un XML en XHTML usando XSL y PHP, pero se debe de haber perdido. no recuerdo si el script que se usaba era como el tuyo...
Ese hilo lo había abierto yo y, por lo que veo, se ha perdido. De todos modos, no hablaba del tema, puesto que el script que está utilizando danielSan se lo he pasado yo.
Dani, prueba el truquillo de cbp y nos cuentas...
cbp
puestos a ser cutres prueba a meter los elementos entre comentarios <!-- y --> en lugar de elementos CDATA, así podras usar HTML dentro de ese nodo :P
danielsandesign
Una lástima, pero el único post que encuentro es en relación a esto es este, y no me acaba de aclarar el tema.
Me voy a investigar lo del utf8_decode que dices, de todos modos gracias y si veis algo -y dmstk no vuelve a caer (toco madera ;O) )- ya sabéis...
Por ahora con mi apaño de <parrafo> </parrafo> voy tirando :)
cbp
había un hilo en donde se hablaba de cómo transformar un XML en XHTML usando XSL y PHP, pero se debe de haber perdido. no recuerdo si el script que se usaba era como el tuyo...
¿has salvado el fichero como UTF-8? ¿has probado a usar el utf8_decode con el XML que has recibido? es que se me ocurre una solución pero es un poco ñapa, no mola
danielsandesign
Si señor.
Yo no se, igual es un tema que estoy apenas investigando, si me podéis orientar un poco con el tema del parseador mejor aún.
cbp
¿qué cabecera le estás poniendo al XML? ¿es UTF-8?
danielsandesign
Poz de parseador ni idea. El script de php creo que hace el trabajo, php V5.
ernieb
Esa solución, hmmmm... bueno....
Una pregunta: ¿que parser estas empleando?
Podrias mirar con el tema que he comentado previamente de <![CDATA[ ... ]]> como te lo devuelve el dato. :-¿? Igual es una opción del parseador (digo...).
Ya contaras, y suerte
eRNieB
danielsandesign
Buf! por el momento se me ha ocurrido una solución, pero es tremendamente chapucera.
<code><documento>
<texto>
<parrafo>
Vestibulum gravida arcu ac dui. Proin porttitor, turpis nec gravida varius.
</parrafo>
<parrafo>
Nibh augue viverra purus, id facilisis neque ante at pede. Donec eros.
</parrafo>
</texto>
</documento></code>
Y en el xsl hacer un xsl:for-each para que me ponga los <p> por separado. Es una chapuza, si alguien me ilumina lo recompensaré con miles de sonrisas. :(
danielsandesign
Pues lo había probado antes, olvidé mencionarlo.
No me funciona, las etiquetas que incluyo me aparecen en el texto visible, o sea que salen tal cual en pantalla sin ser procesadas como html.
Supongo que será una tontería sabiendo una pizca de php.
Grrrrr! Grrracias igualmente.
ernieb
Hmmmm... yo personalmente lo haria con <CDATA
Ejemplo:
<documento>
<texto> Vestibulum gravida arcu ac dui. Proin porttitor, turpis nec gravida varius, nibh augue viverra purus, id facilisis neque ante at pede. Donec eros.
Donec eros.
Vestibulum gravida arcu ac dui....
</texto>
</documento>
Ponerlo asi:
<documento>
<texto><![CDATA[Vestibulum gravida arcu ac dui. Proin porttitor, turpis nec gravida varius, nibh augue viverra purus, id facilisis neque ante at pede. Donec eros.<p />Donec eros.<p />Vestibulum gravida arcu ac dui....]]>
</texto>
</documento>
Otra solución seria emplear la función str_replace de PHP, pero depende del parseador que emplees tal vez te de problemas.
Saludos,
eRNieB