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

PHP,XML - XSLT Mediante Soblotron

Estas en el tema de PHP,XML - XSLT Mediante Soblotron en el foro de Programación General en Foros del Web. Esta es la primera que interactuo con este foro y despues de buscar entre todos los comentarios no puede encontrar nada al respecto, m i ...
  #1 (permalink)  
Antiguo 06/07/2004, 11:13
Avatar de enzoscuro  
Fecha de Ingreso: mayo-2004
Ubicación: hcda el carmen pan de azu
Mensajes: 51
Antigüedad: 20 años
Puntos: 0
PHP,XML - XSLT Mediante Soblotron

Esta es la primera que interactuo con este foro y despues de buscar entre todos los comentarios no puede encontrar nada al respecto, m i problema es el siguiente:

en mi servidor de prueba tengo instalado PHP Version 4.3.5 y la etencion siguiente

XSLTXML Support active XML Namespace Support active EXPAT Version 1.95.6

esta extension es utilizada para convertir xml en html mediante xslt,
todo funciona perfecto siempre y cuando a la funcion
xlst_process($parser,$xml,$xslt,$salida,$argumento s,$parametros)
le envie en:

$xml => una direccion de una pagina xml
$xsl => una direccion de una pagina xsl

como veran no se puede dar mayor mobilidad a una pagina *.xml estatica, por lo tanto se realiza una cosulta a una DB y en el mismo documento .php se escribe un string con el contenido XML, por otro lado el xsl si es estatico ya que se trata de una plantilla. bueno al momento de pasar como parametro el string xml a la funcion xslt_process envia el siguiente error:

Warning: Sablotron error on line 1: XML parser error 17: xml processing instruction not at start of external entity in c:\inetpub\wwwroot\xml\pruebas\index.php on line 33

la cual contiene:
$xh = xslt_create();
$args = array ('/_xml' => $xmlString);
//to view in brower
=>33 $resultado = xslt_process($xh, 'arg:/_xml', 'prueba.xsl', NULL, $args);
echo $resultado;
xslt_free($xh);

necesito ayuda en esto muchas gracias
__________________
El viento sopla en el oeste...
  #2 (permalink)  
Antiguo 07/07/2004, 01:14
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Podrias poner el XML que construyes?
Parece que tienes un error de sintaxis XML.

Un beso
  #3 (permalink)  
Antiguo 07/07/2004, 01:18
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Mira este enlace que encontré. Plantean mas o menos el mismo error con Sablotron.
La solución que le proponen dice que le funcionó... aunque más bien el problema que tiene es con un DTD.

Echale un vistazo y nos cuentas:

http://lists.debian.org/debian-laesp.../msg00038.html
  #4 (permalink)  
Antiguo 12/07/2004, 12:00
Avatar de enzoscuro  
Fecha de Ingreso: mayo-2004
Ubicación: hcda el carmen pan de azu
Mensajes: 51
Antigüedad: 20 años
Puntos: 0
aqui les va el codigo

aqui les envio el codigo el documento esta bien formado o eso creo IExplorer no me envia error cuando imprimo directamente el $xmlString, el codigo es el siguiente:

<?php
$xmlString =' <?xml version="1.0" encoding="iso-8859-1"?>';
$xmlString.=' <articulo>';
$xmlString.=' <titulo>';
$xmlString.=' Fechas de la carrera espacial';
$xmlString.=' </titulo>';
$xmlString.=' <parrafo>';
$xmlString.=' A continucion se presentaran los hitos mas inportantes de la carrera espacial, la cual concluyo ';
$xmlString.=' en la contruccion de la <bold>Base espacial comunitaria</bold>';
$xmlString.=' </parrafo>';
$xmlString.=' <hito id="1">';
$xmlString.=' <titulo>Viaje apollo 7</titulo>';
$xmlString.=' <fecha>25/12/1968</fecha>';
$xmlString.=' <cuerpo>Dos astronautas hacen una caminata espacial donde sobrevuelan la orbita lunar</cuerpo>';
$xmlString.=' </hito>';
$xmlString.=' <hito id="2">';
$xmlString.=' <titulo>Viaje apollo 8</titulo>';
$xmlString.=' <fecha>11/04/1969</fecha>';
$xmlString.=' <cuerpo>Nave norteamericana sobrevuela la superficie lunar tmando fotografias reveladoras.</cuerpo>';
$xmlString.=' </hito>';
$xmlString.=' <hito id="3">';
$xmlString.=' <titulo>Viaje apollo 9</titulo>';
$xmlString.=' <fecha>17/11/1969</fecha>';
$xmlString.=' <cuerpo>Viaje fallido de la aeronave lleva a la muerte de todo el equipo a bordo, es solo una tragedia';
$xmlString.=' por la carrera espacial</cuerpo>';
$xmlString.=' </hito>';
$xmlString.=' </articulo>';


$xh = xslt_create();
$args = array ('/_xml' => $xmlString);
//to view in brower
$resultado = xslt_process($xh, 'arg:/_xml', 'prueba.xsl', NULL, $args);
echo $resultado;
xslt_free($xh);
?>

ahora el xsl tiene enlazado un documento css no se si eso afectara en algo, mi opinion es que no deberia, como les digo el cuando imprimo directamente el xmlString todo sale bien, un saludo y muchas gracias...
__________________
El viento sopla en el oeste...
  #5 (permalink)  
Antiguo 13/07/2004, 02:40
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
pon también el XSL. Al fin y al cabo un XSL es un XML.
respecto al css, como lo enlazas en el XSL? No te habrás olvidado del "/>", verdad?
  #6 (permalink)  
Antiguo 13/07/2004, 08:13
Avatar de enzoscuro  
Fecha de Ingreso: mayo-2004
Ubicación: hcda el carmen pan de azu
Mensajes: 51
Antigüedad: 20 años
Puntos: 0
este es el xsl

<?xml version="1.0"?>

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">

<!--plantilla raiz-->
<xsl:template match="/">
<html>
<head>
<title>
<xsl:value-of select="articulo/titulo" />
</title>
<link href="prueba.css" rel="stylesheet" type="text/css"/>
</head>

<body>

<p class="title">
<xsl:value-of select="articulo/titulo"/>
</p>

<p>
<xsl:value-of select="articulo/parrafo"/>
</p>

<xsl:for-each select="articulo/hito">
<table width="60%" border="1" align="center" cellpadding="1" cellspacing="1">
<tr>
<td width="57%" class="dingbat">Titulo</td>
<td width="19%" class="dingbat">Fecha</td>
<td width="24%"><xsl:value-of select="fecha"/></td>
</tr>
<tr>
<td colspan="3"><xsl:value-of select="titulo"/></td>
</tr>
<tr>
<td colspan="3" class="dingbat">Cuerpo</td>
</tr>
<tr>
<td colspan="3"><xsl:value-of select="cuerpo"/></td>
</tr>
</table>
<br/>
</xsl:for-each>
</body>
</html>

</xsl:template>


<xsl:template match="bold">
<B>
<xsl:apply-templates/>
</B>
</xsl:template>

</xsl:stylesheet>

me parece que todo esta bien el css, lo revise y lleva el "/", saludos y muchas gracias
__________________
El viento sopla en el oeste...
  #7 (permalink)  
Antiguo 13/07/2004, 08:16
Avatar de enzoscuro  
Fecha de Ingreso: mayo-2004
Ubicación: hcda el carmen pan de azu
Mensajes: 51
Antigüedad: 20 años
Puntos: 0
El enlace

el enlace que me enviaste funciona perfecto en linux, tengo el mandrake 9.2 e hice lo que dicen en aquella lista y funciona, ahora en weindows no :(, de a poco se va solucionando no?
__________________
El viento sopla en el oeste...
  #8 (permalink)  
Antiguo 14/07/2004, 01:08
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Dos cosas:

1. arg:/_xml --> Esto no me suena a que sea una ruta válida para localizar un archivo
2. puedes poner justo después de la línea "resultado = xslt_process($xh, 'arg:/_xml', 'prueba.xsl', NULL, $args);" un "print_r($args);" y nos dices que te imprime por pantalla? A ver si no estás construyendo bien los argumentos.
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 06:49.